@@ -193,7 +193,6 @@ STATIC void wlan_reenable (SlWlanMode_t mode);
193193STATIC void wlan_servers_start (void );
194194STATIC void wlan_servers_stop (void );
195195STATIC void wlan_get_sl_mac (void );
196- STATIC bool wlan_is_connected (void );
197196STATIC modwlan_Status_t wlan_do_connect (const char * ssid , uint32_t ssid_len , const char * bssid , uint8_t sec ,
198197 const char * key , uint32_t key_len , uint32_t timeout );
199198STATIC void wlan_lpds_callback_enable (mp_obj_t self_in );
@@ -224,6 +223,11 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) {
224223 memcpy (wlan_obj .ssid_o , pEventData -> ssid_name , pEventData -> ssid_len );
225224 wlan_obj .ssid_o [pEventData -> ssid_len ] = '\0' ;
226225 SET_STATUS_BIT (wlan_obj .status , STATUS_BIT_CONNECTION );
226+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
227+ // we must reset the servers in case that the last connection
228+ // was lost without any notification being received
229+ servers_reset ();
230+ #endif
227231 }
228232 break ;
229233 case SL_WLAN_DISCONNECT_EVENT :
@@ -241,6 +245,11 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent) {
241245 memcpy (wlan_obj .ssid_o , pEventData -> go_peer_device_name , pEventData -> go_peer_device_name_len );
242246 wlan_obj .ssid_o [pEventData -> go_peer_device_name_len ] = '\0' ;
243247 wlan_obj .staconnected = true;
248+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
249+ // we must reset the servers in case that the last connection
250+ // was lost without any notification being received
251+ servers_reset ();
252+ #endif
244253 }
245254 break ;
246255 case SL_WLAN_STA_DISCONNECTED_EVENT :
@@ -547,12 +556,17 @@ void wlan_get_ip (uint32_t *ip) {
547556 }
548557}
549558
559+ bool wlan_is_connected (void ) {
560+ return ((GET_STATUS_BIT (wlan_obj .status , STATUS_BIT_CONNECTION ) &&
561+ GET_STATUS_BIT (wlan_obj .status , STATUS_BIT_IP_ACQUIRED )) || wlan_obj .staconnected );
562+ }
563+
550564//*****************************************************************************
551565// DEFINE STATIC FUNCTIONS
552566//*****************************************************************************
553567
554568STATIC void wlan_initialize_data (void ) {
555- wlan_obj .status = 0 ;
569+ CLR_STATUS_BIT_ALL ( wlan_obj .status ) ;
556570 wlan_obj .dns = 0 ;
557571 wlan_obj .gateway = 0 ;
558572 wlan_obj .ip = 0 ;
@@ -567,7 +581,8 @@ STATIC void wlan_reenable (SlWlanMode_t mode) {
567581 // stop and start again
568582 sl_LockObjLock (& wlan_LockObj , SL_OS_WAIT_FOREVER );
569583 sl_Stop (SL_STOP_TIMEOUT );
570- wlan_obj .status = 0 ;
584+ CLR_STATUS_BIT_ALL (wlan_obj .status );
585+ wlan_obj .staconnected = false;
571586 wlan_obj .mode = sl_Start (0 , 0 , 0 );
572587 sl_LockObjUnlock (& wlan_LockObj );
573588 ASSERT (wlan_obj .mode == mode );
@@ -620,11 +635,6 @@ STATIC void wlan_get_sl_mac (void) {
620635 sl_NetCfgGet (SL_MAC_ADDRESS_GET , NULL , & macAddrLen , wlan_obj .mac );
621636}
622637
623- STATIC bool wlan_is_connected (void ) {
624- return ((GET_STATUS_BIT (wlan_obj .status , STATUS_BIT_CONNECTION ) &&
625- GET_STATUS_BIT (wlan_obj .status , STATUS_BIT_IP_ACQUIRED )) || wlan_obj .staconnected );
626- }
627-
628638/// \method init(mode, ssid=None, *, security=wlan.OPEN, key=None, channel=5)
629639///
630640/// Initialise the WLAN engine with the given parameters:
0 commit comments