Allow Ethernet Pin Settings via json config
This commit is contained in:
parent
f60205829a
commit
3d3feb3517
@ -3,6 +3,7 @@
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <stdint.h>
|
||||
#include <ETH.h>
|
||||
|
||||
#define PINMAPPING_FILENAME "/pin_mapping.json"
|
||||
|
||||
@ -16,6 +17,13 @@ struct PinMapping_t {
|
||||
int8_t nrf24_irq;
|
||||
int8_t nrf24_en;
|
||||
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 {
|
||||
@ -25,6 +33,7 @@ public:
|
||||
PinMapping_t& get();
|
||||
|
||||
bool isValidNrf24Config();
|
||||
bool isValidEthConfig();
|
||||
|
||||
private:
|
||||
PinMapping_t _pinMapping;
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
#include "NetworkSettings.h"
|
||||
#include "Configuration.h"
|
||||
#include "MessageOutput.h"
|
||||
#include "PinMapping.h"
|
||||
#include "Utils.h"
|
||||
#include "defaults.h"
|
||||
#ifdef OPENDTU_ETHERNET
|
||||
@ -130,7 +131,10 @@ void NetworkSettingsClass::setupMode()
|
||||
}
|
||||
}
|
||||
#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
|
||||
}
|
||||
|
||||
|
||||
@ -21,6 +21,19 @@ PinMappingClass::PinMappingClass()
|
||||
_pinMapping.nrf24_irq = HOYMILES_PIN_IRQ;
|
||||
_pinMapping.nrf24_miso = HOYMILES_PIN_MISO;
|
||||
_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()
|
||||
@ -28,7 +41,6 @@ PinMapping_t& PinMappingClass::get()
|
||||
return _pinMapping;
|
||||
}
|
||||
|
||||
|
||||
bool PinMappingClass::init(const String& deviceMapping)
|
||||
{
|
||||
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_miso = doc[i]["nrf24"]["miso"] | HOYMILES_PIN_MISO;
|
||||
_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;
|
||||
}
|
||||
}
|
||||
@ -69,4 +95,9 @@ bool PinMappingClass::isValidNrf24Config()
|
||||
&& _pinMapping.nrf24_irq > 0
|
||||
&& _pinMapping.nrf24_miso > 0
|
||||
&& _pinMapping.nrf24_mosi > 0;
|
||||
}
|
||||
|
||||
bool PinMappingClass::isValidEthConfig()
|
||||
{
|
||||
return _pinMapping.eth_enabled;
|
||||
}
|
||||
@ -36,6 +36,36 @@
|
||||
<td>{{ pinAssignment?.nrf24?.cs }}</td>
|
||||
</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>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@ -7,9 +7,20 @@ export interface Nrf24 {
|
||||
cs: number;
|
||||
}
|
||||
|
||||
export interface Ethernet {
|
||||
enabled: boolean;
|
||||
phy_addr: number;
|
||||
power: number;
|
||||
mdc: number;
|
||||
mdio: number;
|
||||
type: number;
|
||||
clk_mode: number;
|
||||
}
|
||||
|
||||
export interface Device {
|
||||
name: string;
|
||||
nrf24: Nrf24;
|
||||
eth: Ethernet;
|
||||
}
|
||||
|
||||
export interface PinMapping extends Array<Device>{}
|
||||
Loading…
Reference in New Issue
Block a user