summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/esp8266/main.c7
-rw-r--r--ports/esp8266/modnetwork.c8
2 files changed, 15 insertions, 0 deletions
diff --git a/ports/esp8266/main.c b/ports/esp8266/main.c
index 7bb2d8d57..482e32e4d 100644
--- a/ports/esp8266/main.c
+++ b/ports/esp8266/main.c
@@ -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
diff --git a/ports/esp8266/modnetwork.c b/ports/esp8266/modnetwork.c
index c7f3397c4..16401c939 100644
--- a/ports/esp8266/modnetwork.c
+++ b/ports/esp8266/modnetwork.c
@@ -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;
}