Add ap_ssid and ap_bssid

This commit is contained in:
Ryan T. Hamilton 2020-09-28 17:25:09 -07:00
parent 7b7ef8edde
commit 2a4a244245
3 changed files with 73 additions and 2 deletions

View File

@ -38,6 +38,8 @@
#include "esp-idf/components/esp_wifi/include/esp_wifi.h"
#include "esp-idf/components/lwip/include/apps/ping/ping_sock.h"
#define MAC_ADDRESS_LENGTH 6
static void start_station(wifi_radio_obj_t *self) {
if (self->sta_mode) {
return;
@ -73,8 +75,6 @@ void common_hal_wifi_radio_set_enabled(wifi_radio_obj_t *self, bool enabled) {
}
}
#define MAC_ADDRESS_LENGTH 6
mp_obj_t common_hal_wifi_radio_get_mac_address(wifi_radio_obj_t *self) {
uint8_t mac[MAC_ADDRESS_LENGTH];
esp_wifi_get_mac(ESP_IF_WIFI_STA, mac);
@ -168,6 +168,41 @@ mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self) {
}
}
mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self) {
if (!esp_netif_is_netif_up(self->netif)) {
return mp_const_none;
}
// Make sure the interface is in STA mode
if (self->sta_mode){
return mp_const_none;
}
if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
return mp_const_none;
} else {
const char* cstr = (const char*) self->ap_info.ssid;
return mp_obj_new_str(cstr, strlen(cstr));
}
}
mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self) {
if (!esp_netif_is_netif_up(self->netif)) {
return mp_const_none;
}
// Make sure the interface is in STA mode
if (self->sta_mode){
return mp_const_none;
}
if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
return mp_const_none;
} else {
return mp_obj_new_bytes(self->ap_info.bssid, MAC_ADDRESS_LENGTH);
}
}
mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self) {
if (!esp_netif_is_netif_up(self->netif)) {
return mp_const_none;

View File

@ -179,6 +179,38 @@ const mp_obj_property_t wifi_radio_ap_rssi_obj = {
(mp_obj_t)&mp_const_none_obj },
};
//| ap_ssid: int
//| """SSID of the currently connected AP. Returns none if not connected"""
//|
STATIC mp_obj_t wifi_radio_get_ap_ssid(mp_obj_t self) {
return common_hal_wifi_radio_get_ap_ssid(self);
}
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_ssid_obj, wifi_radio_get_ap_ssid);
const mp_obj_property_t wifi_radio_ap_ssid_obj = {
.base.type = &mp_type_property,
.proxy = { (mp_obj_t)&wifi_radio_get_ap_ssid_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj },
};
//| ap_bssid: int
//| """BSSID (usually MAC) of the currently connected AP. Returns none if not connected"""
//|
STATIC mp_obj_t wifi_radio_get_ap_bssid(mp_obj_t self) {
return common_hal_wifi_radio_get_ap_bssid(self);
}
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_bssid_obj, wifi_radio_get_ap_bssid);
const mp_obj_property_t wifi_radio_ap_bssid_obj = {
.base.type = &mp_type_property,
.proxy = { (mp_obj_t)&wifi_radio_get_ap_bssid_obj,
(mp_obj_t)&mp_const_none_obj,
(mp_obj_t)&mp_const_none_obj },
};
//| ipv4_gateway: Optional[ipaddress.IPv4Address]
//| """IP v4 Address of the gateway when connected to an access point. None otherwise."""
//|
@ -284,6 +316,8 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
{ MP_ROM_QSTR(MP_QSTR_ap_rssi), MP_ROM_PTR(&wifi_radio_ap_rssi_obj) },
{ MP_ROM_QSTR(MP_QSTR_ap_ssid), MP_ROM_PTR(&wifi_radio_ap_ssid_obj) },
{ MP_ROM_QSTR(MP_QSTR_ap_bssid), MP_ROM_PTR(&wifi_radio_ap_bssid_obj) },
{ MP_ROM_QSTR(MP_QSTR_ipv4_dns), MP_ROM_PTR(&wifi_radio_ipv4_dns_obj) },
{ MP_ROM_QSTR(MP_QSTR_ipv4_gateway), MP_ROM_PTR(&wifi_radio_ipv4_gateway_obj) },
{ MP_ROM_QSTR(MP_QSTR_ipv4_subnet), MP_ROM_PTR(&wifi_radio_ipv4_subnet_obj) },

View File

@ -54,6 +54,8 @@ extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self)
extern wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len);
extern mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self);
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self);