@@ -54,12 +54,13 @@ typedef struct {
5454 volatile bool enabled ;
5555 volatile bool do_disable ;
5656 volatile bool do_enable ;
57+ volatile bool do_reset ;
5758}servers_Data_t ;
5859
5960/******************************************************************************
6061 DECLARE PRIVATE DATA
6162 ******************************************************************************/
62- static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false};
63+ static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false, . do_reset = false };
6364
6465/******************************************************************************
6566 DECLARE PRIVATE FUNCTIONS
@@ -74,7 +75,6 @@ char *servers_pass;
7475/******************************************************************************
7576 DECLARE PUBLIC FUNCTIONS
7677 ******************************************************************************/
77-
7878void TASK_Servers (void * pvParameters ) {
7979
8080 bool cycle = false;
@@ -91,14 +91,21 @@ void TASK_Servers (void *pvParameters) {
9191
9292 if (servers_data .enabled ) {
9393 if (servers_data .do_disable ) {
94- servers_data .do_disable = false;
95- // disable all net processes
94+ // disable network services
9695 telnet_disable ();
9796 ftp_disable ();
98-
99- // now clear the flag
97+ // now clear the flags
98+ servers_data .do_disable = false;
99+ servers_data .do_reset = false;
100100 servers_data .enabled = false;
101101 }
102+ else if (servers_data .do_reset ) {
103+ // reset network services
104+ telnet_reset ();
105+ ftp_reset ();
106+ // clear the flag
107+ servers_data .do_reset = false;
108+ }
102109 else {
103110 if (cycle ) {
104111 telnet_run ();
@@ -109,15 +116,15 @@ void TASK_Servers (void *pvParameters) {
109116 }
110117 }
111118 else if (servers_data .do_enable ) {
112- servers_data .do_enable = false;
113-
119+ // enable network services
114120 telnet_enable ();
115121 ftp_enable ();
116-
117- // now set the flag
122+ // now set/clear the flags
118123 servers_data .enabled = true;
124+ servers_data .do_enable = false;
119125 }
120126
127+ // move to the next cycle
121128 cycle = cycle ? false : true;
122129 HAL_Delay (SERVERS_CYCLE_TIME_MS );
123130 // set the alive flag for the wdt
@@ -130,12 +137,18 @@ void servers_start (void) {
130137 servers_data .do_enable = true;
131138}
132139
140+ void servers_reset (void ) {
141+ servers_data .do_reset = true;
142+ }
143+
133144void servers_stop (void ) {
134145 servers_data .do_enable = false;
135146 servers_data .do_disable = true;
136147 do {
137148 HAL_Delay (SERVERS_CYCLE_TIME_MS );
138149 } while (servers_are_enabled ());
150+ // clear the last command line
151+ telnet_reset ();
139152}
140153
141154bool servers_are_enabled (void ) {
0 commit comments