From 6e82e3d46f8b2ff6a8960a4d535b3826302b10e1 Mon Sep 17 00:00:00 2001 From: Shawn A Date: Wed, 8 Feb 2017 12:06:19 -0600 Subject: [PATCH 1/2] fixes #312 softap left on on timeout --- WiFiManager.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 4fba35507..0b8467fcc 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -189,8 +189,12 @@ 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")); + WiFi.mode(WIFI_STA); + break; + } + //DNS dnsServer->processNextRequest(); //HTTP From a36b584187a8d5ad89c752a9bb79d6057a53c5bc Mon Sep 17 00:00:00 2001 From: Shawn A Date: Wed, 8 Feb 2017 13:52:31 -0600 Subject: [PATCH 2/2] non persistant ap mode --- WiFiManager.cpp | 22 ++++++++++++++++++---- WiFiManager.h | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 0b8467fcc..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; @@ -191,10 +191,10 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo // check if timeout if(configPortalHasTimeout()){ DEBUG_WM(F("ConfigPortal timed out")); - WiFi.mode(WIFI_STA); + wifimode(WIFI_STA); break; } - + //DNS dnsServer->processNextRequest(); //HTTP @@ -211,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 @@ -784,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;