8000 esp32/esp8266: Support config(pm=tuple) to set extended PM values. · micropython/micropython@06b85f9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 06b85f9

Browse files
committed
esp32/esp8266: Support config(pm=tuple) to set extended PM values.
Support using a tuple for the "pm" config option to fine-tune the power management parameters. WLAN.config(pm=(WLAN.PM_POWERSAVE, XX), where XX is an integer which sets the listen_address wifi config parameter.
1 parent c0cffe4 commit 06b85f9

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

ports/esp32/network_wlan.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,21 @@ STATIC mp_obj_t network_wlan_config(size_t n_args, const mp_obj_t *args, mp_map_
509509
break;
510510
}
511511
case MP_QSTR_pm: {
512-
esp_exceptions(esp_wifi_set_ps(mp_obj_get_int(kwargs->table[i].value)));
512+
mp_obj_t arg = kwargs->table[i].value;
513+
mp_int_t pm_mode;
514+
if (!mp_obj_get_int_maybe(arg, &pm_mode)) {
515+
mp_obj_tuple_t *tuple = MP_OBJ_FROM_PTR(arg);
516+
if (mp_obj_is_type(tuple, &mp_type_tuple) && tuple->len == 2) {
517+
pm_mode = mp_obj_get_int(tuple->items[0]);
518+
cfg.sta.listen_interval = mp_obj_get_int(tuple->items[1]);
519+
if (pm_mode != WIFI_PS_MAX_MODEM) {
520+
mp_raise_ValueError(NULL);
521+
}
522+
} else {
523+
mp_raise_ValueError(NULL);
524+
}
525+
}
526+
esp_exceptions(esp_wifi_set_ps((wifi_ps_type_t)pm_mode));
513527
break;
514528
}
515529
default:

0 commit comments

Comments
 (0)
0