From 96fc5ef7e601b125f5b308e45dc4067b60cc43bf Mon Sep 17 00:00:00 2001 From: softwaregravy <426690+softwaregravy@users.noreply.github.com> Date: Tue, 13 Dec 2022 16:11:26 -0500 Subject: [PATCH 1/4] track when portal is available --- src/AutoConnectCore.hpp | 4 ++++ src/AutoConnectCoreImpl.hpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/AutoConnectCore.hpp b/src/AutoConnectCore.hpp index dd9165fa..f47ba642 100644 --- a/src/AutoConnectCore.hpp +++ b/src/AutoConnectCore.hpp @@ -69,6 +69,8 @@ class AutoConnectCore { template bool restoreCredential(const char* filename = "/" AC_IDENTIFIER, U& fs = AUTOCONNECT_APPLIED_FILESYSTEM); + bool portalAvailable() { return _portalAvailable; } + protected: typedef enum { AC_RECONNECT_SET, @@ -160,6 +162,8 @@ class AutoConnectCore { #ifdef ARDUINO_ARCH_ESP32 WiFiEventId_t _disconnectEventId = -1; /**< STA disconnection event handler registered id */ #endif + bool _portalAvailable = false; /** will be true when the portal is available **/ + /** Only available with ticker enabled */ std::unique_ptr _ticker; diff --git a/src/AutoConnectCoreImpl.hpp b/src/AutoConnectCoreImpl.hpp index 3a691ace..535c14e9 100644 --- a/src/AutoConnectCoreImpl.hpp +++ b/src/AutoConnectCoreImpl.hpp @@ -590,6 +590,7 @@ void AutoConnectCore::handleRequest(void) { if (!_apConfig.retainPortal) { WiFi.softAPdisconnect(true); WiFi.enableAP(false); + _portalAvailable = false; } else { AC_DBG("Maintain SoftAP\n"); @@ -969,6 +970,7 @@ template void AutoConnectCore::_softAP(void) { WiFi.persistent(false); WiFi.enableAP(true); + _portalAvailable = true; while (!(WiFi.getMode() & WIFI_AP)) { delay(1); yield(); @@ -1067,6 +1069,8 @@ void AutoConnectCore::_stopDNSServer(void) { template void AutoConnectCore::_stopPortal(void) { _stopDNSServer(); + _portalAvailable = false; + if (_webServer) { _webServer->client().stop(); From 0645b3bf7708acd14c83b0e96b1128b85ee4ea52 Mon Sep 17 00:00:00 2001 From: softwaregravy <426690+softwaregravy@users.noreply.github.com> Date: Tue, 13 Dec 2022 16:24:11 -0500 Subject: [PATCH 2/4] move to startDNSServer --- src/AutoConnectCoreImpl.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AutoConnectCoreImpl.hpp b/src/AutoConnectCoreImpl.hpp index 535c14e9..bdfaaf5d 100644 --- a/src/AutoConnectCoreImpl.hpp +++ b/src/AutoConnectCoreImpl.hpp @@ -970,7 +970,6 @@ template void AutoConnectCore::_softAP(void) { WiFi.persistent(false); WiFi.enableAP(true); - _portalAvailable = true; while (!(WiFi.getMode() & WIFI_AP)) { delay(1); yield(); @@ -1042,6 +1041,7 @@ template void AutoConnectCore::_startDNSServer(void) { // Boot DNS server, set up for captive portal redirection. if (!_dnsServer) { + _portalAvailable = true; _dnsServer.reset(new DNSServer()); _dnsServer->setErrorReplyCode(DNSReplyCode::NoError); _dnsServer->start(AUTOCONNECT_DNSPORT, "*", WiFi.softAPIP()); From 385b65cf6e6dcd90debee35c81aaf78ad89b920b Mon Sep 17 00:00:00 2001 From: softwaregravy <426690+softwaregravy@users.noreply.github.com> Date: Tue, 13 Dec 2022 16:31:41 -0500 Subject: [PATCH 3/4] Move all functions to start/stop DNS server --- src/AutoConnectCoreImpl.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/AutoConnectCoreImpl.hpp b/src/AutoConnectCoreImpl.hpp index bdfaaf5d..a30c8754 100644 --- a/src/AutoConnectCoreImpl.hpp +++ b/src/AutoConnectCoreImpl.hpp @@ -590,7 +590,6 @@ void AutoConnectCore::handleRequest(void) { if (!_apConfig.retainPortal) { WiFi.softAPdisconnect(true); WiFi.enableAP(false); - _portalAvailable = false; } else { AC_DBG("Maintain SoftAP\n"); @@ -1056,6 +1055,7 @@ void AutoConnectCore::_startDNSServer(void) { template void AutoConnectCore::_stopDNSServer(void) { if (_dnsServer) { + _portalAvailable = false; _dnsServer->stop(); _dnsServer.reset(); AC_DBG("DNS server stopped\n"); @@ -1069,7 +1069,6 @@ void AutoConnectCore::_stopDNSServer(void) { template void AutoConnectCore::_stopPortal(void) { _stopDNSServer(); - _portalAvailable = false; if (_webServer) { From d850c01a27d204c0611b20aae5537acb7aa914af Mon Sep 17 00:00:00 2001 From: softwaregravy <426690+softwaregravy@users.noreply.github.com> Date: Tue, 13 Dec 2022 16:32:28 -0500 Subject: [PATCH 4/4] whitespace --- src/AutoConnectCoreImpl.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AutoConnectCoreImpl.hpp b/src/AutoConnectCoreImpl.hpp index a30c8754..44fb5812 100644 --- a/src/AutoConnectCoreImpl.hpp +++ b/src/AutoConnectCoreImpl.hpp @@ -1070,7 +1070,6 @@ template void AutoConnectCore::_stopPortal(void) { _stopDNSServer(); - if (_webServer) { _webServer->client().stop(); delay(1000);