From 2eea2dbeb4c01f147b3f6b77241637fda8d6a287 Mon Sep 17 00:00:00 2001 From: xueyunfei Date: Fri, 22 Nov 2019 13:01:14 +0800 Subject: [PATCH] Add feature for set dhcp time out --- components/esp_netif/lwip/esp_netif_lwip.c | 41 +++++++++++++++++-- .../tcpip_adapter/tcpip_adapter_compat.c | 2 +- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/components/esp_netif/lwip/esp_netif_lwip.c b/components/esp_netif/lwip/esp_netif_lwip.c index 6419d8eb2..c73657745 100644 --- a/components/esp_netif/lwip/esp_netif_lwip.c +++ b/components/esp_netif/lwip/esp_netif_lwip.c @@ -1501,9 +1501,44 @@ esp_err_t esp_netif_dhcps_option(esp_netif_t *esp_netif, esp_netif_dhcp_option_m esp_err_t esp_netif_dhcpc_option(esp_netif_t *esp_netif, esp_netif_dhcp_option_mode_t opt_op, esp_netif_dhcp_option_id_t opt_id, void *opt_val, uint32_t opt_len) -{ - // TODO(IDF-1100): when dhcp request timeout,change the retry count - return ESP_ERR_NOT_SUPPORTED; +{ + if (esp_netif == NULL || esp_netif->lwip_netif == NULL) { + return ESP_ERR_ESP_NETIF_IF_NOT_READY; + } + + struct dhcp *dhcp = netif_dhcp_data(esp_netif->lwip_netif); + if (dhcp == NULL) { + return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED; + } + if (opt_val == NULL) { + return ESP_ERR_ESP_NETIF_INVALID_PARAMS; + } + if (opt_op == ESP_NETIF_OP_GET) { + switch (opt_id) { + case ESP_NETIF_IP_REQUEST_RETRY_TIME: + if (opt_len == sizeof(dhcp->tries)) { + *(uint8_t *)opt_val = dhcp->tries; + } + break; + default: + return ESP_ERR_ESP_NETIF_INVALID_PARAMS; + break; + } + } else if (opt_op == ESP_NETIF_OP_SET) { + switch (opt_id) { + case ESP_NETIF_IP_REQUEST_RETRY_TIME: + if (opt_len == sizeof(dhcp->tries)) { + dhcp->tries = *(uint8_t *)opt_val; + } + break; + default: + return ESP_ERR_ESP_NETIF_INVALID_PARAMS; + break; + } + } else { + return ESP_ERR_ESP_NETIF_INVALID_PARAMS; + } + return ESP_OK; } int esp_netif_get_netif_impl_index(esp_netif_t *esp_netif) diff --git a/components/tcpip_adapter/tcpip_adapter_compat.c b/components/tcpip_adapter/tcpip_adapter_compat.c index 8329867f2..919306c24 100644 --- a/components/tcpip_adapter/tcpip_adapter_compat.c +++ b/components/tcpip_adapter/tcpip_adapter_compat.c @@ -267,7 +267,7 @@ esp_err_t tcpip_adapter_dhcps_option(tcpip_adapter_dhcp_option_mode_t opt_op, tc esp_err_t tcpip_adapter_dhcpc_option(tcpip_adapter_dhcp_option_mode_t opt_op, tcpip_adapter_dhcp_option_id_t opt_id, void *opt_val, uint32_t opt_len) { - return esp_netif_dhcpc_option(NULL, opt_op, opt_id, opt_val, opt_len); + return esp_netif_dhcpc_option(netif_from_if(TCPIP_ADAPTER_IF_STA), opt_op, opt_id, opt_val, opt_len); } esp_err_t tcpip_adapter_set_ip_info(tcpip_adapter_if_t tcpip_if, const tcpip_adapter_ip_info_t *ip_info)