add wifi.radio.power_management et al

This commit is contained in:
Dan Halbert 2025-04-19 20:54:10 -04:00
parent 97d037b3c4
commit 1ff3dff298
12 changed files with 150 additions and 94 deletions

View file

@ -140,7 +140,7 @@ void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const mp_float_t
}
wifi_power_management_t common_hal_wifi_radio_get_power_management(wifi_radio_obj_t *self) {
wifi_ps_type ps;
wifi_ps_type_t ps;
esp_err_t ret = esp_wifi_get_ps(&ps);
if (ret == ESP_OK) {
switch (ps) {
@ -156,7 +156,7 @@ wifi_power_management_t common_hal_wifi_radio_get_power_management(wifi_radio_ob
}
void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_power_management_t power_management, mp_uint_t listen_interval) {
void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_power_management_t power_management) {
switch (power_management) {
case POWER_MANAGEMENT_MIN:
esp_wifi_set_ps(WIFI_PS_MIN_MODEM);
@ -164,7 +164,8 @@ void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_pow
case POWER_MANAGEMENT_MAX: {
// listen_interval is only used in this case.
wifi_config_t *config = &self->sta_config;
config->sta.listen_interval = listen_interval;
// This is a typical value seen in various examples.
config->sta.listen_interval = 3;
esp_wifi_set_ps(WIFI_PS_MAX_MODEM);
esp_wifi_set_config(ESP_IF_WIFI_STA, config);
}
@ -172,14 +173,12 @@ void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_pow
case POWER_MANAGEMENT_NONE:
esp_wifi_set_ps(WIFI_PS_NONE);
break;
case POWER_MANAGEMENT_UNKNOWN:
// This should be prevented in shared-bindings.
break;
}
}
mp_int_t common_hal_wifi_radio_get_listen_interval(wifi_radio_obj_t *self) {
wifi_config_t *config = &self->sta_config;
return config->sta.listen_interval;
}
mp_obj_t common_hal_wifi_radio_get_mac_address_ap(wifi_radio_obj_t *self) {
uint8_t mac[MAC_ADDRESS_LENGTH];
esp_wifi_get_mac(ESP_IF_WIFI_AP, mac);

View file

@ -40,9 +40,6 @@ CIRCUITPY_FULL_BUILD ?= 1
# If SSL is enabled, it's mbedtls
CIRCUITPY_SSL_MBEDTLS = 1
# Wifi Power Save
CIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT = 1
# Never use our copy of MBEDTLS
CIRCUITPY_HASHLIB_MBEDTLS_ONLY = 0

View file

@ -16,7 +16,7 @@
#include "lib/cyw43-driver/src/cyw43.h"
static int power_management_value = PM_DISABLED;
static uint32_t power_management_value = CONST_CYW43_DEFAULT_PM;
void cyw43_enter_deep_sleep(void) {
#define WL_REG_ON 23
@ -43,14 +43,23 @@ MP_DEFINE_CONST_OBJ_TYPE(
print, shared_bindings_microcontroller_pin_print
);
uint32_t cyw43_get_power_management_value() {
return power_management_value;
}
void cyw43_set_power_management_value(uint32_t value) {
power_management_value = value;
bindings_cyw43_wifi_enforce_pm();
}
//| PM_STANDARD: int
//| """The standard power management mode"""
//| """The default power management mode; same as PM_PERFORMANCE"""
//| PM_AGGRESSIVE: int
//| """Aggressive power management mode for optimal power usage at the cost of performance"""
//| PM_PERFORMANCE: int
//| """Performance power management mode where more power is used to increase performance"""
//| PM_DISABLED: int
//| """Disable power management and always use highest power mode. CircuitPython sets this value at reset time, because it provides the best connectivity reliability."""
//| """Disable power management and always use highest power mode."""
//|
//|
//| def set_power_management(value: int) -> None:
@ -85,8 +94,7 @@ MP_DEFINE_CONST_OBJ_TYPE(
//|
static mp_obj_t cyw43_set_power_management(const mp_obj_t value_in) {
mp_int_t value = mp_obj_get_int(value_in);
power_management_value = value;
bindings_cyw43_wifi_enforce_pm();
cyw43_set_power_management_value(value);
return mp_const_none;
}
static MP_DEFINE_CONST_FUN_OBJ_1(cyw43_set_power_management_obj, cyw43_set_power_management);
@ -126,10 +134,10 @@ static const mp_rom_map_elem_t cyw43_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_CywPin), MP_ROM_PTR(&cyw43_pin_type) },
{ MP_ROM_QSTR(MP_QSTR_set_power_management), &cyw43_set_power_management_obj },
{ MP_ROM_QSTR(MP_QSTR_get_power_management), &cyw43_get_power_management_obj },
{ MP_ROM_QSTR(MP_QSTR_PM_STANDARD), MP_ROM_INT(PM_STANDARD) },
{ MP_ROM_QSTR(MP_QSTR_PM_AGGRESSIVE), MP_ROM_INT(PM_AGGRESSIVE) },
{ MP_ROM_QSTR(MP_QSTR_PM_PERFORMANCE), MP_ROM_INT(PM_PERFORMANCE) },
{ MP_ROM_QSTR(MP_QSTR_PM_DISABLED), MP_ROM_INT(PM_DISABLED) },
{ MP_ROM_QSTR(MP_QSTR_PM_STANDARD), MP_ROM_INT(CONST_CYW43_DEFAULT_PM) },
{ MP_ROM_QSTR(MP_QSTR_PM_AGGRESSIVE), MP_ROM_INT(CONST_CYW43_AGGRESSIVE_PM) },
{ MP_ROM_QSTR(MP_QSTR_PM_PERFORMANCE), MP_ROM_INT(CONST_CYW43_PERFORMANCE_PM) },
{ MP_ROM_QSTR(MP_QSTR_PM_DISABLED), MP_ROM_INT(CONST_CYW43_NONE_PM) },
};
static MP_DEFINE_CONST_DICT(cyw43_module_globals, cyw43_module_globals_table);

View file

@ -16,21 +16,25 @@ const mcu_pin_obj_t *validate_obj_is_free_pin_including_cyw43(mp_obj_t obj, qstr
const mcu_pin_obj_t *validate_obj_is_free_pin_or_gpio29(mp_obj_t obj, qstr arg_name);
const mcu_pin_obj_t *validate_obj_is_pin_including_cyw43(mp_obj_t obj, qstr arg_name);
#define CONSTANT_CYW43_PM_VALUE(pm_mode, pm2_sleep_ret_ms, li_beacon_period, li_dtim_period, li_assoc) \
// This is equivalent to the code in cyw43.h, except that the values are computed at compile time.
// A `CONST_` prefix has been added to the computation function (expressed as a macro) and the values.
#define CONST_cyw43_pm_value(pm_mode, pm2_sleep_ret_ms, li_beacon_period, li_dtim_period, li_assoc) \
(li_assoc << 20 | /* listen interval sent to ap */ \
li_dtim_period << 16 | \
li_beacon_period << 12 | \
(pm2_sleep_ret_ms / 10) << 4 | /* cyw43_ll_wifi_pm multiplies this by 10 */ \
pm_mode /* CYW43_PM2_POWERSAVE_MODE etc */)
// CYW43_DEFAULT_PM (except a compile-time constant)
#define PM_STANDARD CONSTANT_CYW43_PM_VALUE(CYW43_PM2_POWERSAVE_MODE, 200, 1, 1, 10)
// CYW43_AGGRESSIVE_PM (except a compile-time constant)
#define PM_AGGRESSIVE CONSTANT_CYW43_PM_VALUE(CYW43_PM2_POWERSAVE_MODE, 2000, 1, 1, 10)
// CYW43_PERFORMANCE_PM (except a compile-time constant)
#define PM_PERFORMANCE CONSTANT_CYW43_PM_VALUE(CYW43_PM2_POWERSAVE_MODE, 20, 1, 1, 1)
// The 0xa11140 magic value
#define PM_DISABLED CONSTANT_CYW43_PM_VALUE(CYW43_NO_POWERSAVE_MODE, 200, 1, 1, 10)
#define CONST_CYW43_DEFAULT_PM (CONST_CYW43_PERFORMANCE_PM)
#define CONST_CYW43_NONE_PM (CONST_cyw43_pm_value(CYW43_NO_POWERSAVE_MODE, 10, 0, 0, 0))
#define CONST_CYW43_AGGRESSIVE_PM (CONST_cyw43_pm_value(CYW43_PM1_POWERSAVE_MODE, 10, 0, 0, 0))
#define CONST_CYW43_PERFORMANCE_PM (CONST_cyw43_pm_value(CYW43_PM2_POWERSAVE_MODE, 200, 1, 1, 10))
extern uint32_t cyw43_get_power_management_value(void);
extern void cyw43_set_power_management_value(uint32_t value);
extern void bindings_cyw43_wifi_enforce_pm(void);
void cyw43_enter_deep_sleep(void);

View file

@ -5,6 +5,7 @@
// SPDX-License-Identifier: MIT
#include "supervisor/port.h"
#include "shared-bindings/wifi/PowerManagement.h"
#include "shared-bindings/wifi/Radio.h"
#include "shared-bindings/wifi/Network.h"
@ -107,6 +108,41 @@ void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const mp_float_t
cyw43_ioctl(&cyw43_state, CYW43_IOCTL_SET_VAR, 9 + 4, buf, CYW43_ITF_AP);
}
wifi_power_management_t common_hal_wifi_radio_get_power_management(wifi_radio_obj_t *self) {
uint32_t pm_value = cyw43_get_power_management_value();
switch (pm_value) {
case CONST_CYW43_PERFORMANCE_PM:
return POWER_MANAGEMENT_MIN;
case CONST_CYW43_AGGRESSIVE_PM:
return POWER_MANAGEMENT_MAX;
case CONST_CYW43_NONE_PM:
return POWER_MANAGEMENT_NONE;
default:
return POWER_MANAGEMENT_UNKNOWN;
}
}
void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_power_management_t power_management) {
uint32_t pm_setting = CONST_CYW43_DEFAULT_PM;
switch (power_management) {
case POWER_MANAGEMENT_MIN:
pm_setting = CONST_CYW43_PERFORMANCE_PM;
break;
case POWER_MANAGEMENT_MAX:
pm_setting = CONST_CYW43_AGGRESSIVE_PM;
break;
case POWER_MANAGEMENT_NONE:
pm_setting = CONST_CYW43_NONE_PM;
break;
default:
// Should not get here.
break;
}
cyw43_set_power_management_value(pm_setting);
}
mp_obj_t common_hal_wifi_radio_get_mac_address_ap(wifi_radio_obj_t *self) {
return common_hal_wifi_radio_get_mac_address(self);
}

View file

@ -617,6 +617,7 @@ $(filter $(SRC_PATTERNS), \
supervisor/StatusBar.c \
wifi/AuthMode.c \
wifi/Packet.c \
wifi/PowerManagement.c \
)
ifeq ($(CIRCUITPY_BLEIO_HCI),1)

View file

@ -705,9 +705,6 @@ CFLAGS += -DCIRCUITPY_WEB_WORKFLOW=$(CIRCUITPY_WEB_WORKFLOW)
CIRCUITPY_WIFI_RADIO_SETTABLE_MAC_ADDRESS?= 1
CFLAGS += -DCIRCUITPY_WIFI_RADIO_SETTABLE_MAC_ADDRESS=$(CIRCUITPY_WIFI_RADIO_SETTABLE_MAC_ADDRESS)
CIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT?= 0
CFLAGS += -DCIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT=$(CIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT)
# tinyusb port tailored configuration
CIRCUITPY_TUSB_MEM_ALIGN ?= 4
CFLAGS += -DCIRCUITPY_TUSB_MEM_ALIGN=$(CIRCUITPY_TUSB_MEM_ALIGN)

View file

@ -9,25 +9,38 @@
#include "shared-bindings/wifi/PowerManagement.h"
//| class PowerManagement:
//| """Power-saving options for wifi"""
//| """Power-saving options for wifi
//|
//| .. note:: On boards using the CYW43 radio module, the choices below correspond to the
//| power management values defined in the `cyw43` module:
//| `PowerManagement.MIN` is the same as `cyw43.PM_PERFORMANCE`, `PowerManagement.MAX`
//| is the same as `cyw43.PM_AGGRESSIVE`, and `PowerManagement.NONE` is the same as
//| `cyw43.PM_DISABLED`. If a custom value was set with `cyw43.set_power_management()`
//| not corresponding to one of these three values, then `PowerManagement.UNKNOWN` will be returned.
//| """
//|
//| MIN: PowerManagement
//| """Minimum power management (default). The WiFi station wakes up to receive a beacon every DTIM period.
//| The DTIM period is set by the access point."""
//| MAX: PowerManagement
//| """Maximum power management, at the expense of some performance. The WiFi station wakes up every 100 ms."""
//| """Maximum power management, at the expense of some performance. The WiFi station wakes up less often than `MIN`."""
//| NONE: PowerManagement
//| """No power management: the WiFi station does not sleep."""
//| UNKNOWN: PowerManagement
//| """Power management setting cannot be determined."""
//|
// In order of the enum type.
MAKE_ENUM_VALUE(wifi_power_management_type, power_management, NONE, POWER_MANAGEMENT_NONE);
MAKE_ENUM_VALUE(wifi_power_management_type, power_management, MIN, POWER_MANAGEMENT_MIN);
MAKE_ENUM_VALUE(wifi_power_management_type, power_management, MAX, POWER_MANAGEMENT_MAX);
MAKE_ENUM_VALUE(wifi_power_management_type, power_management, UNKNOWN, POWER_MANAGEMENT_UNKNOWN);
MAKE_ENUM_MAP(wifi_power_management) {
MAKE_ENUM_MAP_ENTRY(power_management, NONE),
MAKE_ENUM_MAP_ENTRY(power_management, MIN),
MAKE_ENUM_MAP_ENTRY(power_management, MAX),
MAKE_ENUM_MAP_ENTRY(power_management, UNKNOWN),
};
static MP_DEFINE_CONST_DICT(wifi_power_management_locals_dict, wifi_power_management_locals_table);

View file

@ -9,9 +9,11 @@
#include "py/enum.h"
typedef enum {
POWER_MANAGMENT_NONE = 0,
POWER_MANAGEMENT_NONE = 0,
POWER_MANAGEMENT_MIN = 1,
POWER_MANAGEMENT_MAX = 2,
// Value can't be determined.
POWER_MANAGEMENT_UNKNOWN = 3,
} wifi_power_management_t;
extern const mp_obj_type_t wifi_power_management_type;

View file

@ -6,6 +6,7 @@
#include "shared-bindings/wifi/__init__.h"
#include "shared-bindings/wifi/AuthMode.h"
#include "shared-bindings/wifi/PowerManagement.h"
#include <string.h>
@ -189,33 +190,29 @@ MP_PROPERTY_GETSET(wifi_radio_tx_power_obj,
(mp_obj_t)&wifi_radio_set_tx_power_obj);
//| power_management: PowerManagement
//| """Wifi power management setting. The default is `wifi.PowerManagement.MIN.
//| """Wifi power management setting. See `wifi.PowerManagement`. The default is `wifi.PowerManagement.MIN`.
//| """
static mp_obj_t wifi_radio_get_power_management(mp_obj_t self_in) {
#if CIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
return cp_enum_find(&wifi_power_management_type, common_hal_wifi_radio_get_power_management(self));
#else
return MP_OBJ_FROM_PTR(&power_management_MIN);
#endif
}
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_listen_interval_obj, wifi_radio_get_listen_interval);
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_power_management_obj, wifi_radio_get_power_management);
static mp_obj_t wifi_radio_set_power_management(mp_obj_t self_in, mp_obj_t power_management_in) {
#if CIRCUITPY_WIFI_RADIO_SETTABLE_POWER_MANAGEMENT
wifi_radio_obj_t *self = MP_OBJ_TO_PTR(self_in);
wifi_power_management_t power_management = cp_enum_value(&wifi_power_management_type, power_management_in, MP_QSTR_power_management);
wifi_power_management_t power_management =
cp_enum_value(&wifi_power_management_type, power_management_in, MP_QSTR_power_management);
if (power_management == POWER_MANAGEMENT_UNKNOWN) {
mp_arg_error_invalid(MP_QSTR_power_management);
}
common_hal_wifi_radio_set_power_management(self, power_management);
#else
mp_raise_NotImplementedError(NULL);
#endif
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_listen_interval_obj, wifi_radio_set_listen_interval);
MP_DEFINE_CONST_FUN_OBJ_2(wifi_radio_set_power_management_obj, wifi_radio_set_power_management);
MP_PROPERTY_GETSET(wifi_radio_listen_interval_obj,
(mp_obj_t)&wifi_radio_get_listen_interval_obj,
(mp_obj_t)&wifi_radio_set_listen_interval_obj);
MP_PROPERTY_GETSET(wifi_radio_power_management_obj,
(mp_obj_t)&wifi_radio_get_power_management_obj,
(mp_obj_t)&wifi_radio_set_power_management_obj);
//| mac_address_ap: ReadableBuffer
//| """MAC address for the AP. When the address is altered after interface is started
@ -870,7 +867,7 @@ static const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_ipv4_subnet_ap), MP_ROM_PTR(&wifi_radio_ipv4_subnet_ap_obj) },
{ MP_ROM_QSTR(MP_QSTR_ipv4_address), MP_ROM_PTR(&wifi_radio_ipv4_address_obj) },
{ MP_ROM_QSTR(MP_QSTR_ipv4_address_ap), MP_ROM_PTR(&wifi_radio_ipv4_address_ap_obj) },
{ MP_ROM_QSTR(MP_QSTR_listen_interval), MP_ROM_PTR(&wifi_radio_listen_interval_obj) },
{ MP_ROM_QSTR(MP_QSTR_power_management), MP_ROM_PTR(&wifi_radio_power_management_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_ipv4_address), MP_ROM_PTR(&wifi_radio_set_ipv4_address_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_ipv4_address_ap), MP_ROM_PTR(&wifi_radio_set_ipv4_address_ap_obj) },

