48
48
#include "lwip/raw.h"
49
49
#include "lwip_src/ping.h"
50
50
51
+ #include "shared/netutils/dhcpserver.h"
52
+
51
53
#define MAC_ADDRESS_LENGTH 6
52
54
53
55
#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) {
367
369
}
368
370
369
371
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 );
371
376
}
372
377
373
378
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 );
375
380
}
376
381
377
382
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
388
393
}
389
394
390
395
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 );
392
405
}
393
406
394
407
volatile bool ping_received ;
0 commit comments