36
36
#include "modnetwork.h"
37
37
#include "modwlan.h"
38
38
#include "pybioctl.h"
39
- #include "pybuart.h"
40
39
#include "debug.h"
40
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
41
41
#include "serverstask.h"
42
+ #endif
42
43
#include "mpexception.h"
43
44
44
45
@@ -78,16 +79,19 @@ typedef struct _wlan_obj_t {
78
79
mp_obj_base_t base ;
79
80
SlWlanMode_t mode ;
80
81
uint32_t status ;
81
- uint8_t security ;
82
- uint8_t mac [SL_MAC_ADDR_LEN ];
83
- uint8_t ssid [33 ];
84
- uint8_t bssid [6 ];
85
82
86
- // IPVv4 data
87
83
uint32_t ip ;
88
84
uint32_t gateway ;
89
85
uint32_t dns ;
90
86
87
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
88
+ bool servers_enabled ;
89
+ #endif
90
+ uint8_t security ;
91
+ uint8_t mac [SL_MAC_ADDR_LEN ];
92
+ uint8_t ssid [33 ];
93
+ uint8_t bssid [6 ];
94
+
91
95
} wlan_obj_t ;
92
96
93
97
/******************************************************************************
@@ -140,12 +144,12 @@ typedef struct _wlan_obj_t {
140
144
ip[3] = addr.sa_data[5];
141
145
142
146
/******************************************************************************
143
- DECLARE PUBLIC DATA
147
+ DECLARE PRIVATE DATA
144
148
******************************************************************************/
145
149
STATIC wlan_obj_t wlan_obj ;
146
150
147
151
/******************************************************************************
148
- DECLARE EXPORTED DATA
152
+ DECLARE PUBLIC DATA
149
153
******************************************************************************/
150
154
OsiLockObj_t wlan_LockObj ;
151
155
@@ -203,10 +207,10 @@ void SimpleLinkWlanEventHandler(SlWlanEvent_t *pWlanEvent)
203
207
// If the user has initiated the 'Disconnect' request,
204
208
//'reason_code' is SL_USER_INITIATED_DISCONNECTION
205
209
if (SL_USER_INITIATED_DISCONNECTION == pEventData -> reason_code ) {
206
-
210
+ // TODO ...
207
211
}
208
212
else {
209
-
213
+ // TODO: Maybe trow an exception?
210
214
}
211
215
memset (wlan_obj .ssid , 0 , sizeof (wlan_obj .ssid ));
212
216
memset (wlan_obj .bssid , 0 , sizeof (wlan_obj .bssid ));
@@ -496,6 +500,12 @@ void wlan_update(void) {
496
500
// call this function to disable the complete WLAN subsystem in order to save power
497
501
void wlan_stop (void ) {
498
502
if (wlan_obj .mode >= 0 ) {
503
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
504
+ // Stop all other processes using the wlan engine
505
+ if ((wlan_obj .servers_enabled = servers_are_enabled ())) {
506
+ wlan_stop_servers ();
507
+ }
508
+ #endif
499
509
sl_LockObjLock (& wlan_LockObj , SL_OS_WAIT_FOREVER );
500
510
wlan_obj .mode = -1 ;
501
511
sl_Stop (SL_STOP_TIMEOUT );
@@ -508,6 +518,12 @@ void wlan_start (void) {
508
518
if (wlan_obj .mode < 0 ) {
509
519
wlan_obj .mode = sl_Start (0 , 0 , 0 );
510
520
sl_LockObjUnlock (& wlan_LockObj );
521
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
522
+ // Start the servers again
523
+ if (wlan_obj .servers_enabled ) {
524
+ servers_enable ();
525
+ }
526
+ #endif
511
527
}
512
528
}
513
529
@@ -532,10 +548,12 @@ void wlan_set_pm_policy (uint8_t policy) {
532
548
}
533
549
534
550
void wlan_stop_servers (void ) {
551
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
535
552
servers_disable ();
536
553
do {
537
554
HAL_Delay (5 );
538
555
} while (servers_are_enabled ());
556
+ #endif
539
557
}
540
558
541
559
//*****************************************************************************
@@ -657,11 +675,12 @@ STATIC mp_obj_t wlan_make_new (mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_k
657
675
// Get the mode
658
676
SlWlanMode_t mode = mp_obj_get_int (args [0 ]);
659
677
678
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
660
679
// Stop all other processes using the wlan engine
661
- bool servers_enabled ;
662
- if ( (servers_enabled = servers_are_enabled ()) ) {
680
+ if ((wlan_obj .servers_enabled = servers_are_enabled ())) {
663
681
wlan_stop_servers ();
664
682
}
683
+ #endif
665
684
if (mode == ROLE_AP ) {
666
685
// start the peripheral
667
686
mp_map_t kw_args ;
@@ -677,11 +696,12 @@ STATIC mp_obj_t wlan_make_new (mp_obj_t type_in, mp_uint_t n_args, mp_uint_t n_k
677
696
else {
678
697
nlr_raise (mp_obj_new_exception_msg (& mp_type_TypeError , mpexception_num_type_invalid_arguments ));
679
698
}
680
-
699
+ #if ( MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
681
700
// Start the servers again
682
- if (servers_enabled ) {
683
- servers_enable ();
701
+ if (wlan_obj . servers_enabled ) {
702
+ servers_enable ();
684
703
}
704
+ #endif
685
705
} else if (wlan_obj .mode < 0 ) {
686
706
nlr_raise (mp_obj_new_exception_msg (& mp_type_TypeError , mpexception_num_type_invalid_arguments ));
687
707
}
@@ -928,6 +948,7 @@ STATIC mp_obj_t wlan_scan(mp_obj_t self_in) {
928
948
}
929
949
STATIC MP_DEFINE_CONST_FUN_OBJ_1 (wlan_scan_obj , wlan_scan );
930
950
951
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
931
952
STATIC mp_obj_t wlan_serversstart (mp_obj_t self_in ) {
932
953
servers_enable ();
933
954
return mp_const_none ;
@@ -952,6 +973,7 @@ STATIC mp_obj_t wlan_serversuserpass(mp_obj_t self_in, mp_obj_t user, mp_obj_t p
952
973
return mp_const_none ;
953
974
}
954
975
STATIC MP_DEFINE_CONST_FUN_OBJ_3 (wlan_serversuserpass_obj , wlan_serversuserpass );
976
+ #endif
955
977
956
978
STATIC const mp_map_elem_t wlan_locals_dict_table [] = {
957
979
{ MP_OBJ_NEW_QSTR (MP_QSTR_connect ), (mp_obj_t )& wlan_connect_obj },
@@ -962,10 +984,12 @@ STATIC const mp_map_elem_t wlan_locals_dict_table[] = {
962
984
{ MP_OBJ_NEW_QSTR (MP_QSTR_isconnected ), (mp_obj_t )& wlan_isconnected_obj },
963
985
{ MP_OBJ_NEW_QSTR (MP_QSTR_ifconfig ), (mp_obj_t )& wlan_ifconfig_obj },
964
986
{ MP_OBJ_NEW_QSTR (MP_QSTR_urn ), (mp_obj_t )& wlan_urn_obj },
987
+ #if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP )
965
988
{ MP_OBJ_NEW_QSTR (MP_QSTR_start_servers ), (mp_obj_t )& wlan_serversstart_obj },
966
989
{ MP_OBJ_NEW_QSTR (MP_QSTR_stop_servers ), (mp_obj_t )& wlan_serversstop_obj },
967
990
{ MP_OBJ_NEW_QSTR (MP_QSTR_servers_enabled ), (mp_obj_t )& wlan_serversenabled_obj },
968
991
{ MP_OBJ_NEW_QSTR (MP_QSTR_servers_userpass ), (mp_obj_t )& wlan_serversuserpass_obj },
992
+ #endif
969
993
970
994
// class constants
971
995
{ MP_OBJ_NEW_QSTR (MP_QSTR_OPEN ), MP_OBJ_NEW_SMALL_INT (SL_SEC_TYPE_OPEN ) },
0 commit comments