Skip to content

Commit 94409d0

Browse files
committed
refactored code that EEPROM does not permanentaly reserves 2048 bytes of RAM
1 parent ff191ac commit 94409d0

File tree

1 file changed

+52
-65
lines changed

1 file changed

+52
-65
lines changed

src/ESP_WiFiManager_Lite.h

Lines changed: 52 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -711,8 +711,6 @@ class ESP_WiFiManager_Lite
711711

712712
hadConfigData = getConfigData();
713713

714-
isForcedConfigPortal = isForcedCP();
715-
716714
//// New DRD/MRD ////
717715
// noConfigPortal when getConfigData() OK and no MRD/DRD'ed
718716
if (hadConfigData && noConfigPortal && (!isForcedConfigPortal) )
@@ -1168,16 +1166,14 @@ class ESP_WiFiManager_Lite
11681166
memset(&ESP_WM_LITE_config, 0, sizeof(ESP_WM_LITE_config));
11691167

11701168
#if USE_DYNAMIC_PARAMETERS
1171-
11721169
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
11731170
{
11741171
// Actual size of pdata is [maxlen + 1]
11751172
memset(myMenuItems[i].pdata, 0, myMenuItems[i].maxlen + 1);
11761173
}
1177-
11781174
#endif
11791175

1180-
saveConfigData();
1176+
saveAllConfigData();
11811177
}
11821178

11831179
//////////////////////////////////////////////
@@ -1521,22 +1517,22 @@ class ESP_WiFiManager_Lite
15211517
{
15221518
#if REQUIRE_ONE_SET_SSID_PW
15231519

1524-
// If SSID ="blank" or NULL, or PWD length < 8 (as required by standard) => return false
1520+
// If SSID = "blank" or NULL, or PWD length < 8 (as required by standard) => return false
15251521
// Only need 1 set of valid SSID/PWD
1526-
if (!( ( ( strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG))
1527-
&& strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid) > 0 ) &&
1528-
( strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw) >= PASSWORD_MIN_LEN ) ) ||
1529-
( ( strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG))
1530-
&& strlen(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid) > 0 ) &&
1531-
( strlen(ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw) >= PASSWORD_MIN_LEN ) ) ))
1522+
if (!( ( strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) &&
1523+
( strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid) > 0 ) ) &&
1524+
( strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw) >= PASSWORD_MIN_LEN ) ) ||
1525+
( strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) &&
1526+
( strlen(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid) > 0 ) &&
1527+
( strlen(ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw) >= PASSWORD_MIN_LEN ) ) )
15321528
#else
15331529

1534-
// If SSID ="blank" or NULL, or PWD length < 8 (as required by standard) => invalid set
1530+
// If SSID = "blank" or NULL, or PWD length < 8 (as required by standard) => invalid set
15351531
// Need both sets of valid SSID/PWD
1536-
if ( !strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG) ) ||
1537-
!strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw, WM_NO_CONFIG, strlen(WM_NO_CONFIG) ) ||
1538-
!strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG) ) ||
1539-
!strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw, WM_NO_CONFIG, strlen(WM_NO_CONFIG) ) ||
1532+
if ( !strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) ||
1533+
!strncmp(ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) ||
1534+
!strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) ||
1535+
!strncmp(ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw, WM_NO_CONFIG, strlen(WM_NO_CONFIG)) ||
15401536
( strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_ssid) == 0 ) ||
15411537
( strlen(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid) == 0 ) ||
15421538
( strlen(ESP_WM_LITE_config.WiFi_Creds[0].wifi_pw) < PASSWORD_MIN_LEN ) ||
@@ -1915,7 +1911,7 @@ class ESP_WiFiManager_Lite
19151911
strcpy(ESP_WM_LITE_config.header, ESP_WM_LITE_BOARD_TYPE);
19161912

19171913
// Including config and dynamic data, and assume valid
1918-
saveConfigData();
1914+
saveAllConfigData();
19191915

19201916
ESP_WML_LOGERROR(F("======= Start Loaded Config Data ======="));
19211917
displayConfigData(ESP_WM_LITE_config);
@@ -1932,13 +1928,11 @@ class ESP_WiFiManager_Lite
19321928
hadConfigData = false;
19331929

19341930
#if ESP8266
1935-
19361931
// Format SPIFFS if not yet
19371932
if (!FileFS.begin())
19381933
{
19391934
FileFS.format();
19401935
#else
1941-
19421936
// Format SPIFFS if not yet
19431937
if (!FileFS.begin(true))
19441938
{
@@ -1956,6 +1950,8 @@ class ESP_WiFiManager_Lite
19561950
}
19571951
}
19581952

