From 26af93dd67c78a816a0463425533cc8753661f2d Mon Sep 17 00:00:00 2001 From: Nic Limper Date: Sat, 29 Jul 2023 10:34:56 +0200 Subject: [PATCH] bugfixes - replaced symlink to firmware pack binary by real file - bugfix using jsontemplate with google apps script --- ESP32_AP-Flasher/data/AP_FW_Pack.bin | Bin 29 -> 109466 bytes ESP32_AP-Flasher/include/contentmanager.h | 2 +- ESP32_AP-Flasher/src/contentmanager.cpp | 17 ++++++++++++----- 3 files changed, 13 insertions(+), 6 deletions(-) mode change 120000 => 100644 ESP32_AP-Flasher/data/AP_FW_Pack.bin diff --git a/ESP32_AP-Flasher/data/AP_FW_Pack.bin b/ESP32_AP-Flasher/data/AP_FW_Pack.bin deleted file mode 120000 index c6da33b5..00000000 --- a/ESP32_AP-Flasher/data/AP_FW_Pack.bin +++ /dev/null @@ -1 +0,0 @@ -../../binaries/AP_FW_Pack.bin \ No newline at end of file diff --git a/ESP32_AP-Flasher/data/AP_FW_Pack.bin b/ESP32_AP-Flasher/data/AP_FW_Pack.bin new file mode 100644 index 0000000000000000000000000000000000000000..d9bf54db39501415172b198a6c57cd32e2d76cc6 GIT binary patch literal 109466 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 C1RxOr literal 0 HcmV?d00001 diff --git a/ESP32_AP-Flasher/include/contentmanager.h b/ESP32_AP-Flasher/include/contentmanager.h index bbc8bfcc..69ae2d1d 100644 --- a/ESP32_AP-Flasher/include/contentmanager.h +++ b/ESP32_AP-Flasher/include/contentmanager.h @@ -18,7 +18,7 @@ struct contentTypes { void contentRunner(); void drawNew(uint8_t mac[8], bool buttonPressed, tagRecord *&taginfo); bool updateTagImage(String &filename, uint8_t *dst, uint16_t nextCheckin, tagRecord *&taginfo, imgParam &imageParams); -void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align = 0, uint16_t color = TFT_BLACK); +void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align = 0, uint16_t color = TFT_BLACK, uint16_t size = 0); void initSprite(TFT_eSprite &spr, int w, int h, imgParam &imageParams); void drawDate(String &filename, tagRecord *&taginfo, imgParam &imageParams); void drawNumber(String &filename, int32_t count, int32_t thresholdred, tagRecord *&taginfo, imgParam &imageParams); diff --git a/ESP32_AP-Flasher/src/contentmanager.cpp b/ESP32_AP-Flasher/src/contentmanager.cpp index 9ff8b058..67b00b0b 100644 --- a/ESP32_AP-Flasher/src/contentmanager.cpp +++ b/ESP32_AP-Flasher/src/contentmanager.cpp @@ -355,11 +355,13 @@ bool updateTagImage(String &filename, uint8_t *dst, uint16_t nextCheckin, tagRec return true; } -void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align, uint16_t color) { +void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, String font, byte align, uint16_t color, uint16_t size) { // drawString(spr,"test",100,10,"bahnschrift30",TC_DATUM,PAL_RED); spr.setTextDatum(align); - if (font != "" && !font.startsWith("fonts/")) { + if (font != "" && !font.startsWith("fonts/") && !font.startsWith("/fonts/")) { + + // u8g2 font U8g2_for_TFT_eSPI u8f; u8f.begin(spr); setU8G2Font(font, u8f); @@ -368,10 +370,13 @@ void drawString(TFT_eSprite &spr, String content, uint16_t posx, uint16_t posy, u8f.setCursor(posx, posy); u8f.print(content); } else { + + // vlw bitmap font if (font != "") spr.loadFont(font, *contentFS); spr.setTextColor(color, PAL_WHITE); spr.drawString(content, posx, posy); if (font != "") spr.unloadFont(); + } } @@ -953,6 +958,7 @@ uint8_t drawBuienradar(String &filename, JsonObject &cfgobj, tagRecord *&taginfo int getJsonTemplate(String URL, JsonDocument &jsondoc, time_t fetched, String MAC) { Serial.println("get external " + URL); HTTPClient http; + http.useHTTP10(true); http.begin(URL); http.addHeader("If-Modified-Since", formatHttpDate(fetched)); http.addHeader("X-ESL-MAC", MAC); @@ -962,12 +968,12 @@ int getJsonTemplate(String URL, JsonDocument &jsondoc, time_t fetched, String MA if (httpCode == 200) { DeserializationError error = deserializeJson(jsondoc, http.getStream()); if (error) { - wsErr(error.c_str()); + wsErr("json error " + String(error.c_str())); return 0; } } else { if (httpCode != 304) { - wsErr("http " + URL + " " + String(httpCode)); + wsErr("http " + URL + " status " + String(httpCode)); } else { Serial.println("http 304, image is not changed " + URL); } @@ -993,7 +999,8 @@ void drawElement(const JsonObject &element, TFT_eSprite &spr) { const JsonArray &textArray = element["text"]; uint16_t color = textArray[4] | 1; uint16_t align = textArray[5] | 0; - drawString(spr, textArray[2], textArray[0].as(), textArray[1].as(), textArray[3], align, getColor(color)); + uint16_t size = textArray[6] | 0; + drawString(spr, textArray[2], textArray[0].as(), textArray[1].as(), textArray[3], align, getColor(color), size); } else if (element.containsKey("box")) { const JsonArray &boxArray = element["box"]; uint16_t color = boxArray[4] | 1;