diff --git a/ESP32_AP-Flasher/data/fonts/GillSC16.vlw b/ESP32_AP-Flasher/data/fonts/GillSC16.vlw
deleted file mode 100644
index 04ebc30c..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/GillSC16.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/GillSC20.vlw b/ESP32_AP-Flasher/data/fonts/GillSC20.vlw
deleted file mode 100644
index 80d75f5e..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/GillSC20.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw
index 8a8ea9df..b6630b64 100644
Binary files a/ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw and b/ESP32_AP-Flasher/data/fonts/bahnschrift20.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw
index 9c3ee829..fcb5a076 100644
Binary files a/ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw and b/ESP32_AP-Flasher/data/fonts/bahnschrift30.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw b/ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw
index 3c516de3..d083e07c 100644
Binary files a/ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw and b/ESP32_AP-Flasher/data/fonts/bahnschrift70.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib100.vlw b/ESP32_AP-Flasher/data/fonts/calibrib100.vlw
new file mode 100644
index 00000000..e4c2ce70
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/calibrib100.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib120.vlw b/ESP32_AP-Flasher/data/fonts/calibrib120.vlw
new file mode 100644
index 00000000..5590633f
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/calibrib120.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib150.vlw b/ESP32_AP-Flasher/data/fonts/calibrib150.vlw
new file mode 100644
index 00000000..1539e7ca
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/calibrib150.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib30.vlw b/ESP32_AP-Flasher/data/fonts/calibrib30.vlw
index 6c813489..87c41c69 100644
Binary files a/ESP32_AP-Flasher/data/fonts/calibrib30.vlw and b/ESP32_AP-Flasher/data/fonts/calibrib30.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib50.vlw b/ESP32_AP-Flasher/data/fonts/calibrib50.vlw
index b2b327fa..a0db18ff 100644
Binary files a/ESP32_AP-Flasher/data/fonts/calibrib50.vlw and b/ESP32_AP-Flasher/data/fonts/calibrib50.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib60.vlw b/ESP32_AP-Flasher/data/fonts/calibrib60.vlw
new file mode 100644
index 00000000..04f6e3b1
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/calibrib60.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib62.vlw b/ESP32_AP-Flasher/data/fonts/calibrib62.vlw
deleted file mode 100644
index fb235b10..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/calibrib62.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/calibrib80.vlw b/ESP32_AP-Flasher/data/fonts/calibrib80.vlw
new file mode 100644
index 00000000..eb9f8dfe
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/calibrib80.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers1-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers1-1.vlw
deleted file mode 100644
index e5e2e87a..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers1-1.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers1-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers1-2.vlw
deleted file mode 100644
index c6f615be..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers1-2.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers2-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers2-1.vlw
deleted file mode 100644
index 1dbfa21b..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers2-1.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers2-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers2-2.vlw
deleted file mode 100644
index 60ade58b..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers2-2.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers3-1.vlw b/ESP32_AP-Flasher/data/fonts/numbers3-1.vlw
deleted file mode 100644
index fff661e3..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers3-1.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/numbers3-2.vlw b/ESP32_AP-Flasher/data/fonts/numbers3-2.vlw
deleted file mode 100644
index 1dbfa21b..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/numbers3-2.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/tw20.vlw b/ESP32_AP-Flasher/data/fonts/tw20.vlw
deleted file mode 100644
index 884fc494..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/tw20.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/twbold20.vlw b/ESP32_AP-Flasher/data/fonts/twbold20.vlw
deleted file mode 100644
index 5ed00c42..00000000
Binary files a/ESP32_AP-Flasher/data/fonts/twbold20.vlw and /dev/null differ
diff --git a/ESP32_AP-Flasher/data/fonts/twcondensed20.vlw b/ESP32_AP-Flasher/data/fonts/twcondensed20.vlw
new file mode 100644
index 00000000..004bd600
Binary files /dev/null and b/ESP32_AP-Flasher/data/fonts/twcondensed20.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/weathericons30.vlw b/ESP32_AP-Flasher/data/fonts/weathericons30.vlw
index 7e69ede5..21591254 100644
Binary files a/ESP32_AP-Flasher/data/fonts/weathericons30.vlw and b/ESP32_AP-Flasher/data/fonts/weathericons30.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/weathericons70.vlw b/ESP32_AP-Flasher/data/fonts/weathericons70.vlw
index 689a14cd..536f4dd5 100644
Binary files a/ESP32_AP-Flasher/data/fonts/weathericons70.vlw and b/ESP32_AP-Flasher/data/fonts/weathericons70.vlw differ
diff --git a/ESP32_AP-Flasher/data/fonts/weathericons78.vlw b/ESP32_AP-Flasher/data/fonts/weathericons78.vlw
index a34ee456..f60db5bb 100644
Binary files a/ESP32_AP-Flasher/data/fonts/weathericons78.vlw and b/ESP32_AP-Flasher/data/fonts/weathericons78.vlw differ
diff --git a/ESP32_AP-Flasher/data/update_actions.json b/ESP32_AP-Flasher/data/update_actions.json
new file mode 100644
index 00000000..1d767cfb
--- /dev/null
+++ b/ESP32_AP-Flasher/data/update_actions.json
@@ -0,0 +1,15 @@
+{
+ "deletefile": [
+ "/fonts/calibrib62.vlw",
+ "/fonts/GillSC16.vlw",
+ "/fonts/GillSC20.vlw",
+ "/fonts/numbers1-1.vlw",
+ "/fonts/numbers1-2.vlw",
+ "/fonts/numbers2-1.vlw",
+ "/fonts/numbers2-2.vlw",
+ "/fonts/numbers3-1.vlw",
+ "/fonts/numbers3-2.vlw",
+ "/fonts/tw20.vlw",
+ "/fonts/twbold20.vlw"
+ ]
+}
diff --git a/ESP32_AP-Flasher/data/www/index.html b/ESP32_AP-Flasher/data/www/index.html
index a3ebd384..81a7e624 100644
--- a/ESP32_AP-Flasher/data/www/index.html
+++ b/ESP32_AP-Flasher/data/www/index.html
@@ -151,7 +151,7 @@ Latency will be around 40 seconds.">
- RSSI , LQI
,
°C,
V
+ RSSI , LQI
diff --git a/ESP32_AP-Flasher/data/www/main.css b/ESP32_AP-Flasher/data/www/main.css
index 1c8da0e9..5d0f1c12 100644
--- a/ESP32_AP-Flasher/data/www/main.css
+++ b/ESP32_AP-Flasher/data/www/main.css
@@ -276,10 +276,7 @@ select {
padding-bottom: 5px;
}
.received div {
- padding-left: 3px;
- padding-right: 1px;
display: inline-block;
- font-weight: bold;
}
.contentmode {
diff --git a/ESP32_AP-Flasher/data/www/main.js b/ESP32_AP-Flasher/data/www/main.js
index 5e1b77ec..8688af1f 100644
--- a/ESP32_AP-Flasher/data/www/main.js
+++ b/ESP32_AP-Flasher/data/www/main.js
@@ -159,8 +159,12 @@ function processTags(tagArray) {
$('#tag' + tagmac + ' .model').innerHTML = models[element.hwType];
$('#tag' + tagmac + ' .rssi').innerHTML = element.RSSI;
$('#tag' + tagmac + ' .lqi').innerHTML = element.LQI;
- $('#tag' + tagmac + ' .temperature').innerHTML = element.temperature;
- $('#tag' + tagmac + ' .batt').innerHTML = element.batteryMv / 1000;
+ $('#tag' + tagmac + ' .temperature').innerHTML = (element.temperature > 0 ? ", " + element.temperature + "°C": "");
+ if (element.batteryMv == 0 || element.batteryMv == 1337) {
+ $('#tag' + tagmac + ' .batt').innerHTML = "";
+ } else {
+ $('#tag' + tagmac + ' .batt').innerHTML = ", " + (element.batteryMv >= 2600 ? "≥" : "") + (element.batteryMv / 1000) + "V";
+ }
$('#tag' + tagmac + ' .received').style.opacity = "1";
} else {
$('#tag' + tagmac + ' .model').innerHTML = "waiting for hardware type";
diff --git a/ESP32_AP-Flasher/data/www/ota.js b/ESP32_AP-Flasher/data/www/ota.js
index ba0516f6..0b7130ab 100644
--- a/ESP32_AP-Flasher/data/www/ota.js
+++ b/ESP32_AP-Flasher/data/www/ota.js
@@ -151,6 +151,23 @@ export async function updateWebpage(fileUrl, tagname, showReload) {
consoleDiv.scrollTop = consoleDiv.scrollHeight;
print("Updating littleFS partition...");
+
+ try {
+ const response = await fetch("/update_actions", {
+ method: "POST",
+ body: ''
+ });
+ if (response.ok) {
+ const data = await response.text();
+ } else {
+ print(`error performing update actions: ${response.status}`, "red");
+ errors++;
+ }
+ } catch (error) {
+ console.error(`error calling update actions:` + error, "red");
+ errors++;
+ }
+
fetch("/getexturl?url=" + fileUrl)
.then(response => response.json())
.then(data => {
diff --git a/ESP32_AP-Flasher/include/ota.h b/ESP32_AP-Flasher/include/ota.h
index 443d3733..2017fd38 100644
--- a/ESP32_AP-Flasher/include/ota.h
+++ b/ESP32_AP-Flasher/include/ota.h
@@ -10,3 +10,4 @@ void handleUpdateOTA(AsyncWebServerRequest* request);
void firmwareUpdateTask(void* parameter);
void updateFirmware(const char* url, const char* expectedMd5, size_t size);
void handleRollback(AsyncWebServerRequest* request);
+void handleUpdateActions(AsyncWebServerRequest* request);
diff --git a/ESP32_AP-Flasher/src/contentmanager.cpp b/ESP32_AP-Flasher/src/contentmanager.cpp
index d7b4070a..9589340b 100644
--- a/ESP32_AP-Flasher/src/contentmanager.cpp
+++ b/ESP32_AP-Flasher/src/contentmanager.cpp
@@ -30,15 +30,9 @@
#include "web.h"
#include "language.h"
-#ifdef BOARD_HAS_PSRAM
#define PAL_BLACK TFT_BLACK
#define PAL_WHITE TFT_WHITE
#define PAL_RED TFT_RED
-#else
-#define PAL_BLACK 0
-#define PAL_WHITE 9
-#define PAL_RED 2
-#endif
enum contentModes {
Image,
@@ -306,18 +300,8 @@ void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy,
}
void initSprite(TFT_eSprite &spr, int w, int h) {
-#ifdef BOARD_HAS_PSRAM
spr.setColorDepth(8);
spr.createSprite(w, h);
-#else
- spr.setColorDepth(4); // 4 bits per pixel, uses indexed color
- spr.createSprite(w, h);
- uint16_t cmap[16];
- cmap[PAL_BLACK] = TFT_BLACK;
- cmap[PAL_RED] = TFT_RED;
- cmap[PAL_WHITE] = TFT_WHITE;
- spr.createPalette(cmap, 16);
-#endif
if (spr.getPointer() == nullptr) {
wsErr("Failed to create sprite");
}
@@ -346,22 +330,18 @@ void drawDate(String &filename, tagRecord *&taginfo, imgParam &imageParams) {
if (taginfo->hwType == SOLUM_29_SSD1619 || taginfo->hwType == SOLUM_29_UC8151) {
initSprite(spr, 296, 128);
- if (getCurrentLanguage() == 0 && timeinfo.tm_wday == 3) {
- drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 296 / 2, 10, "fonts/calibrib50", TC_DATUM, PAL_RED);
- } else {
- drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 296 / 2, 10, "fonts/calibrib62", TC_DATUM, PAL_RED);
- }
+ drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 296 / 2, 10, "fonts/calibrib60", TC_DATUM, PAL_RED);
drawString(spr, String(timeinfo.tm_mday) + " " + languageMonth[getCurrentLanguage()][timeinfo.tm_mon], 296 / 2, 73, "fonts/calibrib50", TC_DATUM);
} else if (taginfo->hwType == SOLUM_154_SSD1619) {
initSprite(spr, 152, 152);
drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 152 / 2, 10, "fonts/calibrib30", TC_DATUM);
drawString(spr, String(languageMonth[getCurrentLanguage()][timeinfo.tm_mon]), 152 / 2, 120, "fonts/calibrib30", TC_DATUM);
- drawString(spr, String(timeinfo.tm_mday), 152 / 2, 42, "fonts/numbers2-1", TC_DATUM, PAL_RED);
+ drawString(spr, String(timeinfo.tm_mday), 152 / 2, 42, "fonts/calibrib100", TC_DATUM, PAL_RED);
} else if (taginfo->hwType == SOLUM_42_SSD1619) {
initSprite(spr, 400, 300);
- drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 400 / 2, 30, "fonts/calibrib62", TC_DATUM, PAL_RED);
+ drawString(spr, languageDays[getCurrentLanguage()][timeinfo.tm_wday], 400 / 2, 30, "fonts/calibrib60", TC_DATUM, PAL_RED);
drawString(spr, String(timeinfo.tm_mday) + " " + languageMonth[getCurrentLanguage()][timeinfo.tm_mon], 400 / 2, 113, "fonts/calibrib50", TC_DATUM);
}
@@ -401,9 +381,10 @@ void drawNumber(String &filename, int32_t count, int32_t thresholdred, tagRecord
} else {
spr.setTextColor(PAL_BLACK, PAL_WHITE);
}
- String font = "fonts/numbers1-2";
- if (count > 999) font = "fonts/numbers2-2";
- if (count > 9999) font = "fonts/numbers3-2";
+ String font = "fonts/calibrib150";
+ if (count > 99) font = "fonts/calibrib150";
+ if (count > 999) font = "fonts/calibrib120";
+ if (count > 9999) font = "fonts/calibrib100";
spr.loadFont(font, LittleFS);
spr.drawString(String(count), 296 / 2, 128 / 2 + 10);
spr.unloadFont();
@@ -416,9 +397,10 @@ void drawNumber(String &filename, int32_t count, int32_t thresholdred, tagRecord
} else {
spr.setTextColor(PAL_BLACK, PAL_WHITE);
}
- String font = "fonts/numbers1-1";
- if (count > 99) font = "fonts/numbers2-1";
- if (count > 999) font = "fonts/numbers3-1";
+ String font = "fonts/calibrib120";
+ if (count > 99) font = "fonts/calibrib80";
+ if (count > 999) font = "fonts/calibrib50";
+ if (count > 9999) font = "fonts/calibrib50";
spr.loadFont(font, LittleFS);
spr.drawString(String(count), 152 / 2, 152 / 2 + 7);
spr.unloadFont();
@@ -431,9 +413,10 @@ void drawNumber(String &filename, int32_t count, int32_t thresholdred, tagRecord
} else {
spr.setTextColor(PAL_BLACK, PAL_WHITE);
}
- String font = "fonts/numbers1-2";
- if (count > 999) font = "fonts/numbers2-2";
- if (count > 9999) font = "fonts/numbers3-2";
+ String font = "fonts/calibrib150";
+ if (count > 99) font = "fonts/calibrib150";
+ if (count > 999) font = "fonts/calibrib120";
+ if (count > 9999) font = "fonts/calibrib100";
spr.loadFont(font, LittleFS);
spr.drawString(String(count), 400 / 2, 300 / 2 + 7);
spr.unloadFont();
@@ -679,7 +662,7 @@ void drawForecast(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, img
for (uint8_t dag = 0; dag < 5; dag++) {
time_t weatherday = doc["daily"]["time"][dag].as();
struct tm *datum = localtime(&weatherday);
- drawString(spr, String(languageDaysShort[getCurrentLanguage()][datum->tm_wday]), dag * 59 + 30, 18, "fonts/twbold20", TC_DATUM, PAL_BLACK);
+ drawString(spr, String(languageDaysShort[getCurrentLanguage()][datum->tm_wday]), dag * 59 + 30, 18, "fonts/twcondensed20", TC_DATUM, PAL_BLACK);
uint8_t weathercode = doc["daily"]["weathercode"][dag].as();
if (weathercode > 40) weathercode -= 40;
@@ -703,7 +686,7 @@ void drawForecast(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, img
int8_t tmax = round(doc["daily"]["temperature_2m_max"][dag].as());
uint8_t wind = windSpeedToBeaufort(doc["daily"]["windspeed_10m_max"][dag].as());
- spr.loadFont("fonts/GillSC20", LittleFS);
+ spr.loadFont("fonts/twcondensed20", LittleFS);
drawString(spr, String(tmin) + " ", dag * 59 + 30, 108, "", TR_DATUM, (tmin < 0 ? PAL_RED : PAL_BLACK));
drawString(spr, String(" ") + String(tmax), dag * 59 + 30, 108, "", TL_DATUM, (tmax < 0 ? PAL_RED : PAL_BLACK));
drawString(spr, String(" ") + String(wind), dag * 59 + 30, 43, "", TL_DATUM, (wind > 5 ? PAL_RED : PAL_BLACK));
@@ -724,7 +707,7 @@ void drawForecast(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, img
for (uint8_t dag = 0; dag < 5; dag++) {
time_t weatherday = doc["daily"]["time"][dag].as();
struct tm *datum = localtime(&weatherday);
- drawString(spr, String(languageDaysShort[getCurrentLanguage()][datum->tm_wday]), dag * 59 + 30, 18, "fonts/twbold20", TC_DATUM, PAL_BLACK);
+ drawString(spr, String(languageDaysShort[getCurrentLanguage()][datum->tm_wday]), dag * 59 + 30, 18, "fonts/twcondensed20", TC_DATUM, PAL_BLACK);
uint8_t weathercode = doc["daily"]["weathercode"][dag].as();
if (weathercode > 40) weathercode -= 40;
@@ -748,7 +731,7 @@ void drawForecast(String &filename, JsonObject &cfgobj, tagRecord *&taginfo, img
int8_t tmax = round(doc["daily"]["temperature_2m_max"][dag].as());
uint8_t wind = windSpeedToBeaufort(doc["daily"]["windspeed_10m_max"][dag].as());
- spr.loadFont("fonts/GillSC20", LittleFS);
+ spr.loadFont("fonts/twcondensed20", LittleFS);
drawString(spr, String(tmin) + " ", dag * 59 + 30, 108, "", TR_DATUM, (tmin < 0 ? PAL_RED : PAL_BLACK));
drawString(spr, String(" ") + String(tmax), dag * 59 + 30, 108, "", TL_DATUM, (tmax < 0 ? PAL_RED : PAL_BLACK));
drawString(spr, String(" ") + String(wind), dag * 59 + 30, 43, "", TL_DATUM, (wind > 5 ? PAL_RED : PAL_BLACK));
diff --git a/ESP32_AP-Flasher/src/ota.cpp b/ESP32_AP-Flasher/src/ota.cpp
index 5ae5347f..9fa8cd0b 100644
--- a/ESP32_AP-Flasher/src/ota.cpp
+++ b/ESP32_AP-Flasher/src/ota.cpp
@@ -39,12 +39,12 @@ void handleSysinfoRequest(AsyncWebServerRequest* request) {
doc["rollback"] = Update.canRollBack();
size_t bufferSize = measureJson(doc) + 1;
- AsyncResponseStream *response = request->beginResponseStream("application/json", bufferSize);
+ AsyncResponseStream* response = request->beginResponseStream("application/json", bufferSize);
serializeJson(doc, *response);
request->send(response);
};
-void handleCheckFile(AsyncWebServerRequest *request) {
+void handleCheckFile(AsyncWebServerRequest* request) {
if (!request->hasParam("path")) {
request->send(400);
return;
@@ -110,7 +110,7 @@ void handleGetExtUrl(AsyncWebServerRequest* request) {
}
}
-void handleLittleFSUpload(AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
+void handleLittleFSUpload(AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final) {
bool error = false;
if (!index) {
String path;
@@ -183,9 +183,9 @@ void updateFirmware(const char* url, const char* expectedMd5, size_t size) {
config.runStatus = RUNSTATUS_STOP;
vTaskDelay(3000 / portTICK_PERIOD_MS);
- //xSemaphoreTake(tagDBOwner, portMAX_DELAY);
+ // xSemaphoreTake(tagDBOwner, portMAX_DELAY);
saveDB("/current/tagDB.json");
- //destroyDB();
+ // destroyDB();
HTTPClient httpClient;
@@ -222,7 +222,7 @@ void updateFirmware(const char* url, const char* expectedMd5, size_t size) {
wsSerial("Reboot system now");
wsSerial("[reboot]");
vTaskDelay(1000 / portTICK_PERIOD_MS);
- //ESP.restart();
+ // ESP.restart();
} else {
wsSerial("Error updating firmware:");
wsSerial(Update.errorString());
@@ -241,9 +241,9 @@ void updateFirmware(const char* url, const char* expectedMd5, size_t size) {
}
httpClient.end();
- //loadDB("/current/tagDB.json");
+ // loadDB("/current/tagDB.json");
config.runStatus = RUNSTATUS_RUN;
- //xSemaphoreGive(tagDBOwner);
+ // xSemaphoreGive(tagDBOwner);
}
void handleRollback(AsyncWebServerRequest* request) {
@@ -255,7 +255,7 @@ void handleRollback(AsyncWebServerRequest* request) {
wsSerial("Reboot system now");
wsSerial("[reboot]");
vTaskDelay(1000 / portTICK_PERIOD_MS);
- //ESP.restart();
+ // ESP.restart();
} else {
wsSerial("Rollback failed");
request->send(400, "Rollback failed");
@@ -264,4 +264,26 @@ void handleRollback(AsyncWebServerRequest* request) {
wsSerial("Rollback not allowed");
request->send(400, "Rollback not allowed");
}
+}
+
+void handleUpdateActions(AsyncWebServerRequest* request) {
+ wsSerial("Performing cleanup");
+ File file = LittleFS.open("/update_actions.json", "r");
+ if (!file) {
+ wsSerial("No update_actions.json present");
+ request->send(200, "No update actions needed");
+ return;
+ }
+ StaticJsonDocument<1000> doc;
+ DeserializationError error = deserializeJson(doc, file);
+ JsonArray deleteFiles = doc["deletefile"].as();
+ for (const auto& filePath : deleteFiles) {
+ if (LittleFS.remove(filePath.as())) {
+ wsSerial("deleted file: " + filePath.as());
+ }
+ }
+ file.close();
+ wsSerial("Cleanup finished");
+ request->send(200, "Clean up finished");
+ LittleFS.remove("/update_actions.json");
}
\ No newline at end of file
diff --git a/ESP32_AP-Flasher/src/tag_db.cpp b/ESP32_AP-Flasher/src/tag_db.cpp
index c7089e95..44e09134 100644
--- a/ESP32_AP-Flasher/src/tag_db.cpp
+++ b/ESP32_AP-Flasher/src/tag_db.cpp
@@ -143,7 +143,7 @@ void saveDB(String filename) {
if (c > 0) {
file.write(',');
}
- serializeJson(doc, file);
+ serializeJsonPretty(doc, file);
}
file.write(']');
diff --git a/ESP32_AP-Flasher/src/web.cpp b/ESP32_AP-Flasher/src/web.cpp
index 4e12990a..fc2dc5df 100644
--- a/ESP32_AP-Flasher/src/web.cpp
+++ b/ESP32_AP-Flasher/src/web.cpp
@@ -275,6 +275,8 @@ void init_web() {
uint8_t mac[8];
if (hex2mac(dst, mac)) {
json = tagDBtoJson(mac);
+ } else {
+ json = "{\"error\": \"malformatted parameter\"}";
}
} else {
uint8_t startPos = 0;
@@ -398,11 +400,11 @@ void init_web() {
server.on("/sysinfo", HTTP_GET, handleSysinfoRequest);
server.on("/check_file", HTTP_GET, handleCheckFile);
server.on("/getexturl", HTTP_GET, handleGetExtUrl);
+ server.on("/rollback", HTTP_POST, handleRollback);
+ server.on("/update_actions", HTTP_POST, handleUpdateActions);
server.on("/update_ota", HTTP_POST, [](AsyncWebServerRequest *request) {
handleUpdateOTA(request);
});
- server.on("/rollback", HTTP_POST, handleRollback);
-
server.on(
"/littlefs_put", HTTP_POST, [](AsyncWebServerRequest *request) {
request->send(200);