diff --git a/wled00/network.cpp b/wled00/network.cpp index 3bd589f944..547685e231 100644 --- a/wled00/network.cpp +++ b/wled00/network.cpp @@ -169,6 +169,12 @@ int getSignalQuality(int rssi) return quality; } +#if ESP_IDF_VERSION_MAJOR >= 4 + #define SYSTEM_EVENT_ETH_CONNECTED ARDUINO_EVENT_ETH_CONNECTED + #define SYSTEM_EVENT_ETH_DISCONNECTED ARDUINO_EVENT_ETH_DISCONNECTED + #define SYSTEM_EVENT_ETH_START ARDUINO_EVENT_ETH_START + #define SYSTEM_EVENT_ETH_GOT_IP ARDUINO_EVENT_ETH_GOT_IP +#endif //handle Ethernet connection event void WiFiEvent(WiFiEvent_t event) @@ -178,12 +184,21 @@ void WiFiEvent(WiFiEvent_t event) case SYSTEM_EVENT_ETH_START: DEBUG_PRINTLN(F("ETH Started")); break; + case SYSTEM_EVENT_ETH_GOT_IP: + if (Network.isEthernet()) { + if (!apActive) { + DEBUG_PRINTLN(F("WiFi Connected *and* ETH Connected. Disabling WIFi")); + WiFi.disconnect(true); + } else { + DEBUG_PRINTLN(F("WiFi Connected *and* ETH Connected. Leaving AP WiFi active")); + } + } else { + DEBUG_PRINTLN(F("WiFi Connected. No ETH")); + } + break; case SYSTEM_EVENT_ETH_CONNECTED: { DEBUG_PRINTLN(F("ETH Connected")); - if (!apActive) { - WiFi.disconnect(true); - } if (multiWiFi[0].staticIP != (uint32_t)0x00000000 && multiWiFi[0].staticGW != (uint32_t)0x00000000) { ETH.config(multiWiFi[0].staticIP, multiWiFi[0].staticGW, multiWiFi[0].staticSN, dnsAddress); } else { @@ -207,8 +222,6 @@ void WiFiEvent(WiFiEvent_t event) break; #endif default: - DEBUG_PRINTF_P(PSTR("Network event: %d\n"), (int)event); break; } } - diff --git a/wled00/wled.cpp b/wled00/wled.cpp index dd260b1c26..94bf81516b 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -1010,8 +1010,17 @@ void WLED::handleConnection() } } else if (!interfacesInited) { //newly connected DEBUG_PRINTLN(); - DEBUG_PRINT(F("Connected! IP address: ")); - DEBUG_PRINTLN(Network.localIP()); + DEBUG_PRINTLN(""); + DEBUG_PRINT(F("Connected! IP address: http://")); + DEBUG_PRINT(Network.localIP()); + if (Network.isEthernet()) { + #if ESP32 + DEBUG_PRINTLN(" via Ethernet (disabling WiFi)"); + WiFi.disconnect(true); + #endif + } else { + DEBUG_PRINTLN(" via WiFi"); + } if (improvActive) { if (improvError == 3) sendImprovStateResponse(0x00, true); sendImprovStateResponse(0x04);