diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 4fba35507..5c3f73c20 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -172,7 +172,7 @@ boolean WiFiManager::startConfigPortal() { boolean WiFiManager::startConfigPortal(char const *apName, char const *apPassword) { //setup AP - WiFi.mode(WIFI_AP_STA); + wifimode(WIFI_AP_STA); DEBUG_WM("SET AP STA"); _apName = apName; @@ -189,7 +189,11 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo while(1){ // check if timeout - if(configPortalHasTimeout()) break; + if(configPortalHasTimeout()){ + DEBUG_WM(F("ConfigPortal timed out")); + wifimode(WIFI_STA); + break; + } //DNS dnsServer->processNextRequest(); @@ -207,7 +211,7 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo DEBUG_WM(F("Failed to connect.")); } else { //connected - WiFi.mode(WIFI_STA); + wifimode(WIFI_STA); //notify that configuration has changed and any optional parameters should be saved if ( _savecallback != NULL) { //todo: check if any custom parameters actually exist, and check if they really changed maybe @@ -780,3 +784,17 @@ String WiFiManager::toStringIp(IPAddress ip) { res += String(((ip >> 8 * 3)) & 0xFF); return res; } + +/** + * toggle mode, non persistant + * @param m WiFiMode_t + */ +bool WiFiManager::wifimode(WiFiMode_t m) { + DEBUG_WM(F("changing wifi mode non persistant")); + if(wifi_get_opmode() == (uint8) m) { + return true; + } + ETS_UART_INTR_DISABLE(); + return wifi_set_opmode_current(m); + ETS_UART_INTR_ENABLE(); +} \ No newline at end of file diff --git a/WiFiManager.h b/WiFiManager.h index d86b90408..9cf61f841 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -161,7 +161,7 @@ class WiFiManager void handle204(); boolean captivePortal(); boolean configPortalHasTimeout(); - + bool wifimode(WiFiMode_t m); // DNS server const byte DNS_PORT = 53;