Skip to content

Commit 4bfc491

Browse files
committed
cc3200: Add wlan_urn() thanks to Nadim El-Fata and Bryan Morrissey.
1 parent 0c11b16 commit 4bfc491

2 files changed

Lines changed: 58 additions & 17 deletions

File tree

cc3200/mods/modwlan.c

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
479488
void 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
}
824833
STATIC 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

887926
STATIC 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) },

cc3200/qstrdefsport.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,24 +216,25 @@ Q(IPPROTO_RAW)
216216
Q(network)
217217
Q(route)
218218

219-
// for wlan class
219+
// for WLAN class
220220
Q(WLAN)
221221
Q(key)
222222
Q(security)
223223
Q(ssid)
224224
Q(bssid)
225225
Q(scan)
226226
Q(connect)
227-
Q(isconnected)
227+
Q(is_connected)
228228
Q(disconnect)
229-
Q(getmode)
229+
Q(get_mode)
230230
Q(channel)
231-
Q(getip)
232-
Q(setpm)
233-
Q(serversstart)
234-
Q(serversstop)
235-
Q(areserversenabled)
236-
Q(serversuserpass)
231+
Q(get_ip)
232+
Q(urn)
233+
Q(set_pm)
234+
Q(start_servers)
235+
Q(stop_servers)
236+
Q(are_servers_enabled)
237+
Q(servers_userpass)
237238
Q(STA)
238239
Q(AP)
239240
Q(P2P)

0 commit comments

Comments
 (0)