1953+
isForcedConfigPortal = isForcedCP();
1954+
19591955
if (LOAD_DEFAULT_CONFIG_DATA)
19601956
{
19611957
// Load Config Data from Sketch
@@ -2118,8 +2114,9 @@ class ESP_WiFiManager_Lite
21182114

21192115
ESP_WML_LOGINFO(F("setForcedCP"));
21202116

2117+
EEPROM.begin(EEPROM_SIZE);
21212118
EEPROM.put(CONFIG_EEPROM_START + CONFIG_DATA_SIZE, readForcedConfigPortalFlag);
2122-
EEPROM.commit();
2119+
EEPROM.end();
21232120
}
21242121

21252122
//////////////////////////////////////////////
@@ -2128,12 +2125,14 @@ class ESP_WiFiManager_Lite
21282125
{
21292126
ESP_WML_LOGINFO(F("clearForcedCP"));
21302127

2128+
EEPROM.begin(EEPROM_SIZE);
21312129
EEPROM.put(CONFIG_EEPROM_START + CONFIG_DATA_SIZE, 0);
2132-
EEPROM.commit();
2130+
EEPROM.end();
21332131
}
21342132

21352133
//////////////////////////////////////////////
21362134

2135+
// Is ConfigPortal forced? EEPROM must be started before using EEPROM.begin()!
21372136
bool isForcedCP()
21382137
{
21392138
uint32_t readForcedConfigPortalFlag;
@@ -2166,6 +2165,8 @@ class ESP_WiFiManager_Lite
21662165

21672166
#if USE_DYNAMIC_PARAMETERS
21682167

2168+
// Get DynamicData from EEPROM buffer. EEPROM must be started before using EEPROM.begin()!
2169+
// Return true if checksum matches and data are read.
21692170
bool EEPROM_getDynamicData()
21702171
{
21712172
if (hadDynamicData)
@@ -2186,7 +2187,7 @@ class ESP_WiFiManager_Lite
21862187
}
21872188
}
21882189
EEPROM.get(offset, readCheckSum);
2189-
ESP_WML_LOGINFO3(F("CrCCsum=0x"), String(checkSum, HEX), F(",CrRCsum=0x"), String(readCheckSum, HEX));
2190+
ESP_WML_LOGINFO3(F("CrR:CCsum=0x"), String(checkSum, HEX), F(",CrR:RCsum=0x"), String(readCheckSum, HEX));
21902191

21912192
if (checkSum != readCheckSum)
21922193
{
@@ -2209,7 +2210,7 @@ class ESP_WiFiManager_Lite
22092210
*_pointer = EEPROM.read(offset);
22102211
}
22112212

2212-
ESP_WML_LOGDEBUG3(F("CR:pdata="), myMenuItems[i].pdata, F(",len="), myMenuItems[i].maxlen);
2213+
ESP_WML_LOGDEBUG3(F("CrR:pdata="), myMenuItems[i].pdata, F(",len="), myMenuItems[i].maxlen);
22132214
}
22142215

22152216
hadDynamicData = true;
@@ -2218,6 +2219,7 @@ class ESP_WiFiManager_Lite
22182219

22192220
//////////////////////////////////////////////
22202221

2222+
// Put DynamicData into EEPROM buffer, but do not commit. EEPROM must be started before using EEPROM.begin()!
22212223
void EEPROM_putDynamicData()
22222224
{
22232225
int checkSum = 0;
@@ -2226,21 +2228,17 @@ class ESP_WiFiManager_Lite
22262228
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
22272229
{
22282230
char* _pointer = myMenuItems[i].pdata;
2229-
2230-
ESP_WML_LOGDEBUG3(F("CW:pdata="), myMenuItems[i].pdata, F(",len="), myMenuItems[i].maxlen);
2231+
ESP_WML_LOGDEBUG3(F("CrW:pdata="), myMenuItems[i].pdata, F(",len="), myMenuItems[i].maxlen);
22312232

22322233
for (uint16_t j = 0; j < myMenuItems[i].maxlen; j++, _pointer++, offset++)
22332234
{
22342235
EEPROM.write(offset, *_pointer);
2235-
22362236
checkSum += *_pointer;
22372237
}
22382238
}
22392239

22402240
EEPROM.put(offset, checkSum);
2241-
//EEPROM.commit();
2242-
2243-
ESP_WML_LOGINFO1(F("CrWCSum=0x"), String(checkSum, HEX));
2241+
ESP_WML_LOGINFO1(F("CrW:CSum=0x"), String(checkSum, HEX));
22442242
}
22452243
#endif
22462244

