using a static var for esp32 event for now to get this working and test. Probably not the best, not sure what the best option is here for esp32 onevent static member function callbacks
This commit is contained in:
Shawn A
2018-02-20 08:49:54 -06:00
parent 415f98d9fb
commit 3d7074166c
2 changed files with 28 additions and 17 deletions
+25 -15
View File
@@ -11,6 +11,7 @@
*/
#include "WiFiManager.h"
uint8_t WiFiManager::_lastconxresulttmp = WL_IDLE_STATUS;
/**
* --------------------------------------------------------------------------------
@@ -575,14 +576,21 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
if(connRes != WL_SCAN_COMPLETED){
_lastconxresult = connRes;
#ifdef ESP8266
// hack in wrong password detection
if(_lastconxresult == WL_CONNECT_FAILED){
if(wifi_station_get_connect_status() == STATION_WRONG_PASSWORD){
_lastconxresult = WL_STATION_WRONG_PASSWORD;
}
#ifdef ESP8266
if(wifi_station_get_connect_status() == STATION_WRONG_PASSWORD){
_lastconxresult = WL_STATION_WRONG_PASSWORD;
}
#elif defined(ESP32)
// DEBUG_WM("lastconxresulttmp:",getWLStatusString(_lastconxresulttmp));
if(_lastconxresulttmp != WL_IDLE_STATUS){
_lastconxresult = _lastconxresulttmp;
_lastconxresulttmp = WL_IDLE_STATUS;
}
#endif
}
#endif
DEBUG_WM("lastconxresult:",getWLStatusString(_lastconxresult));
}
return connRes;
@@ -1945,15 +1953,17 @@ String WiFiManager::WiFi_SSID(){
void WiFiManager::WiFiEvent(WiFiEvent_t event,system_event_info_t info){
#ifdef ESP32
// WiFiManager _WiFiManager;
// if(event == SYSTEM_EVENT_STA_START) WiFi.setHostname("wmtest");
// if(event == SYSTEM_EVENT_AP_START) WiFi.softAPsetHostname("wmtest");
if(event == SYSTEM_EVENT_STA_DISCONNECTED){
// Serial.println(info.disconnected.reason);
if(info.disconnected.reason == WIFI_REASON_AUTH_EXPIRE) Serial.println("*WM: EVENT: WIFI_REASON: AUTH_EXPIRE");
if(info.disconnected.reason == WIFI_REASON_AUTH_FAIL) Serial.println("*WM: EVENT: WIFI_REASON: AUTH_FAIL");
if(info.disconnected.reason == WIFI_REASON_NO_AP_FOUND) Serial.println("*WM: EVENT: WIFI_REASON: NO_AP_FOUND");
// 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
// Serial.print("WM: EVENT: ");Serial.println(event);
if(event == SYSTEM_EVENT_STA_DISCONNECTED){
if(info.disconnected.reason == WIFI_REASON_AUTH_EXPIRE || info.disconnected.reason == WIFI_REASON_AUTH_FAIL){
Serial.print("WM: EVENT: WIFI_REASON: ");Serial.println(info.disconnected.reason);
_lastconxresulttmp = 7;
return;
}
// if(event == SYSTEM_EVENT_STA_START) WiFi.setHostname("wmtest");
// if(event == SYSTEM_EVENT_AP_START) WiFi.softAPsetHostname("wmtest");
// if(info.disconnected.reason == WIFI_REASON_NO_AP_FOUND) Serial.println("*WM: EVENT: WIFI_REASON: NO_AP_FOUND");
Serial.println("*WM: Event: SYSTEM_EVENT_STA_DISCONNECTED, reconnecting");
WiFi.reconnect();
}
#endif
@@ -1964,7 +1974,7 @@ void WiFiManager::WiFi_autoReconnect(){
WiFi.setAutoReconnect(_wifiAutoReconnect);
#elif defined(ESP32)
if(_wifiAutoReconnect){
DEBUG_WM("ESP32 autoreconnect handler enabled");
DEBUG_WM("ESP32 event handler enabled");
WiFi.onEvent(WiFiEvent);
}
#endif
+3 -2
View File
@@ -209,12 +209,13 @@ class WiFiManager
// options flags
unsigned long _configPortalTimeout = 0; // ms close config portal loop if set (depending on _cp/webClientCheck options)
unsigned long _connectTimeout = 0; // ms stop trying to connect to ap if set
unsigned long _connectTimeout = 10000; // ms stop trying to connect to ap if set
unsigned long _configPortalStart = 0; // ms config portal start time (updated for timeouts)
unsigned long _webPortalAccessed = 0; // ms last web access time
WiFiMode_t _usermode = WIFI_OFF;
String _wifissidprefix = FPSTR(S_ssidpre); // auto apname prefix prefix+chipid
uint8_t _lastconxresult = WL_IDLE_STATUS;
uint8_t _lastconxresult = WL_IDLE_STATUS;
static uint8_t _lastconxresulttmp;
#ifndef WL_STATION_WRONG_PASSWORD
uint8_t WL_STATION_WRONG_PASSWORD = 7;