Skip to content

Commit 0bc8029

Browse files
committed
do EEPROM.begin() and end() in extLoadDynamicData() and extSaveDynamicData(), only read DynamicData if checksum is ok, do not init dynamic data with "blank"
1 parent 763bc1b commit 0bc8029

File tree

1 file changed

+39
-35
lines changed

1 file changed

+39
-35
lines changed

src/ESP_WiFiManager_Lite.h

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1328,7 +1328,10 @@ class ESP_WiFiManager_Lite
13281328

13291329
#else // #if ( USE_LITTLEFS || USE_SPIFFS )
13301330

1331-
return EEPROM_getDynamicData();
1331+
EEPROM.begin(EEPROM_SIZE);
1332+
bool valid = EEPROM_getDynamicData();
1333+
EEPROM.end();
1334+
return valid;
13321335

13331336
#endif // #if ( USE_LITTLEFS || USE_SPIFFS )
13341337
}
@@ -1355,7 +1358,9 @@ class ESP_WiFiManager_Lite
13551358

13561359
#else // #if ( USE_LITTLEFS || USE_SPIFFS )
13571360

1361+
EEPROM.begin(EEPROM_SIZE);
13581362
EEPROM_putDynamicData();
1363+
EEPROM.end();
13591364

13601365
#endif // #if ( USE_LITTLEFS || USE_SPIFFS )
13611366
}
@@ -2313,10 +2318,32 @@ class ESP_WiFiManager_Lite
23132318

23142319
bool EEPROM_getDynamicData()
23152320
{
2321+
if (hadDynamicData)
2322+
{
2323+
return true;
2324+
}
2325+
23162326
int readCheckSum;
23172327
int checkSum = 0;
23182328
uint16_t offset = CONFIG_EEPROM_START + sizeof(ESP_WM_LITE_config) + FORCED_CONFIG_PORTAL_FLAG_DATA_SIZE;
23192329

2330+
// calculate ckecksum first, before overwriting myMenuItems buffer
2331+
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
2332+
{
2333+
for (uint16_t j = 0; j < myMenuItems[i].maxlen; j++, offset++)
2334+
{
2335+
checkSum += EEPROM.read(offset);
2336+
}
2337+
}
2338+
EEPROM.get(offset, readCheckSum);
2339+
ESP_WML_LOGINFO3(F("CrCCsum=0x"), String(checkSum, HEX), F(",CrRCsum=0x"), String(readCheckSum, HEX));
2340+
2341+
if (checkSum != readCheckSum)
2342+
{
2343+
return false;
2344+
}
2345+
2346+
offset = CONFIG_EEPROM_START + sizeof(ESP_WM_LITE_config) + FORCED_CONFIG_PORTAL_FLAG_DATA_SIZE;
23202347
totalDataSize = sizeof(ESP_WM_LITE_config) + sizeof(readCheckSum);
23212348

23222349
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
@@ -2330,22 +2357,12 @@ class ESP_WiFiManager_Lite
23302357
for (uint16_t j = 0; j < myMenuItems[i].maxlen; j++, _pointer++, offset++)
23312358
{
23322359
*_pointer = EEPROM.read(offset);
2333-
2334-
checkSum += *_pointer;
23352360
}
23362361

23372362
ESP_WML_LOGDEBUG3(F("CR:pdata="), myMenuItems[i].pdata, F(",len="), myMenuItems[i].maxlen);
23382363
}
23392364

2340-
EEPROM.get(offset, readCheckSum);
2341-
2342-
ESP_WML_LOGINFO3(F("CrCCsum=0x"), String(checkSum, HEX), F(",CrRCsum=0x"), String(readCheckSum, HEX));
2343-
2344-
if ( checkSum != readCheckSum)
2345-
{
2346-
return false;
2347-
}
2348-
2365+
hadDynamicData = true;
23492366
return true;
23502367
}
23512368

@@ -2505,30 +2522,10 @@ class ESP_WiFiManager_Lite
25052522
strcpy(ESP_WM_LITE_config.WiFi_Creds[1].wifi_ssid, WM_NO_CONFIG);
25062523
strcpy(ESP_WM_LITE_config.WiFi_Creds[1].wifi_pw, WM_NO_CONFIG);
25072524
strcpy(ESP_WM_LITE_config.board_name, WM_NO_CONFIG);
2508-
2509-
#if USE_DYNAMIC_PARAMETERS
2510-
2511-
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
2512-
{
2513-
// Actual size of pdata is [maxlen + 1]
2514-
memset(myMenuItems[i].pdata, 0, myMenuItems[i].maxlen + 1);
2515-
strncpy(myMenuItems[i].pdata, WM_NO_CONFIG, myMenuItems[i].maxlen);
2516-
}
2517-
2518-
#endif
25192525
}
25202526

