diff --git a/src/app/ConnectivityManager.cpp b/src/app/ConnectivityManager.cpp index 36be307..1e1f3ef 100644 --- a/src/app/ConnectivityManager.cpp +++ b/src/app/ConnectivityManager.cpp @@ -3,28 +3,18 @@ ConnectivityManager::ConnectivityManager() : _error(0), _sdCardManager(NULL) { persistent(false); - WiFi.disconnect(); - WiFi.softAPdisconnect(); - - if(!enableSTAAndAP(false))_error &= AP_AND_STA_ENABLED_ERR; - if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR; + + 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::ConnectivityManager(SDCardManager &sdCardManager) : _error(0), _sdCardManager(&sdCardManager) { persistent(false); - WiFi.disconnect(); - WiFi.softAPdisconnect(); - if(!enableSTAAndAP(false))_error &= AP_AND_STA_ENABLED_ERR; - else - { - //SOFT AP PART - startAP(); - - //STATION PART - connectToSTA(); - } + startAP(); + connectToSTA(); } boolean ConnectivityManager::connectToSTA() @@ -32,8 +22,9 @@ boolean ConnectivityManager::connectToSTA() //STATION PART CFGFileParser cfgFileParserSTA(*_sdCardManager, STA_CFG_FILE); CFGDictionary *cfgDictionary = (CFGDictionary *) cfgFileParserSTA.parseFile(); - + boolean toBeReturned(true); + if(!WiFi.disconnect(true))_error |= STA_ENABLED_DISABLE_ERR; if(cfgDictionary != NULL) { @@ -43,12 +34,10 @@ boolean ConnectivityManager::connectToSTA() { if(!begin((*cfgDictionary)("SSID")->stringValue(), (*cfgDictionary)("PASSWORD")->stringValue())) { - _error &= AP_SETUP_ERR; + _error |= STA_SETUP_ERR; toBeReturned = false; } } - else - enableSTA(false); } else toBeReturned = false; @@ -65,14 +54,15 @@ boolean ConnectivityManager::startAP() { CFGFileParser cfgFileParser(*_sdCardManager, AP_CFG_FILE); CFGDictionary *cfgDictionary = (CFGDictionary *) cfgFileParser.parseFile(); - + boolean toBeReturned(true); + if(!WiFi.softAPdisconnect(true))_error |= AP_ENABLED_DISABLE_ERR; if(cfgDictionary == NULL) { - if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR; + if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error |= AP_SETUP_ERR; - toBeReturned = false; + return false; } else if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("CHANNEL") != NULL && (*cfgDictionary)("SSID_HIDDEN") != NULL && (*cfgDictionary)("AP_MAX_CONNECTION") != NULL && (*cfgDictionary)("ENABLED") != NULL) { @@ -80,21 +70,19 @@ boolean ConnectivityManager::startAP() { if(!softAP((*cfgDictionary)("SSID")->stringValue(), strcmp((*cfgDictionary)("PASSWORD")->stringValue(),"") == 0 ? NULL:(*cfgDictionary)("PASSWORD")->stringValue(), (*cfgDictionary)("CHANNEL")->intValue(), (*cfgDictionary)("SSID_HIDDEN")->booleanValue(), (*cfgDictionary)("AP_MAX_CONNECTION")->intValue())) { - _error &= AP_SETUP_ERR; + _error |= AP_SETUP_ERR; toBeReturned = false; } } - else - enableAP(false); - delete cfgDictionary; } else { - if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR; - delete cfgDictionary; + if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error |= AP_SETUP_ERR; toBeReturned = false; } + delete cfgDictionary; + return toBeReturned; } diff --git a/src/app/ConnectivityManager.h b/src/app/ConnectivityManager.h index 70694a3..b10daa3 100644 --- a/src/app/ConnectivityManager.h +++ b/src/app/ConnectivityManager.h @@ -11,6 +11,11 @@ #define MAX_RSSI -50 #define COEF_RSSI 3.225806452 +#define STA_ENABLED_DISABLE_ERR B00001000 +#define AP_ENABLED_DISABLE_ERR B00000001 +#define AP_SETUP_ERR B00000010 +#define STA_SETUP_ERR B00000100 + class ConnectivityManager : public ESP8266WiFiClass { friend class SAB; @@ -18,14 +23,15 @@ class ConnectivityManager : public ESP8266WiFiClass boolean enableSTAAndAP(boolean enable); boolean isSTAEnabled(); boolean isAPEnabled(); - boolean connectToSTA(); - boolean startAP(); unsigned char RSSIPercent(); unsigned char getError() const; protected: ConnectivityManager(); ConnectivityManager(SDCardManager &sdCardManager); + + boolean connectToSTA(); + boolean startAP(); private: unsigned char _error; SDCardManager *_sdCardManager;