diff --git a/src/app/ConnectivityManager.cpp b/src/app/ConnectivityManager.cpp index 886270b..29407ff 100644 --- a/src/app/ConnectivityManager.cpp +++ b/src/app/ConnectivityManager.cpp @@ -19,15 +19,20 @@ ConnectivityManager::ConnectivityManager(SDCardManager &sdCardManager) : _error( if(!enableSTAAndAP(false))_error &= AP_AND_STA_ENABLED_ERR; else { + //SOFT AP PART CFGFileParser cfgFileParser(sdCardManager, AP_CFG_FILE); CFGDictionary *cfgDictionary = (CFGDictionary *) cfgFileParser.parseFile(); if(cfgDictionary == NULL) { if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR; } - else if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("CHANNEL") != NULL && (*cfgDictionary)("SSID_HIDDEN") != NULL && (*cfgDictionary)("AP_MAX_CONNECTION") != NULL) - { - 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; + else if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("CHANNEL") != NULL && (*cfgDictionary)("SSID_HIDDEN") != NULL && (*cfgDictionary)("AP_MAX_CONNECTION") != NULL && (*cfgDictionary)("ENABLED") != NULL) + { + if((*cfgDictionary)("ENABLED")->booleanValue()) + { + 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; + } delete cfgDictionary; } else @@ -35,17 +40,20 @@ ConnectivityManager::ConnectivityManager(SDCardManager &sdCardManager) : _error( if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR; delete cfgDictionary; } - + + //STATION PART CFGFileParser cfgFileParserSTA(sdCardManager, STA_CFG_FILE); cfgDictionary = (CFGDictionary *) cfgFileParserSTA.parseFile(); if(cfgDictionary != NULL) { - if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL) + if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("ENABLED") != NULL) { - if(!begin((*cfgDictionary)("SSID")->stringValue(), (*cfgDictionary)("PASSWORD")->stringValue())) - _error &= AP_SETUP_ERR; + if((*cfgDictionary)("ENABLED")->booleanValue()) + { + if(!begin((*cfgDictionary)("SSID")->stringValue(), (*cfgDictionary)("PASSWORD")->stringValue())) + _error &= AP_SETUP_ERR; + } } - delete cfgDictionary; } } @@ -56,6 +64,16 @@ boolean ConnectivityManager::enableSTAAndAP(boolean enabled) return enableSTA(enabled) && enableAP(enabled); } +boolean ConnectivityManager::isSTAEnabled() +{ + return (getMode() == WIFI_AP_STA || getMode() == WIFI_STA); +} + +boolean ConnectivityManager::isAPEnabled() +{ + return (getMode() == WIFI_AP_STA || getMode() == WIFI_AP); +} + unsigned char ConnectivityManager::RSSIPercent() { int RSSIdBm = RSSI(); diff --git a/src/app/ConnectivityManager.h b/src/app/ConnectivityManager.h index 5c3497d..53bb6d6 100644 --- a/src/app/ConnectivityManager.h +++ b/src/app/ConnectivityManager.h @@ -16,7 +16,9 @@ class ConnectivityManager : public ESP8266WiFiClass friend class SAB; public: boolean enableSTAAndAP(boolean enable); - + boolean isSTAEnabled(); + boolean isAPEnabled(); + unsigned char RSSIPercent(); unsigned char getError() const; protected: