Merge branch 'master' into development

conflicts resolved
This commit is contained in:
Shawn A
2018-01-30 13:31:47 -06:00
2 changed files with 31 additions and 11 deletions
+27 -8
View File
@@ -76,19 +76,26 @@ const char* WiFiManagerParameter::getCustomHTML() {
return _customHTML;
}
void WiFiManager::addParameter(WiFiManagerParameter *p) {
if(_paramsCount + 1 > WIFI_MANAGER_MAX_PARAMS)
{
//Max parameters exceeded!
DEBUG_WM("WIFI_MANAGER_MAX_PARAMS exceeded, increase number (in WiFiManager.h) before adding more parameters!");
DEBUG_WM("Skipping parameter with ID:");
DEBUG_WM(p->getID());
return;
bool WiFiManager::addParameter(WiFiManagerParameter *p) {
if(_paramsCount + 1 > _max_params){
// rezise the params array
_max_params += WIFI_MANAGER_MAX_PARAMS;
DEBUG_WM(F("Increasing _max_params to:"));
DEBUG_WM(_max_params);
WiFiManagerParameter** new_params = (WiFiManagerParameter**)realloc(_params, _max_params * sizeof(WiFiManagerParameter*));
if (new_params != NULL) {
_params = new_params;
} else {
DEBUG_WM("ERROR: failed to realloc params, size not increased!");
return false;
}
}
_params[_paramsCount] = p;
_paramsCount++;
DEBUG_WM("Adding parameter");
DEBUG_WM(p->getID());
return true;
}
// constructors
@@ -100,12 +107,24 @@ WiFiManager::WiFiManager():_debugPort(Serial) {
if(_debug) debugPlatformInfo();
_usermode = WiFi.getMode();
WiFi.persistent(false); // disable persistent so scannetworks and mode switching do not cause overwrites
// parameters
_max_params = WIFI_MANAGER_MAX_PARAMS;
_params = (WiFiManagerParameter**)malloc(_max_params * sizeof(WiFiManagerParameter*));
}
// destructor
WiFiManager::~WiFiManager() {
if(_userpersistent) WiFi.persistent(true); // reenable persistent, there is no getter we rely on _userpersistent
WiFi.mode(_usermode);
// parameters
if (_params != NULL){
DEBUG_WM(F("freeing allocated params!"));
free(_params);
}
DEBUG_WM(F("unloading"));
}