Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
9f8c5456
Commit
9f8c5456
authored
May 23, 2015
by
Daniel Campora
Browse files
cc3200: Reset the servers and close user sockets on WLAN disconection.
This is needed to avoid half-open connections.
parent
0d31bbc7
Changes
8
Hide whitespace changes
Inline
Side-by-side
cc3200/ftp/ftp.c
View file @
9f8c5456
...
...
@@ -224,7 +224,6 @@ static ftp_result_t ftp_list_dir (char *list, uint32_t maxlistsize, uint32_t *li
static
void
ftp_open_child
(
char
*
pwd
,
char
*
dir
);
static
void
ftp_close_child
(
char
*
pwd
);
static
void
ftp_return_to_previous_path
(
char
*
pwd
,
char
*
dir
);
static
void
ftp_reset
(
void
);
/******************************************************************************
DEFINE PUBLIC FUNCTIONS
...
...
@@ -408,6 +407,16 @@ void ftp_disable (void) {
ftp_data
.
state
=
E_FTP_STE_DISABLED
;
}
void
ftp_reset
(
void
)
{
// close all connections and start all over again
servers_close_socket
(
&
ftp_data
.
lc_sd
);
servers_close_socket
(
&
ftp_data
.
ld_sd
);
ftp_close_cmd_data
();
ftp_data
.
state
=
E_FTP_STE_START
;
ftp_data
.
substate
.
data
=
E_FTP_STE_SUB_DISCONNECTED
;
SOCKETFIFO_Flush
();
}
/******************************************************************************
DEFINE PRIVATE FUNCTIONS
******************************************************************************/
...
...
@@ -1079,12 +1088,3 @@ static void ftp_return_to_previous_path (char *pwd, char *dir) {
}
}
static
void
ftp_reset
(
void
)
{
// close all connections and start all over again
servers_close_socket
(
&
ftp_data
.
lc_sd
);
servers_close_socket
(
&
ftp_data
.
ld_sd
);
ftp_close_cmd_data
();
ftp_data
.
state
=
E_FTP_STE_START
;
ftp_data
.
substate
.
data
=
E_FTP_STE_SUB_DISCONNECTED
;
SOCKETFIFO_Flush
();
}
cc3200/ftp/ftp.h
View file @
9f8c5456
...
...
@@ -34,5 +34,6 @@ extern void ftp_init (void);
extern
void
ftp_run
(
void
);
extern
void
ftp_enable
(
void
);
extern
void
ftp_disable
(
void
);
extern
void
ftp_reset
(
void
);
#endif
/* FTP_H_ */
cc3200/mods/modusocket.c
View file @
9f8c5456
...
...
@@ -94,7 +94,6 @@ void modusocket_enter_sleep (void) {
fd_set
socketset
;
int16_t
maxfd
=
0
;
sl_LockObjLock
(
&
modusocket_LockObj
,
SL_OS_WAIT_FOREVER
);
for
(
int
i
=
0
;
i
<
MOD_NETWORK_MAX_SOCKETS
;
i
++
)
{
int16_t
sd
;
if
((
sd
=
modusocket_sockets
[
i
].
sd
)
>=
0
)
{
...
...
@@ -105,7 +104,6 @@ void modusocket_enter_sleep (void) {
// wait for any of the sockets to become ready...
sl_Select
(
maxfd
+
1
,
&
socketset
,
NULL
,
NULL
,
NULL
);
sl_LockObjUnlock
(
&
modusocket_LockObj
);
}
void
modusocket_close_all_user_sockets
(
void
)
{
...
...
cc3200/mods/modwlan.c
View file @
9f8c5456
...
...
@@ -230,7 +230,7 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) {
{
CLR_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_CONNECTION
);
CLR_STATUS_BIT
(
wlan_obj
.
status
,
STATUS_BIT_IP_ACQUIRED
);
// TODO reset the servers
servers_reset
();
}
break
;
case
SL_WLAN_STA_CONNECTED_EVENT
:
...
...
@@ -245,7 +245,7 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) {
break
;
case
SL_WLAN_STA_DISCONNECTED_EVENT
:
wlan_obj
.
staconnected
=
false
;
// TODO reset the servers
servers_reset
();
break
;
case
SL_WLAN_P2P_DEV_FOUND_EVENT
:
// TODO
...
...
cc3200/serverstask.c
View file @
9f8c5456
...
...
@@ -53,12 +53,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
};
static
volatile
bool
sleep_sockets
=
false
;
/******************************************************************************
...
...
@@ -103,11 +104,21 @@ void TASK_Servers (void *pvParameters) {
servers_data
.
enabled
=
false
;
}
if
(
cycle
)
{
telnet_run
();
if
(
servers_data
.
do_reset
)
{
telnet_reset
();
ftp_reset
();
servers_data
.
do_reset
=
false
;
// resetting the servers is needed to preven half-open sockets
// and we should also close all user sockets
modusocket_close_all_user_sockets
();
}
else
{
ftp_run
();
if
(
cycle
)
{
telnet_run
();
}
else
{
ftp_run
();
}
}
// set the alive flag for the wdt
...
...
@@ -137,6 +148,10 @@ void servers_stop (void) {
HAL_Delay
(
SERVERS_CYCLE_TIME_MS
*
5
);
}
void
servers_reset
(
void
)
{
servers_data
.
do_reset
=
true
;
}
bool
servers_are_enabled
(
void
)
{
return
servers_data
.
enabled
;
}
...
...
cc3200/serverstask.h
View file @
9f8c5456
...
...
@@ -56,6 +56,7 @@ extern char servers_pass[];
extern
void
TASK_Servers
(
void
*
pvParameters
);
extern
void
servers_start
(
void
);
extern
void
servers_stop
(
void
);
extern
void
servers_reset
(
void
);
extern
bool
servers_are_enabled
(
void
);
extern
void
servers_close_socket
(
int16_t
*
sd
);
extern
void
servers_set_login
(
char
*
user
,
char
*
pass
);
...
...
cc3200/telnet/telnet.c
View file @
9f8c5456
...
...
@@ -132,7 +132,6 @@ static void telnet_process (void);
static
int
telnet_process_credential
(
char
*
credential
,
_i16
rxLen
);
static
void
telnet_parse_input
(
uint8_t
*
str
,
int16_t
*
len
);
static
bool
telnet_send_with_retries
(
int16_t
sd
,
const
void
*
pBuf
,
int16_t
len
);
static
void
telnet_reset
(
void
);
static
void
telnet_reset_buffer
(
void
);
/******************************************************************************
...
...
@@ -293,6 +292,13 @@ void telnet_disable (void) {
telnet_data
.
state
=
E_TELNET_STE_DISABLED
;
}
void
telnet_reset
(
void
)
{
// close the connection and start all over again
servers_close_socket
(
&
telnet_data
.
n_sd
);
servers_close_socket
(
&
telnet_data
.
sd
);
telnet_data
.
state
=
E_TELNET_STE_START
;
}
bool
telnet_is_enabled
(
void
)
{
return
telnet_data
.
enabled
;
}
...
...
@@ -499,13 +505,6 @@ static bool telnet_send_with_retries (int16_t sd, const void *pBuf, int16_t len)
return
false
;
}
static
void
telnet_reset
(
void
)
{
// close the connection and start all over again
servers_close_socket
(
&
telnet_data
.
n_sd
);
servers_close_socket
(
&
telnet_data
.
sd
);
telnet_data
.
state
=
E_TELNET_STE_START
;
}
static
void
telnet_reset_buffer
(
void
)
{
// erase any characters present in the current line
memset
(
telnet_data
.
rxBuffer
,
'\b'
,
TELNET_RX_BUFFER_SIZE
/
2
);
...
...
cc3200/telnet/telnet.h
View file @
9f8c5456
...
...
@@ -38,6 +38,7 @@ extern bool telnet_rx_any (void);
extern
int
telnet_rx_char
(
void
);
extern
void
telnet_enable
(
void
);
extern
void
telnet_disable
(
void
);
extern
void
telnet_reset
(
void
);
extern
bool
telnet_is_enabled
(
void
);
extern
bool
telnet_is_active
(
void
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment