Hi,
I'm using your lib. Good piece of work.
But I slightly modified it to reduce high RAM utilisation.
The parameters should be rather covered by 'F' macro like below:
String params = F("["
"{"
"'name':'XYZ',"
"'label':'some label txt',"
"'type':");
params += String(INPUTPASSWORD);
params += F(","
"'default':'ABCD'"
"},"
"{"
"'name':'ssid',"
"'label':'some label txt',"
"'type':");
params += String(INPUTTEXT);
params += F(","
"'default':'DFLT'"
"},"
"{"
"'name':'pwd',"
"'label':'some label txt',"
"'type':");
params += String(INPUTPASSWORD);
params += F(","
"'default':'my secret'"
"},"
...and so on
Also in WebConfig.cpp all const char should be defined with PROGMEM attribute:
const char HTML_START[] PROGMEM =
"<!DOCTYPE HTML>\n"
"<html>\n"
"<head>\n"
...and then read by strcpy_P(_buf, HTML_START); instead of strcpy.
All literals covered by F macro, like:
if (server->hasArg(F("SAVE"))
instead of
if (server->hasArg("SAVE")
Don't forget to #include "progmem.h"
I also moved declaration huge _buf variable from private section of header to the function body void WebConfig::handleFormRequest to make it automatic var.
Above modifications can gain about 3k precious RAM for other purposes.
Just look at the ESP.getFreeHeap() value before and after such modification.
Hi,
I'm using your lib. Good piece of work.
But I slightly modified it to reduce high RAM utilisation.
The parameters should be rather covered by 'F' macro like below:
...and so on
Also in WebConfig.cpp all const char should be defined with PROGMEM attribute:
...and then read by strcpy_P(_buf, HTML_START); instead of strcpy.
All literals covered by F macro, like:
if (server->hasArg(F("SAVE"))instead of
if (server->hasArg("SAVE")Don't forget to #include "progmem.h"
I also moved declaration huge _buf variable from private section of header to the function body void WebConfig::handleFormRequest to make it automatic var.
Above modifications can gain about 3k precious RAM for other purposes.
Just look at the ESP.getFreeHeap() value before and after such modification.