From: Wu Jian Gang Date: Fri, 26 Aug 2016 03:52:46 +0000 (+0800) Subject: tcpip_adapter: clean up dhcpc status X-Git-Tag: v0.9~70^2~4^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cb33a0fb9bc902901868f3d3b7189852674c8eca;p=esp-idf tcpip_adapter: clean up dhcpc status only auto start dhcpc in init status --- diff --git a/components/esp32/event.c b/components/esp32/event.c index d10972e295..6839493246 100644 --- a/components/esp32/event.c +++ b/components/esp32/event.c @@ -116,10 +116,17 @@ esp_err_t system_event_sta_stop_handle_default(system_event_t *event) esp_err_t system_event_sta_connected_handle_default(system_event_t *event) { + tcpip_adapter_dhcp_status_t status; + WIFI_API_CALL_CHECK("esp_wifi_reg_rxcb", esp_wifi_reg_rxcb(WIFI_IF_STA, (wifi_rxcb_t)tcpip_adapter_sta_input), ESP_OK); tcpip_adapter_up(TCPIP_ADAPTER_IF_STA); - tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA); + + tcpip_adapter_dhcpc_get_status(TCPIP_ADAPTER_IF_STA, &status); + + if (status == TCPIP_ADAPTER_DHCP_INIT) { + tcpip_adapter_dhcpc_start(TCPIP_ADAPTER_IF_STA); + } return ESP_OK; } diff --git a/components/tcpip_adapter/tcpip_adapter_lwip.c b/components/tcpip_adapter/tcpip_adapter_lwip.c index e846479055..d6ad20ad83 100644 --- a/components/tcpip_adapter/tcpip_adapter_lwip.c +++ b/components/tcpip_adapter/tcpip_adapter_lwip.c @@ -147,7 +147,10 @@ esp_err_t tcpip_adapter_down(tcpip_adapter_if_t tcpip_if) dhcp_release(esp_netif[tcpip_if]); dhcp_stop(esp_netif[tcpip_if]); dhcp_cleanup(esp_netif[tcpip_if]); - dhcpc_status = TCPIP_ADAPTER_DHCP_STOPED; + + if (dhcpc_status != TCPIP_ADAPTER_DHCP_STOPED) { + dhcpc_status = TCPIP_ADAPTER_DHCP_INIT; + } } else { netif_set_down(esp_netif[tcpip_if]); netif_set_addr(esp_netif[tcpip_if], IP4_ADDR_ANY, IP4_ADDR_ANY, IP4_ADDR_ANY);