From ca920eff2d9c98b01ba35f046c382f03f0f8fd6d Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Thu, 27 May 2021 03:52:07 +0200 Subject: [PATCH] oobe ScanNetworks and fix wifiValidateSsid --- src/hasp_oobe.cpp | 2 ++ src/sys/net/hasp_wifi.cpp | 26 ++++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/hasp_oobe.cpp b/src/hasp_oobe.cpp index 6a298840..d7bb2a38 100644 --- a/src/hasp_oobe.cpp +++ b/src/hasp_oobe.cpp @@ -311,6 +311,7 @@ bool oobeSetup() char pass[32]; if(wifiShowAP(ssid, pass)) { + WiFi.scanNetworks(true); haspDevice.set_backlight_level(255); oobeSetupQR(ssid, pass); oobeSetupSsid(); @@ -339,6 +340,7 @@ void oobeFakeSetup(const char*, const char*) char ssid[32] = "HASP-ABCDEF"; char pass[32] = "haspadmin"; + WiFi.scanNetworks(true); haspDevice.set_backlight_level(255); oobeSetupQR(ssid, pass); oobeSetupSsid(); diff --git a/src/sys/net/hasp_wifi.cpp b/src/sys/net/hasp_wifi.cpp index d16a16f5..4fec8cfa 100644 --- a/src/sys/net/hasp_wifi.cpp +++ b/src/sys/net/hasp_wifi.cpp @@ -294,6 +294,20 @@ static void wifi_callback(system_event_id_t event, system_event_info_t info) case SYSTEM_EVENT_STA_GOT_IP: wifiConnected(IPAddress(info.got_ip.ip_info.ip.addr)); break; + case SYSTEM_EVENT_SCAN_DONE: { + uint16_t count = WiFi.scanComplete(); + for(int i = 0; i < count; ++i) { + // Print SSID and RSSI for each network found + Serial.print(i + 1); + Serial.print(": "); + Serial.print(WiFi.SSID(i)); + Serial.print(" ("); + Serial.print(WiFi.RSSI(i)); + Serial.print(")"); + Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN) ? " " : "*"); + } + break; + } case SYSTEM_EVENT_STA_DISCONNECTED: wifiDisconnected((const char*)info.disconnected.ssid, info.disconnected.reason); // NTP.stop(); // NTP sync can be disabled to avoid sync errors @@ -467,9 +481,9 @@ bool wifiEvery5Seconds() bool wifiValidateSsid(const char* ssid, const char* pass) { #ifdef ARDUINO_ARCH_ESP32 - WiFi.begin(wifiSsid, wifiPassword, WIFI_ALL_CHANNEL_SCAN); + WiFi.begin(ssid, pass, WIFI_ALL_CHANNEL_SCAN); #else - WiFi.begin(wifiSsid, wifiPassword); + WiFi.begin(ssid, pass); #endif uint8_t attempt = 0; @@ -480,13 +494,13 @@ bool wifiValidateSsid(const char* ssid, const char* pass) char espIp[16]; memset(espIp, 0, sizeof(espIp)); snprintf_P(espIp, sizeof(espIp), PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); - while(attempt < 15 && (WiFi.status() != WL_CONNECTED || String(espIp) == F("0.0.0.0"))) { + while(attempt < 30 && (WiFi.status() != WL_CONNECTED || String(espIp) == F("0.0.0.0"))) { #else - while(attempt < 15 && (WiFi.status() != WL_CONNECTED || WiFi.localIP().toString() == F("0.0.0.0"))) { + while(attempt < 30 && (WiFi.status() != WL_CONNECTED || WiFi.localIP().toString() == F("0.0.0.0"))) { #endif attempt++; - LOG_INFO(TAG_WIFI, F(D_WIFI_CONNECTING_TO "... %u"), wifiSsid, attempt); - delay(500); + LOG_INFO(TAG_WIFI, F(D_WIFI_CONNECTING_TO "... %u"), ssid, attempt); + delay(250); } #if defined(STM32F4xx) LOG_INFO(TAG_WIFI, F(D_NETWORK_IP_ADDRESS_RECEIVED), espIp);