Skip to content

Commit beee4f7

Browse files
committed
Ensure that we get all events
1 parent 6af030f commit beee4f7

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

Diff for: 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");

Diff for: libraries/WiFi/src/STA.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -294,9 +294,13 @@ bool STAClass::onEnable(){
294294
return false;
295295
}
296296
if(_esp_netif == NULL){
297-
Network.onSysEvent(_onStaArduinoEvent);
298297
_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+
}
299302
/* attach to receive events */
303+
Network.onSysEvent(_onStaArduinoEvent);
300304
initNetif(ESP_NETIF_ID_STA);
301305
}
302306
return true;

Diff for: libraries/WiFi/src/WiFiGeneric.cpp

+18-7
Original file line numberDiff line numberDiff line change
@@ -476,24 +476,25 @@ bool WiFiGenericClass::mode(wifi_mode_t m)
476476
if(((m & WIFI_MODE_STA) != 0) && ((cm & WIFI_MODE_STA) == 0)){
477477
// we are enabling STA interface
478478
WiFi.STA.onEnable();
479-
} else if(((m & WIFI_MODE_STA) == 0) && ((cm & WIFI_MODE_STA) != 0)){
480-
// we are disabling STA interface
481-
WiFi.STA.onDisable();
482479
}
483-
484480
if(((m & WIFI_MODE_AP) != 0) && ((cm & WIFI_MODE_AP) == 0)){
485481
// we are enabling AP interface
486482
WiFi.AP.onEnable();
487-
} else if(((m & WIFI_MODE_AP) == 0) && ((cm & WIFI_MODE_AP) != 0)){
488-
// we are disabling AP interface
489-
WiFi.AP.onDisable();
490483
}
491484

492485
if(cm && !m){
493486
// Turn OFF WiFi
494487
if(!espWiFiStop()){
495488
return false;
496489
}
490+
if((cm & WIFI_MODE_STA) != 0){
491+
// we are disabling STA interface
492+
WiFi.STA.onDisable();
493+
}
494+
if((cm & WIFI_MODE_AP) != 0){
495+
// we are disabling AP interface
496+
WiFi.AP.onDisable();
497+
}
497498
Network.removeEvent(_eventCallback);
498499
return true;
499500
}
@@ -511,6 +512,16 @@ bool WiFiGenericClass::mode(wifi_mode_t m)
511512
log_e("Could not set mode! %d", err);
512513
return false;
513514
}
515+
516+
if(((m & WIFI_MODE_STA) == 0) && ((cm & WIFI_MODE_STA) != 0)){
517+
// we are disabling STA interface (but AP is ON)
518+
WiFi.STA.onDisable();
519+
}
520+
if(((m & WIFI_MODE_AP) == 0) && ((cm & WIFI_MODE_AP) != 0)){
521+
// we are disabling AP interface (but STA is ON)
522+
WiFi.AP.onDisable();
523+
}
524+
514525
if(_long_range){
515526
if(m & WIFI_MODE_STA){
516527
err = esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR);

0 commit comments

Comments
 (0)