Skip to content

Commit 684dba4

Browse files
author
Daniel Campora
committed
cc3200: Roll back to the previous telnet and ftp timeouts.
Unfortunately, these timeouts are the only realiable way (for now), to be able to detect broken connections due to half-open sockets. Such a thing occurs when getting out of the WiFi coverage area or when disconnecting from the AP (sometimes the client doesn't send the disconnect packet).
1 parent e15f819 commit 684dba4

8 files changed

Lines changed: 26 additions & 51 deletions

File tree

cc3200/ftp/ftp.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
#define FTP_UNIX_TIME_20150101 1420070400
6868
#define FTP_UNIX_SECONDS_180_DAYS 15552000
6969
#define FTP_DATA_TIMEOUT_MS 5000 // 5 seconds
70-
#define FTP_CMD_TIMEOUT_MS 300000 // 5 minutes
70+
#define FTP_CMD_TIMEOUT_MS 120000 // 2 minutes
7171
#define FTP_SOCKETFIFO_ELEMENTS_MAX 4
7272
#define FTP_CYCLE_TIME_MS (SERVERS_CYCLE_TIME_MS * 2)
7373

@@ -224,6 +224,7 @@ static ftp_result_t ftp_list_dir (char *list, uint32_t maxlistsize, uint32_t *li
224224
static void ftp_open_child (char *pwd, char *dir);
225225
static void ftp_close_child (char *pwd);
226226
static void ftp_return_to_previous_path (char *pwd, char *dir);
227+
static void ftp_reset (void);
227228

228229
/******************************************************************************
229230
DEFINE PUBLIC FUNCTIONS
@@ -405,16 +406,6 @@ void ftp_disable (void) {
405406
ftp_data.state = E_FTP_STE_DISABLED;
406407
}
407408

408-
void ftp_reset (void) {
409-
// close all connections and start all over again
410-
servers_close_socket(&ftp_data.lc_sd);
411-
servers_close_socket(&ftp_data.ld_sd);
412-
ftp_close_cmd_data();
413-
ftp_data.state = E_FTP_STE_START;
414-
ftp_data.substate.data = E_FTP_STE_SUB_DISCONNECTED;
415-
SOCKETFIFO_Flush();
416-
}
417-
418409
/******************************************************************************
419410
DEFINE PRIVATE FUNCTIONS
420411
******************************************************************************/
@@ -1055,3 +1046,13 @@ static void ftp_return_to_previous_path (char *pwd, char *dir) {
10551046
}
10561047
}
10571048
}
1049+
1050+
static void ftp_reset (void) {
1051+
// close all connections and start all over again
1052+
servers_close_socket(&ftp_data.lc_sd);
1053+
servers_close_socket(&ftp_data.ld_sd);
1054+
ftp_close_cmd_data();
1055+
ftp_data.state = E_FTP_STE_START;
1056+
ftp_data.substate.data = E_FTP_STE_SUB_DISCONNECTED;
1057+
SOCKETFIFO_Flush();
1058+
}

cc3200/ftp/ftp.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,5 @@ extern void ftp_init (void);
3434
extern void ftp_run (void);
3535
extern void ftp_enable (void);
3636
extern void ftp_disable (void);
37-
extern void ftp_reset (void);
3837

3938
#endif /* FTP_H_ */

cc3200/mods/modwlan.c

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ typedef struct _wlan_obj_t {
9393
uint8_t mac[SL_MAC_ADDR_LEN];
9494
uint8_t ssid[33];
9595
uint8_t bssid[6];
96-
volatile uint8_t stasconnected;
9796

9897
} wlan_obj_t;
9998

@@ -163,7 +162,6 @@ STATIC wlan_obj_t wlan_obj = {
163162
.ssid = {0},
164163
.bssid = {0},
165164
.mac = {0},
166-
.stasconnected = 0,
167165
};
168166

169167
STATIC const mp_cb_methods_t wlan_cb_methods;
@@ -222,16 +220,10 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
222220
}
223221
break;
224222
case SL_WLAN_STA_CONNECTED_EVENT:
225-
wlan_obj.stasconnected++;
223+
// TODO
226224
break;
227225
case SL_WLAN_STA_DISCONNECTED_EVENT:
228-
if (wlan_obj.stasconnected > 0) {
229-
if (--wlan_obj.stasconnected == 0) {
230-
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
231-
servers_reset();
232-
#endif
233-
}
234-
}
226+
// TODO
235227
break;
236228
case SL_WLAN_P2P_DEV_FOUND_EVENT:
237229
// TODO

