diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 3ba6aae6814..e8c2885bff1 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -99,7 +99,25 @@ static void _start_network_event_task(){ esp_event_loop_init(&_network_event_cb, NULL); } -void tcpipInit(){ +// ----------------------------------------------------------------------------------------------------------------------- +// ------------------------------------------------- Generic WiFi function ----------------------------------------------- +// ----------------------------------------------------------------------------------------------------------------------- + +typedef struct { + WiFiEventCb cb; + WiFiEventFullCb fcb; + WiFiEventSysCb scb; + system_event_id_t event; +} WiFiEventCbList_t; + +// arduino dont like std::vectors move static here +static std::vector cbEventList; + +bool WiFiGenericClass::_esp_wifi_started = false; +bool WiFiGenericClass::_persistent = true; +wifi_mode_t WiFiGenericClass::_forceSleepLastMode = WIFI_MODE_NULL; + +void WiFiGenericClass::tcpipInit(){ static bool initialized = false; if(!initialized){ initialized = true; @@ -108,32 +126,13 @@ void tcpipInit(){ } } -static bool wifiLowLevelInit(){ - static bool lowLevelInitDone = false; - if(!lowLevelInitDone){ - tcpipInit(); - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - esp_err_t err = esp_wifi_init(&cfg); - if(err){ - log_e("esp_wifi_init %d", err); - return false; - } - esp_wifi_set_storage(WIFI_STORAGE_FLASH); - esp_wifi_set_mode(WIFI_MODE_NULL); - lowLevelInitDone = true; - } - return true; -} - -static bool wifiLowLevelDeinit(){ +bool WiFiGenericClass::wifiLowLevelDeinit(){ //deinit not working yet! //esp_wifi_deinit(); return true; } -static bool _esp_wifi_started = false; - -static bool espWiFiStart(){ +bool WiFiGenericClass::espWiFiStart(){ if(_esp_wifi_started){ return true; } @@ -150,7 +149,7 @@ static bool espWiFiStart(){ return true; } -static bool espWiFiStop(){ +bool WiFiGenericClass::espWiFiStop(){ esp_err_t err; if(!_esp_wifi_started){ return true; @@ -164,22 +163,24 @@ static bool espWiFiStop(){ return wifiLowLevelDeinit(); } -// ----------------------------------------------------------------------------------------------------------------------- -// ------------------------------------------------- Generic WiFi function ----------------------------------------------- -// ----------------------------------------------------------------------------------------------------------------------- - -typedef struct { - WiFiEventCb cb; - WiFiEventFullCb fcb; - WiFiEventSysCb scb; - system_event_id_t event; -} WiFiEventCbList_t; - -// arduino dont like std::vectors move static here -static std::vector cbEventList; - -bool WiFiGenericClass::_persistent = true; -wifi_mode_t WiFiGenericClass::_forceSleepLastMode = WIFI_MODE_NULL; +bool WiFiGenericClass::wifiLowLevelInit(){ + static bool lowLevelInitDone = false; + if(!lowLevelInitDone){ + tcpipInit(); + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + esp_err_t err = esp_wifi_init(&cfg); + if(err){ + log_e("esp_wifi_init %d", err); + return false; + } + if (!_persistent) { + esp_wifi_set_storage(WIFI_STORAGE_RAM); + } + esp_wifi_set_mode(WIFI_MODE_NULL); + lowLevelInitDone = true; + } + return true; +} WiFiGenericClass::WiFiGenericClass() { diff --git a/libraries/WiFi/src/WiFiGeneric.h b/libraries/WiFi/src/WiFiGeneric.h index 83eb7f7716a..e84cebdaab5 100644 --- a/libraries/WiFi/src/WiFiGeneric.h +++ b/libraries/WiFi/src/WiFiGeneric.h @@ -48,8 +48,8 @@ class WiFiGenericClass void persistent(bool persistent); - static bool mode(wifi_mode_t); - static wifi_mode_t getMode(); + bool mode(wifi_mode_t); + wifi_mode_t getMode(); bool enableSTA(bool enable); bool enableAP(bool enable); @@ -57,9 +57,17 @@ class WiFiGenericClass static esp_err_t _eventCallback(void *arg, system_event_t *event); protected: + + static bool _esp_wifi_started; static bool _persistent; static wifi_mode_t _forceSleepLastMode; + void tcpipInit(); + bool espWiFiStart(); + bool espWiFiStop(); + bool wifiLowLevelInit(); + bool wifiLowLevelDeinit(); + public: int hostByName(const char* aHostname, IPAddress& aResult); diff --git a/libraries/WiFi/src/WiFiSTA.cpp b/libraries/WiFi/src/WiFiSTA.cpp index fd7c9714df8..ef34471e8c0 100644 --- a/libraries/WiFi/src/WiFiSTA.cpp +++ b/libraries/WiFi/src/WiFiSTA.cpp @@ -354,7 +354,7 @@ bool WiFiSTAClass::getAutoReconnect() uint8_t WiFiSTAClass::waitForConnectResult() { //1 and 3 have STA enabled - if((WiFiGenericClass::getMode() & WIFI_MODE_STA) == 0) { + if((WiFi.getMode() & WIFI_MODE_STA) == 0) { return WL_DISCONNECTED; } int i = 0;