@@ -2252,9 +2250,9 @@ class ESP_WiFiManager_Lite
22522250
ESP_WM_LITE_config.checkSum = calChecksum;
22532251
ESP_WML_LOGINFO3(F("SaveEEPROM,sz="), EEPROM_SIZE, F(",CSum=0x"), String(calChecksum, HEX))
22542252

2253+
EEPROM.begin(EEPROM_SIZE);
22552254
EEPROM.put(CONFIG_EEPROM_START, ESP_WM_LITE_config);
2256-
2257-
EEPROM.commit();
2255+
EEPROM.end();
22582256
}
22592257

22602258
//////////////////////////////////////////////
@@ -2265,13 +2263,12 @@ class ESP_WiFiManager_Lite
22652263
ESP_WM_LITE_config.checkSum = calChecksum;
22662264
ESP_WML_LOGINFO3(F("SaveEEPROM,sz="), EEPROM_SIZE, F(",CSum=0x"), String(calChecksum, HEX))
22672265

2266+
EEPROM.begin(EEPROM_SIZE);
22682267
EEPROM.put(CONFIG_EEPROM_START, ESP_WM_LITE_config);
2269-
22702268
#if USE_DYNAMIC_PARAMETERS
22712269
EEPROM_putDynamicData();
22722270
#endif
2273-
2274-
EEPROM.commit();
2271+
EEPROM.end();
22752272
}
22762273

22772274
//////////////////////////////////////////////
@@ -2283,7 +2280,7 @@ class ESP_WiFiManager_Lite
22832280
strcpy(ESP_WM_LITE_config.header, ESP_WM_LITE_BOARD_TYPE);
22842281

22852282
// Including config and dynamic data, and assume valid
2286-
saveConfigData();
2283+
saveAllConfigData();
22872284

22882285
ESP_WML_LOGINFO(F("======= Start Loaded Config Data ======="));
22892286
displayConfigData(ESP_WM_LITE_config);
@@ -2298,48 +2295,39 @@ class ESP_WiFiManager_Lite
22982295

22992296
hadConfigData = false;
23002297

2301-
EEPROM.begin(EEPROM_SIZE);
2302-
ESP_WML_LOGINFO1(F("EEPROMsz:"), EEPROM_SIZE);
2303-
23042298
if (LOAD_DEFAULT_CONFIG_DATA)
23052299
{
2306-
// Load Config Data from Sketch
2307-
memcpy(&ESP_WM_LITE_config, &defaultConfig, sizeof(ESP_WM_LITE_config));
2308-
strcpy(ESP_WM_LITE_config.header, ESP_WM_LITE_BOARD_TYPE);
2309-
2310-
// Including config and dynamic data, and assume valid
2311-
saveAllConfigData();
2312-
2313-
ESP_WML_LOGINFO(F("======= Start Loaded Config Data ======="));
2314-
displayConfigData(ESP_WM_LITE_config);
2315-
2300+
loadAndSaveDefaultConfigData();
23162301
// Don't need Config Portal anymore
23172302
return true;
23182303
}
23192304
else
23202305
{
2306+
EEPROM.begin(EEPROM_SIZE);
2307+
ESP_WML_LOGINFO1(F("EEPROMsz:"), EEPROM_SIZE);
23212308
// Load data from EEPROM
23222309
EEPROM.get(CONFIG_EEPROM_START, ESP_WM_LITE_config);
2310+
#if USE_DYNAMIC_PARAMETERS
2311+
// Load dynamic data from EEPROM
2312+
dynamicDataValid = EEPROM_getDynamicData();
2313+
#endif
2314+
isForcedConfigPortal = isForcedCP();
2315+
EEPROM.end();
23232316

23242317
if ( !isWiFiConfigValid() )
23252318
{
2326-
// If SSID, PW ="blank" or NULL, stay in config mode forever until having config Data.
2319+
// If SSID, PW = "blank" or NULL, stay in config mode forever until having config Data.
23272320
return false;
23282321
}
23292322

23302323
ESP_WML_LOGINFO(F("======= Start Stored Config Data ======="));
23312324
displayConfigData(ESP_WM_LITE_config);
23322325

23332326
calChecksum = calcChecksum();
2334-
23352327
ESP_WML_LOGINFO3(F("CCSum=0x"), String(calChecksum, HEX),
23362328
F(",RCSum=0x"), String(ESP_WM_LITE_config.checkSum, HEX));
23372329

23382330
#if USE_DYNAMIC_PARAMETERS
2339-
2340-
// Load dynamic data from EEPROM
2341-
dynamicDataValid = EEPROM_getDynamicData();
2342-
23432331
if (dynamicDataValid)
23442332
{
23452333
ESP_WML_LOGINFO(F("Valid Stored Dynamic Data"));
@@ -2348,7 +2336,6 @@ class ESP_WiFiManager_Lite
23482336
{
23492337
ESP_WML_LOGINFO(F("Invalid Stored Dynamic Data. Ignored"));
23502338
}
2351-
23522339
#endif
23532340
}
23542341

@@ -2383,7 +2370,7 @@ class ESP_WiFiManager_Lite
23832370
}
23842371
else if ( !isWiFiConfigValid() )
23852372
{
2386-
// If SSID, PW ="blank" or NULL, stay in config mode forever until having config Data.
2373+
// If SSID, PW = "blank" or NULL, stay in config mode forever until having config Data.
23872374
return false;
23882375
}
23892376

