Skip to content

Commit 9b22d72

Browse files
authored
Merge branch 'master' into wifi_config_arduino_auto
2 parents baedf26 + 0523b94 commit 9b22d72

File tree

8 files changed

+248
-60
lines changed

8 files changed

+248
-60
lines changed

boards.txt

+114
Original file line numberDiff line numberDiff line change
@@ -7705,6 +7705,120 @@ lolin_c3_mini.menu.EraseFlash.all.upload.erase_cmd=-e
77057705

77067706
##############################################################
77077707

7708+
lolin_c3_pico.name=LOLIN C3 Pico
7709+
lolin_c3_pico.vid.0=0x303a
7710+
lolin_c3_pico.pid.0=0x1001
7711+
7712+
lolin_c3_pico.bootloader.tool=esptool_py
7713+
lolin_c3_pico.bootloader.tool.default=esptool_py
7714+
7715+
lolin_c3_pico.upload.tool=esptool_py
7716+
lolin_c3_pico.upload.tool.default=esptool_py
7717+
lolin_c3_pico.upload.tool.network=esp_ota
7718+
7719+
lolin_c3_pico.upload.maximum_size=1310720
7720+
lolin_c3_pico.upload.maximum_data_size=327680
7721+
lolin_c3_pico.upload.flags=
7722+
lolin_c3_pico.upload.extra_flags=
7723+
lolin_c3_pico.upload.use_1200bps_touch=false
7724+
lolin_c3_pico.upload.wait_for_upload_port=false
7725+
7726+
lolin_c3_pico.serial.disableDTR=true
7727+
lolin_c3_pico.serial.disableRTS=true
7728+
7729+
lolin_c3_pico.build.tarch=riscv32
7730+
lolin_c3_pico.build.target=esp
7731+
lolin_c3_pico.build.mcu=esp32c3
7732+
lolin_c3_pico.build.core=esp32
7733+
lolin_c3_pico.build.variant=lolin_c3_pico
7734+
lolin_c3_pico.build.board=LOLIN_C3_PICO
7735+
lolin_c3_pico.build.bootloader_addr=0x0
7736+
7737+
lolin_c3_pico.build.cdc_on_boot=1
7738+
lolin_c3_pico.build.f_cpu=160000000L
7739+
lolin_c3_pico.build.flash_size=4MB
7740+
lolin_c3_pico.build.flash_freq=80m
7741+
lolin_c3_pico.build.flash_mode=dio
7742+
lolin_c3_pico.build.boot=qio
7743+
lolin_c3_pico.build.partitions=default
7744+
lolin_c3_pico.build.defines=
7745+
7746+
lolin_c3_pico.menu.CDCOnBoot.default=Enabled
7747+
lolin_c3_pico.menu.CDCOnBoot.default.build.cdc_on_boot=1
7748+
lolin_c3_pico.menu.CDCOnBoot.dis_cdc=Disabled
7749+
lolin_c3_pico.menu.CDCOnBoot.dis_cdc.build.cdc_on_boot=0
7750+
7751+
lolin_c3_pico.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
7752+
lolin_c3_pico.menu.PartitionScheme.default.build.partitions=default
7753+
lolin_c3_pico.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
7754+
lolin_c3_pico.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
7755+
lolin_c3_pico.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
7756+
lolin_c3_pico.menu.PartitionScheme.no_ota.build.partitions=no_ota
7757+
lolin_c3_pico.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
7758+
lolin_c3_pico.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
7759+
lolin_c3_pico.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
7760+
lolin_c3_pico.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
7761+
lolin_c3_pico.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
7762+
lolin_c3_pico.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
7763+
lolin_c3_pico.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
7764+
lolin_c3_pico.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
7765+
lolin_c3_pico.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
7766+
lolin_c3_pico.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
7767+
lolin_c3_pico.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
7768+
lolin_c3_pico.menu.PartitionScheme.huge_app.build.partitions=huge_app
7769+
lolin_c3_pico.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
7770+
7771+
lolin_c3_pico.menu.CPUFreq.160=160MHz (WiFi)
7772+
lolin_c3_pico.menu.CPUFreq.160.build.f_cpu=160000000L
7773+
lolin_c3_pico.menu.CPUFreq.80=80MHz (WiFi)
7774+
lolin_c3_pico.menu.CPUFreq.80.build.f_cpu=80000000L
7775+
lolin_c3_pico.menu.CPUFreq.40=40MHz
7776+
lolin_c3_pico.menu.CPUFreq.40.build.f_cpu=40000000L
7777+
lolin_c3_pico.menu.CPUFreq.20=20MHz
7778+
lolin_c3_pico.menu.CPUFreq.20.build.f_cpu=20000000L
7779+
lolin_c3_pico.menu.CPUFreq.10=10MHz
7780+
lolin_c3_pico.menu.CPUFreq.10.build.f_cpu=10000000L
7781+
7782+
lolin_c3_pico.menu.FlashFreq.80=80MHz
7783+
lolin_c3_pico.menu.FlashFreq.80.build.flash_freq=80m
7784+
lolin_c3_pico.menu.FlashFreq.40=40MHz
7785+
lolin_c3_pico.menu.FlashFreq.40.build.flash_freq=40m
7786+
7787+
lolin_c3_pico.menu.UploadSpeed.921600=921600
7788+
lolin_c3_pico.menu.UploadSpeed.921600.upload.speed=921600
7789+
lolin_c3_pico.menu.UploadSpeed.115200=115200
7790+
lolin_c3_pico.menu.UploadSpeed.115200.upload.speed=115200
7791+
lolin_c3_pico.menu.UploadSpeed.256000.windows=256000
7792+
lolin_c3_pico.menu.UploadSpeed.256000.upload.speed=256000
7793+
lolin_c3_pico.menu.UploadSpeed.230400.windows.upload.speed=256000
7794+
lolin_c3_pico.menu.UploadSpeed.230400=230400
7795+
lolin_c3_pico.menu.UploadSpeed.230400.upload.speed=230400
7796+
lolin_c3_pico.menu.UploadSpeed.460800.linux=460800
7797+
lolin_c3_pico.menu.UploadSpeed.460800.macosx=460800
7798+
lolin_c3_pico.menu.UploadSpeed.460800.upload.speed=460800
7799+
lolin_c3_pico.menu.UploadSpeed.512000.windows=512000
7800+
lolin_c3_pico.menu.UploadSpeed.512000.upload.speed=512000
7801+
7802+
lolin_c3_pico.menu.DebugLevel.none=None
7803+
lolin_c3_pico.menu.DebugLevel.none.build.code_debug=0
7804+
lolin_c3_pico.menu.DebugLevel.error=Error
7805+
lolin_c3_pico.menu.DebugLevel.error.build.code_debug=1
7806+
lolin_c3_pico.menu.DebugLevel.warn=Warn
7807+
lolin_c3_pico.menu.DebugLevel.warn.build.code_debug=2
7808+
lolin_c3_pico.menu.DebugLevel.info=Info
7809+
lolin_c3_pico.menu.DebugLevel.info.build.code_debug=3
7810+
lolin_c3_pico.menu.DebugLevel.debug=Debug
7811+
lolin_c3_pico.menu.DebugLevel.debug.build.code_debug=4
7812+
lolin_c3_pico.menu.DebugLevel.verbose=Verbose
7813+
lolin_c3_pico.menu.DebugLevel.verbose.build.code_debug=5
7814+
7815+
lolin_c3_pico.menu.EraseFlash.none=Disabled
7816+
lolin_c3_pico.menu.EraseFlash.none.upload.erase_cmd=
7817+
lolin_c3_pico.menu.EraseFlash.all=Enabled
7818+
lolin_c3_pico.menu.EraseFlash.all.upload.erase_cmd=-e
7819+
7820+
##############################################################
7821+
77087822
lolin_s2_mini.name=LOLIN S2 Mini
77097823
lolin_s2_mini.vid.0=0x303a
77107824
lolin_s2_mini.pid.0=0x80C2

