Allow Ethernet Pin Settings via json config
This commit is contained in:
parent
f60205829a
commit
3d3feb3517
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <ETH.h>
|
||||||
|
|
||||||
#define PINMAPPING_FILENAME "/pin_mapping.json"
|
#define PINMAPPING_FILENAME "/pin_mapping.json"
|
||||||
|
|
||||||
@ -16,6 +17,13 @@ struct PinMapping_t {
|
|||||||
int8_t nrf24_irq;
|
int8_t nrf24_irq;
|
||||||
int8_t nrf24_en;
|
int8_t nrf24_en;
|
||||||
int8_t nrf24_cs;
|
int8_t nrf24_cs;
|
||||||
|
int8_t eth_phy_addr;
|
||||||
|
bool eth_enabled;
|
||||||
|
int eth_power;
|
||||||
|
int eth_mdc;
|
||||||
|
int eth_mdio;
|
||||||
|
eth_phy_type_t eth_type;
|
||||||
|
eth_clock_mode_t eth_clk_mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PinMappingClass {
|
class PinMappingClass {
|
||||||
@ -25,6 +33,7 @@ public:
|
|||||||
PinMapping_t& get();
|
PinMapping_t& get();
|
||||||
|
|
||||||
bool isValidNrf24Config();
|
bool isValidNrf24Config();
|
||||||
|
bool isValidEthConfig();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PinMapping_t _pinMapping;
|
PinMapping_t _pinMapping;
|
||||||
|
|||||||
@ -5,6 +5,7 @@
|
|||||||
#include "NetworkSettings.h"
|
#include "NetworkSettings.h"
|
||||||
#include "Configuration.h"
|
#include "Configuration.h"
|
||||||
#include "MessageOutput.h"
|
#include "MessageOutput.h"
|
||||||
|
#include "PinMapping.h"
|
||||||
#include "Utils.h"
|
#include "Utils.h"
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
#ifdef OPENDTU_ETHERNET
|
#ifdef OPENDTU_ETHERNET
|
||||||
@ -130,7 +131,10 @@ void NetworkSettingsClass::setupMode()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef OPENDTU_ETHERNET
|
#ifdef OPENDTU_ETHERNET
|
||||||
ETH.begin();
|
if (PinMapping.isValidEthConfig()) {
|
||||||
|
PinMapping_t& pin = PinMapping.get();
|
||||||
|
ETH.begin(pin.eth_phy_addr, pin.eth_power, pin.eth_mdc, pin.eth_mdio, pin.eth_type, pin.eth_clk_mode);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -21,6 +21,19 @@ PinMappingClass::PinMappingClass()
|
|||||||
_pinMapping.nrf24_irq = HOYMILES_PIN_IRQ;
|
_pinMapping.nrf24_irq = HOYMILES_PIN_IRQ;
|
||||||
_pinMapping.nrf24_miso = HOYMILES_PIN_MISO;
|
_pinMapping.nrf24_miso = HOYMILES_PIN_MISO;
|
||||||
_pinMapping.nrf24_mosi = HOYMILES_PIN_MOSI;
|
_pinMapping.nrf24_mosi = HOYMILES_PIN_MOSI;
|
||||||
|
|
||||||
|
#ifdef OPENDTU_ETHERNET
|
||||||
|
_pinMapping.eth_enabled = true;
|
||||||
|
#else
|
||||||
|
_pinMapping.eth_enabled = false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_pinMapping.eth_phy_addr = ETH_PHY_ADDR;
|
||||||
|
_pinMapping.eth_power = ETH_PHY_POWER;
|
||||||
|
_pinMapping.eth_mdc = ETH_PHY_MDC;
|
||||||
|
_pinMapping.eth_mdio = ETH_PHY_MDIO;
|
||||||
|
_pinMapping.eth_type = ETH_PHY_TYPE;
|
||||||
|
_pinMapping.eth_clk_mode = ETH_CLK_MODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
PinMapping_t& PinMappingClass::get()
|
PinMapping_t& PinMappingClass::get()
|
||||||
@ -28,7 +41,6 @@ PinMapping_t& PinMappingClass::get()
|
|||||||
return _pinMapping;
|
return _pinMapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PinMappingClass::init(const String& deviceMapping)
|
bool PinMappingClass::init(const String& deviceMapping)
|
||||||
{
|
{
|
||||||
File f = LittleFS.open(PINMAPPING_FILENAME, "r", false);
|
File f = LittleFS.open(PINMAPPING_FILENAME, "r", false);
|
||||||
@ -54,6 +66,20 @@ bool PinMappingClass::init(const String& deviceMapping)
|
|||||||
_pinMapping.nrf24_irq = doc[i]["nrf24"]["irq"] | HOYMILES_PIN_IRQ;
|
_pinMapping.nrf24_irq = doc[i]["nrf24"]["irq"] | HOYMILES_PIN_IRQ;
|
||||||
_pinMapping.nrf24_miso = doc[i]["nrf24"]["miso"] | HOYMILES_PIN_MISO;
|
_pinMapping.nrf24_miso = doc[i]["nrf24"]["miso"] | HOYMILES_PIN_MISO;
|
||||||
_pinMapping.nrf24_mosi = doc[i]["nrf24"]["mosi"] | HOYMILES_PIN_MOSI;
|
_pinMapping.nrf24_mosi = doc[i]["nrf24"]["mosi"] | HOYMILES_PIN_MOSI;
|
||||||
|
|
||||||
|
#ifdef OPENDTU_ETHERNET
|
||||||
|
_pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | true;
|
||||||
|
#else
|
||||||
|
_pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | false;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_pinMapping.eth_phy_addr = doc[i]["eth"]["phy_addr"] | ETH_PHY_ADDR;
|
||||||
|
_pinMapping.eth_power = doc[i]["eth"]["power"] | ETH_PHY_POWER;
|
||||||
|
_pinMapping.eth_mdc = doc[i]["eth"]["mdc"] | ETH_PHY_MDC;
|
||||||
|
_pinMapping.eth_mdio = doc[i]["eth"]["mdio"] | ETH_PHY_MDIO;
|
||||||
|
_pinMapping.eth_type = doc[i]["eth"]["type"] | ETH_PHY_TYPE;
|
||||||
|
_pinMapping.eth_clk_mode = doc[i]["eth"]["clk_mode"] | ETH_CLK_MODE;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -70,3 +96,8 @@ bool PinMappingClass::isValidNrf24Config()
|
|||||||
&& _pinMapping.nrf24_miso > 0
|
&& _pinMapping.nrf24_miso > 0
|
||||||
&& _pinMapping.nrf24_mosi > 0;
|
&& _pinMapping.nrf24_mosi > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PinMappingClass::isValidEthConfig()
|
||||||
|
{
|
||||||
|
return _pinMapping.eth_enabled;
|
||||||
|
}
|
||||||
@ -36,6 +36,36 @@
|
|||||||
<td>{{ pinAssignment?.nrf24?.cs }}</td>
|
<td>{{ pinAssignment?.nrf24?.cs }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td rowspan="7">Ethernet</td>
|
||||||
|
<td>enabled</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.enabled }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>phy_addr</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.phy_addr }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>power</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.power }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>mdc</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.mdc }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>mdio</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.mdio }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>type</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.type }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>clk_mode</td>
|
||||||
|
<td>{{ pinAssignment?.eth?.clk_mode }}</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -7,9 +7,20 @@ export interface Nrf24 {
|
|||||||
cs: number;
|
cs: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Ethernet {
|
||||||
|
enabled: boolean;
|
||||||
|
phy_addr: number;
|
||||||
|
power: number;
|
||||||
|
mdc: number;
|
||||||
|
mdio: number;
|
||||||
|
type: number;
|
||||||
|
clk_mode: number;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Device {
|
export interface Device {
|
||||||
name: string;
|
name: string;
|
||||||
nrf24: Nrf24;
|
nrf24: Nrf24;
|
||||||
|
eth: Ethernet;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PinMapping extends Array<Device>{}
|
export interface PinMapping extends Array<Device>{}
|
||||||
Loading…
Reference in New Issue
Block a user