Skip to content

Commit f2bfced

Browse files
authored
Merge pull request #7976 from anecdata/ap_ipv4_picow
Allow Access Point static IPv4 on the raspberrypi port
2 parents d945d8b + 4ac7e76 commit f2bfced

File tree

1 file changed

+16
-3
lines changed
  • ports/raspberrypi/common-hal/wifi

1 file changed

+16
-3
lines changed

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
#include "lwip/raw.h"
4949
#include "lwip_src/ping.h"
5050

51+
#include "shared/netutils/dhcpserver.h"
52+
5153
#define MAC_ADDRESS_LENGTH 6
5254

5355
#define NETIF_STA (&cyw43_state.netif[CYW43_ITF_STA])
@@ -367,11 +369,14 @@ void common_hal_wifi_radio_stop_dhcp_client(wifi_radio_obj_t *self) {
367369
}
368370

369371
void common_hal_wifi_radio_start_dhcp_server(wifi_radio_obj_t *self) {
370-
mp_raise_NotImplementedError(NULL);
372+
ip4_addr_t ipv4_addr, netmask_addr;
373+
ipaddress_ipaddress_to_lwip(common_hal_wifi_radio_get_ipv4_address_ap(self), &ipv4_addr);
374+
ipaddress_ipaddress_to_lwip(common_hal_wifi_radio_get_ipv4_subnet_ap(self), &netmask_addr);
375+
dhcp_server_init(&cyw43_state.dhcp_server, &ipv4_addr, &netmask_addr);
371376
}
372377

373378
void common_hal_wifi_radio_stop_dhcp_server(wifi_radio_obj_t *self) {
374-
mp_raise_NotImplementedError(NULL);
379+
dhcp_server_deinit(&cyw43_state.dhcp_server);
375380
}
376381

377382
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) {
@@ -388,7 +393,15 @@ void common_hal_wifi_radio_set_ipv4_address(wifi_radio_obj_t *self, mp_obj_t ipv
388393
}
389394

390395
void common_hal_wifi_radio_set_ipv4_address_ap(wifi_radio_obj_t *self, mp_obj_t ipv4, mp_obj_t netmask, mp_obj_t gateway) {
391-
mp_raise_NotImplementedError(NULL);
396+
common_hal_wifi_radio_stop_dhcp_server(self);
397+
398+
ip4_addr_t ipv4_addr, netmask_addr, gateway_addr;
399+
ipaddress_ipaddress_to_lwip(ipv4, &ipv4_addr);
400+
ipaddress_ipaddress_to_lwip(netmask, &netmask_addr);
401+
ipaddress_ipaddress_to_lwip(gateway, &gateway_addr);
402+
netif_set_addr(NETIF_AP, &ipv4_addr, &netmask_addr, &gateway_addr);
403+
404+
common_hal_wifi_radio_start_dhcp_server(self);
392405
}
393406

394407
volatile bool ping_received;

0 commit comments

Comments
 (0)