Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

add wlan_ap_tcpip_sta_list function that lists the connected devices … #415

Open
wants to merge 1 commit into
base: Dev
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions esp32/mods/modwlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -1971,6 +1971,40 @@ STATIC mp_obj_t wlan_ap_sta_list (mp_obj_t self_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_ap_sta_list_obj, wlan_ap_sta_list);

STATIC mp_obj_t wlan_ap_tcpip_sta_list (mp_obj_t self_in) {
STATIC const qstr wlan_sta_ifo_fields[] = {
MP_QSTR_mac, MP_QSTR_IP
};
uint8_t index;
wifi_sta_list_t wifi_sta_list;
esp_wifi_ap_get_sta_list(&wifi_sta_list);
tcpip_adapter_sta_list_t sta_list;
wlan_obj_t * self = self_in;

mp_obj_t sta_out_list = mp_obj_new_list(0, NULL);
/* Check if AP mode is enabled */
if (self->mode == WIFI_MODE_AP || self->mode == WIFI_MODE_APSTA) {
tcpip_adapter_get_sta_list(&wifi_sta_list, &sta_list);

mp_obj_t tuple[2];
for(index = 0; index < MAX_AP_CONNECTED_STA && index < sta_list.num; index++)
{
tuple[0] = mp_obj_new_bytes((const byte *)sta_list.sta[index].mac, 6);
tuple[1] = netutils_format_ipv4_addr((uint8_t *)&sta_list.sta[index].ip.addr, NETUTILS_BIG);

/*insert tuple */
mp_obj_list_append(sta_out_list, mp_obj_new_attrtuple(wlan_sta_ifo_fields, 2, tuple));
}
}
else
{
nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, mpexception_os_request_not_possible));
}

return sta_out_list;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(wlan_ap_tcpip_sta_list_obj, wlan_ap_tcpip_sta_list);

STATIC mp_obj_t wlan_joined_ap_info (mp_obj_t self_in)
{
STATIC const qstr wlan_sta_ifo_fields[] = {
Expand Down Expand Up @@ -2654,6 +2688,7 @@ STATIC const mp_map_elem_t wlan_locals_dict_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_antenna), (mp_obj_t)&wlan_antenna_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_mac), (mp_obj_t)&wlan_mac_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ap_sta_list), (mp_obj_t)&wlan_ap_sta_list_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_ap_tcpip_sta_list), (mp_obj_t)&wlan_ap_tcpip_sta_list_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_max_tx_power), (mp_obj_t)&wlan_max_tx_power_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_country), (mp_obj_t)&wlan_country_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_joined_ap_info), (mp_obj_t)&wlan_joined_ap_info_obj },
Expand Down