فهرست منبع

Merge branch 'feature/set_dhcp_timeout' into 'master'

Add feature for set dhcp time out

Closes WIFI-797 and IDF-1100

See merge request espressif/esp-idf!6370
Jiang Jiang Jian 6 سال پیش
والد
کامیت
ddef4f9129
2فایلهای تغییر یافته به همراه39 افزوده شده و 4 حذف شده
  1. 38 3
      components/esp_netif/lwip/esp_netif_lwip.c
  2. 1 1
      components/tcpip_adapter/tcpip_adapter_compat.c

+ 38 - 3
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)

+ 1 - 1
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)