@@ -120,6 +120,8 @@ typedef struct _wlan_obj_t {
120120#define SL_STOP_TIMEOUT 250
121121
122122#define WLAN_MAX_RX_SIZE 16000
123+ #define WLAN_MAX_TX_SIZE 1476
124+
123125
124126#define MAKE_SOCKADDR (addr , ip , port ) sockaddr addr; \
125127 addr.sa_family = AF_INET; \
@@ -426,6 +428,7 @@ modwlan_Status_t wlan_sl_enable (SlWlanMode_t mode, const char *ssid, uint8_t ss
426428 ASSERT_ON_ERROR (sl_WlanSet (SL_WLAN_CFG_GENERAL_PARAM_ID , WLAN_GENERAL_PARAM_OPT_AP_TX_POWER , sizeof (ucPower ),
427429 (unsigned char * )& ucPower ));
428430 ASSERT_ON_ERROR (sl_WlanSet (SL_WLAN_CFG_AP_ID , WLAN_AP_OPT_SSID , ssid_len , (unsigned char * )ssid ));
431+ memcpy (wlan_obj .ssid_name , (unsigned char * )ssid , ssid_len );
429432 ASSERT_ON_ERROR (sl_WlanSet (SL_WLAN_CFG_AP_ID , WLAN_AP_OPT_SECURITY_TYPE , sizeof (uint8_t ), & sec ));
430433 ASSERT_ON_ERROR (sl_WlanSet (SL_WLAN_CFG_AP_ID , WLAN_AP_OPT_PASSWORD , key_len , (unsigned char * )key ));
431434 _u8 * country = (_u8 * )"EU" ;
@@ -476,6 +479,12 @@ modwlan_Status_t wlan_sl_enable (SlWlanMode_t mode, const char *ssid, uint8_t ss
476479 return MODWLAN_ERROR_INVALID_PARAMS ;
477480}
478481
482+ void wlan_update (void ) {
483+ #ifndef SL_PLATFORM_MULTI_THREADED
484+ _SlTaskEntry ();
485+ #endif
486+ }
487+
479488void wlan_sl_disable (void ) {
480489 if (wlan_obj .mode >= 0 ) {
481490 sl_LockObjLock (& wlan_LockObj , SL_OS_WAIT_FOREVER );
@@ -823,6 +832,36 @@ STATIC mp_obj_t wlan_getip(mp_obj_t self_in) {
823832}
824833STATIC MP_DEFINE_CONST_FUN_OBJ_1 (wlan_getip_obj , wlan_getip );
825834
835+ STATIC mp_obj_t wlan_urn (uint n_args , const mp_obj_t * args ) {
836+ char urn [MAX_DEVICE_URN_LEN ];
837+ uint8_t len = MAX_DEVICE_URN_LEN ;
838+
839+ // an URN is given, so set it
840+ if (n_args == 2 ) {
841+ const char * p = mp_obj_str_get_str (args [1 ]);
842+ uint8_t len = strlen (p );
843+
844+ // the call to sl_NetAppSet corrupts the input string URN=args[1], so we copy into a local buffer
845+ if (len > MAX_DEVICE_URN_LEN ) {
846+ nlr_raise (mp_obj_new_exception_msg (& mp_type_ValueError , mpexception_value_invalid_arguments ));
847+ }
848+ strcpy (urn , p );
849+
850+ if (sl_NetAppSet (SL_NET_APP_DEVICE_CONFIG_ID , NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN , len , (unsigned char * )urn ) < 0 ) {
851+ nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_operation_failed ));
852+ }
853+ }
854+ else {
855+ // get the URN
856+ if (sl_NetAppGet (SL_NET_APP_DEVICE_CONFIG_ID , NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN , & len , (uint8_t * )urn ) < 0 ) {
857+ nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_operation_failed ));
858+ }
859+ return mp_obj_new_str (urn , (len - 1 ), false);
860+ }
861+
862+ return mp_const_none ;
863+ }
864+ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN (wlan_urn_obj , 1 , 2 , wlan_urn );
826865
827866/// \method wlan_netlist()
828867/// Returns a list of tuples with all the acces points within range
@@ -886,16 +925,17 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(wlan_serversuserpass_obj, wlan_serversuserpass)
886925
887926STATIC const mp_map_elem_t wlan_locals_dict_table [] = {
888927 { MP_OBJ_NEW_QSTR (MP_QSTR_connect ), (mp_obj_t )& wlan_connect_obj },
889- { MP_OBJ_NEW_QSTR (MP_QSTR_getmode ), (mp_obj_t )& wlan_getmode_obj },
890- { MP_OBJ_NEW_QSTR (MP_QSTR_setpm ), (mp_obj_t )& wlan_setpm_obj },
928+ { MP_OBJ_NEW_QSTR (MP_QSTR_get_mode ), (mp_obj_t )& wlan_getmode_obj },
929+ { MP_OBJ_NEW_QSTR (MP_QSTR_set_pm ), (mp_obj_t )& wlan_setpm_obj },
891930 { MP_OBJ_NEW_QSTR (MP_QSTR_scan ), (mp_obj_t )& wlan_scan_obj },
892931 { MP_OBJ_NEW_QSTR (MP_QSTR_disconnect ), (mp_obj_t )& wlan_disconnect_obj },
893- { MP_OBJ_NEW_QSTR (MP_QSTR_isconnected ), (mp_obj_t )& wlan_isconnected_obj },
894- { MP_OBJ_NEW_QSTR (MP_QSTR_getip ), (mp_obj_t )& wlan_getip_obj },
895- { MP_OBJ_NEW_QSTR (MP_QSTR_serversstart ), (mp_obj_t )& wlan_serversstart_obj },
896- { MP_OBJ_NEW_QSTR (MP_QSTR_serversstop ), (mp_obj_t )& wlan_serversstop_obj },
897- { MP_OBJ_NEW_QSTR (MP_QSTR_areserversenabled ), (mp_obj_t )& wlan_areserversenabled_obj },
898- { MP_OBJ_NEW_QSTR (MP_QSTR_serversuserpass ), (mp_obj_t )& wlan_serversuserpass_obj },
932+ { MP_OBJ_NEW_QSTR (MP_QSTR_is_connected ), (mp_obj_t )& wlan_isconnected_obj },
933+ { MP_OBJ_NEW_QSTR (MP_QSTR_get_ip ), (mp_obj_t )& wlan_getip_obj },
934+ { MP_OBJ_NEW_QSTR (MP_QSTR_urn ), (mp_obj_t )& wlan_urn_obj },
935+ { MP_OBJ_NEW_QSTR (MP_QSTR_start_servers ), (mp_obj_t )& wlan_serversstart_obj },
936+ { MP_OBJ_NEW_QSTR (MP_QSTR_stop_servers ), (mp_obj_t )& wlan_serversstop_obj },
937+ { MP_OBJ_NEW_QSTR (MP_QSTR_are_servers_enabled ), (mp_obj_t )& wlan_areserversenabled_obj },
938+ { MP_OBJ_NEW_QSTR (MP_QSTR_servers_userpass ), (mp_obj_t )& wlan_serversuserpass_obj },
899939
900940 // class constants
901941 { MP_OBJ_NEW_QSTR (MP_QSTR_OPEN ), MP_OBJ_NEW_SMALL_INT (SL_SEC_TYPE_OPEN ) },
0 commit comments