libraries/Network/src/NetworkInterface.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,10 @@ IPAddress NetworkInterface::globalIPv6() const
671671

672672
size_t NetworkInterface::printTo(Print & out) const {
673673
size_t bytes = 0;
674-
bytes += out.print(esp_netif_get_desc(_esp_netif));
674+
const char * dscr = esp_netif_get_desc(_esp_netif);
675+
if(dscr != NULL){
676+
bytes += out.print(dscr);
677+
}
675678
bytes += out.print(":");
676679
if(esp_netif_is_netif_up(_esp_netif)){
677680
bytes += out.print(" <UP");

libraries/WiFi/src/AP.cpp

+22-24
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,13 @@ static void _ap_event_cb(void* arg, esp_event_base_t event_base, int32_t event_i
8282
}
8383
}
8484

85-
static void _onApArduinoEvent(arduino_event_id_t event, arduino_event_info_t info)
85+
static void _onApArduinoEvent(arduino_event_t *ev)
8686
{
87-
if(_ap_network_if == NULL || event < ARDUINO_EVENT_WIFI_AP_START || event > ARDUINO_EVENT_WIFI_AP_GOT_IP6){
87+
if(_ap_network_if == NULL || ev->event_id < ARDUINO_EVENT_WIFI_AP_START || ev->event_id > ARDUINO_EVENT_WIFI_AP_GOT_IP6){
8888
return;
8989
}
90-
log_d("Arduino AP Event: %d - %s", event, Network.eventName(event));
91-
if(event == ARDUINO_EVENT_WIFI_AP_START) {
90+
log_d("Arduino AP Event: %d - %s", ev->event_id, Network.eventName(ev->event_id));
91+
if(ev->event_id == ARDUINO_EVENT_WIFI_AP_START) {
9292
if (_ap_network_if->getStatusBits() & ESP_NETIF_WANT_IP6_BIT){
9393
esp_err_t err = esp_netif_create_ip6_linklocal(_ap_network_if->netif());
9494
if(err != ESP_OK){
@@ -157,37 +157,21 @@ APClass::~APClass(){
157157
_ap_network_if = NULL;
158158
}
159159

160-
bool APClass::begin(){
161-
162-
Network.begin();
160+
bool APClass::onEnable(){
163161
if(_ap_ev_instance == NULL && esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &_ap_event_cb, this, &_ap_ev_instance)){
164162
log_e("event_handler_instance_register for WIFI_EVENT Failed!");
165163
return false;
166164
}
167165
if(_esp_netif == NULL){
168166
Network.onSysEvent(_onApArduinoEvent);
169-
}
170-
171-
if(!WiFi.enableAP(true)) {
172-
log_e("AP enable failed!");
173-
return false;
174-
}
175-
176-
// attach events and esp_netif here
177-
if(_esp_netif == NULL){
178167
_esp_netif = get_esp_interface_netif(ESP_IF_WIFI_AP);
179168
/* attach to receive events */
180169
initNetif(ESP_NETIF_ID_AP);
181170
}
182-
183171
return true;
184172
}
185173

186-
bool APClass::end(){
187-
if(!WiFi.enableAP(false)) {
188-
log_e("AP disable failed!");
189-
return false;
190-
}
174+
bool APClass::onDisable(){
191175
Network.removeEvent(_onApArduinoEvent);
192176
// we just set _esp_netif to NULL here, so destroyNetif() does not try to destroy it.
193177
// That would be done by WiFi.enableAP(false) if STA is not enabled, or when it gets disabled
@@ -200,15 +184,29 @@ bool APClass::end(){
200184
return true;
201185
}
202186

187+
bool APClass::begin(){
188+
if(!WiFi.enableAP(true)) {
189+
log_e("AP enable failed!");
190+
return false;
191+
}
192+
return true;
193+
}
194+
195+
bool APClass::end(){
196+
if(!WiFi.enableAP(false)) {
197+
log_e("AP disable failed!");
198+
return false;
199+
}
200+
return true;
201+
}
202+
203203
bool APClass::create(const char* ssid, const char* passphrase, int channel, int ssid_hidden, int max_connection, bool ftm_responder){
204204
if(!ssid || *ssid == 0) {
205-
// fail SSID missing
206205
log_e("SSID missing!");
207206
return false;
208207
}
209208

210209
if(passphrase && (strlen(passphrase) > 0 && strlen(passphrase) < 8)) {
211-
// fail passphrase too short
212210
log_e("passphrase too short!");
213211
return false;
214212
}

libraries/WiFi/src/STA.cpp

+37-33
Original file line numberDiff line numberDiff line change
@@ -124,22 +124,22 @@ static const char * auth_mode_str(int authmode)
124124
}
125125
#endif
126126

127-
static void _onStaArduinoEvent(arduino_event_id_t event, arduino_event_info_t info)
127+
static void _onStaArduinoEvent(arduino_event_t *ev)
128128
{
129-
if(_sta_network_if == NULL || event < ARDUINO_EVENT_WIFI_STA_START || event > ARDUINO_EVENT_WIFI_STA_LOST_IP){
129+
if(_sta_network_if == NULL || ev->event_id < ARDUINO_EVENT_WIFI_STA_START || ev->event_id > ARDUINO_EVENT_WIFI_STA_LOST_IP){
130130
return;
131131
}
132132
static bool first_connect = true;
133-
log_d("Arduino STA Event: %d - %s", event, Network.eventName(event));
133+
log_d("Arduino STA Event: %d - %s", ev->event_id, Network.eventName(ev->event_id));
134134

135-
if(event == ARDUINO_EVENT_WIFI_STA_START) {
135+
if(ev->event_id == ARDUINO_EVENT_WIFI_STA_START) {
136136
_sta_network_if->_setStatus(WL_DISCONNECTED);
137137
if(esp_wifi_set_ps(WiFi.getSleep()) != ESP_OK){
138138
log_e("esp_wifi_set_ps failed");
139139
}
140-
} else if(event == ARDUINO_EVENT_WIFI_STA_STOP) {
140+
} else if(ev->event_id == ARDUINO_EVENT_WIFI_STA_STOP) {
141141
_sta_network_if->_setStatus(WL_STOPPED);
142-
} else if(event == ARDUINO_EVENT_WIFI_STA_CONNECTED) {
142+
} else if(ev->event_id == ARDUINO_EVENT_WIFI_STA_CONNECTED) {
143143
_sta_network_if->_setStatus(WL_IDLE_STATUS);
144144
if (_sta_network_if->getStatusBits() & ESP_NETIF_WANT_IP6_BIT){
145145
esp_err_t err = esp_netif_create_ip6_linklocal(_sta_network_if->netif());
@@ -149,8 +149,8 @@ static void _onStaArduinoEvent(arduino_event_id_t event, arduino_event_info_t in
149149
log_v("Enabled IPv6 Link Local on %s", _sta_network_if->desc());
150150
}
151151
}
152-
} else if(event == ARDUINO_EVENT_WIFI_STA_DISCONNECTED) {
153-
uint8_t reason = info.wifi_sta_disconnected.reason;
152+
} else if(ev->event_id == ARDUINO_EVENT_WIFI_STA_DISCONNECTED) {
153+
uint8_t reason = ev->event_info.wifi_sta_disconnected.reason;
154154
// Reason 0 causes crash, use reason 1 (UNSPECIFIED) instead
155155
if(!reason)
156156
reason = WIFI_REASON_UNSPECIFIED;
@@ -186,18 +186,18 @@ static void _onStaArduinoEvent(arduino_event_id_t event, arduino_event_info_t in
186186
_sta_network_if->disconnect();
187187
_sta_network_if->connect();
188188
}
189-
} else if(event == ARDUINO_EVENT_WIFI_STA_GOT_IP) {
189+
} else if(ev->event_id == ARDUINO_EVENT_WIFI_STA_GOT_IP) {
190190
#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
191-
uint8_t * ip = (uint8_t *)&(info.got_ip.ip_info.ip.addr);
192-
uint8_t * mask = (uint8_t *)&(info.got_ip.ip_info.netmask.addr);
193-
uint8_t * gw = (uint8_t *)&(info.got_ip.ip_info.gw.addr);
191+
uint8_t * ip = (uint8_t *)&(ev->event_info.got_ip.ip_info.ip.addr);
192+
uint8_t * mask = (uint8_t *)&(ev->event_info.got_ip.ip_info.netmask.addr);
193+
uint8_t * gw = (uint8_t *)&(ev->event_info.got_ip.ip_info.gw.addr);
194194
log_d("STA IP: %u.%u.%u.%u, MASK: %u.%u.%u.%u, GW: %u.%u.%u.%u",
195195
ip[0], ip[1], ip[2], ip[3],
196196
mask[0], mask[1], mask[2], mask[3],
197197
gw[0], gw[1], gw[2], gw[3]);
198198
#endif
199199
_sta_network_if->_setStatus(WL_CONNECTED);
200-
} else if(event == ARDUINO_EVENT_WIFI_STA_LOST_IP) {
200+
} else if(ev->event_id == ARDUINO_EVENT_WIFI_STA_LOST_IP) {
201201
_sta_network_if->_setStatus(WL_IDLE_STATUS);
202202
}
203203
}
@@ -288,29 +288,42 @@ bool STAClass::bandwidth(wifi_bandwidth_t bandwidth) {
288288
return true;
289289
}
290290

291-
bool STAClass::begin(bool tryConnect){
292-
293-
Network.begin();
291+
bool STAClass::onEnable(){
294292
if(_sta_ev_instance == NULL && esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &_sta_event_cb, this, &_sta_ev_instance)){
295293
log_e("event_handler_instance_register for WIFI_EVENT Failed!");
296294
return false;
297295
}
298296
if(_esp_netif == NULL){
297+
_esp_netif = get_esp_interface_netif(ESP_IF_WIFI_STA);
298+
if(_esp_netif == NULL){
299+
log_e("STA was enabled, but netif is NULL???");
300+
return false;
301+
}
302+
/* attach to receive events */
299303
Network.onSysEvent(_onStaArduinoEvent);
304+
initNetif(ESP_NETIF_ID_STA);
305+
}
306+
return true;
307+
}
308+
309+
bool STAClass::onDisable(){
310+
Network.removeEvent(_onStaArduinoEvent);
311+
// we just set _esp_netif to NULL here, so destroyNetif() does not try to destroy it.
312+
// That would be done by WiFi.enableSTA(false) if AP is not enabled, or when it gets disabled
313+
_esp_netif = NULL;
314+
destroyNetif();
315+
if(_sta_ev_instance != NULL){
316+
esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &_sta_event_cb);
317+
_sta_ev_instance = NULL;
300318
}
319+
return true;
320+
}
301321

322+
bool STAClass::begin(bool tryConnect){
302323
if(!WiFi.enableSTA(true)) {
303324
log_e("STA enable failed!");
304325
return false;
305326
}
306-
307-
// attach events and esp_netif here
308-
if(_esp_netif == NULL){
309-
_esp_netif = get_esp_interface_netif(ESP_IF_WIFI_STA);
310-
/* attach to receive events */
311-
initNetif(ESP_NETIF_ID_STA);
312-
}
313-
314327
if(tryConnect){
315328
return connect();
316329
}
@@ -322,15 +335,6 @@ bool STAClass::end(){
322335
log_e("STA disable failed!");
323336
return false;
324337
}
325-
Network.removeEvent(_onStaArduinoEvent);
326-
// we just set _esp_netif to NULL here, so destroyNetif() does not try to destroy it.
327-
// That would be done by WiFi.enableSTA(false) if AP is not enabled, or when it gets disabled
328-
_esp_netif = NULL;
329-
destroyNetif();
330-
if(_sta_ev_instance != NULL){
331-
esp_event_handler_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, &_sta_event_cb);
332-
_sta_ev_instance = NULL;
333-
}
334338
return true;
335339
}
336340

libraries/WiFi/src/WiFiAP.h

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ class APClass: public NetworkInterface {
5555

5656
protected:
5757
size_t printDriverInfo(Print & out) const;
58+
59+
friend class WiFiGenericClass;
60+
bool onEnable();
61+
bool onDisable();
5862
};
5963

6064
// ----------------------------------------------------------------------------------------------

0 commit comments

Comments
 (0)