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
369371void 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
373378void 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
377382void 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
390395void 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
394407volatile bool ping_received ;
0 commit comments