Remove EMAC related code for devices that don't have one

This commit is contained in:
LennartF22 2024-10-04 01:15:24 +02:00
parent 4cd5d79c73
commit 6d048ae01d
4 changed files with 23 additions and 3 deletions

View File

@ -12,6 +12,7 @@
struct PinMapping_t { struct PinMapping_t {
char name[MAPPING_NAME_STRLEN + 1]; char name[MAPPING_NAME_STRLEN + 1];
int8_t nrf24_miso; int8_t nrf24_miso;
int8_t nrf24_mosi; int8_t nrf24_mosi;
int8_t nrf24_clk; int8_t nrf24_clk;
@ -33,6 +34,7 @@ struct PinMapping_t {
int8_t w5500_int; int8_t w5500_int;
int8_t w5500_rst; int8_t w5500_rst;
#if CONFIG_ETH_USE_ESP32_EMAC
int8_t eth_phy_addr; int8_t eth_phy_addr;
bool eth_enabled; bool eth_enabled;
int eth_power; int eth_power;
@ -40,11 +42,14 @@ struct PinMapping_t {
int eth_mdio; int eth_mdio;
eth_phy_type_t eth_type; eth_phy_type_t eth_type;
eth_clock_mode_t eth_clk_mode; eth_clock_mode_t eth_clk_mode;
#endif
uint8_t display_type; uint8_t display_type;
uint8_t display_data; uint8_t display_data;
uint8_t display_clk; uint8_t display_clk;
uint8_t display_cs; uint8_t display_cs;
uint8_t display_reset; uint8_t display_reset;
int8_t led[PINMAPPING_LED_COUNT]; int8_t led[PINMAPPING_LED_COUNT];
}; };
@ -57,7 +62,9 @@ public:
bool isValidNrf24Config() const; bool isValidNrf24Config() const;
bool isValidCmt2300Config() const; bool isValidCmt2300Config() const;
bool isValidW5500Config() const; bool isValidW5500Config() const;
#if CONFIG_ETH_USE_ESP32_EMAC
bool isValidEthConfig() const; bool isValidEthConfig() const;
#endif
private: private:
PinMapping_t _pinMapping; PinMapping_t _pinMapping;

View File

@ -39,7 +39,9 @@ void NetworkSettingsClass::init(Scheduler& scheduler)
MessageOutput.println("W5500: Connection successful"); MessageOutput.println("W5500: Connection successful");
else else
MessageOutput.println("W5500: Connection error!!"); MessageOutput.println("W5500: Connection error!!");
} else if (PinMapping.isValidEthConfig()) { }
#if CONFIG_ETH_USE_ESP32_EMAC
else if (PinMapping.isValidEthConfig()) {
PinMapping_t& pin = PinMapping.get(); PinMapping_t& pin = PinMapping.get();
#if ESP_ARDUINO_VERSION_MAJOR < 3 #if ESP_ARDUINO_VERSION_MAJOR < 3
ETH.begin(pin.eth_phy_addr, pin.eth_power, pin.eth_mdc, pin.eth_mdio, pin.eth_type, pin.eth_clk_mode); ETH.begin(pin.eth_phy_addr, pin.eth_power, pin.eth_mdc, pin.eth_mdio, pin.eth_type, pin.eth_clk_mode);
@ -47,6 +49,7 @@ void NetworkSettingsClass::init(Scheduler& scheduler)
ETH.begin(pin.eth_type, pin.eth_phy_addr, pin.eth_mdc, pin.eth_mdio, pin.eth_power, pin.eth_clk_mode); ETH.begin(pin.eth_type, pin.eth_phy_addr, pin.eth_mdc, pin.eth_mdio, pin.eth_power, pin.eth_clk_mode);
#endif #endif
} }
#endif
setupMode(); setupMode();

View File

