我处理了一个试图通过Wifi和以太网连接到dhcp服务器的ESP32模块。重点是,我想得到DHCP的选择,但我失败了.
我试过使用LWIP和。(我还要猜一下XXXX和YYYY)
// 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");
有谁有源代码的例子,说明如何在连接后获得这些选项?
提前谢谢你。
发布于 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_TIME
和ESP_NETIF_VENDOR_SPECIFIC_INFO
实现了。
否则,您将得到ESP_ERR_ESP_NETIF_INVALID_PARAMS
(20481 0x5001
)。
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
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 <");
结果:
Option >
esp_netif_get_netif_impl_name: 0
esp_netif_dhcpc_option: 20481
esp_netif_dhcpc_option value: 0
Option <
https://stackoverflow.com/questions/72140348
复制相似问题