disable clean connect, OPTIONAL setter

setCleanConnect(bool enable); // default false

This was originally intended to improve connection stability, but it is now causing problems , this is now disabled and can be reenabled optionally.
Possible race condition diconnecting while auto connecting or async setmode delays
This commit is contained in:
tablatronix
2020-02-18 16:14:45 -06:00
parent decd2942c5
commit b61bc261bf
2 changed files with 14 additions and 4 deletions
+10 -2
View File
@@ -725,6 +725,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
//@todo catch failures in set_config
// make sure sta is on before `begin` so it does not call enablesta->mode while persistent is ON ( which would save WM AP state to eeprom !)
if(_cleanConnect) WiFi_Disconnect(); // disconnect before begin, in case anything is hung, this causes a 2 seconds delay for connect
// @todo find out what status is when this is needed, can we detect it and handle it, say in between states or idle_status
@@ -812,7 +813,7 @@ bool WiFiManager::wifiConnectDefault(){
* @return bool success
*/
bool WiFiManager::setSTAConfig(){
DEBUG_WM(F("STA static IP:"),_sta_static_ip);
DEBUG_WM(DEBUG_DEV,F("STA static IP:"),_sta_static_ip);
bool ret = true;
if (_sta_static_ip) {
DEBUG_WM(DEBUG_VERBOSE,F("Custom static IP/GW/Subnet/DNS"));
@@ -828,7 +829,7 @@ bool WiFiManager::setSTAConfig(){
if(!ret) DEBUG_WM(DEBUG_ERROR,"[ERROR] wifi config failed");
else DEBUG_WM(F("STA IP set:"),WiFi.localIP());
} else {
DEBUG_WM(DEBUG_VERBOSE,F("setSTAConfig static ip not set"));
DEBUG_WM(DEBUG_VERBOSE,F("setSTAConfig static ip not set, skipping"));
}
return ret;
}
@@ -2009,6 +2010,13 @@ void WiFiManager::setConfigPortalTimeout(unsigned long seconds) {
void WiFiManager::setConnectTimeout(unsigned long seconds) {
_connectTimeout = seconds * 1000;
}
/**
* toggle _cleanconnect, always disconnect before connecting
* @param {[type]} bool enable [description]
*/
void WiFiManager::setCleanConnect(bool enable){
_cleanConnect = enable;
}
/**
* [setConnectTimeout description
+4 -2
View File
@@ -261,8 +261,10 @@ class WiFiManager
void setWiFiAPChannel(int32_t channel);
// set ap hidden
void setWiFiAPHidden(bool hidden); // default false
// set custom menu
// clean connect, always disconnect before connecting
void setCleanConnect(bool enable); // default false
// set custom menu
// set custom menu items and order
void setMenu(std::vector<const char*>& menu);
void setMenu(const char* menu[], uint8_t size);
@@ -340,7 +342,7 @@ class WiFiManager
unsigned long _lastscan = 0; // ms for timing wifi scans
unsigned long _startscan = 0; // ms for timing wifi scans
int _cpclosedelay = 2000; // delay before wifisave, prevents captive portal from closing to fast.
bool _cleanConnect = true; // disconnect before connect in connectwifi, increases stability on connects
bool _cleanConnect = false; // disconnect before connect in connectwifi, increases stability on connects
bool _disableSTA = false; // disable sta when starting ap, always
bool _disableSTAConn = true; // disable sta when starting ap, if sta is not connected ( stability )