#1243 setSaveConnect()

can disable connect when save, does not alter return codes!
This commit is contained in:
tablatronix
2021-04-22 11:06:12 -05:00
parent 3bec5ade1a
commit 7820fb72e7
3 changed files with 25 additions and 8 deletions
+16 -5
View File
@@ -782,7 +782,7 @@ uint8_t WiFiManager::processConfigPortal(){
}
else{
// attempt sta connection to submitted _ssid, _pass
if (connectWifi(_ssid, _pass) == WL_CONNECTED) {
if (connectWifi(_ssid, _pass, _connectonsave) == WL_CONNECTED) {
#ifdef WM_DEBUG_LEVEL
DEBUG_WM(F("Connect to new AP [SUCCESS]"));
@@ -894,7 +894,7 @@ bool WiFiManager::shutdownConfigPortal(){
// @todo refactor this up into seperate functions
// one for connecting to flash , one for new client
// clean up, flow is convoluted, and causes bugs
uint8_t WiFiManager::connectWifi(String ssid, String pass) {
uint8_t WiFiManager::connectWifi(String ssid, String pass, bool connect) {
#ifdef WM_DEBUG_LEVEL
DEBUG_WM(DEBUG_VERBOSE,F("Connecting as wifi client..."));
#endif
@@ -917,7 +917,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
}
// if ssid argument provided connect to that
if (ssid != "") {
wifiConnectNew(ssid,pass);
wifiConnectNew(ssid,pass,connect);
if(_saveTimeout > 0){
connRes = waitForConnectResult(_saveTimeout); // use default save timeout for saves to prevent bugs in esp->waitforconnectresult loop
}
@@ -968,8 +968,9 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
* @param String ssid
* @param String pass
* @return bool success
* @return connect only save if false
*/
bool WiFiManager::wifiConnectNew(String ssid, String pass){
bool WiFiManager::wifiConnectNew(String ssid, String pass,bool connect){
bool ret = false;
#ifdef WM_DEBUG_LEVEL
DEBUG_WM(F("CONNECTED:"),WiFi.status() == WL_CONNECTED);
@@ -978,7 +979,7 @@ bool WiFiManager::wifiConnectNew(String ssid, String pass){
#endif
WiFi_enableSTA(true,storeSTAmode); // storeSTAmode will also toggle STA on in default opmode (persistent) if true (default)
WiFi.persistent(true);
ret = WiFi.begin(ssid.c_str(), pass.c_str());
ret = WiFi.begin(ssid.c_str(), pass.c_str(), 0, NULL, connect);
WiFi.persistent(false);
#ifdef WM_DEBUG_LEVEL
if(!ret) DEBUG_WM(DEBUG_ERROR,F("[ERROR] wifi begin failed"));
@@ -2477,6 +2478,16 @@ void WiFiManager::setSaveConnectTimeout(unsigned long seconds) {
_saveTimeout = seconds * 1000;
}
/**
* Set save portal connect on save option,
* if false, will only save credentials not connect
* @access public
* @param {[type]} bool connect [description]
*/
void WiFiManager::setSaveConnect(bool connect) {
_connectonsave = connect;
}
/**
* [setDebugOutput description]
* @access public
+6 -3
View File
@@ -236,6 +236,9 @@ class WiFiManager
//sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop
void setSaveConnectTimeout(unsigned long seconds);
//sets timeout for which to attempt connecting on saves, useful if there are bugs in esp waitforconnectloop
void setSaveConnect(bool connect = true);
// toggle debug output
void setDebugOutput(boolean debug);
void setDebugOutput(boolean debug, String prefix); // log line prefix, default "*wm:"
@@ -429,7 +432,7 @@ class WiFiManager
unsigned long _startscan = 0; // ms for timing wifi scans
int _cpclosedelay = 2000; // delay before wifisave, prevents captive portal from closing to fast.
bool _cleanConnect = false; // disconnect before connect in connectwifi, increases stability on connects
bool _connectonsave = true; // connect to wifi when saving creds
bool _disableSTA = false; // disable sta when starting ap, always
bool _disableSTAConn = true; // disable sta when starting ap, if sta is not connected ( stability )
bool _channelSync = false; // use same wifi sta channel when starting ap
@@ -510,10 +513,10 @@ class WiFiManager
bool startAP();
void setupDNSD();
uint8_t connectWifi(String ssid, String pass);
uint8_t connectWifi(String ssid, String pass, bool connect = true);
bool setSTAConfig();
bool wifiConnectDefault();
bool wifiConnectNew(String ssid, String pass);
bool wifiConnectNew(String ssid, String pass,bool connect = true);
uint8_t waitForConnectResult();
uint8_t waitForConnectResult(uint32_t timeout);
@@ -171,6 +171,9 @@ void setup() {
// set wifi connect retries
// wm.setConnectRetries(2);
// connect after portal save toggle
// setSaveConnect(false); // do not connect, only save
// show static ip fields
// wm.setShowStaticFields(true);