From f8aa7dfabdbb9bc6c207921662299f05ac07b5de Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Sat, 1 Jun 2024 22:27:45 +0200 Subject: [PATCH] use task for WifiMulti: everything should be exectued inside loop --- src/wifi.h | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/wifi.h b/src/wifi.h index f3f6361..e47dc8e 100644 --- a/src/wifi.h +++ b/src/wifi.h @@ -5,6 +5,7 @@ namespace Wifi { + ESP8266WiFiMulti wifiMulti; WiFiEventHandler stationConnectedHandler; WiFiEventHandler stationDisconnectedHandler; @@ -21,9 +22,16 @@ namespace Wifi { } }); - void setup(Scheduler& ts, void(*onConnected)() = nullptr) { - ts.addTask(tReconnect); + Task tInitialConnect(500 * TASK_MILLISECOND, 120, []{ + Serial.println("Finding WiFi netowrk..."); + if (wifiMulti.run() == WL_CONNECTED) tInitialConnect.disable(); + }, nullptr, false, nullptr, []{ + currentSSID = WiFi.SSID(); + currentPsk = WiFi.psk(); + tReconnect.enable(); + }); + void setup(Scheduler& ts, void(*onConnected)() = nullptr) { stationConnectedHandler = WiFi.onStationModeGotIP([onConnected](const WiFiEventStationModeGotIP& e) { Serial.println("Connected to network."); printStatus(); @@ -37,20 +45,14 @@ namespace Wifi { }); - ESP8266WiFiMulti wifiMulti; + WiFi.setHostname(MAIN_DEVICE_ID); for (uint32_t i = 0; i < sizeof(credentials) / sizeof(WifiCredentials); i++) { wifiMulti.addAP(credentials[i].ssid, credentials[i].password); } - Serial.println("Connecting to WiFi netowrk."); - while (wifiMulti.run() != WL_CONNECTED) { - delay(500); - } - WiFi.setHostname(MAIN_DEVICE_ID); - currentSSID = WiFi.SSID(); - currentPsk = WiFi.psk(); - - tReconnect.enable(); + ts.addTask(tInitialConnect); + ts.addTask(tReconnect); + tInitialConnect.enable(); } void disconnect() {