Skip to content

Commit 66d5573

Browse files
committed
Enable DNS info
1 parent deefeec commit 66d5573

File tree

4 files changed

+33
-0
lines changed

4 files changed

+33
-0
lines changed

ports/esp32s2/common-hal/wifi/Radio.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,20 @@ mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self) {
192192
return common_hal_ipaddress_new_ipv4address(self->ip_info.ip.addr);
193193
}
194194

195+
mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self) {
196+
if (!esp_netif_is_netif_up(self->netif)) {
197+
return mp_const_none;
198+
}
199+
200+
esp_netif_get_dns_info(self->netif, ESP_NETIF_DNS_MAIN, &self->dns_info);
201+
202+
// dns_info is of type esp_netif_dns_info_t, which is just ever so slightly
203+
// different than esp_netif_ip_info_t used for
204+
// common_hal_wifi_radio_get_ipv4_address (includes both ipv4 and 6),
205+
// so some extra jumping is required to get to the actual address
206+
return common_hal_ipaddress_new_ipv4address(self->dns_info.ip.u_addr.ip4.addr);
207+
}
208+
195209
mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout) {
196210
esp_ping_config_t ping_config = ESP_PING_DEFAULT_CONFIG();
197211
ipaddress_ipaddress_to_esp_idf(ip_address, &ping_config.target_addr);

ports/esp32s2/common-hal/wifi/Radio.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ typedef struct {
4848
wifi_config_t sta_config;
4949
wifi_ap_record_t ap_info;
5050
esp_netif_ip_info_t ip_info;
51+
esp_netif_dns_info_t dns_info;
5152
esp_netif_t *netif;
5253
bool started;
5354
bool ap_mode;

shared-bindings/wifi/Radio.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,22 @@ const mp_obj_property_t wifi_radio_ipv4_address_obj = {
227227
(mp_obj_t)&mp_const_none_obj },
228228
};
229229

230+
//| ipv4_dns: Optional[ipaddress.IPv4Address]
231+
//| """IP v4 Address of the DNS server in use when connected to an access point. None otherwise."""
232+
//|
233+
STATIC mp_obj_t wifi_radio_get_ipv4_dns(mp_obj_t self) {
234+
return common_hal_wifi_radio_get_ipv4_dns(self);
235+
236+
}
237+
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_dns_obj, wifi_radio_get_ipv4_dns);
238+
239+
const mp_obj_property_t wifi_radio_ipv4_dns_obj = {
240+
.base.type = &mp_type_property,
241+
.proxy = { (mp_obj_t)&wifi_radio_get_ipv4_dns_obj,
242+
(mp_obj_t)&mp_const_none_obj,
243+
(mp_obj_t)&mp_const_none_obj },
244+
};
245+
230246
//| def ping(self, ip, *, timeout: float = 0.5) -> float:
231247
//| """Ping an IP to test connectivity. Returns echo time in seconds.
232248
//| Returns None when it times out."""
@@ -268,6 +284,7 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
268284
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
269285

270286
{ MP_ROM_QSTR(MP_QSTR_ap_rssi), MP_ROM_PTR(&wifi_radio_ap_rssi_obj) },
287+
{ MP_ROM_QSTR(MP_QSTR_ipv4_dns), MP_ROM_PTR(&wifi_radio_ipv4_dns_obj) },
271288
{ MP_ROM_QSTR(MP_QSTR_ipv4_gateway), MP_ROM_PTR(&wifi_radio_ipv4_gateway_obj) },
272289
{ MP_ROM_QSTR(MP_QSTR_ipv4_subnet), MP_ROM_PTR(&wifi_radio_ipv4_subnet_obj) },
273290
{ MP_ROM_QSTR(MP_QSTR_ipv4_address), MP_ROM_PTR(&wifi_radio_ipv4_address_obj) },

shared-bindings/wifi/Radio.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self)
5454
extern wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len);
5555

5656
extern mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self);
57+
extern mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self);
5758
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self);
5859
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self);
5960
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);

0 commit comments

Comments
 (0)