#include #include // https://github.com/admarschoonen/WiFiManager #include "../include/WifiHandler.hpp" WiFiManager wifiManager; Ticker ticker; static void tick(void) { int state = 0; if (LED_BUILTIN >= 0) { state = digitalRead(LED_BUILTIN); digitalWrite(LED_BUILTIN, !state); } } 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) { set_blink_rate(TICKER_RATE_CONNECTING); } else if (status.mode == WiFiManager::Mode::SCANNING) { set_blink_rate(TICKER_RATE_CONNECTING); } else if (status.mode == WiFiManager::Mode::PORTAL) { set_blink_rate(TICKER_RATE_CONFIG); } else if (status.mode == WiFiManager::Mode::ERASING) { set_blink_rate(TICKER_RATE_ERASE); } else if (status.mode == WiFiManager::Mode::CONNECTED) { set_blink_rate(0.0f); digitalWrite(LED_BUILTIN, HIGH); } else if (status.mode == WiFiManager::Mode::DISCONNECTED) { set_blink_rate(0.0f); digitalWrite(LED_BUILTIN, LOW); } } void connect() { Serial.begin(115200); wifiManager.configure("Claire", wifiManagerCb); // fetches ssid and pass and tries to connect // if it does not connect it starts an access point // and goes into a blocking loop awaiting configuration if (!wifiManager.autoConnect()) { Serial.println("failed to connect and hit timeout"); // reset and try again, or maybe put it to deep sleep ESP.restart(); delay(1000); } // if you get here you have connected to the WiFi Serial.print("connected with address: "); Serial.println(WiFi.localIP()); // keep LED on 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; }