Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
黑眼圈子
arduino-esp32
提交
bd714499
A
arduino-esp32
项目概览
黑眼圈子
/
arduino-esp32
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
arduino-esp32
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
bd714499
编写于
11月 07, 2022
作者:
D
David McCurley
提交者:
GitHub
11月 07, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WiFi Should Reconnect For Most Reasons (#7344)
Improves WiFi reconnection
上级
271cee10
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
49 addition
and
16 deletion
+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
未找到文件。
libraries/WiFi/src/WiFiGeneric.cpp
浏览文件 @
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
浏览文件 @
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
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录