Skip to content

Commit 9a2c2ee

Browse files
committed
add wlan_ap_tcpip_sta_list function that lists the connected devices when lopy set in ap mode
1 parent 2037465 commit 9a2c2ee

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

esp32/mods/modwlan.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1971,6 +1971,40 @@ STATIC mp_obj_t wlan_ap_sta_list (mp_obj_t self_in) {
19711971
}
19721972
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_ap_sta_list_obj, wlan_ap_sta_list);
19731973

1974+
STATIC mp_obj_t wlan_ap_tcpip_sta_list (mp_obj_t self_in) {
1975+
STATIC const qstr wlan_sta_ifo_fields[] = {
1976+
MP_QSTR_mac, MP_QSTR_IP
1977+
};
1978+
uint8_t index;
1979+
wifi_sta_list_t wifi_sta_list;
1980+
esp_wifi_ap_get_sta_list(&wifi_sta_list);
1981+
tcpip_adapter_sta_list_t sta_list;
1982+
wlan_obj_t * self = self_in;
1983+
1984+
mp_obj_t sta_out_list = mp_obj_new_list(0, NULL);
1985+
/* Check if AP mode is enabled */
1986+
if (self->mode == WIFI_MODE_AP || self->mode == WIFI_MODE_APSTA) {
1987+
tcpip_adapter_get_sta_list(&wifi_sta_list, &sta_list);
1988+
1989+
mp_obj_t tuple[2];
1990+
for(index = 0; index < MAX_AP_CONNECTED_STA && index < sta_list.num; index++)
1991+
{
1992+
tuple[0] = mp_obj_new_bytes((const byte *)sta_list.sta[index].mac, 6);
1993+
tuple[1] = netutils_format_ipv4_addr((uint8_t *)&sta_list.sta[index].ip.addr, NETUTILS_BIG);
1994+
1995+
/*insert tuple */
1996+
mp_obj_list_append(sta_out_list, mp_obj_new_attrtuple(wlan_sta_ifo_fields, 2, tuple));
1997+
}
1998+
}
1999+
else
2000+
{
2001+
nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, mpexception_os_request_not_possible));
2002+
}
2003+
2004+
return sta_out_list;
2005+
}
2006+
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_ap_tcpip_sta_list_obj, wlan_ap_tcpip_sta_list);
2007+
19742008
STATIC mp_obj_t wlan_joined_ap_info (mp_obj_t self_in)
19752009
{
19762010
STATIC const qstr wlan_sta_ifo_fields[] = {
@@ -2654,6 +2688,7 @@ STATIC const mp_map_elem_t wlan_locals_dict_table[] = {
26542688
{ MP_OBJ_NEW_QSTR(MP_QSTR_antenna), (mp_obj_t)&wlan_antenna_obj },
26552689
{ MP_OBJ_NEW_QSTR(MP_QSTR_mac), (mp_obj_t)&wlan_mac_obj },
26562690
{ MP_OBJ_NEW_QSTR(MP_QSTR_ap_sta_list), (mp_obj_t)&wlan_ap_sta_list_obj },
2691+
{ MP_OBJ_NEW_QSTR(MP_QSTR_ap_tcpip_sta_list), (mp_obj_t)&wlan_ap_tcpip_sta_list_obj },
26572692
{ MP_OBJ_NEW_QSTR(MP_QSTR_max_tx_power), (mp_obj_t)&wlan_max_tx_power_obj },
26582693
{ MP_OBJ_NEW_QSTR(MP_QSTR_country), (mp_obj_t)&wlan_country_obj },
26592694
{ MP_OBJ_NEW_QSTR(MP_QSTR_joined_ap_info), (mp_obj_t)&wlan_joined_ap_info_obj },

0 commit comments

Comments
 (0)