@@ -835,6 +835,8 @@ const char * system_event_reasons[] = { "UNSPECIFIED", "AUTH_EXPIRE", "AUTH_LEAV
835
835
#endif
836
836
esp_err_t WiFiGenericClass::_eventCallback (arduino_event_t *event)
837
837
{
838
+ static bool first_connect = true ;
839
+
838
840
if (event->event_id < ARDUINO_EVENT_MAX) {
839
841
log_d (" Arduino Event: %d - %s" , event->event_id , arduino_event_names[event->event_id ]);
840
842
}
@@ -860,7 +862,7 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
860
862
log_w (" Reason: %u - %s" , reason, reason2str (reason));
861
863
if (reason == WIFI_REASON_NO_AP_FOUND) {
862
864
WiFiSTAClass::_setStatus (WL_NO_SSID_AVAIL);
863
- } else if (reason == WIFI_REASON_AUTH_FAIL) {
865
+ } else if (( reason == WIFI_REASON_AUTH_FAIL) && !first_connect) {
864
866
WiFiSTAClass::_setStatus (WL_CONNECT_FAILED);
865
867
} else if (reason == WIFI_REASON_BEACON_TIMEOUT || reason == WIFI_REASON_HANDSHAKE_TIMEOUT) {
866
868
WiFiSTAClass::_setStatus (WL_CONNECTION_LOST);
@@ -870,7 +872,15 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
870
872
WiFiSTAClass::_setStatus (WL_DISCONNECTED);
871
873
}
872
874
clearStatusBits (STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT);
873
- if (WiFi.getAutoReconnect ()){
875
+ if (first_connect && ((reason == WIFI_REASON_AUTH_EXPIRE) ||
876
+ (reason >= WIFI_REASON_BEACON_TIMEOUT)))
877
+ {
878
+ log_d (" WiFi Reconnect Running" );
879
+ WiFi.disconnect ();
880
+ WiFi.begin ();
881
+ first_connect = false ;
882
+ }
883
+ else if (WiFi.getAutoReconnect ()){
874
884
if ((reason == WIFI_REASON_AUTH_EXPIRE) ||
875
885
(reason >= WIFI_REASON_BEACON_TIMEOUT && reason != WIFI_REASON_AUTH_FAIL))
876
886
{
0 commit comments