diff options
| author | danicampora <daniel@wipy.io> | 2016-02-21 21:28:19 +0100 |
|---|---|---|
| committer | danicampora <daniel@wipy.io> | 2016-02-21 22:01:18 +0100 |
| commit | 495e7cfebce63d0168852269f279c24373abdd3a (patch) | |
| tree | 68cfea8ee24f4371dc5660df49145c5cbfe38ae3 /cc3200/serverstask.c | |
| parent | f5248a087ac5667c53b7eab0e874b517ddf53dae (diff) | |
cc3200: Improve robustness of WLAN during sleep modes.
Diffstat (limited to 'cc3200/serverstask.c')
| -rw-r--r-- | cc3200/serverstask.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/cc3200/serverstask.c b/cc3200/serverstask.c index 355966420..82c43bf8e 100644 --- a/cc3200/serverstask.c +++ b/cc3200/serverstask.c @@ -39,7 +39,8 @@ #include "pybwdt.h" #include "modusocket.h" #include "mpexception.h" - +#include "modnetwork.h" +#include "modwlan.h" /****************************************************************************** DEFINE PRIVATE TYPES @@ -50,13 +51,13 @@ typedef struct { bool do_disable; bool do_enable; bool do_reset; + bool do_wlan_cycle_power; } servers_data_t; /****************************************************************************** DECLARE PRIVATE DATA ******************************************************************************/ -static servers_data_t servers_data = {.timeout = SERVERS_DEF_TIMEOUT_MS, .enabled = false, .do_disable = false, - .do_enable = false, .do_reset = false}; +static servers_data_t servers_data = {.timeout = SERVERS_DEF_TIMEOUT_MS}; static volatile bool sleep_sockets = false; /****************************************************************************** @@ -120,10 +121,16 @@ void TASK_Servers (void *pvParameters) { } if (sleep_sockets) { - sleep_sockets = false; pybwdt_srv_sleeping(true); modusocket_enter_sleep(); pybwdt_srv_sleeping(false); + mp_hal_delay_ms(SERVERS_CYCLE_TIME_MS * 2); + if (servers_data.do_wlan_cycle_power) { + servers_data.do_wlan_cycle_power = false; + wlan_off_on(); + } + sleep_sockets = false; + } // set the alive flag for the wdt @@ -152,6 +159,10 @@ void servers_reset (void) { servers_data.do_reset = true; } +void servers_wlan_cycle_power (void) { + servers_data.do_wlan_cycle_power = true; +} + bool servers_are_enabled (void) { return servers_data.enabled; } |
