esp8266/modnetwork: Automatically do radio sleep if no interface active.

Reduces current of device by about 55mA when radio is sleeping.
This commit is contained in:
Damien George 2018-11-28 11:55:27 +11:00
parent 9e2dd93145
commit 321d75e087
2 changed files with 15 additions and 0 deletions

View File

@ -102,6 +102,13 @@ void soft_reset(void) {
}
void init_done(void) {
// Configure sleep, and put the radio to sleep if no interfaces are active
wifi_fpm_set_sleep_type(MODEM_SLEEP_T);
if (wifi_get_opmode() == NULL_MODE) {
wifi_fpm_open();
wifi_fpm_do_sleep(0xfffffff);
}
#if MICROPY_REPL_EVENT_DRIVEN
uart_task_init();
#endif

View File

@ -83,7 +83,15 @@ STATIC mp_obj_t esp_active(size_t n_args, const mp_obj_t *args) {
} else {
mode &= ~mask;
}
if (mode != NULL_MODE) {
wifi_fpm_do_wakeup();
wifi_fpm_close();
}
error_check(wifi_set_opmode(mode), "Cannot update i/f status");
if (mode == NULL_MODE) {
wifi_fpm_open();
wifi_fpm_do_sleep(0xfffffff);
}
return mp_const_none;
}