summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--cc3200/mods/modwlan.c42
-rw-r--r--cc3200/qstrdefsport.h1
2 files changed, 19 insertions, 24 deletions
diff --git a/cc3200/mods/modwlan.c b/cc3200/mods/modwlan.c
index 327d40b164..f5935bf825 100644
--- a/cc3200/mods/modwlan.c
+++ b/cc3200/mods/modwlan.c
@@ -819,35 +819,29 @@ STATIC mp_obj_t wlan_isconnected(mp_obj_t self_in) {
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_isconnected_obj, wlan_isconnected);
STATIC mp_obj_t wlan_ifconfig (mp_obj_t self_in) {
+ STATIC const qstr wlan_ifconfig_fields[] = {
+ MP_QSTR_mode, MP_QSTR_ssid,
+ MP_QSTR_mac, MP_QSTR_bssid,
+ MP_QSTR_ip, MP_QSTR_subnet,
+ MP_QSTR_gateway, MP_QSTR_dns
+ };
+
unsigned char len = sizeof(SlNetCfgIpV4Args_t);
unsigned char dhcpIsOn;
SlNetCfgIpV4Args_t ipV4;
-
sl_NetCfgGet(SL_IPV4_STA_P2P_CL_GET_INFO, &dhcpIsOn, &len, (uint8_t *)&ipV4);
- mp_obj_t ifconfig = mp_obj_new_dict(0);
- mp_obj_dict_store (ifconfig, mp_obj_new_str("ip", strlen("ip"), false), mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.ip));
- mp_obj_dict_store (ifconfig, mp_obj_new_str("subnet", strlen("subnet"), false), mod_network_format_ipv4_addr((uint8_t *)&ipV4.ipV4Mask));
- mp_obj_dict_store (ifconfig, mp_obj_new_str("gateway", strlen("gateway"), false), mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.gateway));
- mp_obj_dict_store (ifconfig, mp_obj_new_str("dns", strlen("dns"), false), mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.dns));
- char mac_str[18];
- mp_uint_t mac_len = snprintf(mac_str, sizeof(mac_str), "%02x:%02x:%02x:%02x:%02x:%02x", wlan_obj.mac[0], wlan_obj.mac[1], wlan_obj.mac[2],
- wlan_obj.mac[3], wlan_obj.mac[4], wlan_obj.mac[5]);
- mp_obj_dict_store (ifconfig, mp_obj_new_str("mac", strlen("mac"), false), mp_obj_new_str(mac_str, mac_len, false));
- char *mode_str;
- if (wlan_obj.mode == ROLE_STA) {
- mode_str = "station";
- }
- else if (wlan_obj.mode == ROLE_AP) {
- mode_str = "ap";
- }
- else {
- mode_str = "p2p";
- }
- mp_obj_dict_store (ifconfig, mp_obj_new_str("mode", strlen("mode"), false), mp_obj_new_str(mode_str, strlen(mode_str), false));
- mp_obj_dict_store (ifconfig, mp_obj_new_str("ssid", strlen("ssid"), false), mp_obj_new_str((const char *)wlan_obj.ssid, strlen((const char *)wlan_obj.ssid), false));
-
- return ifconfig;
+ mp_obj_t ifconfig[8];
+ ifconfig[0] = mp_obj_new_int(wlan_obj.mode);
+ ifconfig[1] = mp_obj_new_str((const char *)wlan_obj.ssid, strlen((const char *)wlan_obj.ssid), false);
+ ifconfig[2] = mp_obj_new_bytes((const byte *)wlan_obj.bssid, SL_BSSID_LENGTH);
+ ifconfig[3] = mp_obj_new_bytes((const byte *)wlan_obj.mac, SL_BSSID_LENGTH);
+ ifconfig[4] = mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.ip);
+ ifconfig[5] = mod_network_format_ipv4_addr((uint8_t *)&ipV4.ipV4Mask);
+ ifconfig[6] = mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.gateway);
+ ifconfig[7] = mod_network_format_ipv4_addr((uint8_t *)&wlan_obj.dns);
+
+ return mp_obj_new_attrtuple(wlan_ifconfig_fields, 8, ifconfig);
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_ifconfig_obj, wlan_ifconfig);
diff --git a/cc3200/qstrdefsport.h b/cc3200/qstrdefsport.h
index 87158817fb..e06f1ad178 100644
--- a/cc3200/qstrdefsport.h
+++ b/cc3200/qstrdefsport.h
@@ -262,6 +262,7 @@ Q(ip)
Q(subnet)
Q(gateway)
Q(dns)
+Q(mac)
Q(STA)
Q(AP)
Q(P2P)