added option to continue setup procedure even if Wifi is Disconnect.

pull/91/head
Scott Hanson 6 years ago
parent 68d854a5d7
commit f27dface8c
No known key found for this signature in database
GPG Key ID: F1722997E3709AB0
  1. 47
      src/AutoConnect.cpp
  2. 4
      src/AutoConnect.h

@ -165,7 +165,8 @@ bool AutoConnect::begin(const char* ssid, const char* passphrase, unsigned long
// Activate the AP mode with configured softAP and start the access point. // Activate the AP mode with configured softAP and start the access point.
WiFi.mode(WIFI_AP_STA); WiFi.mode(WIFI_AP_STA);
while (WiFi.getMode() != WIFI_AP_STA) {
while (WiFi.getMode() != WIFI_AP_STA && !_apConfig.contuineOnDisconnect) {
delay(1); delay(1);
yield(); yield();
} }
@ -177,20 +178,26 @@ bool AutoConnect::begin(const char* ssid, const char* passphrase, unsigned long
} }
#endif #endif
WiFi.softAP(_apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _apConfig.hidden); WiFi.softAP(_apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _apConfig.hidden);
do { if(!_apConfig.contuineOnDisconnect)
delay(100); {
yield(); do {
} while (WiFi.softAPIP() == IPAddress(0, 0, 0, 0)); delay(100);
yield();
} while (WiFi.softAPIP() == IPAddress(0, 0, 0, 0));
}
#if defined(ARDUINO_ARCH_ESP32) #if defined(ARDUINO_ARCH_ESP32)
if (!(_apConfig.apip == IPAddress(0, 0, 0, 0) || _apConfig.gateway == IPAddress(0, 0, 0, 0) || _apConfig.netmask == IPAddress(0, 0, 0, 0))) { if (!(_apConfig.apip == IPAddress(0, 0, 0, 0) || _apConfig.gateway == IPAddress(0, 0, 0, 0) || _apConfig.netmask == IPAddress(0, 0, 0, 0))) {
_config(); _config();
} }
#endif #endif
if (_apConfig.apip != IPAddress(0, 0, 0, 0)) { if(!_apConfig.contuineOnDisconnect)
do { {
delay(100); if (_apConfig.apip != IPAddress(0, 0, 0, 0)) {
yield(); do {
} while (WiFi.softAPIP() != _apConfig.apip); delay(100);
yield();
} while (WiFi.softAPIP() != _apConfig.apip);
}
} }
_currentHostIP = WiFi.softAPIP(); _currentHostIP = WiFi.softAPIP();
AC_DBG("SoftAP %s/%s Ch(%d) IP:%s %s\n", _apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _currentHostIP.toString().c_str(), _apConfig.hidden ? "hidden" : ""); AC_DBG("SoftAP %s/%s Ch(%d) IP:%s %s\n", _apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _currentHostIP.toString().c_str(), _apConfig.hidden ? "hidden" : "");
@ -210,15 +217,17 @@ bool AutoConnect::begin(const char* ssid, const char* passphrase, unsigned long
// Start the captive portal to make a new connection // Start the captive portal to make a new connection
bool hasTimeout = false; bool hasTimeout = false;
_portalAccessPeriod = millis(); _portalAccessPeriod = millis();
while (WiFi.status() != WL_CONNECTED && !_rfReset) { if(!_apConfig.contuineOnDisconnect)
handleClient(); {
// Force execution of queued processes. while (WiFi.status() != WL_CONNECTED && !_rfReset) {
yield(); handleClient();
// Check timeout // Force execution of queued processes.
if ((hasTimeout = _hasTimeout(_apConfig.portalTimeout))) { yield();
AC_DBG("CP timeout exceeded:%ld\n", millis() - _portalAccessPeriod); // Check timeout
break; if ((hasTimeout = _hasTimeout(_apConfig.portalTimeout))) {
} AC_DBG("CP timeout exceeded:%ld\n", millis() - _portalAccessPeriod);
break;
}
} }
cs = WiFi.status() == WL_CONNECTED; cs = WiFi.status() == WL_CONNECTED;

@ -68,6 +68,7 @@ class AutoConnectConfig {
autoReconnect(false), autoReconnect(false),
immediateStart(false), immediateStart(false),
retainPortal(false), retainPortal(false),
contuineOnDisconnect(false),
portalTimeout(AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT), portalTimeout(AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT),
hostName(String("")), hostName(String("")),
homeUri(AUTOCONNECT_HOMEURI), homeUri(AUTOCONNECT_HOMEURI),
@ -97,6 +98,7 @@ class AutoConnectConfig {
autoReconnect(false), autoReconnect(false),
immediateStart(false), immediateStart(false),
retainPortal(false), retainPortal(false),
contuineOnDisconnect(false),
portalTimeout(portalTimeout), portalTimeout(portalTimeout),
hostName(String("")), hostName(String("")),
homeUri(AUTOCONNECT_HOMEURI), homeUri(AUTOCONNECT_HOMEURI),
@ -126,6 +128,7 @@ class AutoConnectConfig {
autoReconnect = o.autoReconnect; autoReconnect = o.autoReconnect;
immediateStart = o.immediateStart; immediateStart = o.immediateStart;
retainPortal = o.retainPortal; retainPortal = o.retainPortal;
contuineOnDisconnect = o.contuineOnDisconnect;
portalTimeout = o.portalTimeout; portalTimeout = o.portalTimeout;
hostName = o.hostName; hostName = o.hostName;
homeUri = o.homeUri; homeUri = o.homeUri;
@ -154,6 +157,7 @@ class AutoConnectConfig {
bool autoReconnect; /**< Automatic reconnect with past SSID */ bool autoReconnect; /**< Automatic reconnect with past SSID */
bool immediateStart; /**< Skips WiFi.begin(), start portal immediately */ bool immediateStart; /**< Skips WiFi.begin(), start portal immediately */
bool retainPortal; /**< Even if the captive portal times out, it maintains the portal state. */ bool retainPortal; /**< Even if the captive portal times out, it maintains the portal state. */
bool contuineOnDisconnect; /**< Dont stop setup method on when WIFI is Disconnected. */
unsigned long portalTimeout; /**< Timeout value for stay in the captive portal */ unsigned long portalTimeout; /**< Timeout value for stay in the captive portal */
String hostName; /**< host name */ String hostName; /**< host name */
String homeUri; /**< A URI of user site */ String homeUri; /**< A URI of user site */

Loading…
Cancel
Save