aboutsummaryrefslogtreecommitdiff
path: root/cc3200/serverstask.c
diff options
context:
space:
mode:
authordanicampora2015-03-20 13:52:33 +0100
committerdanicampora2015-03-21 11:31:17 +0100
commit77791b5633bf8ad29eafea4a6a27736367f339ec (patch)
tree15eac2a6e3186eecd0704d26cc759816e5576c94 /cc3200/serverstask.c
parentc1c23e2f6a145fa5aacc165395e00f47f359b95a (diff)
cc3200: Improve usability and robustness of the servers.
Diffstat (limited to 'cc3200/serverstask.c')
-rw-r--r--cc3200/serverstask.c33
1 files changed, 23 insertions, 10 deletions
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) {