diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp index 531e76239..0887634f9 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp @@ -46,7 +46,7 @@ bool ESP8266WiFiMulti::existsAP(const char* ssid, const char *passphrase) { return APlistExists(ssid, passphrase); } -wl_status_t ESP8266WiFiMulti::run(void) { +wl_status_t ESP8266WiFiMulti::run(uint32_t connectTimeoutMs) { wl_status_t status = WiFi.status(); if(status == WL_DISCONNECTED || status == WL_NO_SSID_AVAIL || status == WL_IDLE_STATUS || status == WL_CONNECT_FAILED) { @@ -132,12 +132,10 @@ wl_status_t ESP8266WiFiMulti::run(void) { WiFi.begin(bestNetwork.ssid, bestNetwork.passphrase, bestChannel, bestBSSID); status = WiFi.status(); - - static const uint32_t connectTimeout = 5000; //5s timeout auto startTime = millis(); // wait for connection, fail, or timeout - while(status != WL_CONNECTED && status != WL_NO_SSID_AVAIL && status != WL_CONNECT_FAILED && (millis() - startTime) <= connectTimeout) { + while(status != WL_CONNECTED && status != WL_NO_SSID_AVAIL && status != WL_CONNECT_FAILED && (millis() - startTime) <= connectTimeoutMs) { delay(10); status = WiFi.status(); } diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h index de8703618..eae498e1c 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.h @@ -55,7 +55,7 @@ class ESP8266WiFiMulti { bool addAP(const char* ssid, const char *passphrase = NULL); bool existsAP(const char* ssid, const char *passphrase = NULL); - wl_status_t run(void); + wl_status_t run(uint32_t connectTimeoutMs=5000); void cleanAPlist(void);