首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ESP32获取DHCP选项

使用ESP32获取DHCP选项
EN

Stack Overflow用户
提问于 2022-05-06 10:54:17
回答 1查看 647关注 0票数 0

我处理了一个试图通过Wifi和以太网连接到dhcp服务器的ESP32模块。重点是,我想得到DHCP的选择,但我失败了.

我试过使用LWIP和。(我还要猜一下XXXX和YYYY)

代码语言:javascript
运行
复制
// Create an esp_netif pointer to store current interface
  esp_netif_t* ifscan = esp_netif_next(NULL);

  // Stores the unique interface descriptor, such as "PP1", etc
  char ifdesc[7];
  ifdesc[6] = 0;  // Ensure null terminated string
  uint32_t value = 0;

  while (ifscan != NULL)
  {
      esp_netif_get_netif_impl_name(ifscan, ifdesc);
      Serial.printf("IF NAME: %s\n", ifdesc);

      esp_err_t code = esp_netif_dhcpc_option(ifscan, ESP_NETIF_OP_GET, ESP_NETIF_DOMAIN_NAME_SERVER, XXXX, YYYY);
      Serial.printf("RES: %s - OPTION: %s\n", esp_err_to_name(code), XXXXX);
   


      // Get the next interface
      ifscan = esp_netif_next(ifscan);
  }
      Serial.printf("Done listing network interfaces");

有谁有源代码的例子,说明如何在连接后获得这些选项?

提前谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2022-06-19 16:19:04

只有几个在代码中实现的DHCP选项。

检查源代码(github)中的esp_netif_dhcpc_option

ESP_NETIF_DOMAIN_NAME_SERVER e.q.不是。

对于ESP_NETIF_OP_GET,只有ESP_NETIF_IP_REQUEST_RETRY_TIMEESP_NETIF_VENDOR_SPECIFIC_INFO实现了。

否则,您将得到ESP_ERR_ESP_NETIF_INVALID_PARAMS (20481 0x5001)。

代码语言:javascript
运行
复制
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)
{
...
    if (opt_op == ESP_NETIF_OP_GET) {
        if (esp_netif->dhcpc_status == ESP_NETIF_DHCP_STOPPED) {
            return ESP_ERR_ESP_NETIF_DHCP_ALREADY_STOPPED;
        }
        switch (opt_id) {
            case ESP_NETIF_IP_REQUEST_RETRY_TIME:
                if (opt_len == sizeof(dhcp->tries)) {
                    *(uint8_t *)opt_val = dhcp->tries;
                }
                break;
#if ESP_DHCP && !ESP_DHCP_DISABLE_VENDOR_CLASS_IDENTIFIER
            case ESP_NETIF_VENDOR_SPECIFIC_INFO:
                return dhcp_get_vendor_specific_information(opt_len, opt_val);
#endif
            default:
                return ESP_ERR_ESP_NETIF_INVALID_PARAMS;
        }
...
}

我尝试在我的ESP32上使用您的代码和选项ESP32

代码语言:javascript
运行
复制
  Serial.println("Option >");
  esp_err_t result = 0;
  uint32_t value = 0;
  esp_netif_t * ifscan = esp_netif_next(NULL);
  char ifname[10];
  result = esp_netif_get_netif_impl_name(ifscan, ifname);
  Serial.print("esp_netif_get_netif_impl_name: ");
  Serial.println(result);
  result = esp_netif_dhcpc_option(ifscan, ESP_NETIF_OP_GET, (esp_netif_dhcp_option_id_t)224, &value, 4);
  Serial.print("esp_netif_dhcpc_option: ");
  Serial.println(result);
  Serial.print("esp_netif_dhcpc_option value: ");
  Serial.println(value);
  Serial.println("Option <");

结果:

代码语言:javascript
运行
复制
Option >
esp_netif_get_netif_impl_name: 0
esp_netif_dhcpc_option: 20481
esp_netif_dhcpc_option value: 0
Option <
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72140348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档