Added two new methods to be able to reload wifi connectivity config while the card is running

This commit is contained in:
anschrammh 2019-10-20 18:13:29 +02:00
parent cd41b61197
commit 35596c1296
2 changed files with 72 additions and 31 deletions

View File

@ -20,43 +20,82 @@ ConnectivityManager::ConnectivityManager(SDCardManager &sdCardManager) : _error(
else else
{ {
//SOFT AP PART //SOFT AP PART
CFGFileParser cfgFileParser(sdCardManager, AP_CFG_FILE); startAP();
CFGDictionary<CFGParameterValue> *cfgDictionary = (CFGDictionary<CFGParameterValue> *) cfgFileParser.parseFile();
if(cfgDictionary == NULL) //STATION PART
{ connectToSTA();
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 && (*cfgDictionary)("ENABLED") != NULL)
boolean ConnectivityManager::connectToSTA()
{
//STATION PART
CFGFileParser cfgFileParserSTA(*_sdCardManager, STA_CFG_FILE);
CFGDictionary<CFGParameterValue> *cfgDictionary = (CFGDictionary<CFGParameterValue> *) cfgFileParserSTA.parseFile();
boolean toBeReturned(true);
if(cfgDictionary != NULL)
{
if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("ENABLED") != NULL)
{ {
if((*cfgDictionary)("ENABLED")->booleanValue()) 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())) if(!begin((*cfgDictionary)("SSID")->stringValue(), (*cfgDictionary)("PASSWORD")->stringValue()))
_error &= AP_SETUP_ERR;
}
delete cfgDictionary;
}
else
{
if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR;
delete cfgDictionary;
}
//STATION PART
CFGFileParser cfgFileParserSTA(sdCardManager, STA_CFG_FILE);
cfgDictionary = (CFGDictionary<CFGParameterValue> *) cfgFileParserSTA.parseFile();
if(cfgDictionary != NULL)
{
if((*cfgDictionary)("SSID") != NULL && (*cfgDictionary)("PASSWORD") != NULL && (*cfgDictionary)("ENABLED") != NULL)
{
if((*cfgDictionary)("ENABLED")->booleanValue())
{ {
if(!begin((*cfgDictionary)("SSID")->stringValue(), (*cfgDictionary)("PASSWORD")->stringValue())) _error &= AP_SETUP_ERR;
_error &= AP_SETUP_ERR; toBeReturned = false;
} }
} }
delete cfgDictionary; else
enableSTA(false);
} }
else
toBeReturned = false;
delete cfgDictionary;
} }
else
toBeReturned = false;
return toBeReturned;
}
boolean ConnectivityManager::startAP()
{
CFGFileParser cfgFileParser(*_sdCardManager, AP_CFG_FILE);
CFGDictionary<CFGParameterValue> *cfgDictionary = (CFGDictionary<CFGParameterValue> *) cfgFileParser.parseFile();
boolean toBeReturned(true);
if(cfgDictionary == NULL)
{
if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR;
toBeReturned = false;
}
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;
toBeReturned = false;
}
}
else
enableAP(false);
delete cfgDictionary;
}
else
{
if(!softAP("ESP8266SwissArmyBoard", NULL, 1, false, 8))_error &= AP_SETUP_ERR;
delete cfgDictionary;
toBeReturned = false;
}
return toBeReturned;
} }
boolean ConnectivityManager::enableSTAAndAP(boolean enabled) boolean ConnectivityManager::enableSTAAndAP(boolean enabled)

View File

@ -18,6 +18,8 @@ class ConnectivityManager : public ESP8266WiFiClass
boolean enableSTAAndAP(boolean enable); boolean enableSTAAndAP(boolean enable);
boolean isSTAEnabled(); boolean isSTAEnabled();
boolean isAPEnabled(); boolean isAPEnabled();
boolean connectToSTA();
boolean startAP();
unsigned char RSSIPercent(); unsigned char RSSIPercent();
unsigned char getError() const; unsigned char getError() const;