diff --git a/doc/esp8266wifi/readme.rst b/doc/esp8266wifi/readme.rst index 23ec9a329a..2c22ee150b 100644 --- a/doc/esp8266wifi/readme.rst +++ b/doc/esp8266wifi/readme.rst @@ -260,8 +260,9 @@ This function returns following codes to describe what is going on with Wi-Fi co * 0 : ``WL_IDLE_STATUS`` when Wi-Fi is in process of changing between statuses * 1 : ``WL_NO_SSID_AVAIL``\ in case configured SSID cannot be reached * 3 : ``WL_CONNECTED`` after successful connection is established -* 4 : ``WL_CONNECT_FAILED`` if password is incorrect -* 6 : ``WL_DISCONNECTED`` if module is not configured in station mode +* 4 : ``WL_CONNECT_FAILED`` if connection failed +* 6 : ``WL_CONNECT_WRONG_PASSWORD`` if password is incorrect +* 7 : ``WL_DISCONNECTED`` if module is not configured in station mode It is a good practice to display and check information returned by functions. Application development and troubleshooting will be easier with that. diff --git a/doc/esp8266wifi/station-class.rst b/doc/esp8266wifi/station-class.rst index 01dab377f9..787de49684 100644 --- a/doc/esp8266wifi/station-class.rst +++ b/doc/esp8266wifi/station-class.rst @@ -250,8 +250,9 @@ Wait until module connects to the access point. This function is intended for mo Function returns one of the following connection statuses: - ``WL_CONNECTED`` after successful connection is established -- ``WL_NO_SSID_AVAIL`` in case configured SSID cannot be reached -- ``WL_CONNECT_FAILED`` if password is incorrect +- ``WL_NO_SSID_AVAIL`` in case configured SSID cannot be reached +- ``WL_CONNECT_FAILED`` if connection failed +- ``WL_CONNECT_WRONG_PASSWORD`` if password is incorrect - ``WL_IDLE_STATUS`` when Wi-Fi is in process of changing between statuses - ``WL_DISCONNECTED`` if module is not configured in station mode - ``-1`` on timeout diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp index 304883506a..1df25be3e6 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiGeneric.cpp @@ -827,15 +827,21 @@ bool ESP8266WiFiGenericClass::resumeFromShutdown (WiFiState* state) } } // state->state.fwconfig.bssid is not real bssid (it's what user may have provided when bssid_set==1) - if (WiFi.begin((const char*)state->state.fwconfig.ssid, + auto beginResult = WiFi.begin((const char*)state->state.fwconfig.ssid, (const char*)state->state.fwconfig.password, state->state.channel, nullptr/*(const uint8_t*)state->state.fwconfig.bssid*/, // <- try with gw's mac address? - true) == WL_CONNECT_FAILED) + true); + if (beginResult == WL_CONNECT_FAILED) { DEBUG_WIFI("core: resume: WiFi.begin failed\n"); return false; } + if (beginResult == WL_WRONG_PASSWORD) + { + DEBUG_WIFI("core: resume: WiFi.begin wrong password\n"); + return false; + } } if (state->state.mode & WIFI_AP) diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp index f68045e6af..d172486b9a 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiMulti.cpp @@ -60,6 +60,9 @@ static void printWiFiStatus(wl_status_t status) case WL_CONNECT_FAILED: DEBUG_WIFI_MULTI("[WIFIM] Connecting failed.\n"); break; + case WL_WRONG_PASSWORD: + DEBUG_WIFI_MULTI("[WIFIM] Wrong password.\n"); + break; default: DEBUG_WIFI_MULTI("[WIFIM] Connecting failed (%d).\n", status); break; diff --git a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp index 5082dfd88a..65f0ea35a7 100644 --- a/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp +++ b/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp @@ -624,8 +624,9 @@ wl_status_t ESP8266WiFiSTAClass::status() { case STATION_NO_AP_FOUND: return WL_NO_SSID_AVAIL; case STATION_CONNECT_FAIL: - case STATION_WRONG_PASSWORD: return WL_CONNECT_FAILED; + case STATION_WRONG_PASSWORD: + return WL_WRONG_PASSWORD; case STATION_IDLE: return WL_IDLE_STATUS; default: diff --git a/libraries/ESP8266WiFi/src/include/wl_definitions.h b/libraries/ESP8266WiFi/src/include/wl_definitions.h index 5c8c536602..e20ee928ca 100644 --- a/libraries/ESP8266WiFi/src/include/wl_definitions.h +++ b/libraries/ESP8266WiFi/src/include/wl_definitions.h @@ -55,7 +55,8 @@ typedef enum { WL_CONNECTED = 3, WL_CONNECT_FAILED = 4, WL_CONNECTION_LOST = 5, - WL_DISCONNECTED = 6 + WL_WRONG_PASSWORD = 6, + WL_DISCONNECTED = 7 } wl_status_t; /* Encryption modes */ diff --git a/libraries/esp8266/examples/interactive/interactive.ino b/libraries/esp8266/examples/interactive/interactive.ino index 3c21455a29..b3bd1ff931 100644 --- a/libraries/esp8266/examples/interactive/interactive.ino +++ b/libraries/esp8266/examples/interactive/interactive.ino @@ -42,7 +42,8 @@ void setup() { "WL_CONNECTED = 3\n" "WL_CONNECT_FAILED = 4\n" "WL_CONNECTION_LOST = 5\n" - "WL_DISCONNECTED = 6\n" + "WL_WRONG_PASSWORD = 6\n" + "WL_DISCONNECTED = 7\n" ); }