25212527
strcpy(ESP_WM_LITE_config.header, ESP_WM_LITE_BOARD_TYPE);
25222528

2523-
#if USE_DYNAMIC_PARAMETERS
2524-
2525-
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
2526-
{
2527-
ESP_WML_LOGDEBUG3(F("g:myMenuItems["), i, F("]="), myMenuItems[i].pdata );
2528-
}
2529-
2530-
#endif
2531-
25322529
saveAllConfigData();
25332530
displayConfigData(ESP_WM_LITE_config);
25342531

@@ -2678,7 +2675,7 @@ class ESP_WiFiManager_Lite
26782675
ListOfSSIDs = String(FPSTR(ESP_WM_LITE_OPTION_START)) + String(FPSTR(ESP_WM_LITE_NO_NETWORKS_FOUND)) + String(FPSTR(ESP_WM_LITE_OPTION_END));
26792676

26802677
pitem = FPSTR(ESP_WM_LITE_HTML_HEAD_END);
2681-
2678+
ESP_WML_LOGERROR3("1 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
26822679
#if MANUAL_SSID_INPUT_ALLOWED
26832680
pitem.replace("[[input_id]]", "<input id='id' list='SSIDs'>" + String(FPSTR(ESP_WM_LITE_DATALIST_START)) + "'SSIDs'>" +
26842681
ListOfSSIDs + FPSTR(ESP_WM_LITE_DATALIST_END));
@@ -2687,8 +2684,10 @@ class ESP_WiFiManager_Lite
26872684
ListOfSSIDs + FPSTR(ESP_WM_LITE_DATALIST_END));
26882685
ESP_WML_LOGDEBUG1(F("pitem:"), pitem);
26892686
#else
2690-
pitem.replace("[[input_id]]", "<select id='id'>" + ListOfSSIDs + FPSTR(ESP_WM_LITE_SELECT_END));
2691-
pitem.replace("[[input_id1]]", "<select id='id1'>" + ListOfSSIDs + FPSTR(ESP_WM_LITE_SELECT_END));
2687+
pitem.replace(F("[[input_id]]"), F("<select id='id'>") + ListOfSSIDs + String(FPSTR(ESP_WM_LITE_SELECT_END)));
2688+
ESP_WML_LOGERROR3("2 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
2689+
pitem.replace(F("[[input_id1]]"), F("<select id='id1'>") + ListOfSSIDs + String(FPSTR(ESP_WM_LITE_SELECT_END)));
2690+
ESP_WML_LOGERROR3("3 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
26922691
#endif
26932692

26942693
root_html_template += pitem + FPSTR(ESP_WM_LITE_FLDSET_START);
@@ -2707,10 +2706,12 @@ class ESP_WiFiManager_Lite
27072706
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
27082707
{
27092708
pitem = FPSTR(ESP_WM_LITE_HTML_PARAM);
2709+
ESP_WML_LOGERROR3("4 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
27102710

27112711
pitem.replace("{b}", myMenuItems[i].displayName);
27122712
pitem.replace("{v}", myMenuItems[i].id);
27132713
pitem.replace("{i}", myMenuItems[i].id);
2714+
ESP_WML_LOGERROR3("5 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
27142715

27152716
root_html_template += pitem;
27162717
}
@@ -2724,6 +2725,7 @@ class ESP_WiFiManager_Lite
27242725
for (uint16_t i = 0; i < NUM_MENU_ITEMS; i++)
27252726
{
27262727
pitem = FPSTR(ESP_WM_LITE_HTML_SCRIPT_ITEM);
2728+
ESP_WML_LOGERROR3("6 pitem.capacity():", String(pitem.capacity()), " pitem.length():", String(pitem.length())); // TODO
27272729

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

@@ -2732,7 +2734,9 @@ class ESP_WiFiManager_Lite
27322734

27332735
#endif
27342736

2737+
ESP_WML_LOGERROR3("7 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO
27352738
root_html_template += String(FPSTR(ESP_WM_LITE_HTML_SCRIPT_END)) + FPSTR(ESP_WM_LITE_HTML_END);
2739+
ESP_WML_LOGERROR3("8 root_html_template.capacity():", String(root_html_template.capacity()), " root_html_template.length():", String(root_html_template.length())); // TODO
27362740

27372741
return;
27382742
}

0 commit comments

Comments
 (0)