mirror of
https://github.com/alexhopeoconnor/WiFiManager.git
synced 2026-10-18 08:51:43 +10:00
Merge branch 'development' of https://github.com/tzapu/WiFiManager into development
This commit is contained in:
+31
-12
@@ -59,16 +59,25 @@ WiFiManagerParameter::~WiFiManagerParameter() {
|
||||
if (_value != NULL) {
|
||||
delete[] _value;
|
||||
}
|
||||
_length=0; // setting length 0, ideally the entire parameter should be removed, or added to wifimanager scope so it follows
|
||||
}
|
||||
|
||||
void WiFiManagerParameter::setValue(const char *defaultValue, int length) {
|
||||
_length = length;
|
||||
_value = new char[length + 1];
|
||||
for (int i = 0; i < length + 1; i++) {
|
||||
_length = length;
|
||||
int deflength = strlen(defaultValue); // length actual
|
||||
// use the defult length if it's longer,
|
||||
// @todo consider it might be useful to fail, so user knows they were wrong
|
||||
if(_length < length){
|
||||
// Serial.println("defaultValue length mismatch");
|
||||
_length = deflength;
|
||||
}
|
||||
_value = new char[_length + 1];
|
||||
for (int i = 0; i < _length + 1; i++) {
|
||||
_value[i] = 0;
|
||||
}
|
||||
if (defaultValue != NULL) {
|
||||
strncpy(_value, defaultValue, length + 1); // length+1 due to null terminated string
|
||||
strncpy(_value, defaultValue, _length);
|
||||
_value[_length] = '\0'; // explicit null
|
||||
}
|
||||
}
|
||||
const char* WiFiManagerParameter::getValue() {
|
||||
@@ -654,6 +663,8 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
|
||||
|
||||
DEBUG_WM(DEBUG_VERBOSE,F("Connection result:"),getWLStatusString(connRes));
|
||||
|
||||
// WPS enabled? https://github.com/esp8266/Arduino/pull/4889
|
||||
#ifdef NO_EXTRA_4K_HEAP
|
||||
// do WPS, if WPS options enabled and not connected and no password was supplied
|
||||
// @todo this seems like wrong place for this, is it a fallback or option?
|
||||
if (_tryWPS && connRes != WL_CONNECTED && pass == "") {
|
||||
@@ -661,6 +672,7 @@ uint8_t WiFiManager::connectWifi(String ssid, String pass) {
|
||||
// should be connected at the end of WPS
|
||||
connRes = waitForConnectResult();
|
||||
}
|
||||
#endif
|
||||
|
||||
if(connRes != WL_SCAN_COMPLETED){
|
||||
updateConxResult(connRes);
|
||||
@@ -782,6 +794,8 @@ uint8_t WiFiManager::waitForConnectResult(uint16_t timeout) {
|
||||
return status;
|
||||
}
|
||||
|
||||
// WPS enabled? https://github.com/esp8266/Arduino/pull/4889
|
||||
#ifdef NO_EXTRA_4K_HEAP
|
||||
void WiFiManager::startWPS() {
|
||||
DEBUG_WM(F("START WPS"));
|
||||
#ifdef ESP8266
|
||||
@@ -791,11 +805,11 @@ void WiFiManager::startWPS() {
|
||||
#endif
|
||||
DEBUG_WM(F("END WPS"));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
String WiFiManager::getHTTPHead(String title){
|
||||
String page;
|
||||
page += FPSTR(HTTP_HEAD);
|
||||
page += FPSTR(HTTP_HEAD_START);
|
||||
page.replace(FPSTR(T_v), title);
|
||||
page += FPSTR(HTTP_SCRIPT);
|
||||
page += FPSTR(HTTP_STYLE);
|
||||
@@ -1073,7 +1087,7 @@ String WiFiManager::getParamOut(){
|
||||
|
||||
String HTTP_PARAM_temp = FPSTR(HTTP_FORM_LABEL);
|
||||
HTTP_PARAM_temp += FPSTR(HTTP_FORM_PARAM);
|
||||
bool tok_I = HTTP_PARAM_temp.indexOf(FPSTR(T_i)) > 0;
|
||||
bool tok_I = HTTP_PARAM_temp.indexOf(FPSTR(T_I)) > 0;
|
||||
bool tok_i = HTTP_PARAM_temp.indexOf(FPSTR(T_i)) > 0;
|
||||
bool tok_n = HTTP_PARAM_temp.indexOf(FPSTR(T_n)) > 0;
|
||||
bool tok_p = HTTP_PARAM_temp.indexOf(FPSTR(T_p)) > 0;
|
||||
@@ -1085,7 +1099,8 @@ String WiFiManager::getParamOut(){
|
||||
char parLength[5];
|
||||
// add the extra parameters to the form
|
||||
for (int i = 0; i < _paramsCount; i++) {
|
||||
if (_params[i] == NULL) {
|
||||
if (_params[i] == NULL || _params[i]->_length == 0) {
|
||||
DEBUG_WM(DEBUG_ERROR,"[ERROR] WiFiManagerParameter is out of scope");
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1108,7 +1123,7 @@ String WiFiManager::getParamOut(){
|
||||
|
||||
// if no ID use customhtml for item, else generate from param string
|
||||
if (_params[i]->getID() != NULL) {
|
||||
if(tok_I)pitem.replace(FPSTR(T_i), (String)FPSTR(S_parampre)+(String)i);
|
||||
if(tok_I)pitem.replace(FPSTR(T_I), (String)FPSTR(S_parampre)+(String)i);
|
||||
if(tok_i)pitem.replace(FPSTR(T_i), _params[i]->getID());
|
||||
if(tok_n)pitem.replace(FPSTR(T_n), _params[i]->getID());
|
||||
if(tok_p)pitem.replace(FPSTR(T_p), FPSTR(T_t));
|
||||
@@ -1181,7 +1196,7 @@ void WiFiManager::handleWifiSave() {
|
||||
page += FPSTR(HTTP_END);
|
||||
|
||||
server->sendHeader(FPSTR(HTTP_HEAD_CL), String(page.length()));
|
||||
server->sendHeader(HTTP_HEAD_CORS, HTTP_HEAD_CORS_ALLOW_ALL);
|
||||
server->sendHeader(FPSTR(HTTP_HEAD_CORS), FPSTR(HTTP_HEAD_CORS_ALLOW_ALL));
|
||||
server->send(200, FPSTR(HTTP_HEAD_CT), page);
|
||||
|
||||
DEBUG_WM(DEBUG_DEV,F("Sent wifi save page"));
|
||||
@@ -1216,9 +1231,13 @@ void WiFiManager::doParamSave(){
|
||||
break;
|
||||
}
|
||||
//read parameter from server
|
||||
String name = (String)FPSTR(S_parampre)+(String)i;
|
||||
String value;
|
||||
if(server->arg((String)FPSTR(S_parampre)+(String)i) != NULL) value = server->arg((String)FPSTR(S_parampre)+(String)i).c_str();
|
||||
else value = server->arg(_params[i]->getID()).c_str();
|
||||
if(server->hasArg(name)) {
|
||||
value = server->arg(name);
|
||||
} else {
|
||||
value = server->arg(_params[i]->getID());
|
||||
}
|
||||
|
||||
//store it in params array
|
||||
value.toCharArray(_params[i]->_value, _params[i]->_length+1); // length+1 null terminated
|
||||
|
||||
@@ -290,7 +290,9 @@ class WiFiManager
|
||||
int _staShowDns = 0; // ternary always show dns, only if not set in code, never(cannot change dns via web!)
|
||||
boolean _removeDuplicateAPs = true; // remove dup aps from wifiscan
|
||||
boolean _shouldBreakAfterConfig = false; // stop configportal on save failure
|
||||
#ifdef NO_EXTRA_4K_HEAP
|
||||
boolean _tryWPS = false; // try WPS on save failure, unsupported
|
||||
#endif
|
||||
boolean _configPortalIsBlocking = true; // configportal enters blocking loop
|
||||
boolean _enableCaptivePortal = true; // enable captive portal redirection
|
||||
boolean _userpersistent = true; // users preffered persistence to restore
|
||||
@@ -316,7 +318,9 @@ class WiFiManager
|
||||
void _end();
|
||||
|
||||
void setupConfigPortal();
|
||||
#ifdef NO_EXTRA_4K_HEAP
|
||||
void startWPS();
|
||||
#endif
|
||||
bool startAP();
|
||||
|
||||
uint8_t connectWifi(String ssid, String pass);
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@
|
||||
// #define WIFI_MANAGER_OVERRIDE_STRINGS
|
||||
// Copy and paste ALL of the const char lines below and modify to suit.
|
||||
|
||||
const char HTTP_HEAD[] PROGMEM = "<!DOCTYPE html><html lang='en'><head><meta name='format-detection' content='telephone=no'><meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'/><title>{v}</title>";
|
||||
const char HTTP_HEAD_START[] PROGMEM = "<!DOCTYPE html><html lang='en'><head><meta name='format-detection' content='telephone=no'><meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'/><title>{v}</title>";
|
||||
const char HTTP_SCRIPT[] PROGMEM = "<script>function c(l){document.getElementById('s').value=l.innerText||l.textContent;document.getElementById('p').focus();}</script>";
|
||||
const char HTTP_HEAD_END[] PROGMEM = "</head><body><div class='wrap'>";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user