From a4ce1fe22655abcfbe34d246b0b965781944a5a4 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Wed, 5 Oct 2022 09:11:23 -0700 Subject: [PATCH 1/3] Expand access to SDK's struct bss_info The NONOS SDK's `struct bss_info` in `user_interface.h` has grown since the beginning of this project. The additional elements are not accessible. Add a method for R/O access to full `struct bss_info`. Update example WiFiScan.ino --- .../examples/WiFiScan/WiFiScan.ino | 25 ++++++++++++++++++- libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 8 ++++++ libraries/ESP8266WiFi/src/ESP8266WiFiScan.h | 1 + 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino index 7cb8fa9dd6..d9c89793a9 100644 --- a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino +++ b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino @@ -40,7 +40,30 @@ void loop() { for (int8_t i = 0; i < scanResult; i++) { WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden); - Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %s\n"), i, channel, bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], rssi, (encryptionType == ENC_TYPE_NONE) ? ' ' : '*', hidden ? 'H' : 'V', ssid.c_str()); + // get extra info + const struct bss_info *bssInfo = WiFi.getNetworkInfo(i); + String phyMode; + const char *wps = ""; + if (bssInfo) { + phyMode.reserve(12); + phyMode = F("802.11"); + String slash; + if (bssInfo->phy_11b) { + phyMode += 'b'; + slash = '/'; + } + if (bssInfo->phy_11g) { + phyMode += slash + 'g'; + slash = '/'; + } + if (bssInfo->phy_11n) { + phyMode += slash + 'n'; + } + if (bssInfo->wps) { + wps = PSTR("WPS"); + } + } + Serial.printf(PSTR(" %02d: [CH %02d] [%02X:%02X:%02X:%02X:%02X:%02X] %ddBm %c %c %-11s %3S %s\n"), i, channel, bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], rssi, (encryptionType == ENC_TYPE_NONE) ? ' ' : '*', hidden ? 'H' : 'V', phyMode.c_str(), wps, ssid.c_str()); yield(); } } else { diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index 6aaf432e2d..b0bee14b85 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -147,6 +147,14 @@ void ESP8266WiFiScanClass::scanDelete() { _scanComplete = false; } +/** + * returns const pointer to the requested scanned wifi entry for furthor parsing. + * @param networkItem uint8_t + * @return struct bss_info*, may be NULL + */ +const struct bss_info *ESP8266WiFiScanClass::getNetworkInfo(uint8_t i) { + return reinterpret_cast(_getScanInfoByIndex(i)); +} /** * loads all infos from a scanned wifi in to the ptr parameters diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h index e799c4bd7d..4433ee9a88 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h @@ -41,6 +41,7 @@ class ESP8266WiFiScanClass { void scanDelete(); // scan result + const struct bss_info *getNetworkInfo(uint8_t i); bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden); String SSID(uint8_t networkItem); From c54765e9ed0a635fdb34409d4d9b50d2647d0b68 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Sat, 8 Oct 2022 10:19:10 -0700 Subject: [PATCH 2/3] style --- libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino index d9c89793a9..f13058941f 100644 --- a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino +++ b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino @@ -22,7 +22,7 @@ void loop() { String ssid; int32_t rssi; uint8_t encryptionType; - uint8_t* bssid; + uint8_t *bssid; int32_t channel; bool hidden; int scanResult; From 4a051574041e5ca2c17ef9be3a0e6c91729b7f64 Mon Sep 17 00:00:00 2001 From: M Hightower <27247790+mhightower83@users.noreply.github.com> Date: Sat, 8 Oct 2022 15:45:52 -0700 Subject: [PATCH 3/3] Make method name more compatible with ESP32 --- libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino | 2 +- libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp | 8 ++++---- libraries/ESP8266WiFi/src/ESP8266WiFiScan.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino index f13058941f..dd207141f6 100644 --- a/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino +++ b/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino @@ -41,7 +41,7 @@ void loop() { WiFi.getNetworkInfo(i, ssid, encryptionType, rssi, bssid, channel, hidden); // get extra info - const struct bss_info *bssInfo = WiFi.getNetworkInfo(i); + const bss_info *bssInfo = WiFi.getScanInfoByIndex(i); String phyMode; const char *wps = ""; if (bssInfo) { diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp index b0bee14b85..5331c7bac8 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.cpp @@ -149,12 +149,12 @@ void ESP8266WiFiScanClass::scanDelete() { /** * returns const pointer to the requested scanned wifi entry for furthor parsing. - * @param networkItem uint8_t + * @param networkItem int * @return struct bss_info*, may be NULL */ -const struct bss_info *ESP8266WiFiScanClass::getNetworkInfo(uint8_t i) { - return reinterpret_cast(_getScanInfoByIndex(i)); -} +const bss_info *ESP8266WiFiScanClass::getScanInfoByIndex(int i) { + return reinterpret_cast(_getScanInfoByIndex(i)); +}; /** * loads all infos from a scanned wifi in to the ptr parameters diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h index 4433ee9a88..36d159aca0 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiScan.h @@ -41,7 +41,7 @@ class ESP8266WiFiScanClass { void scanDelete(); // scan result - const struct bss_info *getNetworkInfo(uint8_t i); + const bss_info *getScanInfoByIndex(int i); bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel, bool &isHidden); String SSID(uint8_t networkItem);