From 77791b5633bf8ad29eafea4a6a27736367f339ec Mon Sep 17 00:00:00 2001 From: danicampora Date: Fri, 20 Mar 2015 13:52:33 +0100 Subject: cc3200: Improve usability and robustness of the servers. --- cc3200/serverstask.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) (limited to 'cc3200/serverstask.c') diff --git a/cc3200/serverstask.c b/cc3200/serverstask.c index fbcc211a0..cf576044d 100644 --- a/cc3200/serverstask.c +++ b/cc3200/serverstask.c @@ -54,12 +54,13 @@ typedef struct { volatile bool enabled; volatile bool do_disable; volatile bool do_enable; + volatile bool do_reset; }servers_Data_t; /****************************************************************************** DECLARE PRIVATE DATA ******************************************************************************/ -static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false}; +static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false, .do_reset = false}; /****************************************************************************** DECLARE PRIVATE FUNCTIONS @@ -74,7 +75,6 @@ char *servers_pass; /****************************************************************************** DECLARE PUBLIC FUNCTIONS ******************************************************************************/ - void TASK_Servers (void *pvParameters) { bool cycle = false; @@ -91,14 +91,21 @@ void TASK_Servers (void *pvParameters) { if (servers_data.enabled) { if (servers_data.do_disable) { - servers_data.do_disable = false; - // disable all net processes + // disable network services telnet_disable(); ftp_disable(); - - // now clear the flag + // now clear the flags + servers_data.do_disable = false; + servers_data.do_reset = false; servers_data.enabled = false; } + else if (servers_data.do_reset) { + // reset network services + telnet_reset(); + ftp_reset(); + // clear the flag + servers_data.do_reset = false; + } else { if (cycle) { telnet_run(); @@ -109,15 +116,15 @@ void TASK_Servers (void *pvParameters) { } } else if (servers_data.do_enable) { - servers_data.do_enable = false; - + // enable network services telnet_enable(); ftp_enable(); - - // now set the flag + // now set/clear the flags servers_data.enabled = true; + servers_data.do_enable = false; } + // move to the next cycle cycle = cycle ? false : true; HAL_Delay(SERVERS_CYCLE_TIME_MS); // set the alive flag for the wdt @@ -130,12 +137,18 @@ void servers_start (void) { servers_data.do_enable = true; } +void servers_reset (void) { + servers_data.do_reset = true; +} + void servers_stop (void) { servers_data.do_enable = false; servers_data.do_disable = true; do { HAL_Delay (SERVERS_CYCLE_TIME_MS); } while (servers_are_enabled()); + // clear the last command line + telnet_reset(); } bool servers_are_enabled (void) { -- cgit v1.2.3