diff --git a/include/WifiHandler.hpp b/include/WifiHandler.hpp index 9f3fe93..01f5edd 100644 --- a/include/WifiHandler.hpp +++ b/include/WifiHandler.hpp @@ -7,8 +7,21 @@ #define TICKER_RATE_CONFIG 0.2 #define TICKER_RATE_ERASE 0.05 +#ifndef LED_BUILTIN +#define LED_BUILTIN 2 +#endif + +#ifndef BUTTON_BUILTIN +#define BUTTON_BUILTIN 0 +#endif + +#define CONNECT_BUTTON BUTTON_BUILTIN + void wifiManagerCb(WiFiManager::Status status); +void set_blink_rate(float interval); + void connect(); +void resetSettings(); #endif // __WIFIHANDLER_HPP__ \ No newline at end of file diff --git a/src/WifiHandler.cpp b/src/WifiHandler.cpp index 7faaefb..c0c1b5c 100644 --- a/src/WifiHandler.cpp +++ b/src/WifiHandler.cpp @@ -15,39 +15,38 @@ static void tick(void) { } } -void wifiManagerCb(WiFiManager::Status status) { +void set_blink_rate(float interval) { if (ticker.active()) { ticker.detach(); } + if (interval > 0.0f) { + ticker.attach(interval, tick); + } +} + +void wifiManagerCb(WiFiManager::Status status) { if (status.mode == WiFiManager::Mode::CONNECTING) { - ticker.attach(TICKER_RATE_CONNECTING, tick); - Serial.println("CONNECTING"); + set_blink_rate(TICKER_RATE_CONNECTING); } else if (status.mode == WiFiManager::Mode::SCANNING) { - ticker.attach(TICKER_RATE_CONNECTING, tick); - Serial.println("SCANNING"); + set_blink_rate(TICKER_RATE_CONNECTING); } else if (status.mode == WiFiManager::Mode::PORTAL) { - ticker.attach(TICKER_RATE_CONFIG, tick); - Serial.println("PORTAL"); + set_blink_rate(TICKER_RATE_CONFIG); } else if (status.mode == WiFiManager::Mode::ERASING) { - ticker.attach(TICKER_RATE_ERASE, tick); - Serial.println("ERASING"); + set_blink_rate(TICKER_RATE_ERASE); } else if (status.mode == WiFiManager::Mode::CONNECTED) { + set_blink_rate(0.0f); digitalWrite(LED_BUILTIN, HIGH); - Serial.println("CONNECTED"); } else if (status.mode == WiFiManager::Mode::DISCONNECTED) { + set_blink_rate(0.0f); digitalWrite(LED_BUILTIN, LOW); - Serial.println("DISCONNECTED"); } } void connect() { Serial.begin(115200); - // wifiManager.resetSettings(); - // wifiManager.configure("esp32-", true, LED_BUILTIN, true, BUTTON_BUILTIN, - // false); - wifiManager.configure("Claire", true, wifiManagerCb, BUTTON_BUILTIN, false); + wifiManager.configure("Claire", wifiManagerCb); // fetches ssid and pass and tries to connect // if it does not connect it starts an access point @@ -64,5 +63,19 @@ void connect() { Serial.println(WiFi.localIP()); // keep LED on - digitalWrite(LED_BUILTIN, LED_ON_VALUE_DEFAULT); + digitalWrite(LED_BUILTIN, HIGH); +} + +void resetSettings() { + WiFiManager::Status status = {.wifi_status = 0U, .mode = WiFiManager::Mode::ERASING}; + + Serial.println("resetting wifi settings..."); + + wifiManagerCb(status); + wifiManager.resetSettings(); + delay(1000); + status.mode = WiFiManager::Mode::DISCONNECTED; + wifiManagerCb(status); + + return; } diff --git a/src/main.cpp b/src/main.cpp index 01d66f0..c29cd5c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,6 +7,21 @@ DESPatch dESPatch; void setup() { Serial.begin(115200); + + pinMode(LED_BUILTIN, OUTPUT); + set_blink_rate(TICKER_RATE_CONNECTING); + + pinMode(CONNECT_BUTTON, INPUT); + + if (CONNECT_BUTTON >= 0) { + // Give user 3 second chance to press button and reset settings + Serial.println("Waiting 3 seconds to check if user presses the button"); + delay(3000); + if (not digitalRead(CONNECT_BUTTON)) { + resetSettings(); + } + } + connect(); const char url[] = @@ -18,11 +33,10 @@ void setup() { Serial.print("dESPatch.configure() returned with code "); Serial.println(x); - Serial.println(":-)"); } void loop(void) { Serial.println("hello :-)"); dESPatch.checkForUpdate(true); - delay(500); + delay(5000); }