-
Notifications
You must be signed in to change notification settings - Fork 22
Description
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.