@@ -2525,7 +2512,7 @@ class ESP_WiFiManager_Lite
25252512
ListOfSSIDs = String(FPSTR(ESP_WM_LITE_OPTION_START)) + String(FPSTR(ESP_WM_LITE_NO_NETWORKS_FOUND)) + String(FPSTR(ESP_WM_LITE_OPTION_END));
25262513

25272514
pitem = FPSTR(ESP_WM_LITE_HTML_HEAD_END);
2528-
ESP_WML_LOGERROR3("1 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2515+
ESP_WML_LOGERROR3("1 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25292516
#if MANUAL_SSID_INPUT_ALLOWED
25302517
pitem.replace("[[input_id]]", "<input id='id' list='SSIDs'>" + String(FPSTR(ESP_WM_LITE_DATALIST_START)) + "'SSIDs'>" +
25312518
ListOfSSIDs + FPSTR(ESP_WM_LITE_DATALIST_END));
@@ -2535,9 +2522,9 @@ ESP_WML_LOGERROR3("1 pitem.capacity():", String(pitem.capacity()), " pitem.lengt
25352522
ESP_WML_LOGDEBUG1(F("pitem:"), pitem);
25362523
#else
25372524
pitem.replace(F("[[input_id]]"), F("<select id='id'>") + ListOfSSIDs + String(FPSTR(ESP_WM_LITE_SELECT_END)));
2538-
ESP_WML_LOGERROR3("2 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2525+
ESP_WML_LOGERROR3("2 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25392526
pitem.replace(F("[[input_id1]]"), F("<select id='id1'>") + ListOfSSIDs + String(FPSTR(ESP_WM_LITE_SELECT_END)));
2540-
ESP_WML_LOGERROR3("3 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2527+
ESP_WML_LOGERROR3("3 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25412528
#endif
25422529

25432530
root_html_template += pitem + FPSTR(ESP_WM_LITE_FLDSET_START);
@@ -2556,12 +2543,12 @@ ESP_WML_LOGERROR3("3 pitem.capacity():", String(pitem.capacity()), " pitem.lengt
25562543
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
25572544
{
25582545
pitem = FPSTR(ESP_WM_LITE_HTML_PARAM);
2559-
ESP_WML_LOGERROR3("4 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2546+
ESP_WML_LOGERROR3("4 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25602547

25612548
pitem.replace("{b}", myMenuItems[i].displayName);
25622549
pitem.replace("{v}", myMenuItems[i].id);
25632550
pitem.replace("{i}", myMenuItems[i].id);
2564-
ESP_WML_LOGERROR3("5 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2551+
ESP_WML_LOGERROR3("5 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25652552

25662553
root_html_template += pitem;
25672554
}
@@ -2575,7 +2562,7 @@ ESP_WML_LOGERROR3("5 pitem.capacity():", String(pitem.capacity()), " pitem.lengt
25752562
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
25762563
{
25772564
pitem = FPSTR(ESP_WM_LITE_HTML_SCRIPT_ITEM);
2578-
ESP_WML_LOGERROR3("6 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2565+
ESP_WML_LOGERROR3("6 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO del log
25792566

25802567
pitem.replace("{d}", myMenuItems[i].id);
25812568

@@ -2584,9 +2571,9 @@ ESP_WML_LOGERROR3("6 pitem.capacity():", String(pitem.capacity()), " pitem.lengt
25842571

25852572
#endif
25862573

2587-
ESP_WML_LOGERROR3("7 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO
2574+
ESP_WML_LOGERROR3("7 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO del log
25882575
root_html_template += String(FPSTR(ESP_WM_LITE_HTML_SCRIPT_END)) + FPSTR(ESP_WM_LITE_HTML_END);
2589-
ESP_WML_LOGERROR3("8 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO
2576+
ESP_WML_LOGERROR3("8 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO del log
25902577

25912578
return;
25922579
}

0 commit comments

Comments
 (0)