Merge pull request #7976 from anecdata/ap_ipv4_picow

Allow Access Point static IPv4 on the raspberrypi port
This commit is contained in:
Dan Halbert 2023-05-16 18:45:22 -04:00 committed by GitHub
commit f2bfced407
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 3 deletions

View File

@ -48,6 +48,8 @@
#include "lwip/raw.h"
#include "lwip_src/ping.h"
#include "shared/netutils/dhcpserver.h"
#define MAC_ADDRESS_LENGTH 6
#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) {
}
void common_hal_wifi_radio_start_dhcp_server(wifi_radio_obj_t *self) {
mp_raise_NotImplementedError(NULL);
ip4_addr_t ipv4_addr, netmask_addr;
ipaddress_ipaddress_to_lwip(common_hal_wifi_radio_get_ipv4_address_ap(self), &ipv4_addr);
ipaddress_ipaddress_to_lwip(common_hal_wifi_radio_get_ipv4_subnet_ap(self), &netmask_addr);
dhcp_server_init(&cyw43_state.dhcp_server, &ipv4_addr, &netmask_addr);
}
void common_hal_wifi_radio_stop_dhcp_server(wifi_radio_obj_t *self) {
mp_raise_NotImplementedError(NULL);
dhcp_server_deinit(&cyw43_state.dhcp_server);
}
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
}
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) {
mp_raise_NotImplementedError(NULL);
common_hal_wifi_radio_stop_dhcp_server(self);
ip4_addr_t ipv4_addr, netmask_addr, gateway_addr;
ipaddress_ipaddress_to_lwip(ipv4, &ipv4_addr);
ipaddress_ipaddress_to_lwip(netmask, &netmask_addr);
ipaddress_ipaddress_to_lwip(gateway, &gateway_addr);
netif_set_addr(NETIF_AP, &ipv4_addr, &netmask_addr, &gateway_addr);
common_hal_wifi_radio_start_dhcp_server(self);
}
volatile bool ping_received;