use task for WifiMulti: everything should be exectued inside loop

This commit is contained in:
Nicu Hodos 2024-06-01 22:27:45 +02:00
parent 2465dbfea7
commit f8aa7dfabd

View File

@ -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() {