diff --git a/src/app/ConnectivityManager.cpp b/src/app/ConnectivityManager.cpp index 9b81713..29905c8 100644 --- a/src/app/ConnectivityManager.cpp +++ b/src/app/ConnectivityManager.cpp @@ -1,20 +1,29 @@ #include "ConnectivityManager.h" -ConnectivityManager::ConnectivityManager() : _error(0), _sdCardManager(NULL) +ConnectivityManager::ConnectivityManager(bool persistent) { - persistent(false); - - if(!WiFi.disconnect(true))_error |= STA_ENABLED_DISABLE_ERR; - if(!WiFi.softAPdisconnect(true))_error |= AP_ENABLED_DISABLE_ERR; - if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error |= AP_SETUP_ERR; + ConnectivityManager::persistent(persistent); } -ConnectivityManager::ConnectivityManager(SDCardManager &sdCardManager) : _error(0), _sdCardManager(&sdCardManager) +ConnectivityManager::ConnectivityManager(SDCardManager &sdCardManager, bool persistent) : _sdCardManager(&sdCardManager) { - persistent(false); - - startAP(); - connectToSTA(); + ConnectivityManager::persistent(persistent); +} + +boolean ConnectivityManager::connect() +{ + if(!_sdCardManager) // ie _sdCardManager was not provided in contructor + { + if(!WiFi.disconnect(true))_error |= STA_ENABLED_DISABLE_ERR; + if(!WiFi.softAPdisconnect(true))_error |= AP_ENABLED_DISABLE_ERR; + if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error |= AP_SETUP_ERR; + + return _error == NO_ERROR; + } + else + { + return connectToSTA() && startAP(); + } } boolean ConnectivityManager::connectToSTA() diff --git a/src/app/ConnectivityManager.h b/src/app/ConnectivityManager.h index 13ce50c..e0133de 100644 --- a/src/app/ConnectivityManager.h +++ b/src/app/ConnectivityManager.h @@ -20,6 +20,7 @@ class ConnectivityManager : public ESP8266WiFiClass { friend class SAB; public: + boolean connect(); boolean enableSTAAndAP(boolean enable); boolean isSTAEnabled(); boolean isAPEnabled(); @@ -27,14 +28,14 @@ class ConnectivityManager : public ESP8266WiFiClass unsigned char RSSIPercent(); unsigned char getError() const; protected: - ConnectivityManager(); - ConnectivityManager(SDCardManager &sdCardManager); + ConnectivityManager(bool persistent = false); + ConnectivityManager(SDCardManager &sdCardManager, bool persistent = false); boolean connectToSTA(); boolean startAP(); private: - unsigned char _error; - SDCardManager *_sdCardManager; + unsigned char _error = NO_ERROR; + SDCardManager *_sdCardManager = nullptr; }; #endif //CONNECTIVITYMANAGER_H