Przeglądaj źródła

tcpip_adapter: add set hostname interface

liuhan 9 lat temu
rodzic
commit
fa1d5bfbc7

+ 13 - 0
components/tcpip_adapter/include/tcpip_adapter.h

@@ -372,6 +372,19 @@ wifi_interface_t tcpip_adapter_get_wifi_if(void *dev);
  */
  */
 esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list);
 esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapter_sta_list_t *tcpip_sta_list);
 
 
+#define TCPIP_HOSTNAME_MAX_SIZE    31
+/**
+ * @brief  Set the hostname to the interface
+ *
+ * @param[in]   tcpip_if: the interface which we will set the hostname
+ * @param[in]   hostname: the host name for set the interfce
+ *
+ * @return ESP_OK:success
+ *         ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY:interface status error
+ *         ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS:parameter error
+ */
+esp_err_t tcpip_adapter_set_hostname(tcpip_adapter_if_t tcpip_if, const char *hostname);
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif

+ 28 - 0
components/tcpip_adapter/tcpip_adapter_lwip.c

@@ -607,4 +607,32 @@ esp_err_t tcpip_adapter_get_sta_list(wifi_sta_list_t *wifi_sta_list, tcpip_adapt
     return ESP_OK;
     return ESP_OK;
 }
 }
 
 
+esp_err_t tcpip_adapter_set_hostname(tcpip_adapter_if_t tcpip_if, const char *hostname)
+{
+    struct netif *p_netif;
+    static char hostinfo[TCPIP_HOSTNAME_MAX_SIZE + 1];
+
+    if (tcpip_if >= TCPIP_ADAPTER_IF_MAX || hostname == NULL) {
+        return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
+    }
+
+    if (strlen(hostname) >= TCPIP_HOSTNAME_MAX_SIZE) {
+        return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
+    }
+
+    p_netif = esp_netif[tcpip_if];
+    if (p_netif != NULL) {
+        if (netif_is_up(p_netif)) {
+            return ESP_ERR_TCPIP_ADAPTER_IF_NOT_READY;
+        } else {
+            memset(hostinfo, 0, sizeof(hostinfo));
+            memcpy(hostinfo, hostname, strlen(hostname));
+            p_netif->hostname = hostinfo;
+            return ESP_OK;
+        }
+    } else {
+        return ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS;
+    }
+}
+
 #endif
 #endif