From 501c824993f136d0a63ed3a4ed00e2c81abf5a95 Mon Sep 17 00:00:00 2001 From: tablatronix Date: Fri, 2 Nov 2018 10:13:07 -0500 Subject: [PATCH] supports stopConfigPortal if blocking , flag abort --- WiFiManager.cpp | 26 ++++++++++++++----- WiFiManager.h | 5 ++-- .../OnDemandConfigPortal.ino | 3 ++- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index caa430e..25e3dc6 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -408,7 +408,7 @@ void WiFiManager::stopWebPortal() { if(!configPortalActive && !webPortalActive) return; DEBUG_WM(DEBUG_VERBOSE,F("Stopping Web Portal")); webPortalActive = false; - stopConfigPortal(); + shutdownConfigPortal(); } boolean WiFiManager::configPortalHasTimeout(){ @@ -550,7 +550,7 @@ boolean WiFiManager::startConfigPortal(char const *apName, char const *apPasswo // if timed out or abort, break if(configPortalHasTimeout() || abort){ DEBUG_WM(DEBUG_DEV,F("configportal abort")); - stopConfigPortal(); + shutdownConfigPortal(); result = abort ? portalAbortResult : portalTimeoutResult; // false, false break; } @@ -611,7 +611,7 @@ uint8_t WiFiManager::processConfigPortal(){ if ( _savewificallback != NULL) { _savewificallback(); } - stopConfigPortal(); + shutdownConfigPortal(); return WL_CONNECTED; // CONNECT SUCCESS } DEBUG_WM(DEBUG_ERROR,F("[ERROR] Connect to new AP Failed")); @@ -624,7 +624,7 @@ uint8_t WiFiManager::processConfigPortal(){ if ( _savewificallback != NULL) { _savewificallback(); } - stopConfigPortal(); + shutdownConfigPortal(); return WL_CONNECT_FAILED; // CONNECT FAIL } else{ @@ -642,11 +642,11 @@ uint8_t WiFiManager::processConfigPortal(){ } /** - * [stopConfigPortal description] + * [shutdownConfigPortal description] * @access public - * @return {[type]} [description] + * @return bool success (softapdisconnect) */ -boolean WiFiManager::stopConfigPortal(){ +bool WiFiManager::shutdownConfigPortal(){ if(webPortalActive) return false; //DNS handler @@ -1831,6 +1831,18 @@ void WiFiManager::reportStatus(String &page){ * reset wifi settings, clean stored ap password */ +/** + * [stopConfigPortal description] + * @return {[type]} [description] + */ +bool WiFiManager::stopConfigPortal(){ + if(_configPortalIsBlocking){ + abort = true; + return true; + } + return shutdownConfigPortal(); +} + /** * disconnect * @access public diff --git a/WiFiManager.h b/WiFiManager.h index 7f77483..f7a7b48 100644 --- a/WiFiManager.h +++ b/WiFiManager.h @@ -151,8 +151,8 @@ class WiFiManager boolean startConfigPortal(); // auto generates apname boolean startConfigPortal(char const *apName, char const *apPassword = NULL); - //manually stop the config portal if started manually - boolean stopConfigPortal(); + //manually stop the config portal if started manually, stop immediatly if non blocking, flag abort if blocking + bool stopConfigPortal(); //manually start the web portal, autoconnect does this automatically on connect failure void startWebPortal(); @@ -367,6 +367,7 @@ class WiFiManager void _end(); void setupConfigPortal(); + bool shutdownConfigPortal(); #ifdef NO_EXTRA_4K_HEAP boolean _tryWPS = false; // try WPS on save failure, unsupported diff --git a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino index 308eb1a..4e14584 100644 --- a/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino +++ b/examples/DEV/OnDemandConfigPortal/OnDemandConfigPortal.ino @@ -28,6 +28,7 @@ void configModeCallback (WiFiManager *myWiFiManager) { void saveParamCallback(){ Serial.println("[CALLBACK] saveParamCallback fired"); + // wm.stopConfigPortal(); } void bindServerCallback(){ @@ -93,7 +94,7 @@ void setup() { // wm.setMenu(menu,9); // custom menu array must provide length std::vector menu = {"wifi","wifinoscan","info","param","close","sep","erase","restart","exit"}; - // wm.setMenu(menu); // custom menu, pass vector + wm.setMenu(menu); // custom menu, pass vector // set static sta ip // wm.setSTAStaticIPConfig(IPAddress(10,0,1,99), IPAddress(10,0,1,1), IPAddress(255,255,255,0));