Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
arduino-esp32
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
xpstem
arduino-esp32
Commits
bd714499
Unverified
Commit
bd714499
authored
Nov 07, 2022
by
David McCurley
Committed by
GitHub
Nov 07, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
WiFi Should Reconnect For Most Reasons (#7344)
Improves WiFi reconnection
parent
271cee10
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
16 deletions
+49
-16
libraries/WiFi/src/WiFiGeneric.cpp
libraries/WiFi/src/WiFiGeneric.cpp
+45
-15
libraries/WiFi/src/WiFiGeneric.h
libraries/WiFi/src/WiFiGeneric.h
+4
-1
No files found.
libraries/WiFi/src/WiFiGeneric.cpp
View file @
bd714499
...
...
@@ -963,26 +963,26 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
WiFiSTAClass
::
_setStatus
(
WL_DISCONNECTED
);
}
clearStatusBits
(
STA_CONNECTED_BIT
|
STA_HAS_IP_BIT
|
STA_HAS_IP6_BIT
);
if
(
first_connect
&&
((
reason
==
WIFI_REASON_AUTH_EXPIRE
)
||
(
reason
>=
WIFI_REASON_BEACON_TIMEOUT
)))
{
log_d
(
"WiFi Reconnect Running"
);
WiFi
.
disconnect
();
WiFi
.
begin
();
bool
DoReconnect
=
false
;
if
(
reason
==
WIFI_REASON_ASSOC_LEAVE
)
{
//Voluntarily disconnected. Don't reconnect!
}
else
if
(
first_connect
)
{
//Retry once for all failure reasons
first_connect
=
false
;
DoReconnect
=
true
;
log_d
(
"WiFi Reconnect Running"
);
}
else
if
(
WiFi
.
getAutoReconnect
()){
if
((
reason
==
WIFI_REASON_AUTH_EXPIRE
)
||
(
reason
>=
WIFI_REASON_BEACON_TIMEOUT
&&
reason
!=
WIFI_REASON_AUTH_FAIL
))
{
log_d
(
"WiFi AutoReconnect Running"
);
WiFi
.
disconnect
();
WiFi
.
begin
();
}
else
if
(
WiFi
.
getAutoReconnect
()
&&
_isReconnectableReason
(
reason
))
{
DoReconnect
=
true
;
log_d
(
"WiFi AutoReconnect Running"
);
}
else
if
(
reason
==
WIFI_REASON_ASSOC_FAIL
)
{
else
if
(
reason
==
WIFI_REASON_ASSOC_FAIL
)
{
WiFiSTAClass
::
_setStatus
(
WL_CONNECT_FAILED
);
}
if
(
DoReconnect
)
{
WiFi
.
disconnect
();
WiFi
.
begin
();
}
}
else
if
(
event
->
event_id
==
ARDUINO_EVENT_WIFI_STA_GOT_IP
)
{
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
uint8_t
*
ip
=
(
uint8_t
*
)
&
(
event
->
event_info
.
got_ip
.
ip_info
.
ip
.
addr
);
...
...
@@ -1066,6 +1066,36 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
return
ESP_OK
;
}
bool
WiFiGenericClass
::
_isReconnectableReason
(
uint8_t
reason
)
{
switch
(
reason
)
{
//Timeouts (retry)
case
WIFI_REASON_AUTH_EXPIRE
:
case
WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT
:
case
WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT
:
case
WIFI_REASON_802_1X_AUTH_FAILED
:
case
WIFI_REASON_HANDSHAKE_TIMEOUT
:
//Transient error (reconnect)
case
WIFI_REASON_AUTH_LEAVE
:
case
WIFI_REASON_ASSOC_EXPIRE
:
case
WIFI_REASON_ASSOC_TOOMANY
:
case
WIFI_REASON_NOT_AUTHED
:
case
WIFI_REASON_NOT_ASSOCED
:
case
WIFI_REASON_ASSOC_NOT_AUTHED
:
case
WIFI_REASON_MIC_FAILURE
:
case
WIFI_REASON_IE_IN_4WAY_DIFFERS
:
case
WIFI_REASON_INVALID_PMKID
:
case
WIFI_REASON_BEACON_TIMEOUT
:
case
WIFI_REASON_NO_AP_FOUND
:
case
WIFI_REASON_ASSOC_FAIL
:
case
WIFI_REASON_CONNECTION_FAIL
:
case
WIFI_REASON_AP_TSF_RESET
:
case
WIFI_REASON_ROAMING
:
return
true
;
default:
return
false
;
}
}
/**
* Return the current channel associated with the network
* @return channel (1-13)
...
...
libraries/WiFi/src/WiFiGeneric.h
View file @
bd714499
...
...
@@ -206,7 +206,10 @@ class WiFiGenericClass
static
int
setStatusBits
(
int
bits
);
static
int
clearStatusBits
(
int
bits
);
private:
static
bool
_isReconnectableReason
(
uint8_t
reason
);
public:
static
int
hostByName
(
const
char
*
aHostname
,
IPAddress
&
aResult
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment