Skip to content

Commit 40e8903

Browse files
committed
Add DNS optional to set IP
1 parent 4f6d4e2 commit 40e8903

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ void common_hal_wifi_radio_stop_dhcp_client(wifi_radio_obj_t *self) {
412412
esp_netif_dhcpc_stop(self->netif);
413413
}
414414

415-
void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway) {
415+
void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway, mp_obj_t ipv4_dns) {
416416
common_hal_wifi_radio_stop_dhcp_client(self); // Must stop DHCP to set a manual address
417417

418418
esp_netif_ip_info_t ip_info;
@@ -421,6 +421,10 @@ void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv
421421
ipaddress_ipaddress_to_esp_idf_ip4(gateway, &ip_info.gw);
422422

423423
esp_netif_set_ip_info(self->netif, &ip_info);
424+
425+
if (ipv4_dns != MP_OBJ_NULL) {
426+
common_hal_wifi_radio_set_ipv4_dns(self, ipv4_dns);
427+
}
424428
}
425429

426430
mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout) {

shared-bindings/wifi/Radio.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -414,23 +414,24 @@ MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ipv4_subnet_ap_obj, wifi_radio_get_ipv4
414414
MP_PROPERTY_GETTER(wifi_radio_ipv4_subnet_ap_obj,
415415
(mp_obj_t)&wifi_radio_get_ipv4_subnet_ap_obj);
416416

417-
//| def set_ipv4_address(self, ipv4: ipaddress.IPv4Address, netmask: ipaddress.IPv4Address, gateway: ipaddress.IPv4Address) -> None:
418-
//| """Sets the IP v4 address of the station. Must include the netmask and gateway.
417+
//| def set_ipv4_address(self, ipv4: ipaddress.IPv4Address, netmask: ipaddress.IPv4Address, gateway: ipaddress.IPv4Address, ipv4_dns: Optional[ipaddress.IPv4Address]) -> None:
418+
//| """Sets the IP v4 address of the station. Must include the netmask and gateway. DNS address is optional.
419419
//| Setting the address manually will stop the DHCP client."""
420420
//| ...
421421
STATIC mp_obj_t wifi_radio_set_ipv4_address(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
422-
enum { ARG_ipv4, ARG_netmask, ARG_gateway };
422+
enum { ARG_ipv4, ARG_netmask, ARG_gateway, ARG_ipv4_dns };
423423
static const mp_arg_t allowed_args[] = {
424424
{ MP_QSTR_ipv4, MP_ARG_REQUIRED | MP_ARG_OBJ, },
425425
{ MP_QSTR_netmask, MP_ARG_REQUIRED | MP_ARG_OBJ, },
426426
{ MP_QSTR_gateway, MP_ARG_REQUIRED | MP_ARG_OBJ, },
427+
{ MP_QSTR_ipv4_dns, MP_ARG_OBJ, {.u_obj = MP_OBJ_NULL} },
427428
};
428429

429430
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
430431
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
431432
mp_arg_parse_all(n_args - 1, pos_args + 1, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
432433

433-
common_hal_wifi_radio_set_ipv4_address(self, args[ARG_ipv4].u_obj, args[ARG_netmask].u_obj, args[ARG_gateway].u_obj);
434+
common_hal_wifi_radio_set_ipv4_address(self, args[ARG_ipv4].u_obj, args[ARG_netmask].u_obj, args[ARG_gateway].u_obj, args[ARG_ipv4_dns].u_obj);
434435
return mp_const_none;
435436
}
436437
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(wifi_radio_set_ipv4_address_obj, 4, wifi_radio_set_ipv4_address);

shared-bindings/wifi/Radio.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet_ap(wifi_radio_obj_t *self)
106106
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);
107107
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self);
108108

109-
extern void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway);
109+
extern void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway, mp_obj_t ipv4_dns_addr);
110110

111111
extern mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout);
112112

0 commit comments

Comments
 (0)