summaryrefslogtreecommitdiff
path: root/ports/esp32s2
diff options
context:
space:
mode:
authorRyan T. Hamilton <astrobokonon@gmail.com>2020-09-19 13:38:04 -0700
committerRyan T. Hamilton <astrobokonon@gmail.com>2020-09-19 13:38:04 -0700
commit04ffd0dca0db404028da8ef2eb43f82b6e1b24ab (patch)
tree5c7bd2a538ad6f2041d856c5fd7e3bbd7ad58e4c /ports/esp32s2
parent9d9bc5adee612a39a73ee542e5e550512bb18b6b (diff)
Add gateway, subnet, and rssi info for current connected AP
ap_rssi is a bound method, which I'm not keen on, but it works
Diffstat (limited to 'ports/esp32s2')
-rw-r--r--ports/esp32s2/common-hal/wifi/Radio.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/ports/esp32s2/common-hal/wifi/Radio.c b/ports/esp32s2/common-hal/wifi/Radio.c
index a0b8b6adc..4b2e7b64e 100644
--- a/ports/esp32s2/common-hal/wifi/Radio.c
+++ b/ports/esp32s2/common-hal/wifi/Radio.c
@@ -147,6 +147,44 @@ wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t
return WIFI_RADIO_ERROR_NONE;
}
+mp_obj_t common_hal_wifi_radio_get_ap_rssi(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
+ wifi_mode_t if_mode;
+ esp_wifi_get_mode(&if_mode);
+ if (if_mode != WIFI_MODE_STA){
+ return mp_const_none;
+ }
+
+ wifi_ap_record_t ap_info;
+ esp_wifi_sta_get_ap_info(&ap_info);
+
+ mp_obj_t rssi;
+ rssi = MP_OBJ_NEW_SMALL_INT(ap_info.rssi);
+
+ return rssi;
+}
+
+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;
+ }
+ esp_netif_ip_info_t ip_info;
+ esp_netif_get_ip_info(self->netif, &ip_info);
+ return common_hal_ipaddress_new_ipv4address(ip_info.gw.addr);
+}
+
+mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self) {
+ if (!esp_netif_is_netif_up(self->netif)) {
+ return mp_const_none;
+ }
+ esp_netif_ip_info_t ip_info;
+ esp_netif_get_ip_info(self->netif, &ip_info);
+ return common_hal_ipaddress_new_ipv4address(ip_info.netmask.addr);
+}
+
mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self) {
if (!esp_netif_is_netif_up(self->netif)) {
return mp_const_none;