diff --git a/library.json b/library.json index cc7b8cd..840aaca 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "Wifi", - "version": "1.0.2", + "version": "2.0.0", "description": "Helper classes for handling wifi connectiviy and OTA", "repository": { diff --git a/src/credentials.h.tpl b/src/credentials.h.tpl index c5637e4..f374cbd 100644 --- a/src/credentials.h.tpl +++ b/src/credentials.h.tpl @@ -1,4 +1,4 @@ struct WifiCredentials { const char* ssid; const char* password; -} credentials[] = {"foo", "bar"}; +} credentials = {"foo", "bar"}; diff --git a/src/wifi.h b/src/wifi.h index b0643e9..0682aba 100644 --- a/src/wifi.h +++ b/src/wifi.h @@ -1,65 +1,42 @@ #include -#include #include #include "credentials.h" namespace Wifi { - ESP8266WiFiMulti wifiMulti; WiFiEventHandler stationConnectedHandler; WiFiEventHandler stationDisconnectedHandler; - String currentSSID; - String currentPsk; - void printStatus(); - Task tReconnect(1 * TASK_MINUTE, TASK_FOREVER, + Task tConnect(1 * TASK_MINUTE, TASK_FOREVER, [] { if (WiFi.status() != WL_CONNECTED) { - Serial.println("Reconnecting to WiFi netowrk..."); + Serial.println("Connecting to WiFi netowrk..."); WiFi.forceSleepWake(); - WiFi.begin(currentSSID.c_str(), currentPsk.c_str()); + WiFi.begin(credentials.ssid, credentials.password); } - }); - - 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(); - } - ); + }, + &ts, true); void setup(Scheduler& ts, void(*onConnected)() = nullptr, void(*onDisconnected)() = nullptr) { stationConnectedHandler = WiFi.onStationModeGotIP( [onConnected](const WiFiEventStationModeGotIP& e) { Serial.println("Connected to network."); printStatus(); - tReconnect.cancel(); + tConnect.cancel(); if (onConnected) onConnected(); }); stationDisconnectedHandler = WiFi.onStationModeDisconnected( [onDisconnected](const WiFiEventStationModeDisconnected& e) { Serial.println("Disconnected from network."); - tReconnect.enableIfNot(); + tConnect.enableIfNot(); if (onDisconnected) onDisconnected(); }); WiFi.setHostname(MAIN_DEVICE_ID); - for (uint32_t i = 0; i < sizeof(credentials) / sizeof(WifiCredentials); i++) { - wifiMulti.addAP(credentials[i].ssid, credentials[i].password); - } - - ts.addTask(tInitialConnect); - ts.addTask(tReconnect); - tInitialConnect.enable(); } void disconnect() {