cc3200/mods/pybadc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ typedef struct {
8383
DEFINE PUBLIC FUNCTIONS
8484
******************************************************************************/
8585
STATIC void pybadc_init (pyb_adc_obj_t *self) {
86-
// enable the ADC channel
87-
MAP_ADCChannelEnable(ADC_BASE, self->channel);
86+
// enable the ADC channel
87+
MAP_ADCChannelEnable(ADC_BASE, self->channel);
8888
// enable and configure the timer
8989
MAP_ADCTimerConfig(ADC_BASE, (1 << 17) - 1);
9090
MAP_ADCTimerEnable(ADC_BASE);

cc3200/serverstask.c

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,12 @@ typedef struct {
5454
volatile bool enabled;
5555
volatile bool do_disable;
5656
volatile bool do_enable;
57-
volatile bool do_reset;
5857
}servers_Data_t;
5958

6059
/******************************************************************************
6160
DECLARE PRIVATE DATA
6261
******************************************************************************/
63-
static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false, .do_reset = false};
62+
static servers_Data_t servers_data = {.enabled = false, .do_disable = false, .do_enable = false};
6463

6564
/******************************************************************************
6665
DECLARE PRIVATE FUNCTIONS
@@ -96,16 +95,8 @@ void TASK_Servers (void *pvParameters) {
9695
ftp_disable();
9796
// now clear the flags
9897
servers_data.do_disable = false;
99-
servers_data.do_reset = false;
10098
servers_data.enabled = false;
10199
}
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-
}
109100
else {
110101
if (cycle) {
111102
telnet_run();
@@ -135,11 +126,6 @@ void TASK_Servers (void *pvParameters) {
135126
void servers_start (void) {
136127
servers_data.do_disable = false;
137128
servers_data.do_enable = true;
138-
servers_data.do_reset = true;
139-
}
140-
141-
void servers_reset (void) {
142-
servers_data.do_reset = true;
143129
}
144130

145131
void servers_stop (void) {
@@ -148,8 +134,6 @@ void servers_stop (void) {
148134
do {
149135
HAL_Delay (SERVERS_CYCLE_TIME_MS);
150136
} while (servers_are_enabled());
151-
// clear the last command line
152-
telnet_reset();
153137
}
154138

155139
bool servers_are_enabled (void) {

cc3200/serverstask.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ extern char *servers_pass;
6161
******************************************************************************/
6262
extern void TASK_Servers (void *pvParameters);
6363
extern void servers_start (void);
64-
extern void servers_reset (void);
6564
extern void servers_stop (void);
6665
extern bool servers_are_enabled (void);
6766
extern void servers_close_socket (int16_t *sd);

cc3200/telnet/telnet.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
#define TELNET_TX_RETRIES_MAX 25
4949
#define TELNET_WAIT_TIME_MS 5
5050
#define TELNET_LOGIN_RETRIES_MAX 3
51-
#define TELNET_TIMEOUT_MS 1800000 // 30 minutes
51+
#define TELNET_TIMEOUT_MS 300000 // 5 minutes
5252
#define TELNET_CYCLE_TIME_MS (SERVERS_CYCLE_TIME_MS * 2)
5353

5454
/******************************************************************************
@@ -131,6 +131,7 @@ static telnet_result_t telnet_recv_text_non_blocking (void *buff, _i16 Maxlen, _
131131
static void telnet_process (void);
132132
static void telnet_parse_input (uint8_t *str, int16_t *len);
133133
static bool telnet_send_with_retries (int16_t sd, const void *pBuf, int16_t len);
134+
static void telnet_reset (void);
134135
static void telnet_reset_buffer (void);
135136

136137
/******************************************************************************
@@ -290,13 +291,6 @@ void telnet_disable (void) {
290291
telnet_data.state = E_TELNET_STE_DISABLED;
291292
}
292293

293-
void telnet_reset (void) {
294-
// close the connection and start all over again
295-
servers_close_socket(&telnet_data.n_sd);
296-
servers_close_socket(&telnet_data.sd);
297-
telnet_data.state = E_TELNET_STE_START;
298-
}
299-
300294
bool telnet_is_enabled (void) {
301295
return telnet_data.enabled;
302296
}
@@ -476,6 +470,13 @@ static bool telnet_send_with_retries (int16_t sd, const void *pBuf, int16_t len)
476470
return false;
477471
}
478472

473+
static void telnet_reset (void) {
474+
// close the connection and start all over again
475+
servers_close_socket(&telnet_data.n_sd);
476+
servers_close_socket(&telnet_data.sd);
477+
telnet_data.state = E_TELNET_STE_START;
478+
}
479+
479480
static void telnet_reset_buffer (void) {
480481
memset (telnet_data.rxBuffer, '\b', TELNET_RX_BUFFER_SIZE / 2);
481482
telnet_data.rxWindex = TELNET_RX_BUFFER_SIZE / 2;

cc3200/telnet/telnet.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ extern bool telnet_rx_any (void);
3838
extern int telnet_rx_char (void);
3939
extern void telnet_enable (void);
4040
extern void telnet_disable (void);
41-
extern void telnet_reset (void);
4241
extern bool telnet_is_enabled (void);
4342
extern bool telnet_is_active (void);
4443

0 commit comments

Comments
 (0)