@ -108,6 +108,8 @@
#define W5500_RST -1 #define W5500_RST -1
#endif #endif
#if CONFIG_ETH_USE_ESP32_EMAC
#ifndef ETH_PHY_ADDR #ifndef ETH_PHY_ADDR
#define ETH_PHY_ADDR -1 #define ETH_PHY_ADDR -1
#endif #endif
@ -132,6 +134,8 @@
#define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN #define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN
#endif #endif
#endif
PinMappingClass PinMapping; PinMappingClass PinMapping;
PinMappingClass::PinMappingClass() PinMappingClass::PinMappingClass()
@ -158,18 +162,19 @@ PinMappingClass::PinMappingClass()
_pinMapping.w5500_int = W5500_INT; _pinMapping.w5500_int = W5500_INT;
_pinMapping.w5500_rst = W5500_RST; _pinMapping.w5500_rst = W5500_RST;
#if CONFIG_ETH_USE_ESP32_EMAC
#ifdef OPENDTU_ETHERNET #ifdef OPENDTU_ETHERNET
_pinMapping.eth_enabled = true; _pinMapping.eth_enabled = true;
#else #else
_pinMapping.eth_enabled = false; _pinMapping.eth_enabled = false;
#endif #endif
_pinMapping.eth_phy_addr = ETH_PHY_ADDR; _pinMapping.eth_phy_addr = ETH_PHY_ADDR;
_pinMapping.eth_power = ETH_PHY_POWER; _pinMapping.eth_power = ETH_PHY_POWER;
_pinMapping.eth_mdc = ETH_PHY_MDC; _pinMapping.eth_mdc = ETH_PHY_MDC;
_pinMapping.eth_mdio = ETH_PHY_MDIO; _pinMapping.eth_mdio = ETH_PHY_MDIO;
_pinMapping.eth_type = ETH_PHY_TYPE; _pinMapping.eth_type = ETH_PHY_TYPE;
_pinMapping.eth_clk_mode = ETH_CLK_MODE; _pinMapping.eth_clk_mode = ETH_CLK_MODE;
#endif
_pinMapping.display_type = DISPLAY_TYPE; _pinMapping.display_type = DISPLAY_TYPE;
_pinMapping.display_data = DISPLAY_DATA; _pinMapping.display_data = DISPLAY_DATA;
@ -226,18 +231,19 @@ bool PinMappingClass::init(const String& deviceMapping)
_pinMapping.w5500_int = doc[i]["w5500"]["int"] | W5500_INT; _pinMapping.w5500_int = doc[i]["w5500"]["int"] | W5500_INT;
_pinMapping.w5500_rst = doc[i]["w5500"]["rst"] | W5500_RST; _pinMapping.w5500_rst = doc[i]["w5500"]["rst"] | W5500_RST;
#if CONFIG_ETH_USE_ESP32_EMAC
#ifdef OPENDTU_ETHERNET #ifdef OPENDTU_ETHERNET
_pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | true; _pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | true;
#else #else
_pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | false; _pinMapping.eth_enabled = doc[i]["eth"]["enabled"] | false;
#endif #endif
_pinMapping.eth_phy_addr = doc[i]["eth"]["phy_addr"] | ETH_PHY_ADDR; _pinMapping.eth_phy_addr = doc[i]["eth"]["phy_addr"] | ETH_PHY_ADDR;
_pinMapping.eth_power = doc[i]["eth"]["power"] | ETH_PHY_POWER; _pinMapping.eth_power = doc[i]["eth"]["power"] | ETH_PHY_POWER;
_pinMapping.eth_mdc = doc[i]["eth"]["mdc"] | ETH_PHY_MDC; _pinMapping.eth_mdc = doc[i]["eth"]["mdc"] | ETH_PHY_MDC;
_pinMapping.eth_mdio = doc[i]["eth"]["mdio"] | ETH_PHY_MDIO; _pinMapping.eth_mdio = doc[i]["eth"]["mdio"] | ETH_PHY_MDIO;
_pinMapping.eth_type = doc[i]["eth"]["type"] | ETH_PHY_TYPE; _pinMapping.eth_type = doc[i]["eth"]["type"] | ETH_PHY_TYPE;
_pinMapping.eth_clk_mode = doc[i]["eth"]["clk_mode"] | ETH_CLK_MODE; _pinMapping.eth_clk_mode = doc[i]["eth"]["clk_mode"] | ETH_CLK_MODE;
#endif
_pinMapping.display_type = doc[i]["display"]["type"] | DISPLAY_TYPE; _pinMapping.display_type = doc[i]["display"]["type"] | DISPLAY_TYPE;
_pinMapping.display_data = doc[i]["display"]["data"] | DISPLAY_DATA; _pinMapping.display_data = doc[i]["display"]["data"] | DISPLAY_DATA;
@ -283,9 +289,11 @@ bool PinMappingClass::isValidW5500Config() const
&& _pinMapping.w5500_rst >= 0; && _pinMapping.w5500_rst >= 0;
} }
#if CONFIG_ETH_USE_ESP32_EMAC
bool PinMappingClass::isValidEthConfig() const bool PinMappingClass::isValidEthConfig() const
{ {
return _pinMapping.eth_enabled return _pinMapping.eth_enabled
&& _pinMapping.eth_mdc >= 0 && _pinMapping.eth_mdc >= 0
&& _pinMapping.eth_mdio >= 0; && _pinMapping.eth_mdio >= 0;
} }
#endif

View File

@ -58,6 +58,7 @@ void WebApiDeviceClass::onDeviceAdminGet(AsyncWebServerRequest* request)
w5500PinObj["int"] = pin.w5500_int; w5500PinObj["int"] = pin.w5500_int;
w5500PinObj["rst"] = pin.w5500_rst; w5500PinObj["rst"] = pin.w5500_rst;
#if CONFIG_ETH_USE_ESP32_EMAC
auto ethPinObj = curPin["eth"].to<JsonObject>(); auto ethPinObj = curPin["eth"].to<JsonObject>();
ethPinObj["enabled"] = pin.eth_enabled; ethPinObj["enabled"] = pin.eth_enabled;
ethPinObj["phy_addr"] = pin.eth_phy_addr; ethPinObj["phy_addr"] = pin.eth_phy_addr;
@ -66,6 +67,7 @@ void WebApiDeviceClass::onDeviceAdminGet(AsyncWebServerRequest* request)
ethPinObj["mdio"] = pin.eth_mdio; ethPinObj["mdio"] = pin.eth_mdio;
ethPinObj["type"] = pin.eth_type; ethPinObj["type"] = pin.eth_type;
ethPinObj["clk_mode"] = pin.eth_clk_mode; ethPinObj["clk_mode"] = pin.eth_clk_mode;
#endif
auto displayPinObj = curPin["display"].to<JsonObject>(); auto displayPinObj = curPin["display"].to<JsonObject>();
displayPinObj["type"] = pin.display_type; displayPinObj["type"] = pin.display_type;