Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
努力学习的小马
arduino-esp32
提交
d15e1b0e
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,发现更多精彩内容 >>
提交
d15e1b0e
编写于
5月 17, 2020
作者:
M
me-no-dev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix WiFi
上级
833e1394
变更
18
展开全部
隐藏空白更改
内联
并排
Showing
18 changed file
with
1087 addition
and
711 deletion
+1087
-711
cores/esp32/esp32-hal-gpio.c
cores/esp32/esp32-hal-gpio.c
+1
-1
libraries/WiFi/examples/ETH_LAN8720/ETH_LAN8720.ino
libraries/WiFi/examples/ETH_LAN8720/ETH_LAN8720.ino
+5
-5
libraries/WiFi/examples/ETH_TLK110/ETH_TLK110.ino
libraries/WiFi/examples/ETH_TLK110/ETH_TLK110.ino
+5
-5
libraries/WiFi/examples/WPS/WPS.ino
libraries/WiFi/examples/WPS/WPS.ino
+10
-10
libraries/WiFi/examples/WiFiBlueToothSwitch/WiFiBlueToothSwitch.ino
...WiFi/examples/WiFiBlueToothSwitch/WiFiBlueToothSwitch.ino
+8
-8
libraries/WiFi/examples/WiFiClientEvents/WiFiClientEvents.ino
...aries/WiFi/examples/WiFiClientEvents/WiFiClientEvents.ino
+62
-54
libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino
libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino
+8
-7
libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
+2
-2
libraries/WiFi/src/ETH.cpp
libraries/WiFi/src/ETH.cpp
+0
-31
libraries/WiFi/src/WiFiAP.cpp
libraries/WiFi/src/WiFiAP.cpp
+64
-60
libraries/WiFi/src/WiFiGeneric.cpp
libraries/WiFi/src/WiFiGeneric.cpp
+543
-149
libraries/WiFi/src/WiFiGeneric.h
libraries/WiFi/src/WiFiGeneric.h
+84
-25
libraries/WiFi/src/WiFiSTA.cpp
libraries/WiFi/src/WiFiSTA.cpp
+117
-195
libraries/WiFi/src/WiFiSTA.h
libraries/WiFi/src/WiFiSTA.h
+1
-6
libraries/WiFi/src/WiFiScan.cpp
libraries/WiFi/src/WiFiScan.cpp
+27
-0
libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino
libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino
+38
-49
libraries/WiFiProv/src/WiFiProv.cpp
libraries/WiFiProv/src/WiFiProv.cpp
+86
-86
libraries/WiFiProv/src/WiFiProv.h
libraries/WiFiProv/src/WiFiProv.h
+26
-18
未找到文件。
cores/esp32/esp32-hal-gpio.c
浏览文件 @
d15e1b0e
...
...
@@ -190,7 +190,7 @@ extern void IRAM_ATTR __pinMode(uint8_t pin, uint8_t mode)
}
//RTC pins PULL settings
if
(
rtc_reg
)
{
if
(
esp32_gpioMux
[
pin
].
rtc
!=
-
1
)
{
ESP_REG
(
rtc_reg
)
=
ESP_REG
(
rtc_reg
)
&
~
(
rtc_io_desc
[
pin
].
mux
);
if
(
mode
&
PULLUP
)
{
ESP_REG
(
rtc_reg
)
=
(
ESP_REG
(
rtc_reg
)
|
rtc_io_desc
[
pin
].
pullup
)
&
~
(
rtc_io_desc
[
pin
].
pulldown
);
...
...
libraries/WiFi/examples/ETH_LAN8720/ETH_LAN8720.ino
浏览文件 @
d15e1b0e
...
...
@@ -10,15 +10,15 @@ static bool eth_connected = false;
void
WiFiEvent
(
WiFiEvent_t
event
)
{
switch
(
event
)
{
case
SYSTEM
_EVENT_ETH_START
:
case
ARDUINO
_EVENT_ETH_START
:
Serial
.
println
(
"ETH Started"
);
//set eth hostname here
ETH
.
setHostname
(
"esp32-ethernet"
);
break
;
case
SYSTEM
_EVENT_ETH_CONNECTED
:
case
ARDUINO
_EVENT_ETH_CONNECTED
:
Serial
.
println
(
"ETH Connected"
);
break
;
case
SYSTEM
_EVENT_ETH_GOT_IP
:
case
ARDUINO
_EVENT_ETH_GOT_IP
:
Serial
.
print
(
"ETH MAC: "
);
Serial
.
print
(
ETH
.
macAddress
());
Serial
.
print
(
", IPv4: "
);
...
...
@@ -31,11 +31,11 @@ void WiFiEvent(WiFiEvent_t event)
Serial
.
println
(
"Mbps"
);
eth_connected
=
true
;
break
;
case
SYSTEM
_EVENT_ETH_DISCONNECTED
:
case
ARDUINO
_EVENT_ETH_DISCONNECTED
:
Serial
.
println
(
"ETH Disconnected"
);
eth_connected
=
false
;
break
;
case
SYSTEM
_EVENT_ETH_STOP
:
case
ARDUINO
_EVENT_ETH_STOP
:
Serial
.
println
(
"ETH Stopped"
);
eth_connected
=
false
;
break
;
...
...
libraries/WiFi/examples/ETH_TLK110/ETH_TLK110.ino
浏览文件 @
d15e1b0e
...
...
@@ -16,15 +16,15 @@ static bool eth_connected = false;
void
WiFiEvent
(
WiFiEvent_t
event
)
{
switch
(
event
)
{
case
SYSTEM
_EVENT_ETH_START
:
case
ARDUINO
_EVENT_ETH_START
:
Serial
.
println
(
"ETH Started"
);
//set eth hostname here
ETH
.
setHostname
(
"esp32-ethernet"
);
break
;
case
SYSTEM
_EVENT_ETH_CONNECTED
:
case
ARDUINO
_EVENT_ETH_CONNECTED
:
Serial
.
println
(
"ETH Connected"
);
break
;
case
SYSTEM
_EVENT_ETH_GOT_IP
:
case
ARDUINO
_EVENT_ETH_GOT_IP
:
Serial
.
print
(
"ETH MAC: "
);
Serial
.
print
(
ETH
.
macAddress
());
Serial
.
print
(
", IPv4: "
);
...
...
@@ -37,11 +37,11 @@ void WiFiEvent(WiFiEvent_t event)
Serial
.
println
(
"Mbps"
);
eth_connected
=
true
;
break
;
case
SYSTEM
_EVENT_ETH_DISCONNECTED
:
case
ARDUINO
_EVENT_ETH_DISCONNECTED
:
Serial
.
println
(
"ETH Disconnected"
);
eth_connected
=
false
;
break
;
case
SYSTEM
_EVENT_ETH_STOP
:
case
ARDUINO
_EVENT_ETH_STOP
:
Serial
.
println
(
"ETH Stopped"
);
eth_connected
=
false
;
break
;
...
...
libraries/WiFi/examples/WPS/WPS.ino
浏览文件 @
d15e1b0e
...
...
@@ -47,39 +47,39 @@ String wpspin2string(uint8_t a[]){
return
(
String
)
wps_pin
;
}
void
WiFiEvent
(
WiFiEvent_t
event
,
system
_event_info_t
info
){
void
WiFiEvent
(
WiFiEvent_t
event
,
arduino
_event_info_t
info
){
switch
(
event
){
case
SYSTEM_EVENT
_STA_START
:
case
ARDUINO_EVENT_WIFI
_STA_START
:
Serial
.
println
(
"Station Mode Started"
);
break
;
case
SYSTEM_EVENT
_STA_GOT_IP
:
case
ARDUINO_EVENT_WIFI
_STA_GOT_IP
:
Serial
.
println
(
"Connected to :"
+
String
(
WiFi
.
SSID
()));
Serial
.
print
(
"Got IP: "
);
Serial
.
println
(
WiFi
.
localIP
());
break
;
case
SYSTEM_EVENT
_STA_DISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
:
Serial
.
println
(
"Disconnected from station, attempting reconnection"
);
WiFi
.
reconnect
();
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_SUCCESS
:
Serial
.
println
(
"WPS Successful, stopping WPS and connecting to: "
+
String
(
WiFi
.
SSID
()));
case
ARDUINO_EVENT
_WPS_ER_SUCCESS
:
Serial
.
println
(
"WPS Successful
l
, stopping WPS and connecting to: "
+
String
(
WiFi
.
SSID
()));
esp_wifi_wps_disable
();
delay
(
10
);
WiFi
.
begin
();
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_FAILED
:
case
ARDUINO_EVENT
_WPS_ER_FAILED
:
Serial
.
println
(
"WPS Failed, retrying"
);
esp_wifi_wps_disable
();
esp_wifi_wps_enable
(
&
config
);
esp_wifi_wps_start
(
0
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_TIMEOUT
:
Serial
.
println
(
"WPS Timeout, retrying"
);
case
ARDUINO_EVENT
_WPS_ER_TIMEOUT
:
Serial
.
println
(
"WPS Time
d
out, retrying"
);
esp_wifi_wps_disable
();
esp_wifi_wps_enable
(
&
config
);
esp_wifi_wps_start
(
0
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_PIN
:
case
ARDUINO_EVENT
_WPS_ER_PIN
:
Serial
.
println
(
"WPS_PIN = "
+
wpspin2string
(
info
.
sta_er_pin
.
pin_code
));
break
;
default:
...
...
libraries/WiFi/examples/WiFiBlueToothSwitch/WiFiBlueToothSwitch.ino
浏览文件 @
d15e1b0e
...
...
@@ -75,33 +75,33 @@ void onButton(){
void
WiFiEvent
(
WiFiEvent_t
event
){
switch
(
event
)
{
case
SYSTEM_EVENT
_AP_START
:
case
ARDUINO_EVENT_WIFI
_AP_START
:
Serial
.
println
(
"AP Started"
);
WiFi
.
softAPsetHostname
(
AP_SSID
);
break
;
case
SYSTEM_EVENT
_AP_STOP
:
case
ARDUINO_EVENT_WIFI
_AP_STOP
:
Serial
.
println
(
"AP Stopped"
);
break
;
case
SYSTEM_EVENT
_STA_START
:
case
ARDUINO_EVENT_WIFI
_STA_START
:
Serial
.
println
(
"STA Started"
);
WiFi
.
setHostname
(
AP_SSID
);
break
;
case
SYSTEM_EVENT
_STA_CONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_CONNECTED
:
Serial
.
println
(
"STA Connected"
);
WiFi
.
enableIpV6
();
break
;
case
SYSTEM_EVENT
_AP_STA_GOT_IP6
:
case
ARDUINO_EVENT_WIFI
_AP_STA_GOT_IP6
:
Serial
.
print
(
"STA IPv6: "
);
Serial
.
println
(
WiFi
.
localIPv6
());
break
;
case
SYSTEM_EVENT
_STA_GOT_IP
:
case
ARDUINO_EVENT_WIFI
_STA_GOT_IP
:
Serial
.
print
(
"STA IPv4: "
);
Serial
.
println
(
WiFi
.
localIP
());
break
;
case
SYSTEM_EVENT
_STA_DISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
:
Serial
.
println
(
"STA Disconnected"
);
break
;
case
SYSTEM_EVENT
_STA_STOP
:
case
ARDUINO_EVENT_WIFI
_STA_STOP
:
Serial
.
println
(
"STA Stopped"
);
break
;
default:
...
...
libraries/WiFi/examples/WiFiClientEvents/WiFiClientEvents.ino
浏览文件 @
d15e1b0e
...
...
@@ -6,32 +6,34 @@
/*
* WiFi Events
0 SYSTEM_EVENT_WIFI_READY < ESP32 WiFi ready
1 SYSTEM_EVENT_SCAN_DONE < ESP32 finish scanning AP
2 SYSTEM_EVENT_STA_START < ESP32 station start
3 SYSTEM_EVENT_STA_STOP < ESP32 station stop
4 SYSTEM_EVENT_STA_CONNECTED < ESP32 station connected to AP
5 SYSTEM_EVENT_STA_DISCONNECTED < ESP32 station disconnected from AP
6 SYSTEM_EVENT_STA_AUTHMODE_CHANGE < the auth mode of AP connected by ESP32 station changed
7 SYSTEM_EVENT_STA_GOT_IP < ESP32 station got IP from connected AP
8 SYSTEM_EVENT_STA_LOST_IP < ESP32 station lost IP and the IP is reset to 0
9 SYSTEM_EVENT_STA_WPS_ER_SUCCESS < ESP32 station wps succeeds in enrollee mode
10 SYSTEM_EVENT_STA_WPS_ER_FAILED < ESP32 station wps fails in enrollee mode
11 SYSTEM_EVENT_STA_WPS_ER_TIMEOUT < ESP32 station wps timeout in enrollee mode
12 SYSTEM_EVENT_STA_WPS_ER_PIN < ESP32 station wps pin code in enrollee mode
13 SYSTEM_EVENT_AP_START < ESP32 soft-AP start
14 SYSTEM_EVENT_AP_STOP < ESP32 soft-AP stop
15 SYSTEM_EVENT_AP_STACONNECTED < a station connected to ESP32 soft-AP
16 SYSTEM_EVENT_AP_STADISCONNECTED < a station disconnected from ESP32 soft-AP
17 SYSTEM_EVENT_AP_STAIPASSIGNED < ESP32 soft-AP assign an IP to a connected station
18 SYSTEM_EVENT_AP_PROBEREQRECVED < Receive probe request packet in soft-AP interface
19 SYSTEM_EVENT_GOT_IP6 < ESP32 station or ap or ethernet interface v6IP addr is preferred
20 SYSTEM_EVENT_ETH_START < ESP32 ethernet start
21 SYSTEM_EVENT_ETH_STOP < ESP32 ethernet stop
22 SYSTEM_EVENT_ETH_CONNECTED < ESP32 ethernet phy link up
23 SYSTEM_EVENT_ETH_DISCONNECTED < ESP32 ethernet phy link down
24 SYSTEM_EVENT_ETH_GOT_IP < ESP32 ethernet got IP from connected AP
25 SYSTEM_EVENT_MAX
0 ARDUINO_EVENT_WIFI_READY < ESP32 WiFi ready
1 ARDUINO_EVENT_WIFI_SCAN_DONE < ESP32 finish scanning AP
2 ARDUINO_EVENT_WIFI_STA_START < ESP32 station start
3 ARDUINO_EVENT_WIFI_STA_STOP < ESP32 station stop
4 ARDUINO_EVENT_WIFI_STA_CONNECTED < ESP32 station connected to AP
5 ARDUINO_EVENT_WIFI_STA_DISCONNECTED < ESP32 station disconnected from AP
6 ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE < the auth mode of AP connected by ESP32 station changed
7 ARDUINO_EVENT_WIFI_STA_GOT_IP < ESP32 station got IP from connected AP
8 ARDUINO_EVENT_WIFI_STA_LOST_IP < ESP32 station lost IP and the IP is reset to 0
9 ARDUINO_EVENT_WPS_ER_SUCCESS < ESP32 station wps succeeds in enrollee mode
10 ARDUINO_EVENT_WPS_ER_FAILED < ESP32 station wps fails in enrollee mode
11 ARDUINO_EVENT_WPS_ER_TIMEOUT < ESP32 station wps timeout in enrollee mode
12 ARDUINO_EVENT_WPS_ER_PIN < ESP32 station wps pin code in enrollee mode
13 ARDUINO_EVENT_WIFI_AP_START < ESP32 soft-AP start
14 ARDUINO_EVENT_WIFI_AP_STOP < ESP32 soft-AP stop
15 ARDUINO_EVENT_WIFI_AP_STACONNECTED < a station connected to ESP32 soft-AP
16 ARDUINO_EVENT_WIFI_AP_STADISCONNECTED < a station disconnected from ESP32 soft-AP
17 ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED < ESP32 soft-AP assign an IP to a connected station
18 ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED < Receive probe request packet in soft-AP interface
19 ARDUINO_EVENT_WIFI_AP_GOT_IP6 < ESP32 ap interface v6IP addr is preferred
19 ARDUINO_EVENT_WIFI_STA_GOT_IP6 < ESP32 station interface v6IP addr is preferred
20 ARDUINO_EVENT_ETH_START < ESP32 ethernet start
21 ARDUINO_EVENT_ETH_STOP < ESP32 ethernet stop
22 ARDUINO_EVENT_ETH_CONNECTED < ESP32 ethernet phy link up
23 ARDUINO_EVENT_ETH_DISCONNECTED < ESP32 ethernet phy link down
24 ARDUINO_EVENT_ETH_GOT_IP < ESP32 ethernet got IP from connected AP
19 ARDUINO_EVENT_ETH_GOT_IP6 < ESP32 ethernet interface v6IP addr is preferred
25 ARDUINO_EVENT_MAX
*/
#include <WiFi.h>
...
...
@@ -45,80 +47,86 @@ void WiFiEvent(WiFiEvent_t event)
Serial
.
printf
(
"[WiFi-event] event: %d
\n
"
,
event
);
switch
(
event
)
{
case
SYSTEM
_EVENT_WIFI_READY
:
case
ARDUINO
_EVENT_WIFI_READY
:
Serial
.
println
(
"WiFi interface ready"
);
break
;
case
SYSTEM_EVENT
_SCAN_DONE
:
case
ARDUINO_EVENT_WIFI
_SCAN_DONE
:
Serial
.
println
(
"Completed scan for access points"
);
break
;
case
SYSTEM_EVENT
_STA_START
:
case
ARDUINO_EVENT_WIFI
_STA_START
:
Serial
.
println
(
"WiFi client started"
);
break
;
case
SYSTEM_EVENT
_STA_STOP
:
case
ARDUINO_EVENT_WIFI
_STA_STOP
:
Serial
.
println
(
"WiFi clients stopped"
);
break
;
case
SYSTEM_EVENT
_STA_CONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_CONNECTED
:
Serial
.
println
(
"Connected to access point"
);
break
;
case
SYSTEM_EVENT
_STA_DISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
:
Serial
.
println
(
"Disconnected from WiFi access point"
);
break
;
case
SYSTEM_EVENT
_STA_AUTHMODE_CHANGE
:
case
ARDUINO_EVENT_WIFI
_STA_AUTHMODE_CHANGE
:
Serial
.
println
(
"Authentication mode of access point has changed"
);
break
;
case
SYSTEM_EVENT
_STA_GOT_IP
:
case
ARDUINO_EVENT_WIFI
_STA_GOT_IP
:
Serial
.
print
(
"Obtained IP address: "
);
Serial
.
println
(
WiFi
.
localIP
());
break
;
case
SYSTEM_EVENT
_STA_LOST_IP
:
case
ARDUINO_EVENT_WIFI
_STA_LOST_IP
:
Serial
.
println
(
"Lost IP address and IP address is reset to 0"
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_SUCCESS
:
case
ARDUINO_EVENT
_WPS_ER_SUCCESS
:
Serial
.
println
(
"WiFi Protected Setup (WPS): succeeded in enrollee mode"
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_FAILED
:
case
ARDUINO_EVENT
_WPS_ER_FAILED
:
Serial
.
println
(
"WiFi Protected Setup (WPS): failed in enrollee mode"
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_TIMEOUT
:
case
ARDUINO_EVENT
_WPS_ER_TIMEOUT
:
Serial
.
println
(
"WiFi Protected Setup (WPS): timeout in enrollee mode"
);
break
;
case
SYSTEM_EVENT_STA
_WPS_ER_PIN
:
case
ARDUINO_EVENT
_WPS_ER_PIN
:
Serial
.
println
(
"WiFi Protected Setup (WPS): pin code in enrollee mode"
);
break
;
case
SYSTEM_EVENT
_AP_START
:
case
ARDUINO_EVENT_WIFI
_AP_START
:
Serial
.
println
(
"WiFi access point started"
);
break
;
case
SYSTEM_EVENT
_AP_STOP
:
case
ARDUINO_EVENT_WIFI
_AP_STOP
:
Serial
.
println
(
"WiFi access point stopped"
);
break
;
case
SYSTEM_EVENT
_AP_STACONNECTED
:
case
ARDUINO_EVENT_WIFI
_AP_STACONNECTED
:
Serial
.
println
(
"Client connected"
);
break
;
case
SYSTEM_EVENT
_AP_STADISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_AP_STADISCONNECTED
:
Serial
.
println
(
"Client disconnected"
);
break
;
case
SYSTEM_EVENT
_AP_STAIPASSIGNED
:
case
ARDUINO_EVENT_WIFI
_AP_STAIPASSIGNED
:
Serial
.
println
(
"Assigned IP address to client"
);
break
;
case
SYSTEM_EVENT
_AP_PROBEREQRECVED
:
case
ARDUINO_EVENT_WIFI
_AP_PROBEREQRECVED
:
Serial
.
println
(
"Received probe request"
);
break
;
case
SYSTEM_EVENT
_GOT_IP6
:
Serial
.
println
(
"IPv6 is preferred"
);
case
ARDUINO_EVENT_WIFI_AP
_GOT_IP6
:
Serial
.
println
(
"
AP
IPv6 is preferred"
);
break
;
case
SYSTEM_EVENT_ETH_START
:
case
ARDUINO_EVENT_WIFI_STA_GOT_IP6
:
Serial
.
println
(
"STA IPv6 is preferred"
);
break
;
case
ARDUINO_EVENT_ETH_GOT_IP6
:
Serial
.
println
(
"Ethernet IPv6 is preferred"
);
break
;
case
ARDUINO_EVENT_ETH_START
:
Serial
.
println
(
"Ethernet started"
);
break
;
case
SYSTEM
_EVENT_ETH_STOP
:
case
ARDUINO
_EVENT_ETH_STOP
:
Serial
.
println
(
"Ethernet stopped"
);
break
;
case
SYSTEM
_EVENT_ETH_CONNECTED
:
case
ARDUINO
_EVENT_ETH_CONNECTED
:
Serial
.
println
(
"Ethernet connected"
);
break
;
case
SYSTEM
_EVENT_ETH_DISCONNECTED
:
case
ARDUINO
_EVENT_ETH_DISCONNECTED
:
Serial
.
println
(
"Ethernet disconnected"
);
break
;
case
SYSTEM
_EVENT_ETH_GOT_IP
:
case
ARDUINO
_EVENT_ETH_GOT_IP
:
Serial
.
println
(
"Obtained IP address"
);
break
;
default:
break
;
...
...
@@ -142,11 +150,11 @@ void setup()
// Examples of different ways to register wifi events
WiFi
.
onEvent
(
WiFiEvent
);
WiFi
.
onEvent
(
WiFiGotIP
,
WiFiEvent_t
::
SYSTEM_EVENT
_STA_GOT_IP
);
WiFi
.
onEvent
(
WiFiGotIP
,
WiFiEvent_t
::
ARDUINO_EVENT_WIFI
_STA_GOT_IP
);
WiFiEventId_t
eventID
=
WiFi
.
onEvent
([](
WiFiEvent_t
event
,
WiFiEventInfo_t
info
){
Serial
.
print
(
"WiFi lost connection. Reason: "
);
Serial
.
println
(
info
.
disconnected
.
reason
);
},
WiFiEvent_t
::
SYSTEM_EVENT
_STA_DISCONNECTED
);
},
WiFiEvent_t
::
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
);
// Remove WiFi event
Serial
.
print
(
"WiFi Event ID: "
);
...
...
libraries/WiFi/examples/WiFiIPv6/WiFiIPv6.ino
浏览文件 @
d15e1b0e
...
...
@@ -67,33 +67,34 @@ void wifiConnectedLoop(){
void
WiFiEvent
(
WiFiEvent_t
event
){
switch
(
event
)
{
case
SYSTEM_EVENT
_AP_START
:
case
ARDUINO_EVENT_WIFI
_AP_START
:
//can set ap hostname here
WiFi
.
softAPsetHostname
(
AP_SSID
);
//enable ap ipv6 here
WiFi
.
softAPenableIpV6
();
break
;
case
SYSTEM_EVENT
_STA_START
:
case
ARDUINO_EVENT_WIFI
_STA_START
:
//set sta hostname here
WiFi
.
setHostname
(
AP_SSID
);
break
;
case
SYSTEM_EVENT
_STA_CONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_CONNECTED
:
//enable sta ipv6 here
WiFi
.
enableIpV6
();
break
;
case
SYSTEM_EVENT_AP_STA_GOT_IP6
:
//both interfaces get the same event
case
ARDUINO_EVENT_WIFI_STA_GOT_IP6
:
Serial
.
print
(
"STA IPv6: "
);
Serial
.
println
(
WiFi
.
localIPv6
());
break
;
case
ARDUINO_EVENT_WIFI_AP_GOT_IP6
:
Serial
.
print
(
"AP IPv6: "
);
Serial
.
println
(
WiFi
.
softAPIPv6
());
break
;
case
SYSTEM_EVENT
_STA_GOT_IP
:
case
ARDUINO_EVENT_WIFI
_STA_GOT_IP
:
wifiOnConnect
();
wifi_connected
=
true
;
break
;
case
SYSTEM_EVENT
_STA_DISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
:
wifi_connected
=
false
;
wifiOnDisconnect
();
break
;
...
...
libraries/WiFi/examples/WiFiUDPClient/WiFiUDPClient.ino
浏览文件 @
d15e1b0e
...
...
@@ -58,7 +58,7 @@ void connectToWiFi(const char * ssid, const char * pwd){
//wifi event handler
void
WiFiEvent
(
WiFiEvent_t
event
){
switch
(
event
)
{
case
SYSTEM_EVENT
_STA_GOT_IP
:
case
ARDUINO_EVENT_WIFI
_STA_GOT_IP
:
//When connected set
Serial
.
print
(
"WiFi connected! IP address: "
);
Serial
.
println
(
WiFi
.
localIP
());
...
...
@@ -67,7 +67,7 @@ void WiFiEvent(WiFiEvent_t event){
udp
.
begin
(
WiFi
.
localIP
(),
udpPort
);
connected
=
true
;
break
;
case
SYSTEM_EVENT
_STA_DISCONNECTED
:
case
ARDUINO_EVENT_WIFI
_STA_DISCONNECTED
:
Serial
.
println
(
"WiFi lost connection"
);
connected
=
false
;
break
;
...
...
libraries/WiFi/src/ETH.cpp
浏览文件 @
d15e1b0e
...
...
@@ -70,34 +70,6 @@ extern void tcpipInit();
// Event handler for Ethernet
void
ETHClass
::
eth_event_handler
(
void
*
arg
,
esp_event_base_t
event_base
,
int32_t
event_id
,
void
*
event_data
)
{
system_event_t
event
;
switch
(
event_id
)
{
case
ETHERNET_EVENT_CONNECTED
:
event
.
event_id
=
SYSTEM_EVENT_ETH_CONNECTED
;
((
ETHClass
*
)(
arg
))
->
eth_link
=
ETH_LINK_UP
;
break
;
case
ETHERNET_EVENT_DISCONNECTED
:
event
.
event_id
=
SYSTEM_EVENT_ETH_DISCONNECTED
;
((
ETHClass
*
)(
arg
))
->
eth_link
=
ETH_LINK_DOWN
;
break
;
case
ETHERNET_EVENT_START
:
event
.
event_id
=
SYSTEM_EVENT_ETH_START
;
((
ETHClass
*
)(
arg
))
->
started
=
true
;
break
;
case
ETHERNET_EVENT_STOP
:
event
.
event_id
=
SYSTEM_EVENT_ETH_STOP
;
((
ETHClass
*
)(
arg
))
->
started
=
false
;
break
;
default:
break
;
}
WiFi
.
_eventCallback
(
arg
,
&
event
);
}
#else
static
int
_eth_phy_mdc_pin
=
-
1
;
static
int
_eth_phy_mdio_pin
=
-
1
;
...
...
@@ -144,9 +116,6 @@ bool ETHClass::begin(uint8_t phy_addr, int power, int mdc, int mdio, eth_phy_typ
tcpipInit
();
tcpip_adapter_set_default_eth_handlers
();
esp_event_handler_register
(
ETH_EVENT
,
ESP_EVENT_ANY_ID
,
eth_event_handler
,
this
);
//ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL));
esp_eth_mac_t
*
eth_mac
=
NULL
;
#if CONFIG_ETH_SPI_ETHERNET_DM9051
if
(
type
==
ETH_PHY_DM9051
){
...
...
libraries/WiFi/src/WiFiAP.cpp
浏览文件 @
d15e1b0e
...
...
@@ -46,6 +46,8 @@ extern "C" {
// ---------------------------------------------------- Private functions ------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------------
esp_netif_t
*
get_esp_interface_netif
(
esp_interface_t
interface
);
esp_err_t
set_esp_interface_ip
(
esp_interface_t
interface
,
IPAddress
local_ip
=
IPAddress
(),
IPAddress
gateway
=
IPAddress
(),
IPAddress
subnet
=
IPAddress
());
static
bool
softap_config_equal
(
const
wifi_config_t
&
lhs
,
const
wifi_config_t
&
rhs
);
...
...
@@ -76,6 +78,25 @@ static bool softap_config_equal(const wifi_config_t& lhs, const wifi_config_t& r
return
true
;
}
void
wifi_softap_config
(
wifi_config_t
*
wifi_config
,
const
char
*
ssid
=
NULL
,
const
char
*
password
=
NULL
,
uint8_t
channel
=
6
,
wifi_auth_mode_t
authmode
=
WIFI_AUTH_WPA_WPA2_PSK
,
uint8_t
ssid_hidden
=
0
,
uint8_t
max_connections
=
4
,
uint16_t
beacon_interval
=
100
){
wifi_config
->
ap
.
channel
=
channel
;
wifi_config
->
ap
.
max_connection
=
max_connections
;
wifi_config
->
ap
.
beacon_interval
=
beacon_interval
;
wifi_config
->
ap
.
ssid_hidden
=
ssid_hidden
;
wifi_config
->
ap
.
authmode
=
WIFI_AUTH_OPEN
;
wifi_config
->
ap
.
ssid_len
=
0
;
wifi_config
->
ap
.
ssid
[
0
]
=
0
;
wifi_config
->
ap
.
password
[
0
]
=
0
;
if
(
ssid
!=
NULL
&&
ssid
[
0
]
!=
0
){
snprintf
((
char
*
)
wifi_config
->
ap
.
ssid
,
32
,
ssid
);
wifi_config
->
ap
.
ssid_len
=
strlen
(
ssid
);
if
(
password
!=
NULL
&&
password
[
0
]
!=
0
){
wifi_config
->
ap
.
authmode
=
authmode
;
snprintf
((
char
*
)
wifi_config
->
ap
.
password
,
64
,
password
);
}
}
}
// -----------------------------------------------------------------------------------------------------------------------
// ----------------------------------------------------- AP function -----------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------------
...
...
@@ -110,29 +131,21 @@ bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel,
return
false
;
}
esp_wifi_start
();
wifi_config_t
conf
;
strlcpy
(
reinterpret_cast
<
char
*>
(
conf
.
ap
.
ssid
),
ssid
,
sizeof
(
conf
.
ap
.
ssid
));
conf
.
ap
.
channel
=
channel
;
conf
.
ap
.
ssid_len
=
strlen
(
reinterpret_cast
<
char
*>
(
conf
.
ap
.
ssid
));
conf
.
ap
.
ssid_hidden
=
ssid_hidden
;
conf
.
ap
.
max_connection
=
max_connection
;
conf
.
ap
.
beacon_interval
=
100
;
if
(
!
passphrase
||
strlen
(
passphrase
)
==
0
)
{
conf
.
ap
.
authmode
=
WIFI_AUTH_OPEN
;
*
conf
.
ap
.
password
=
0
;
}
else
{
conf
.
ap
.
authmode
=
WIFI_AUTH_WPA2_PSK
;
strlcpy
(
reinterpret_cast
<
char
*>
(
conf
.
ap
.
password
),
passphrase
,
sizeof
(
conf
.
ap
.
password
));
}
wifi_config_t
conf_current
;
esp_wifi_get_config
(
WIFI_IF_AP
,
&
conf_current
);
if
(
!
softap_config_equal
(
conf
,
conf_current
)
&&
esp_wifi_set_config
(
WIFI_IF_AP
,
&
conf
)
!=
ESP_OK
)
{
wifi_softap_config
(
&
conf
,
ssid
,
passphrase
,
channel
,
WIFI_AUTH_WPA_WPA2_PSK
,
ssid_hidden
,
max_connection
);
esp_err_t
err
=
esp_wifi_get_config
(
WIFI_IF_AP
,
&
conf_current
);
if
(
err
){
log_e
(
"get AP config failed"
);
return
false
;
}
if
(
!
softap_config_equal
(
conf
,
conf_current
))
{
err
=
esp_wifi_set_config
(
WIFI_IF_AP
,
&
conf
);
if
(
err
){
log_e
(
"set AP config failed"
);
return
false
;
}
}
return
true
;
}
...
...
@@ -161,34 +174,15 @@ String WiFiAPClass::softAPSSID() const
*/
bool
WiFiAPClass
::
softAPConfig
(
IPAddress
local_ip
,
IPAddress
gateway
,
IPAddress
subnet
)
{
esp_err_t
err
=
ESP_OK
;
if
(
!
WiFi
.
enableAP
(
true
))
{
// enable AP failed
return
false
;
}
esp_wifi_start
();
tcpip_adapter_ip_info_t
info
;
info
.
ip
.
addr
=
static_cast
<
uint32_t
>
(
local_ip
);
info
.
gw
.
addr
=
static_cast
<
uint32_t
>
(
gateway
);
info
.
netmask
.
addr
=
static_cast
<
uint32_t
>
(
subnet
);
tcpip_adapter_dhcps_stop
(
TCPIP_ADAPTER_IF_AP
);
if
(
tcpip_adapter_set_ip_info
(
TCPIP_ADAPTER_IF_AP
,
&
info
)
==
ESP_OK
)
{
dhcps_lease_t
lease
;
lease
.
enable
=
true
;
lease
.
start_ip
.
addr
=
static_cast
<
uint32_t
>
(
local_ip
)
+
(
1
<<
24
);
lease
.
end_ip
.
addr
=
static_cast
<
uint32_t
>
(
local_ip
)
+
(
11
<<
24
);
tcpip_adapter_dhcps_option
(
(
tcpip_adapter_dhcp_option_mode_t
)
TCPIP_ADAPTER_OP_SET
,
(
tcpip_adapter_dhcp_option_id_t
)
REQUESTED_IP_ADDRESS
,
(
void
*
)
&
lease
,
sizeof
(
dhcps_lease_t
)
);
return
tcpip_adapter_dhcps_start
(
TCPIP_ADAPTER_IF_AP
)
==
ESP_OK
;
}
return
false
;
err
=
set_esp_interface_ip
(
ESP_IF_WIFI_AP
,
local_ip
,
gateway
,
subnet
);
return
err
==
ESP_OK
;
}
...
...
@@ -202,17 +196,15 @@ bool WiFiAPClass::softAPdisconnect(bool wifioff)
{
bool
ret
;
wifi_config_t
conf
;
wifi_softap_config
(
&
conf
);
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
false
;
}
*
conf
.
ap
.
ssid
=
0
;
*
conf
.
ap
.
password
=
0
;
conf
.
ap
.
authmode
=
WIFI_AUTH_OPEN
;
// auth must be open if pass=0
ret
=
esp_wifi_set_config
(
WIFI_IF_AP
,
&
conf
)
==
ESP_OK
;
if
(
wifioff
)
{
if
(
ret
&&
wifioff
)
{
ret
=
WiFi
.
enableAP
(
false
)
==
ESP_OK
;
}
...
...
@@ -242,11 +234,14 @@ uint8_t WiFiAPClass::softAPgetStationNum()
*/
IPAddress
WiFiAPClass
::
softAPIP
()
{
tcpip_adapter_ip_info_t
ip
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_AP
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
IPAddress
(
ip
.
ip
.
addr
);
}
...
...
@@ -256,11 +251,14 @@ IPAddress WiFiAPClass::softAPIP()
*/
IPAddress
WiFiAPClass
::
softAPBroadcastIP
()
{
tcpip_adapter
_ip_info_t
ip
;
esp_netif
_ip_info_t
ip
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_AP
,
&
ip
);
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
WiFiGenericClass
::
calculateBroadcast
(
IPAddress
(
ip
.
gw
.
addr
),
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -270,11 +268,14 @@ IPAddress WiFiAPClass::softAPBroadcastIP()
*/
IPAddress
WiFiAPClass
::
softAPNetworkID
()
{
tcpip_adapter
_ip_info_t
ip
;
esp_netif
_ip_info_t
ip
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_AP
,
&
ip
);
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
WiFiGenericClass
::
calculateNetworkID
(
IPAddress
(
ip
.
gw
.
addr
),
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -284,11 +285,14 @@ IPAddress WiFiAPClass::softAPNetworkID()
*/
uint8_t
WiFiAPClass
::
softAPSubnetCIDR
()
{
tcpip_adapter
_ip_info_t
ip
;
esp_netif
_ip_info_t
ip
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
(
uint8_t
)
0
;
return
IPAddress
();
}
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_AP
,
&
ip
);
return
WiFiGenericClass
::
calculateSubnetCIDR
(
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -332,8 +336,8 @@ const char * WiFiAPClass::softAPgetHostname()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
hostname
;
}
if
(
tcpip_adapter_get_hostname
(
TCPIP_ADAPTER_IF_AP
,
&
hostname
))
{
return
hostname
;
if
(
esp_netif_get_hostname
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
),
&
hostname
)
!=
ESP_OK
)
{
log_e
(
"Netif Get Hostname Failed!"
)
;
}
return
hostname
;
}
...
...
@@ -348,7 +352,7 @@ bool WiFiAPClass::softAPsetHostname(const char * hostname)
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
false
;
}
return
tcpip_adapter_set_hostname
(
TCPIP_ADAPTER_IF_AP
,
hostname
)
==
ESP_OK
;
return
esp_netif_set_hostname
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
)
,
hostname
)
==
ESP_OK
;
}
/**
...
...
@@ -360,7 +364,7 @@ bool WiFiAPClass::softAPenableIpV6()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
false
;
}
return
tcpip_adapter_create_ip6_linklocal
(
TCPIP_ADAPTER_IF_AP
)
==
ESP_OK
;
return
esp_netif_create_ip6_linklocal
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
)
)
==
ESP_OK
;
}
/**
...
...
@@ -369,11 +373,11 @@ bool WiFiAPClass::softAPenableIpV6()
*/
IPv6Address
WiFiAPClass
::
softAPIPv6
()
{
static
ip6_addr_t
addr
;
esp_
ip6_addr_t
addr
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPv6Address
();
}
if
(
tcpip_adapter_get_ip6_linklocal
(
TCPIP_ADAPTER_IF_AP
,
&
addr
))
{
if
(
esp_netif_get_ip6_linklocal
(
get_esp_interface_netif
(
ESP_IF_WIFI_AP
)
,
&
addr
))
{
return
IPv6Address
();
}
return
IPv6Address
(
addr
.
addr
);
...
...
libraries/WiFi/src/WiFiGeneric.cpp
浏览文件 @
d15e1b0e
此差异已折叠。
点击以展开。
libraries/WiFi/src/WiFiGeneric.h
浏览文件 @
d15e1b0e
...
...
@@ -23,29 +23,86 @@
#ifndef ESP32WIFIGENERIC_H_
#define ESP32WIFIGENERIC_H_
#include
<esp_err.h>
#include
<esp_event.h>
#include
"esp_err.h"
#include
"esp_event.h"
#include <functional>
#include "WiFiType.h"
#include "IPAddress.h"
#include <wifi_provisioning/manager.h>
#include "esp_smartconfig.h"
#include "wifi_provisioning/manager.h"
typedef
struct
{
wifi_prov_cb_event_t
event
;
void
*
event_data
;
}
wifi_prov_event_t
;
typedef
struct
{
wifi_prov_event_t
*
prov_event
;
system_event_t
*
sys_event
;
}
system_prov_event_t
;
ESP_EVENT_DECLARE_BASE
(
ARDUINO_EVENTS
);
typedef
void
(
*
WiFiEventCb
)(
system_event_id_t
event
);
typedef
std
::
function
<
void
(
system_event_id_t
event
,
system_event_info_t
info
)
>
WiFiEventFuncCb
;
typedef
void
(
*
WiFiEventSysCb
)(
system_event_t
*
event
);
typedef
void
(
*
WiFiProvEventCb
)(
system_event_t
*
sys_event
,
wifi_prov_event_t
*
prov_event
);
typedef
enum
{
ARDUINO_EVENT_WIFI_READY
=
0
,
ARDUINO_EVENT_WIFI_SCAN_DONE
,
ARDUINO_EVENT_WIFI_STA_START
,
ARDUINO_EVENT_WIFI_STA_STOP
,
ARDUINO_EVENT_WIFI_STA_CONNECTED
,
ARDUINO_EVENT_WIFI_STA_DISCONNECTED
,
ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE
,
ARDUINO_EVENT_WIFI_STA_GOT_IP
,
ARDUINO_EVENT_WIFI_STA_GOT_IP6
,
ARDUINO_EVENT_WIFI_STA_LOST_IP
,
ARDUINO_EVENT_WIFI_AP_START
,
ARDUINO_EVENT_WIFI_AP_STOP
,
ARDUINO_EVENT_WIFI_AP_STACONNECTED
,
ARDUINO_EVENT_WIFI_AP_STADISCONNECTED
,
ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED
,
ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED
,
ARDUINO_EVENT_WIFI_AP_GOT_IP6
,
ARDUINO_EVENT_ETH_START
,
ARDUINO_EVENT_ETH_STOP
,
ARDUINO_EVENT_ETH_CONNECTED
,
ARDUINO_EVENT_ETH_DISCONNECTED
,
ARDUINO_EVENT_ETH_GOT_IP
,
ARDUINO_EVENT_ETH_GOT_IP6
,
ARDUINO_EVENT_WPS_ER_SUCCESS
,
ARDUINO_EVENT_WPS_ER_FAILED
,
ARDUINO_EVENT_WPS_ER_TIMEOUT
,
ARDUINO_EVENT_WPS_ER_PIN
,
ARDUINO_EVENT_WPS_ER_PBC_OVERLAP
,
ARDUINO_EVENT_SC_SCAN_DONE
,
ARDUINO_EVENT_SC_FOUND_CHANNEL
,
ARDUINO_EVENT_SC_GOT_SSID_PSWD
,
ARDUINO_EVENT_SC_SEND_ACK_DONE
,
ARDUINO_EVENT_PROV_INIT
,
ARDUINO_EVENT_PROV_DEINIT
,
ARDUINO_EVENT_PROV_START
,
ARDUINO_EVENT_PROV_END
,
ARDUINO_EVENT_PROV_CRED_RECV
,
ARDUINO_EVENT_PROV_CRED_FAIL
,
ARDUINO_EVENT_PROV_CRED_SUCCESS
,
ARDUINO_EVENT_MAX
}
arduino_event_id_t
;
typedef
union
{
wifi_event_sta_scan_done_t
wifi_scan_done
;
wifi_event_sta_authmode_change_t
wifi_sta_authmode_change
;
wifi_event_sta_connected_t
wifi_sta_connected
;
wifi_event_sta_disconnected_t
wifi_sta_disconnected
;
wifi_event_sta_wps_er_pin_t
wps_er_pin
;
wifi_event_sta_wps_fail_reason_t
wps_fail_reason
;
wifi_event_ap_probe_req_rx_t
wifi_ap_probereqrecved
;
wifi_event_ap_staconnected_t
wifi_ap_staconnected
;
wifi_event_ap_stadisconnected_t
wifi_ap_stadisconnected
;
ip_event_ap_staipassigned_t
wifi_ap_staipassigned
;
ip_event_got_ip_t
got_ip
;
ip_event_got_ip6_t
got_ip6
;
smartconfig_event_got_ssid_pswd_t
sc_got_ssid_pswd
;
esp_eth_handle_t
eth_connected
;
wifi_sta_config_t
prov_cred_recv
;
wifi_prov_sta_fail_reason_t
prov_fail_reason
;
}
arduino_event_info_t
;
typedef
struct
{
arduino_event_id_t
event_id
;
arduino_event_info_t
event_info
;
}
arduino_event_t
;
typedef
void
(
*
WiFiEventCb
)(
arduino_event_id_t
event
);
typedef
std
::
function
<
void
(
arduino_event_id_t
event
,
arduino_event_info_t
info
)
>
WiFiEventFuncCb
;
typedef
void
(
*
WiFiEventSysCb
)(
arduino_event_t
*
event
);
typedef
size_t
wifi_event_id_t
;
...
...
@@ -85,12 +142,11 @@ class WiFiGenericClass
public:
WiFiGenericClass
();
wifi_event_id_t
onEvent
(
WiFiEventCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiEventFuncCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiEventSysCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiProvEventCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
void
removeEvent
(
WiFiEventCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
void
removeEvent
(
WiFiEventSysCb
cbEvent
,
system_event_id_t
event
=
SYSTEM_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiEventCb
cbEvent
,
arduino_event_id_t
event
=
ARDUINO_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiEventFuncCb
cbEvent
,
arduino_event_id_t
event
=
ARDUINO_EVENT_MAX
);
wifi_event_id_t
onEvent
(
WiFiEventSysCb
cbEvent
,
arduino_event_id_t
event
=
ARDUINO_EVENT_MAX
);
void
removeEvent
(
WiFiEventCb
cbEvent
,
arduino_event_id_t
event
=
ARDUINO_EVENT_MAX
);
void
removeEvent
(
WiFiEventSysCb
cbEvent
,
arduino_event_id_t
event
=
ARDUINO_EVENT_MAX
);
void
removeEvent
(
wifi_event_id_t
id
);
static
int
getStatusBits
();
...
...
@@ -114,7 +170,10 @@ class WiFiGenericClass
bool
setTxPower
(
wifi_power_t
power
);
wifi_power_t
getTxPower
();
static
esp_err_t
_eventCallback
(
void
*
arg
,
system_event_t
*
event
,
wifi_prov_event_t
*
prov_event
=
NULL
);
static
const
char
*
getHostname
();
static
void
setHostname
(
const
char
*
hostname
);
static
esp_err_t
_eventCallback
(
arduino_event_t
*
event
);
protected:
static
bool
_persistent
;
...
...
libraries/WiFi/src/WiFiSTA.cpp
浏览文件 @
d15e1b0e
...
...
@@ -48,6 +48,9 @@ extern "C" {
// ---------------------------------------------------- Private functions ------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------------
esp_netif_t
*
get_esp_interface_netif
(
esp_interface_t
interface
);
esp_err_t
set_esp_interface_dns
(
esp_interface_t
interface
,
IPAddress
main_dns
=
IPAddress
(),
IPAddress
backup_dns
=
IPAddress
(),
IPAddress
fallback_dns
=
IPAddress
());
esp_err_t
set_esp_interface_ip
(
esp_interface_t
interface
,
IPAddress
local_ip
=
IPAddress
(),
IPAddress
gateway
=
IPAddress
(),
IPAddress
subnet
=
IPAddress
());
static
bool
sta_config_equal
(
const
wifi_config_t
&
lhs
,
const
wifi_config_t
&
rhs
);
...
...
@@ -65,6 +68,36 @@ static bool sta_config_equal(const wifi_config_t& lhs, const wifi_config_t& rhs)
return
true
;
}
static
void
wifi_sta_config
(
wifi_config_t
*
wifi_config
,
const
char
*
ssid
=
NULL
,
const
char
*
password
=
NULL
,
const
uint8_t
*
bssid
=
NULL
,
uint8_t
channel
=
0
,
wifi_scan_method_t
scan_method
=
WIFI_ALL_CHANNEL_SCAN
,
wifi_sort_method_t
sort_method
=
WIFI_CONNECT_AP_BY_SIGNAL
,
uint16_t
listen_interval
=
0
,
bool
pmf_required
=
false
){
wifi_config
->
sta
.
channel
=
channel
;
wifi_config
->
sta
.
listen_interval
=
listen_interval
;
wifi_config
->
sta
.
scan_method
=
scan_method
;
//WIFI_ALL_CHANNEL_SCAN or WIFI_FAST_SCAN
wifi_config
->
sta
.
sort_method
=
sort_method
;
//WIFI_CONNECT_AP_BY_SIGNAL or WIFI_CONNECT_AP_BY_SECURITY
wifi_config
->
sta
.
threshold
.
rssi
=
-
75
;
wifi_config
->
sta
.
pmf_cfg
.
capable
=
true
;
wifi_config
->
sta
.
pmf_cfg
.
required
=
pmf_required
;
wifi_config
->
sta
.
bssid_set
=
0
;
memset
(
wifi_config
->
sta
.
bssid
,
0
,
6
);
wifi_config
->
sta
.
threshold
.
authmode
=
WIFI_AUTH_OPEN
;
wifi_config
->
sta
.
ssid
[
0
]
=
0
;
wifi_config
->
sta
.
password
[
0
]
=
0
;
if
(
ssid
!=
NULL
&&
ssid
[
0
]
!=
0
){
snprintf
((
char
*
)
wifi_config
->
sta
.
ssid
,
32
,
ssid
);
if
(
password
!=
NULL
&&
password
[
0
]
!=
0
){
wifi_config
->
sta
.
threshold
.
authmode
=
WIFI_AUTH_WEP
;
if
(
strlen
(
password
)
==
64
){
memcpy
((
char
*
)
wifi_config
->
sta
.
password
,
password
,
64
);
}
else
{
snprintf
((
char
*
)
wifi_config
->
sta
.
password
,
64
,
password
);
}
}
if
(
bssid
!=
NULL
){
wifi_config
->
sta
.
bssid_set
=
1
;
memcpy
(
wifi_config
->
sta
.
bssid
,
bssid
,
6
);
}
}
}
// -----------------------------------------------------------------------------------------------------------------------
// ---------------------------------------------------- STA function -----------------------------------------------------
// -----------------------------------------------------------------------------------------------------------------------
...
...
@@ -144,42 +177,43 @@ wl_status_t WiFiSTAClass::begin(const char* ssid, const char *passphrase, int32_
}
}
if
(
bssid
)
{
conf
.
sta
.
bssid_set
=
1
;
memcpy
((
void
*
)
&
conf
.
sta
.
bssid
[
0
],
(
void
*
)
bssid
,
6
);
}
wifi_config_t
current_conf
;
wifi_sta_config
(
&
conf
,
ssid
,
passphrase
,
bssid
,
channel
);
if
(
channel
>
0
&&
channel
<=
13
)
{
conf
.
sta
.
channel
=
channel
;
if
(
esp_wifi_get_config
(
ESP_IF_WIFI_STA
,
&
current_conf
)
!=
ESP_OK
){
log_e
(
"get current config failed!"
);
return
WL_CONNECT_FAILED
;
}
wifi_config_t
current_conf
;
esp_wifi_get_config
(
WIFI_IF_STA
,
&
current_conf
);
if
(
!
sta_config_equal
(
current_conf
,
conf
))
{
if
(
esp_wifi_disconnect
()){
log_e
(
"disconnect failed!"
);
return
WL_CONNECT_FAILED
;
}
esp_wifi_set_config
(
WIFI_IF_STA
,
&
conf
);
if
(
esp_wifi_set_config
(
ESP_IF_WIFI_STA
,
&
conf
)
!=
ESP_OK
){
log_e
(
"set config failed!"
);
return
WL_CONNECT_FAILED
;
}
}
else
if
(
status
()
==
WL_CONNECTED
){
return
WL_CONNECTED
;
}
else
{
esp_wifi_set_config
(
WIFI_IF_STA
,
&
conf
);
if
(
esp_wifi_set_config
(
ESP_IF_WIFI_STA
,
&
conf
)
!=
ESP_OK
){
log_e
(
"set config failed!"
);
return
WL_CONNECT_FAILED
;
}
}
if
(
!
_useStaticIp
)
{
if
(
tcpip_adapter_dhcpc_start
(
TCPIP_ADAPTER_IF_STA
)
==
ESP_ERR_TCPIP_ADAPTER_DHCPC_START_FAILED
){
log_e
(
"dhcp client start failed!"
);
if
(
!
_useStaticIp
){
if
(
set_esp_interface_ip
(
ESP_IF_WIFI_STA
)
!=
ESP_OK
)
{
return
WL_CONNECT_FAILED
;
}
}
else
{
tcpip_adapter_dhcpc_stop
(
TCPIP_ADAPTER_IF_STA
);
}
if
(
connect
&&
esp_wifi_connect
())
{
log_e
(
"connect failed!"
);
return
WL_CONNECT_FAILED
;
if
(
connect
){
if
(
esp_wifi_connect
()
!=
ESP_OK
)
{
log_e
(
"connect failed!"
);
return
WL_CONNECT_FAILED
;
}
}
return
status
();
...
...
@@ -203,23 +237,22 @@ wl_status_t WiFiSTAClass::begin()
}
wifi_config_t
current_conf
;
if
(
esp_wifi_get_config
(
WIFI_IF_STA
,
&
current_conf
)
!=
ESP_OK
||
esp_wifi_set_config
(
WIFI_IF
_STA
,
&
current_conf
)
!=
ESP_OK
)
{
if
(
esp_wifi_get_config
(
ESP_IF_WIFI_STA
,
&
current_conf
)
!=
ESP_OK
||
esp_wifi_set_config
(
ESP_IF_WIFI
_STA
,
&
current_conf
)
!=
ESP_OK
)
{
log_e
(
"config failed"
);
return
WL_CONNECT_FAILED
;
}
if
(
!
_useStaticIp
)
{
if
(
tcpip_adapter_dhcpc_start
(
TCPIP_ADAPTER_IF_STA
)
==
ESP_ERR_TCPIP_ADAPTER_DHCPC_START_FAILED
){
log_e
(
"dhcp client start failed!"
);
return
WL_CONNECT_FAILED
;
}
}
else
{
tcpip_adapter_dhcpc_stop
(
TCPIP_ADAPTER_IF_STA
);
if
(
!
_useStaticIp
&&
set_esp_interface_ip
(
ESP_IF_WIFI_STA
)
!=
ESP_OK
)
{
log_e
(
"set ip failed!"
);
return
WL_CONNECT_FAILED
;
}
if
(
status
()
!=
WL_CONNECTED
&&
esp_wifi_connect
()){
log_e
(
"connect failed!"
);
return
WL_CONNECT_FAILED
;
if
(
status
()
!=
WL_CONNECTED
){
esp_err_t
err
=
esp_wifi_connect
();
if
(
err
){
log_e
(
"connect failed! 0x%x"
,
err
);
return
WL_CONNECT_FAILED
;
}
}
return
status
();
...
...
@@ -247,11 +280,11 @@ bool WiFiSTAClass::reconnect()
bool
WiFiSTAClass
::
disconnect
(
bool
wifioff
,
bool
eraseap
)
{
wifi_config_t
conf
;
wifi_sta_config
(
&
conf
);
if
(
WiFi
.
getMode
()
&
WIFI_MODE_STA
){
if
(
eraseap
){
memset
(
&
conf
,
0
,
sizeof
(
wifi_config_t
));
if
(
esp_wifi_set_config
(
WIFI_IF_STA
,
&
conf
)){
if
(
esp_wifi_set_config
(
ESP_IF_WIFI_STA
,
&
conf
)){
log_e
(
"clear config failed!"
);
}
}
...
...
@@ -283,58 +316,11 @@ bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subne
if
(
!
WiFi
.
enableSTA
(
true
))
{
return
false
;
}
tcpip_adapter_ip_info_t
info
;
if
(
local_ip
!=
(
uint32_t
)
0x00000000
&&
local_ip
!=
INADDR_NONE
){
info
.
ip
.
addr
=
static_cast
<
uint32_t
>
(
local_ip
);
info
.
gw
.
addr
=
static_cast
<
uint32_t
>
(
gateway
);
info
.
netmask
.
addr
=
static_cast
<
uint32_t
>
(
subnet
);
}
else
{
info
.
ip
.
addr
=
0
;
info
.
gw
.
addr
=
0
;
info
.
netmask
.
addr
=
0
;
}
err
=
tcpip_adapter_dhcpc_stop
(
TCPIP_ADAPTER_IF_STA
);
if
(
err
!=
ESP_OK
&&
err
!=
ESP_ERR_TCPIP_ADAPTER_DHCP_ALREADY_STOPPED
){
log_e
(
"DHCP could not be stopped! Error: %d"
,
err
);
return
false
;
}
err
=
tcpip_adapter_set_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
info
);
if
(
err
!=
ERR_OK
){
log_e
(
"STA IP could not be configured! Error: %d"
,
err
);
return
false
;
}
if
(
info
.
ip
.
addr
){
_useStaticIp
=
true
;
}
else
{
err
=
tcpip_adapter_dhcpc_start
(
TCPIP_ADAPTER_IF_STA
);
if
(
err
==
ESP_ERR_TCPIP_ADAPTER_DHCPC_START_FAILED
){
log_e
(
"dhcp client start failed!"
);
return
false
;
}
_useStaticIp
=
false
;
}
ip_addr_t
d
;
d
.
type
=
IPADDR_TYPE_V4
;
if
(
dns1
!=
(
uint32_t
)
0x00000000
&&
dns1
!=
INADDR_NONE
)
{
// Set DNS1-Server
d
.
u_addr
.
ip4
.
addr
=
static_cast
<
uint32_t
>
(
dns1
);
dns_setserver
(
0
,
&
d
);
}
if
(
dns2
!=
(
uint32_t
)
0x00000000
&&
dns2
!=
INADDR_NONE
)
{
// Set DNS2-Server
d
.
u_addr
.
ip4
.
addr
=
static_cast
<
uint32_t
>
(
dns2
);
dns_setserver
(
1
,
&
d
);
err
=
set_esp_interface_ip
(
ESP_IF_WIFI_STA
,
local_ip
,
gateway
,
subnet
);
if
(
err
==
ESP_OK
){
err
=
set_esp_interface_dns
(
ESP_IF_WIFI_STA
,
dns1
,
dns2
);
}
return
true
;
return
err
==
ESP_OK
;
}
/**
...
...
@@ -355,9 +341,6 @@ bool WiFiSTAClass::isConnected()
*/
bool
WiFiSTAClass
::
setAutoConnect
(
bool
autoConnect
)
{
/*bool ret;
ret = esp_wifi_set_auto_connect(autoConnect);
return ret;*/
return
false
;
//now deprecated
}
...
...
@@ -368,9 +351,6 @@ bool WiFiSTAClass::setAutoConnect(bool autoConnect)
*/
bool
WiFiSTAClass
::
getAutoConnect
()
{
/*bool autoConnect;
esp_wifi_get_auto_connect(&autoConnect);
return autoConnect;*/
return
false
;
//now deprecated
}
...
...
@@ -412,8 +392,11 @@ IPAddress WiFiSTAClass::localIP()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
IPAddress
(
ip
.
ip
.
addr
);
}
...
...
@@ -426,7 +409,7 @@ IPAddress WiFiSTAClass::localIP()
uint8_t
*
WiFiSTAClass
::
macAddress
(
uint8_t
*
mac
)
{
if
(
WiFiGenericClass
::
getMode
()
!=
WIFI_MODE_NULL
){
esp_wifi_get_mac
(
WIFI_IF_STA
,
mac
);
esp_wifi_get_mac
(
ESP_IF_WIFI_STA
,
mac
);
}
else
{
esp_read_mac
(
mac
,
ESP_MAC_WIFI_STA
);
...
...
@@ -446,7 +429,7 @@ String WiFiSTAClass::macAddress(void)
esp_read_mac
(
mac
,
ESP_MAC_WIFI_STA
);
}
else
{
esp_wifi_get_mac
(
WIFI_IF
_STA
,
mac
);
esp_wifi_get_mac
(
ESP_IF_WIFI
_STA
,
mac
);
}
sprintf
(
macStr
,
"%02X:%02X:%02X:%02X:%02X:%02X"
,
mac
[
0
],
mac
[
1
],
mac
[
2
],
mac
[
3
],
mac
[
4
],
mac
[
5
]);
return
String
(
macStr
);
...
...
@@ -461,8 +444,11 @@ IPAddress WiFiSTAClass::subnetMask()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
IPAddress
(
ip
.
netmask
.
addr
);
}
...
...
@@ -475,8 +461,11 @@ IPAddress WiFiSTAClass::gatewayIP()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
IPAddress
(
ip
.
gw
.
addr
);
}
...
...
@@ -503,8 +492,11 @@ IPAddress WiFiSTAClass::broadcastIP()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
WiFiGenericClass
::
calculateBroadcast
(
IPAddress
(
ip
.
gw
.
addr
),
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -517,8 +509,11 @@ IPAddress WiFiSTAClass::networkID()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPAddress
();
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
WiFiGenericClass
::
calculateNetworkID
(
IPAddress
(
ip
.
gw
.
addr
),
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -531,8 +526,11 @@ uint8_t WiFiSTAClass::subnetCIDR()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
(
uint8_t
)
0
;
}
tcpip_adapter_ip_info_t
ip
;
tcpip_adapter_get_ip_info
(
TCPIP_ADAPTER_IF_STA
,
&
ip
);
esp_netif_ip_info_t
ip
;
if
(
esp_netif_get_ip_info
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
ip
)
!=
ESP_OK
){
log_e
(
"Netif Get IP Failed!"
);
return
IPAddress
();
}
return
WiFiGenericClass
::
calculateSubnetCIDR
(
IPAddress
(
ip
.
netmask
.
addr
));
}
...
...
@@ -562,7 +560,7 @@ String WiFiSTAClass::psk() const
return
String
();
}
wifi_config_t
conf
;
esp_wifi_get_config
(
WIFI_IF
_STA
,
&
conf
);
esp_wifi_get_config
(
ESP_IF_WIFI
_STA
,
&
conf
);
return
String
(
reinterpret_cast
<
char
*>
(
conf
.
sta
.
password
));
}
...
...
@@ -654,7 +652,7 @@ bool WiFiSTAClass::enableIpV6()
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
false
;
}
return
tcpip_adapter_create_ip6_linklocal
(
TCPIP_ADAPTER_IF_STA
)
==
0
;
return
esp_netif_create_ip6_linklocal
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
))
==
ESP_OK
;
}
/**
...
...
@@ -663,11 +661,11 @@ bool WiFiSTAClass::enableIpV6()
*/
IPv6Address
WiFiSTAClass
::
localIPv6
()
{
static
ip6_addr_t
addr
;
esp_
ip6_addr_t
addr
;
if
(
WiFiGenericClass
::
getMode
()
==
WIFI_MODE_NULL
){
return
IPv6Address
();
}
if
(
tcpip_adapter_get_ip6_linklocal
(
TCPIP_ADAPTER_IF_STA
,
&
addr
))
{
if
(
esp_netif_get_ip6_linklocal
(
get_esp_interface_netif
(
ESP_IF_WIFI_STA
),
&
addr
))
{
return
IPv6Address
();
}
return
IPv6Address
(
addr
.
addr
);
...
...
@@ -679,6 +677,7 @@ bool WiFiSTAClass::_smartConfigDone = false;
bool
WiFiSTAClass
::
beginSmartConfig
()
{
esp_err_t
err
;
if
(
_smartConfigStarted
)
{
return
false
;
}
...
...
@@ -686,23 +685,22 @@ bool WiFiSTAClass::beginSmartConfig() {
if
(
!
WiFi
.
mode
(
WIFI_STA
))
{
return
false
;
}
esp_wifi_disconnect
();
esp_err_t
err
;
#ifdef ESP_IDF_VERSION_MAJOR
esp_event_handler_register
(
SC_EVENT
,
ESP_EVENT_ANY_ID
,
_smartConfigCallback
,
this
);
smartconfig_start_config_t
conf
=
SMARTCONFIG_START_CONFIG_DEFAULT
();
err
=
esp_smartconfig_set_type
(
SC_TYPE_ESPTOUCH
);
if
(
err
!=
ESP_OK
)
{
log_e
(
"SmartConfig Set Type Failed!"
);
return
false
;
}
err
=
esp_smartconfig_start
(
&
conf
);
#else
err
=
esp_smartconfig_start
(
reinterpret_cast
<
sc_callback_t
>
(
&
WiFiSTAClass
::
_smartConfigCallback
),
1
);
#endif
if
(
err
==
ESP_OK
)
{
_smartConfigStarted
=
true
;
_smartConfigDone
=
false
;
return
true
;
if
(
err
!=
ESP_OK
)
{
log_e
(
"SmartConfig Start Failed!"
);
return
false
;
}
return
false
;
_smartConfigStarted
=
true
;
_smartConfigDone
=
false
;
return
true
;
}
bool
WiFiSTAClass
::
stopSmartConfig
()
{
...
...
@@ -725,79 +723,3 @@ bool WiFiSTAClass::smartConfigDone() {
return
_smartConfigDone
;
}
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
const
char
*
sc_type_strings
[]
=
{
"ESPTOUCH"
,
"AIRKISS"
,
"ESPTOUCH_AIRKISS"
};
#endif
#ifdef ESP_IDF_VERSION_MAJOR //todo
void
WiFiSTAClass
::
_smartConfigCallback
(
void
*
arg
,
esp_event_base_t
event_base
,
int32_t
event_id
,
void
*
event_data
){
smartconfig_event_t
event
=
(
smartconfig_event_t
)
event_id
;
switch
(
event
){
case
SC_EVENT_SCAN_DONE
:
log_d
(
"smartconfig has finished to scan for APs"
);
break
;
case
SC_EVENT_FOUND_CHANNEL
:
log_d
(
"smartconfig has found the channel of the target AP"
);
break
;
case
SC_EVENT_GOT_SSID_PSWD
:
{
log_d
(
"smartconfig got the SSID and password"
);
smartconfig_event_got_ssid_pswd_t
*
data
=
(
smartconfig_event_got_ssid_pswd_t
*
)
event_data
;
log_d
(
"Type: %s"
,
sc_type_strings
[
data
->
type
]);
log_d
(
"SSID: %s"
,
(
const
char
*
)
data
->
ssid
);
log_d
(
"Password: %s"
,
(
const
char
*
)
data
->
password
);
log_d
(
"Sender IP: "
IPSTR
,
data
->
cellphone_ip
[
3
],
data
->
cellphone_ip
[
2
],
data
->
cellphone_ip
[
1
],
data
->
cellphone_ip
[
0
]);
WiFi
.
begin
((
const
char
*
)
data
->
ssid
,
(
const
char
*
)
data
->
password
);
}
break
;
case
SC_EVENT_SEND_ACK_DONE
:
log_d
(
"smartconfig has sent ACK to the sender"
);
WiFi
.
stopSmartConfig
();
break
;
default:
break
;
}
}
#else
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
const
char
*
sc_status_strings
[]
=
{
"WAIT"
,
"FIND_CHANNEL"
,
"GETTING_SSID_PSWD"
,
"LINK"
,
"LINK_OVER"
};
#endif
void
WiFiSTAClass
::
_smartConfigCallback
(
uint32_t
st
,
void
*
result
)
{
smartconfig_status_t
status
=
(
smartconfig_status_t
)
st
;
log_d
(
"Status: %s"
,
sc_status_strings
[
st
%
5
]);
if
(
status
==
SC_STATUS_GETTING_SSID_PSWD
)
{
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
smartconfig_type_t
*
type
=
(
smartconfig_type_t
*
)
result
;
log_d
(
"Type: %s"
,
sc_type_strings
[
*
type
%
3
]);
#endif
}
else
if
(
status
==
SC_STATUS_LINK
)
{
wifi_sta_config_t
*
sta_conf
=
reinterpret_cast
<
wifi_sta_config_t
*>
(
result
);
log_d
(
"SSID: %s"
,
(
char
*
)(
sta_conf
->
ssid
));
sta_conf
->
bssid_set
=
0
;
esp_wifi_set_config
(
WIFI_IF_STA
,
(
wifi_config_t
*
)
sta_conf
);
esp_wifi_connect
();
_smartConfigDone
=
true
;
}
else
if
(
status
==
SC_STATUS_LINK_OVER
)
{
if
(
result
){
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
ip4_addr_t
*
ip
=
(
ip4_addr_t
*
)
result
;
log_d
(
"Sender IP: "
IPSTR
,
IP2STR
(
ip
));
#endif
}
WiFi
.
stopSmartConfig
();
}
}
#endif
libraries/WiFi/src/WiFiSTA.h
浏览文件 @
d15e1b0e
...
...
@@ -100,14 +100,9 @@ public:
bool
stopSmartConfig
();
bool
smartConfigDone
();
static
bool
_smartConfigDone
;
protected:
static
bool
_smartConfigStarted
;
static
bool
_smartConfigDone
;
#ifdef ESP_IDF_VERSION_MAJOR //todo
static
void
_smartConfigCallback
(
void
*
arg
,
esp_event_base_t
event_base
,
int32_t
event_id
,
void
*
event_data
);
#else
static
void
_smartConfigCallback
(
uint32_t
status
,
void
*
result
);
#endif
};
...
...
libraries/WiFi/src/WiFiScan.cpp
浏览文件 @
d15e1b0e
...
...
@@ -42,6 +42,33 @@ extern "C" {
#include "lwip/err.h"
}
static
const
char
*
cipher_str
(
int
cipher
)
{
switch
(
cipher
)
{
case
WIFI_CIPHER_TYPE_NONE
:
return
(
"NONE"
);
break
;
case
WIFI_CIPHER_TYPE_WEP40
:
return
(
"WEP40"
);
break
;
case
WIFI_CIPHER_TYPE_WEP104
:
return
(
"WEP104"
);
break
;
case
WIFI_CIPHER_TYPE_TKIP
:
return
(
"TKIP"
);
break
;
case
WIFI_CIPHER_TYPE_CCMP
:
return
(
"CCMP"
);
break
;
case
WIFI_CIPHER_TYPE_TKIP_CCMP
:
return
(
"TKIP_CCMP"
);
break
;
default:
break
;
}
return
(
"UNKNOWN"
);
}
bool
WiFiScanClass
::
_scanAsync
=
false
;
uint32_t
WiFiScanClass
::
_scanStarted
=
0
;
uint32_t
WiFiScanClass
::
_scanTimeout
=
10000
;
...
...
libraries/WiFiProv/examples/WiFiProv/WiFiProv.ino
浏览文件 @
d15e1b0e
#include "WiFi
Prov
.h"
void
SysProvEvent
(
system_event_t
*
sys_event
,
wifi_prov_event_t
*
prov
_event
)
#include "WiFi.h"
void
SysProvEvent
(
arduino_event_t
*
sys
_event
)
{
if
(
sys_event
)
{
switch
(
sys_event
->
event_id
)
{
case
SYSTEM_EVENT_STA_GOT_IP
:
Serial
.
print
(
"
\n
Connected IP address : "
);
Serial
.
println
(
IPAddress
(
sys_event
->
event_info
.
got_ip
.
ip_info
.
ip
.
addr
));
break
;
case
SYSTEM_EVENT_STA_DISCONNECTED
:
Serial
.
println
(
"
\n
Disconnected. Connecting to the AP again... "
);
break
;
default:
break
;
}
switch
(
sys_event
->
event_id
)
{
case
ARDUINO_EVENT_WIFI_STA_GOT_IP
:
Serial
.
print
(
"
\n
Connected IP address : "
);
Serial
.
println
(
IPAddress
(
sys_event
->
event_info
.
got_ip
.
ip_info
.
ip
.
addr
));
break
;
case
ARDUINO_EVENT_WIFI_STA_DISCONNECTED
:
Serial
.
println
(
"
\n
Disconnected. Connecting to the AP again... "
);
break
;
case
ARDUINO_EVENT_PROV_START
:
Serial
.
println
(
"
\n
Provisioning started
\n
Give Credentials of your access point using
\"
Android app
\"
"
);
break
;
case
ARDUINO_EVENT_PROV_CRED_RECV
:
{
Serial
.
println
(
"
\n
Received Wi-Fi credentials"
);
Serial
.
print
(
"
\t
SSID : "
);
Serial
.
println
((
const
char
*
)
sys_event
->
event_info
.
prov_cred_recv
.
ssid
);
Serial
.
print
(
"
\t
Password : "
);
Serial
.
println
((
char
const
*
)
sys_event
->
event_info
.
prov_cred_recv
.
password
);
break
;
}
if
(
prov_event
)
{
switch
(
prov_event
->
event
)
{
case
WIFI_PROV_START
:
Serial
.
println
(
"
\n
Provisioning started
\n
Give Credentials of your access point using
\"
Android app
\"
"
);
break
;
case
WIFI_PROV_CRED_RECV
:
{
Serial
.
println
(
"
\n
Received Wi-Fi credentials"
);
wifi_sta_config_t
*
wifi_sta_cfg
=
(
wifi_sta_config_t
*
)
prov_event
->
event_data
;
Serial
.
print
(
"
\t
SSID : "
);
Serial
.
println
((
const
char
*
)
wifi_sta_cfg
->
ssid
);
Serial
.
print
(
"
\t
Password : "
);
Serial
.
println
((
char
const
*
)
wifi_sta_cfg
->
password
);
break
;
}
case
WIFI_PROV_CRED_FAIL
:
{
wifi_prov_sta_fail_reason_t
*
reason
=
(
wifi_prov_sta_fail_reason_t
*
)
prov_event
->
event_data
;
Serial
.
println
(
"
\n
Provisioning failed!
\n
Please reset to factory and retry provisioning
\n
"
);
if
(
*
reason
==
WIFI_PROV_STA_AUTH_ERROR
)
Serial
.
println
(
"
\n
Wi-Fi AP password incorrect"
);
else
Serial
.
println
(
"
\n
Wi-Fi AP not found....Add API
\"
nvs_flash_erase()
\"
before beginProvision()"
);
break
;
}
case
WIFI_PROV_CRED_SUCCESS
:
Serial
.
println
(
"
\n
Provisioning Successful"
);
break
;
case
WIFI_PROV_END
:
Serial
.
println
(
"
\n
Provisioning Ends"
);
break
;
default:
break
;
}
case
ARDUINO_EVENT_PROV_CRED_FAIL
:
{
Serial
.
println
(
"
\n
Provisioning failed!
\n
Please reset to factory and retry provisioning
\n
"
);
if
(
sys_event
->
event_info
.
prov_fail_reason
==
WIFI_PROV_STA_AUTH_ERROR
)
Serial
.
println
(
"
\n
Wi-Fi AP password incorrect"
);
else
Serial
.
println
(
"
\n
Wi-Fi AP not found....Add API
\"
nvs_flash_erase()
\"
before beginProvision()"
);
break
;
}
case
ARDUINO_EVENT_PROV_CRED_SUCCESS
:
Serial
.
println
(
"
\n
Provisioning Successful"
);
break
;
case
ARDUINO_EVENT_PROV_END
:
Serial
.
println
(
"
\n
Provisioning Ends"
);
break
;
default:
break
;
}
}
...
...
@@ -56,8 +45,8 @@ void setup() {
/* uint8_t uuid[16] = {0xb4, 0xdf, 0x5a, 0x1c, 0x3f, 0x6b, 0xf4, 0xbf,
0xea, 0x4a, 0x82, 0x03, 0x04, 0x90, 0x1a, 0x02 };*/
WiFi
.
onEvent
(
SysProvEvent
);
//WiFi.beginProvision(
provScheme
BLE, WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "PROV_XXX", NULL, NULL);
WiFi
.
beginProvision
(
provSchemeSoft
AP
,
WIFI_PROV_EVENT_HANDLER_NONE
,
WIFI_PROV_SECURITY_1
,
"abcd1234"
,
"SOFTAP_XXX"
,
NULL
,
NULL
);
//WiFi.beginProvision(
WIFI_PROV_SCHEME_
BLE, WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM, WIFI_PROV_SECURITY_1, "abcd1234", "PROV_XXX", NULL, NULL);
WiFi
.
beginProvision
(
WIFI_PROV_SCHEME_SOFT
AP
,
WIFI_PROV_EVENT_HANDLER_NONE
,
WIFI_PROV_SECURITY_1
,
"abcd1234"
,
"SOFTAP_XXX"
,
NULL
,
NULL
);
}
void
loop
()
{
...
...
libraries/WiFiProv/src/WiFiProv.cpp
浏览文件 @
d15e1b0e
...
...
@@ -24,115 +24,107 @@
#include <string.h>
#include <esp_err.h>
#include <esp_wifi.h>
#include <esp_event
_loop
.h>
#include <esp_event.h>
#include <esp32-hal.h>
#include <wifi_provisioning/scheme_ble.h>
#include <nvs_flash.h>
#if CONFIG_IDF_TARGET_ESP32
#include "wifi_provisioning/scheme_ble.h"
#endif
#include <wifi_provisioning/scheme_softap.h>
#include <wifi_provisioning/manager.h>
#undef IPADDR_NONE
#include "WiFiProv.h"
#include "SimpleBLE.h"
#include "WiFi.h"
extern
esp_err_t
postToSysQueue
(
system_prov_event_t
*
);
bool
wifiLowLevelInit
(
bool
persistent
);
static
wifi_prov_mgr_config_t
config
;
static
scheme_t
prov_scheme
;
#if CONFIG_IDF_TARGET_ESP32
static
const
uint8_t
custom_service_uuid
[
16
]
=
{
0xb4
,
0xdf
,
0x5a
,
0x1c
,
0x3f
,
0x6b
,
0xf4
,
0xbf
,
0xea
,
0x4a
,
0x82
,
0x03
,
0x04
,
0x90
,
0x1a
,
0x02
,
};
#endif
#define SERV_NAME_PREFIX_PROV "PROV_"
void
provSchemeBLE
()
{
prov_scheme
=
WIFI_PROV_SCHEME_BLE
;
config
.
scheme
=
wifi_prov_scheme_ble
;
}
bool
WiFiProvClass
::
prov_enable
=
true
;
void
provSchemeSoftAP
()
bool
WiFiProvClass
::
isProvEnabled
()
{
prov_scheme
=
WIFI_PROV_SCHEME_SOFTAP
;
config
.
scheme
=
wifi_prov_scheme_softap
;
return
prov_enable
;
}
static
void
prov_event_handler
(
void
*
user_data
,
wifi_prov_cb_event_t
event
,
void
*
event_data
)
static
void
get_device_service_name
(
prov_scheme_t
prov_scheme
,
char
*
service_name
,
size_t
max
)
{
if
(
!
event
)
{
return
;
}
system_prov_event_t
*
sys_prov
=
(
system_prov_event_t
*
)
malloc
(
sizeof
(
system_prov_event_t
));
if
(
sys_prov
==
NULL
)
{
log_e
(
"Malloc Failed"
);
return
;
}
sys_prov
->
prov_event
=
(
wifi_prov_event_t
*
)
malloc
(
sizeof
(
wifi_prov_event_t
));
if
(
sys_prov
->
prov_event
==
NULL
)
{
log_e
(
"Malloc Failed"
);
free
(
sys_prov
);
return
;
}
sys_prov
->
sys_event
=
(
system_event_t
*
)
malloc
(
sizeof
(
system_event_t
));
if
(
sys_prov
->
sys_event
==
NULL
)
{
log_e
(
"Malloc Failed"
);
free
(
sys_prov
->
prov_event
);
free
(
sys_prov
);
return
;
}
sys_prov
->
prov_event
->
event
=
event
;
sys_prov
->
prov_event
->
event_data
=
event_data
;
sys_prov
->
sys_event
->
event_id
=
SYSTEM_EVENT_MAX
;
esp_err_t
check
=
postToSysQueue
(
sys_prov
);
if
(
check
==
ESP_FAIL
)
{
log_e
(
"Provisioning event not send to queue"
);
free
(
sys_prov
->
sys_event
);
free
(
sys_prov
->
prov_event
);
free
(
sys_prov
);
}
}
static
void
get_device_service_name
(
char
*
service_name
,
size_t
max
)
{
uint8_t
eth_mac
[
6
];
WiFi
.
macAddress
(
eth_mac
);
uint8_t
eth_mac
[
6
]
=
{
0
,
0
,
0
,
0
,
0
,
0
};
if
(
esp_wifi_get_mac
(
WIFI_IF_STA
,
eth_mac
)
!=
ESP_OK
){
log_e
(
"esp_wifi_get_mac failed!"
);
return
;
}
#if CONFIG_IDF_TARGET_ESP32
if
(
prov_scheme
==
WIFI_PROV_SCHEME_BLE
)
{
snprintf
(
service_name
,
max
,
"%s%02X%02X%02X"
,
SERV_NAME_PREFIX_BLE
,
eth_mac
[
3
],
eth_mac
[
4
],
eth_mac
[
5
]);
}
else
{
#endif
snprintf
(
service_name
,
max
,
"%s%02X%02X%02X"
,
SERV_NAME_PREFIX_WIFI
,
eth_mac
[
3
],
eth_mac
[
4
],
eth_mac
[
5
]);
snprintf
(
service_name
,
max
,
"%s%02X%02X%02X"
,
SERV_NAME_PREFIX_WIFI
,
eth_mac
[
3
],
eth_mac
[
4
],
eth_mac
[
5
]);
#if CONFIG_IDF_TARGET_ESP32
}
#endif
}
void
WiFiProvClass
::
beginProvision
(
void
(
*
scheme_cb
)(),
wifi_prov_event_handler_t
scheme_event_handler
,
wifi_prov_security_t
security
,
const
char
*
pop
,
const
char
*
service_name
,
const
char
*
service_key
,
uint8_t
*
uuid
)
static
esp_err_t
custom_prov_data_handler
(
uint32_t
session_id
,
const
uint8_t
*
inbuf
,
ssize_t
inlen
,
uint8_t
**
outbuf
,
ssize_t
*
outlen
,
void
*
priv_data
){
if
(
inbuf
)
{
log_d
(
"Received data: %.*s"
,
inlen
,
(
char
*
)
inbuf
);
}
*
outbuf
=
NULL
;
*
outlen
=
0
;
return
ESP_OK
;
}
void
WiFiProvClass
::
beginProvision
(
prov_scheme_t
prov_scheme
,
scheme_handler_t
scheme_handler
,
wifi_prov_security_t
security
,
const
char
*
pop
,
const
char
*
service_name
,
const
char
*
service_key
,
uint8_t
*
uuid
)
{
WiFi
.
enableProv
(
true
)
;
prov_enable
=
true
;
bool
provisioned
=
false
;
scheme_cb
();
config
.
scheme_event_handler
=
scheme_event_handler
;
config
.
app_event_handler
=
{
.
event_cb
=
prov_event_handler
,
.
user_data
=
NULL
};
static
char
service_name_temp
[
32
];
wifi_prov_mgr_config_t
config
;
#if CONFIG_IDF_TARGET_ESP32
if
(
prov_scheme
==
WIFI_PROV_SCHEME_BLE
)
{
config
.
scheme
=
wifi_prov_scheme_ble
;
config
.
scheme
=
wifi_prov_scheme_ble
;
}
else
{
#endif
config
.
scheme
=
wifi_prov_scheme_softap
;
#if CONFIG_IDF_TARGET_ESP32
}
if
(
scheme_handler
==
WIFI_PROV_SCHEME_HANDLER_NONE
){
#endif
wifi_prov_mgr_init
(
config
);
WiFi
.
mode
(
WIFI_MODE_AP
);
wifi_prov_mgr_is_provisioned
(
&
provisioned
);
wifi_prov_event_handler_t
scheme_event_handler
=
WIFI_PROV_EVENT_HANDLER_NONE
;
memcpy
(
&
config
.
scheme_event_handler
,
&
scheme_event_handler
,
sizeof
(
wifi_prov_event_handler_t
));
#if CONFIG_IDF_TARGET_ESP32
}
else
if
(
scheme_handler
==
WIFI_PROV_SCHEME_HANDLER_FREE_BTDM
){
wifi_prov_event_handler_t
scheme_event_handler
=
WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM
;
memcpy
(
&
config
.
scheme_event_handler
,
&
scheme_event_handler
,
sizeof
(
wifi_prov_event_handler_t
));
}
else
if
(
scheme_handler
==
WIFI_PROV_SCHEME_HANDLER_FREE_BT
){
wifi_prov_event_handler_t
scheme_event_handler
=
WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BT
;
memcpy
(
&
config
.
scheme_event_handler
,
&
scheme_event_handler
,
sizeof
(
wifi_prov_event_handler_t
));
}
else
if
(
scheme_handler
==
WIFI_PROV_SCHEME_HANDLER_FREE_BLE
){
wifi_prov_event_handler_t
scheme_event_handler
=
WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BLE
;
memcpy
(
&
config
.
scheme_event_handler
,
&
scheme_event_handler
,
sizeof
(
wifi_prov_event_handler_t
));
}
else
{
log_e
(
"Unknown scheme handler!"
);
return
;
}
#endif
wifiLowLevelInit
(
true
);
if
(
wifi_prov_mgr_init
(
config
)
!=
ESP_OK
){
log_e
(
"wifi_prov_mgr_init failed!"
);
return
;
}
if
(
wifi_prov_mgr_is_provisioned
(
&
provisioned
)
!=
ESP_OK
){
log_e
(
"wifi_prov_mgr_is_provisioned failed!"
);
wifi_prov_mgr_deinit
();
return
;
}
if
(
provisioned
==
false
)
{
#if CONFIG_IDF_TARGET_ESP32
if
(
prov_scheme
==
WIFI_PROV_SCHEME_BLE
)
{
...
...
@@ -145,38 +137,46 @@ void WiFiProvClass :: beginProvision(void (*scheme_cb)(), wifi_prov_event_handle
#endif
if
(
service_name
==
NULL
)
{
char
service_name_temp
[
12
];
get_device_service_name
(
service_name_temp
,
sizeof
(
service_name_temp
));
get_device_service_name
(
prov_scheme
,
service_name_temp
,
32
);
service_name
=
(
const
char
*
)
service_name_temp
;
}
#if CONFIG_IDF_TARGET_ESP32
if
(
prov_scheme
==
WIFI_PROV_SCHEME_BLE
)
{
log_i
(
"Starting AP using BLE
\n
service_name : %s
\n
pop : %s"
,
service_name
,
pop
);
log_i
(
"Starting AP using BLE
. service_name : %s,
pop : %s"
,
service_name
,
pop
);
}
else
{
#endif
if
(
service_key
==
NULL
)
{
log_i
(
"Starting
AP using SOFTAP
\n
service_name : %s
\n
pop : %s"
,
service_name
,
pop
);
}
else
{
log_i
(
"Starting
AP using SOFTAP
\n
service_name : %s
\n
password : %s
\n
pop : %s"
,
service_name
,
service_key
,
pop
);
log_i
(
"Starting
provisioning AP using SOFTAP. service_name : %s, pop : %s"
,
service_name
,
pop
);
}
else
{
log_i
(
"Starting
provisioning AP using SOFTAP. service_name : %s, password : %s, pop : %s"
,
service_name
,
service_key
,
pop
);
}
#if CONFIG_IDF_TARGET_ESP32
}
#endif
wifi_prov_mgr_start_provisioning
(
security
,
pop
,
service_name
,
service_key
);
if
(
wifi_prov_mgr_endpoint_create
(
"custom-data"
)
!=
ESP_OK
){
log_e
(
"wifi_prov_mgr_endpoint_create failed!"
);
return
;
}
if
(
wifi_prov_mgr_start_provisioning
(
security
,
pop
,
service_name
,
service_key
)
!=
ESP_OK
){
log_e
(
"wifi_prov_mgr_start_provisioning failed!"
);
return
;
}
if
(
wifi_prov_mgr_endpoint_register
(
"custom-data"
,
custom_prov_data_handler
,
NULL
)
!=
ESP_OK
){
log_e
(
"wifi_prov_mgr_endpoint_register failed!"
);
return
;
}
}
else
{
wifi_prov_mgr_deinit
();
WiFi
.
mode
(
WIFI_MODE_STA
);
log_i
(
"Already Provisioned, starting Wi-Fi STA"
);
log_i
(
"Aleardy Provisioned"
);
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
wifi_config_t
conf
;
static
wifi_config_t
conf
;
esp_wifi_get_config
(
WIFI_IF_STA
,
&
conf
);
log_i
(
"
SSID
: %s
\n
"
,
conf
.
sta
.
ssid
);
log_i
(
"
Attempting connect to AP
: %s
\n
"
,
conf
.
sta
.
ssid
);
#endif
log_i
(
"CONNECTING TO THE ACCESS POINT : "
);
WiFi
.
begin
();
esp_wifi_start
(
);
WiFi
.
begin
();
}
}
WiFiProvClass
WiFiProv
;
libraries/WiFiProv/src/WiFiProv.h
浏览文件 @
d15e1b0e
/*
/*
WiFiProv.h - Base class for provisioning support
All right reserved.
...
...
@@ -19,30 +19,38 @@
#include "WiFi.h"
#include "wifi_provisioning/manager.h"
#include "wifi_provisioning/scheme_ble.h"
//Select the scheme using which you want to provision
typedef
enum
{
typedef
enum
{
WIFI_PROV_SCHEME_SOFTAP
,
#if CONFIG_IDF_TARGET_ESP32
WIFI_PROV_SCHEME_BLE
,
WIFI_PROV_SCHEME_SOFTAP
}
scheme_t
;
#endif
WIFI_PROV_SCHEME_MAX
}
prov_scheme_t
;
extern
void
provSchemeSoftAP
();
extern
void
provSchemeBLE
();
typedef
enum
{
WIFI_PROV_SCHEME_HANDLER_NONE
,
#if CONFIG_IDF_TARGET_ESP32
WIFI_PROV_SCHEME_HANDLER_FREE_BTDM
,
WIFI_PROV_SCHEME_HANDLER_FREE_BLE
,
WIFI_PROV_SCHEME_HANDLER_FREE_BT
,
#endif
WIFI_PROV_SCHEME_HANDLER_MAX
}
scheme_handler_t
;
//Provisioning class
class
WiFiProvClass
{
protected:
static
bool
prov_enable
;
public:
WiFiProvClass
()
{
prov_enable
=
false
;
}
void
beginProvision
(
void
(
*
scheme_cb
)()
=
provSchemeSoftAP
,
wifi_prov_event_handler_t
scheme_event_handler
=
WIFI_PROV_EVENT_HANDLER_NONE
,
wifi_prov_security_t
security
=
WIFI_PROV_SECURITY_1
,
const
char
*
pop
=
"abcd1234"
,
const
char
*
service_name
=
NULL
,
const
char
*
service_key
=
NULL
,
uint8_t
*
uuid
=
NULL
);
bool
isProvEnabled
();
void
beginProvision
(
prov_scheme_t
prov_scheme
=
WIFI_PROV_SCHEME_SOFTAP
,
scheme_handler_t
scheme_handler
=
WIFI_PROV_SCHEME_HANDLER_NONE
,
wifi_prov_security_t
security
=
WIFI_PROV_SECURITY_1
,
const
char
*
pop
=
"abcd1234"
,
const
char
*
service_name
=
NULL
,
const
char
*
service_key
=
NULL
,
uint8_t
*
uuid
=
NULL
);
};
extern
WiFiProvClass
WiFiProv
;
/*
Event Handler for BLE
- WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BTDM
- WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BLE
- WIFI_PROV_SCHEME_BLE_EVENT_HANDLER_FREE_BT
Event Handler for SOFTAP
- WIFI_PROV_EVENT_HANDLER_NONE
*/
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录