From ec86d4e53d135a61e7062a4be73203fd70b9f431 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Wed, 3 Nov 2021 08:30:42 -0300 Subject: [PATCH 1/6] eliminates error messages when using Ethernet Static IP --- libraries/WiFi/src/ETH.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libraries/WiFi/src/ETH.cpp b/libraries/WiFi/src/ETH.cpp index f6a9174c1c1..1a415c59126 100644 --- a/libraries/WiFi/src/ETH.cpp +++ b/libraries/WiFi/src/ETH.cpp @@ -385,8 +385,16 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I info.gw.addr = 0; info.netmask.addr = 0; } + + // avoid error messages or failure while DHCP still did not get stopped + uint8_t tries = 5; + do { + const TickType_t xDelay = 50 / portTICK_PERIOD_MS; + vTaskDelay( xDelay ); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); + tries--; + } while (tries && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); return false; @@ -396,7 +404,8 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I if(err != ERR_OK){ log_e("STA IP could not be configured! Error: %d", err); return false; -} + } + if(info.ip.addr){ staticIP = true; } else { From 1d2f95c8f9e56c85c06ca260582019521c53d8b0 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 4 Nov 2021 18:45:33 -0300 Subject: [PATCH 2/6] Revert "eliminates error messages when using Ethernet Static IP" This reverts commit ec86d4e53d135a61e7062a4be73203fd70b9f431. --- libraries/WiFi/src/ETH.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/libraries/WiFi/src/ETH.cpp b/libraries/WiFi/src/ETH.cpp index 1a415c59126..f6a9174c1c1 100644 --- a/libraries/WiFi/src/ETH.cpp +++ b/libraries/WiFi/src/ETH.cpp @@ -385,16 +385,8 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I info.gw.addr = 0; info.netmask.addr = 0; } - - // avoid error messages or failure while DHCP still did not get stopped - uint8_t tries = 5; - do { - const TickType_t xDelay = 50 / portTICK_PERIOD_MS; - vTaskDelay( xDelay ); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); - tries--; - } while (tries && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); return false; @@ -404,8 +396,7 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I if(err != ERR_OK){ log_e("STA IP could not be configured! Error: %d", err); return false; - } - +} if(info.ip.addr){ staticIP = true; } else { From 4b1a6fb316d7b14b7918abc85c9da2030696b613 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 4 Nov 2021 19:02:28 -0300 Subject: [PATCH 3/6] eliminates error messages when using Ethernet Static IP --- libraries/Ethernet/src/ETH.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index f6a9174c1c1..2100a9b8572 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -385,8 +385,15 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I info.gw.addr = 0; info.netmask.addr = 0; } + + // avoid error messages or failure while DHCP still did not get stopped + uint8_t tries = 5; + do { + delay(50); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); + tries--; + } while (tries && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); return false; @@ -396,7 +403,8 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I if(err != ERR_OK){ log_e("STA IP could not be configured! Error: %d", err); return false; -} + } + if(info.ip.addr){ staticIP = true; } else { From f5dab406683cb986a227c0f0b0c063fc44e38e4a Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Fri, 5 Nov 2021 16:19:53 -0300 Subject: [PATCH 4/6] eliminates error messages when using Ethernet Static IP --- libraries/Ethernet/src/ETH.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 2100a9b8572..13fb8f666fd 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -386,13 +386,10 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I info.netmask.addr = 0; } - // avoid error messages or failure while DHCP still did not get stopped - uint8_t tries = 5; - do { - delay(50); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); - tries--; - } while (tries && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED); + // this delay forces changing FreeRTOS task context + // it avoids DHCP error messages by running DHCP LwIP Events correctly before setting static IP + delay(50); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); From 86b776e52f517aa2f05795d9150a0d10a3a82deb Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Fri, 5 Nov 2021 16:51:42 -0300 Subject: [PATCH 5/6] Eliminates error messages with Ethernet Static IP --- libraries/Ethernet/src/ETH.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 13fb8f666fd..00365e1e23d 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -389,8 +389,8 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I // this delay forces changing FreeRTOS task context // it avoids DHCP error messages by running DHCP LwIP Events correctly before setting static IP delay(50); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); return false; From 9747792efbae81834e50d5207e80e89a91054986 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Mon, 8 Nov 2021 17:37:08 -0300 Subject: [PATCH 6/6] Eliminates error messages with Ethernet Static IP --- libraries/Ethernet/src/ETH.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/Ethernet/src/ETH.cpp b/libraries/Ethernet/src/ETH.cpp index 13fb8f666fd..33e86691b1d 100644 --- a/libraries/Ethernet/src/ETH.cpp +++ b/libraries/Ethernet/src/ETH.cpp @@ -368,6 +368,10 @@ bool ETHClass::begin(uint8_t phy_addr, int power, int mdc, int mdio, eth_phy_typ log_e("esp_eth_init error: %d", err); } #endif + // holds a few microseconds to let DHCP start and enter into a good state + // FIX ME -- adresses issue https://github.com/espressif/arduino-esp32/issues/5733 + delay(50); + return true; } @@ -385,12 +389,8 @@ bool ETHClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, I info.gw.addr = 0; info.netmask.addr = 0; } - - // this delay forces changing FreeRTOS task context - // it avoids DHCP error messages by running DHCP LwIP Events correctly before setting static IP - delay(50); - err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); + err = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); if(err != ESP_OK && err != ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED){ log_e("DHCP could not be stopped! Error: %d", err); return false;