View file

@ -8,6 +8,8 @@
#include <stdint.h>
#include "shared-bindings/wifi/PowerManagement.h"
#include "common-hal/wifi/Radio.h"
#include "py/objstr.h"
@ -75,47 +77,46 @@ extern void common_hal_wifi_radio_set_mac_address_ap(wifi_radio_obj_t *self, con
extern mp_float_t common_hal_wifi_radio_get_tx_power(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_tx_power(wifi_radio_obj_t *self, const mp_float_t power);
wifi_power_management_t common_hal_wifi_radio_get_power_management(wifi_radio_obj_t *self) {
void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_power_management_t power_management, mp_uint_t listen_interval);
extern wifi_power_management_t common_hal_wifi_radio_get_listen_interval(wifi_radio_obj_t *self);
extern wifi_power_management_t common_hal_wifi_radio_get_power_management(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_power_management(wifi_radio_obj_t *self, wifi_power_management_t power_management);
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self, uint8_t start_channel, uint8_t stop_channel);
extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_start_scanning_networks(wifi_radio_obj_t *self, uint8_t start_channel, uint8_t stop_channel);
extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_station(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_stop_station(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_station(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_stop_station(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_ap(wifi_radio_obj_t *self, uint8_t *ssid, size_t ssid_len, uint8_t *password, size_t password_len, uint8_t channel, uint32_t authmode, uint8_t max_connections);
extern void common_hal_wifi_radio_stop_ap(wifi_radio_obj_t *self);
extern bool common_hal_wifi_radio_get_ap_active(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_stations_ap(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_ap(wifi_radio_obj_t *self, uint8_t *ssid, size_t ssid_len, uint8_t *password, size_t password_len, uint8_t channel, uint32_t authmode, uint8_t max_connections);
extern void common_hal_wifi_radio_stop_ap(wifi_radio_obj_t *self);
extern bool common_hal_wifi_radio_get_ap_active(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_stations_ap(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_dhcp_client(wifi_radio_obj_t *self, bool ipv4, bool ipv6);
extern void common_hal_wifi_radio_stop_dhcp_client(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_dhcp_server(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_stop_dhcp_server(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_dhcp_client(wifi_radio_obj_t *self, bool ipv4, bool ipv6);
extern void common_hal_wifi_radio_stop_dhcp_client(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_start_dhcp_server(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_stop_dhcp_server(wifi_radio_obj_t *self);
extern wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t *ssid, size_t ssid_len, uint8_t *password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t *bssid, size_t bssid_len);
extern bool common_hal_wifi_radio_get_connected(wifi_radio_obj_t *self);
extern wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t *ssid, size_t ssid_len, uint8_t *password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t *bssid, size_t bssid_len);
extern bool common_hal_wifi_radio_get_connected(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_ipv4_dns(wifi_radio_obj_t *self, mp_obj_t ipv4_dns_addr);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway_ap(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet_ap(wifi_radio_obj_t *self);
uint32_t wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_ipv4_dns(wifi_radio_obj_t *self, mp_obj_t ipv4_dns_addr);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway_ap(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet_ap(wifi_radio_obj_t *self);
uint32_t wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self);
mp_obj_t common_hal_wifi_radio_get_addresses(wifi_radio_obj_t *self);
mp_obj_t common_hal_wifi_radio_get_addresses_ap(wifi_radio_obj_t *self);
mp_obj_t common_hal_wifi_radio_get_addresses(wifi_radio_obj_t *self);
mp_obj_t common_hal_wifi_radio_get_addresses_ap(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_dns(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_dns(wifi_radio_obj_t *self, mp_obj_t dns_addr);
extern mp_obj_t common_hal_wifi_radio_get_dns(wifi_radio_obj_t *self);
extern void common_hal_wifi_radio_set_dns(wifi_radio_obj_t *self, mp_obj_t dns_addr);
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);
extern 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);
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);
extern 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);
extern mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout);
extern mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address, mp_float_t timeout);

View file

@ -30,21 +30,22 @@ static MP_DEFINE_CONST_FUN_OBJ_0(wifi___init___obj, wifi___init__);
static const mp_rom_map_elem_t wifi_module_globals_table[] = {
// Name
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_wifi) },
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_wifi) },
// Initialization
{ MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&wifi___init___obj) },
{ MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&wifi___init___obj) },
// Classes
{ MP_ROM_QSTR(MP_QSTR_AuthMode), MP_ROM_PTR(&wifi_authmode_type) },
{ MP_ROM_QSTR(MP_QSTR_Monitor), MP_ROM_PTR(&wifi_monitor_type) },
{ MP_ROM_QSTR(MP_QSTR_Network), MP_ROM_PTR(&wifi_network_type) },
{ MP_ROM_QSTR(MP_QSTR_Packet), MP_ROM_PTR(&wifi_packet_type) },
{ MP_ROM_QSTR(MP_QSTR_Radio), MP_ROM_PTR(&wifi_radio_type) },
{ MP_ROM_QSTR(MP_QSTR_Station), MP_ROM_PTR(&wifi_radio_station_type) },
{ MP_ROM_QSTR(MP_QSTR_AuthMode), MP_ROM_PTR(&wifi_authmode_type) },
{ MP_ROM_QSTR(MP_QSTR_Monitor), MP_ROM_PTR(&wifi_monitor_type) },
{ MP_ROM_QSTR(MP_QSTR_Network), MP_ROM_PTR(&wifi_network_type) },
{ MP_ROM_QSTR(MP_QSTR_Packet), MP_ROM_PTR(&wifi_packet_type) },
{ MP_ROM_QSTR(MP_QSTR_PowerManagement), MP_ROM_PTR(&wifi_power_management_type) },
{ MP_ROM_QSTR(MP_QSTR_Radio), MP_ROM_PTR(&wifi_radio_type) },
{ MP_ROM_QSTR(MP_QSTR_Station), MP_ROM_PTR(&wifi_radio_station_type) },
// Properties
{ MP_ROM_QSTR(MP_QSTR_radio), MP_ROM_PTR(&common_hal_wifi_radio_obj) },
{ MP_ROM_QSTR(MP_QSTR_radio), MP_ROM_PTR(&common_hal_wifi_radio_obj) },
};
static MP_DEFINE_CONST_DICT(wifi_module_globals, wifi_module_globals_table);