adds esp32 autoreconnector

Using static event cb for now, feel free to improve, this functionality should be fixed in core soon
This commit is contained in:
Shawn A
2018-01-24 13:13:25 -06:00
parent e5879b2101
commit ceaf53f604
2 changed files with 33 additions and 2 deletions
+26
View File
@@ -116,6 +116,8 @@ boolean WiFiManager::autoConnect(char const *apName, char const *apPassword) {
WiFi_enableSTA(true);
_usermode = WIFI_STA;
WiFi_autoReconnect();
// if already connected, or try stored connect
if (WiFi.status() == WL_CONNECTED || connectWifi("", "") == WL_CONNECTED) {
//connected
@@ -1224,6 +1226,10 @@ void WiFiManager::setCaptivePortalEnable(boolean enabled){
_enableCaptivePortal = enabled;
}
void WiFiManager::setWiFiAutoReconnect(boolean enabled){
_wifiAutoReconnect = enabled;
}
// HELPERS
template <typename Generic>
@@ -1496,4 +1502,24 @@ bool WiFiManager::WiFi_hasAutoConnect(){
DEBUG_WM(ssid);
return ssid != "";
#endif
}
void WiFiManager::WiFiEvent(WiFiEvent_t event, system_event_info_t info){
WiFiManager _WiFiManager;
if(event == SYSTEM_EVENT_STA_DISCONNECTED){
// Serial.println("Event: SYSTEM_EVENT_STA_DISCONNECTED, reconnecting");
_WiFiManager.DEBUG_WM("ESP32 Event: SYSTEM_EVENT_STA_DISCONNECTED, reconnecting"); // @todo remove debugging from prod, or change static method
WiFi.reconnect();
}
}
void WiFiManager::WiFi_autoReconnect(){
#ifdef ESP8266
WiFi.setAutoReconnect(_wifiAutoReconnect);
#elif defined(ESP31B) || defined(ESP32)
if(_wifiAutoReconnect){
DEBUG_WM("ESP32 autoreconnect handler enabled");
WiFi.onEvent(WiFiEvent);
}
#endif
}