From a0a39e98cd19620b06416f540a1f747cd2de36aa Mon Sep 17 00:00:00 2001 From: Nic Limper Date: Sun, 8 Dec 2024 19:46:20 +0100 Subject: [PATCH] some polishing before release --- .../data/www/content_cards.json.gz | Bin 4814 -> 4712 bytes ESP32_AP-Flasher/data/www/edit.html.gz | Bin 6622 -> 6788 bytes ESP32_AP-Flasher/data/www/g5decoder.js.gz | Bin 0 -> 3504 bytes ESP32_AP-Flasher/data/www/index.html.gz | Bin 6507 -> 6521 bytes ESP32_AP-Flasher/data/www/main.js.gz | Bin 15881 -> 16013 bytes ESP32_AP-Flasher/src/contentmanager.cpp | 33 ++++++------------ ESP32_AP-Flasher/src/makeimage.cpp | 27 ++++++++------ ESP32_AP-Flasher/wwwroot/content_cards.json | 15 -------- oepl-definitions.h | 21 +++++------ resources/tagtypes/00.json | 4 +-- resources/tagtypes/01.json | 4 +-- resources/tagtypes/03.json | 4 +-- resources/tagtypes/04.json | 4 +-- resources/tagtypes/06.json | 4 +-- resources/tagtypes/07.json | 4 +-- resources/tagtypes/11.json | 4 +-- resources/tagtypes/21.json | 4 +-- resources/tagtypes/27.json | 4 +-- resources/tagtypes/30.json | 4 +-- resources/tagtypes/43.json | 4 +-- resources/tagtypes/45.json | 4 +-- resources/tagtypes/54.json | 4 +-- resources/tagtypes/55.json | 4 +-- resources/tagtypes/56.json | 4 +-- resources/tagtypes/57.json | 4 +-- resources/tagtypes/58.json | 4 +-- resources/tagtypes/59.json | 4 +-- resources/tagtypes/60.json | 4 +-- resources/tagtypes/61.json | 4 +-- resources/tagtypes/62.json | 4 +-- resources/tagtypes/63.json | 4 +-- resources/tagtypes/67.json | 4 +-- resources/tagtypes/68.json | 4 +-- resources/tagtypes/69.json | 4 +-- resources/tagtypes/81.json | 4 +-- resources/tagtypes/82.json | 4 +-- resources/tagtypes/B0.json | 4 +-- resources/tagtypes/B1.json | 4 +-- resources/tagtypes/B2.json | 4 +-- resources/tagtypes/B3.json | 4 +-- resources/tagtypes/BA.json | 4 +-- resources/tagtypes/C0.json | 17 +++++++++ resources/tagtypes/C1.json | 21 +++++++++++ resources/tagtypes/C2.json | 20 +++++++++++ 44 files changed, 161 insertions(+), 121 deletions(-) create mode 100644 ESP32_AP-Flasher/data/www/g5decoder.js.gz create mode 100644 resources/tagtypes/C0.json create mode 100644 resources/tagtypes/C1.json create mode 100644 resources/tagtypes/C2.json diff --git a/ESP32_AP-Flasher/data/www/content_cards.json.gz b/ESP32_AP-Flasher/data/www/content_cards.json.gz index 6878c8877a9e1dc0d655fe203a6b36206e011df6..5b119d64db1f5ed8d2efdae3ec6d9122eb7bb6ca 100644 GIT binary patch delta 4705 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 delta 4812 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 literal 6622 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 literal 0 HcmV?d00001 diff --git a/ESP32_AP-Flasher/data/www/index.html.gz b/ESP32_AP-Flasher/data/www/index.html.gz index ee804f7c20d46291186588ea25aaaa257f1c48e2..b34f86549aef35cfb5bef59cc3b07e76495051ff 100644 GIT binary patch delta 6476 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 delta 6461 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 Hk^un#P5wY} literal 15881 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 >= hwdata.g5) { imageParams.g5 = 1; } else { imageParams.g5 = 0; } +#endif imageParams.lut = EPD_LUT_NO_REPEATS; if (taginfo->lut == 2) imageParams.lut = EPD_LUT_FAST_NO_REDS; @@ -285,6 +289,9 @@ void drawNew(const uint8_t mac[8], tagRecord *&taginfo) { if (imageParams.bpp == 3) { imageParams.dataType = DATATYPE_IMG_RAW_3BPP; Serial.println("datatype: DATATYPE_IMG_RAW_3BPP"); + } else if (imageParams.bpp == 4) { + imageParams.dataType = DATATYPE_IMG_RAW_4BPP; + Serial.println("datatype: DATATYPE_IMG_RAW_4BPP"); } else if (imageParams.zlib) { imageParams.dataType = DATATYPE_IMG_ZLIB; Serial.println("datatype: DATATYPE_IMG_ZLIB"); @@ -448,13 +455,6 @@ void drawNew(const uint8_t mac[8], tagRecord *&taginfo) { taginfo->nextupdate = 3216153600; prepareNFCReq(mac, cfgobj["url"].as()); break; - - case 15: // send gray LUT - - taginfo->nextupdate = 3216153600; - prepareLUTreq(mac, cfgobj["bytes"]); - taginfo->hasCustomLUT = true; - break; #endif #ifdef CONTENT_BUIENRADAR @@ -571,6 +571,9 @@ bool updateTagImage(String &filename, const uint8_t *dst, uint16_t nextCheckin, if (imageParams.bpp == 3) { imageParams.dataType = DATATYPE_IMG_RAW_3BPP; Serial.println("datatype: DATATYPE_IMG_RAW_3BPP"); + } else if (imageParams.bpp == 4) { + imageParams.dataType = DATATYPE_IMG_RAW_4BPP; + Serial.println("datatype: DATATYPE_IMG_RAW_4BPP"); } else if (imageParams.zlib) { imageParams.dataType = DATATYPE_IMG_ZLIB; Serial.println("datatype: DATATYPE_IMG_ZLIB"); @@ -1466,7 +1469,7 @@ uint16_t getPercentileColor(const double *prices, int numPrices, double price, H const double *boundaries; int numColors, numBoundaries; - if (hwdata.bpp == 3) { + if (hwdata.bpp == 3 || hwdata.bpp == 4) { colors = colors3bpp; boundaries = boundaries3bpp; numColors = sizeof(colors3bpp) / sizeof(colors3bpp[0]); @@ -2353,20 +2356,6 @@ void prepareNFCReq(const uint8_t *dst, const char *url) { len = 1 + len; prepareDataAvail(data, len, DATATYPE_NFC_RAW_CONTENT, dst); } - -void prepareLUTreq(const uint8_t *dst, const String &input) { - constexpr const char *delimiters = ", \t"; - constexpr const int maxValues = 76; - uint8_t waveform[maxValues]; - char *ptr = strtok(const_cast(input.c_str()), delimiters); - int i = 0; - while (ptr != nullptr && i < maxValues) { - waveform[i++] = static_cast(strtol(ptr, nullptr, 16)); - ptr = strtok(nullptr, delimiters); - } - const size_t waveformLen = sizeof(waveform); - prepareDataAvail(waveform, waveformLen, DATATYPE_CUSTOM_LUT_OTA, dst); -} #endif #ifdef CONTENT_TAGCFG diff --git a/ESP32_AP-Flasher/src/makeimage.cpp b/ESP32_AP-Flasher/src/makeimage.cpp index 92332869..0234f1f2 100644 --- a/ESP32_AP-Flasher/src/makeimage.cpp +++ b/ESP32_AP-Flasher/src/makeimage.cpp @@ -16,8 +16,10 @@ #endif #include "commstructs.h" +#ifndef SAVE_SPACE #include "g5/Group5.h" #include "g5/g5enc.inl" +#endif TFT_eSPI tft = TFT_eSPI(); TFT_eSprite spr = TFT_eSprite(&tft); @@ -138,10 +140,10 @@ void spr2color(TFT_eSprite &spr, imgParam &imageParams, uint8_t *buffer, size_t if (imageParams.dither == 2) { // Ordered dithering - uint8_t ditherValue = ditherMatrix[y % 4][x % 4] << (imageParams.bpp == 3 ? 2 : 4); - error_bufferold[x].r = ditherValue - (imageParams.bpp == 3 ? 30 : 120); // * 256 / 16 - 128 + 8 - error_bufferold[x].g = ditherValue - (imageParams.bpp == 3 ? 30 : 120); - error_bufferold[x].b = ditherValue - (imageParams.bpp == 3 ? 30 : 120); + uint8_t ditherValue = ditherMatrix[y % 4][x % 4] << (imageParams.bpp >= 3 ? 2 : 4); + error_bufferold[x].r = ditherValue - (imageParams.bpp >= 3 ? 30 : 120); // * 256 / 16 - 128 + 8 + error_bufferold[x].g = ditherValue - (imageParams.bpp >= 3 ? 30 : 120); + error_bufferold[x].b = ditherValue - (imageParams.bpp >= 3 ? 30 : 120); } int best_color_index = 0; @@ -156,7 +158,7 @@ void spr2color(TFT_eSprite &spr, imgParam &imageParams, uint8_t *buffer, size_t } } - if (imageParams.bpp == 3) { + if (imageParams.bpp == 3 || imageParams.bpp == 4) { size_t byteIndex = bitOffset / 8; uint8_t bitIndex = bitOffset % 8; @@ -246,9 +248,9 @@ size_t prepareHeader(uint8_t headerbuf[], uint16_t bufw, uint16_t bufh, imgParam memcpy(headerbuf + (imageParams.rotatebuffer % 2 == 1 ? 3 : 1), &bufw, sizeof(uint16_t)); memcpy(headerbuf + (imageParams.rotatebuffer % 2 == 1 ? 1 : 3), &bufh, sizeof(uint16_t)); - if (imageParams.bpp == 3) { - totalbytes = buffer_size * 3 + headersize; - headerbuf[5] = 3; + if (imageParams.bpp == 3 || imageParams.bpp == 4) { + totalbytes = buffer_size * imageParams.bpp + headersize; + headerbuf[5] = imageParams.bpp; } else if (imageParams.hasRed && imageParams.bpp > 1) { totalbytes = buffer_size * 2 + headersize; headerbuf[5] = 2; @@ -289,6 +291,7 @@ void rewriteHeader(File &f_out) { f_out.write(flg); } +#ifndef SAVE_SPACE uint8_t *g5Compress(uint16_t width, uint16_t height, uint8_t *buffer, uint16_t buffersize, uint16_t &outBufferSize) { G5ENCIMAGE g5enc; int rc; @@ -312,6 +315,7 @@ uint8_t *g5Compress(uint16_t width, uint16_t height, uint8_t *buffer, uint16_t b } return outbuffer; } +#endif void spr2buffer(TFT_eSprite &spr, String &fileout, imgParam &imageParams) { long t = millis(); @@ -406,6 +410,7 @@ void spr2buffer(TFT_eSprite &spr, String &fileout, imgParam &imageParams) { free(comp); rewriteHeader(f_out); +#ifndef SAVE_SPACE } else if (imageParams.g5) { // handling for G5-compressed image data @@ -468,6 +473,7 @@ void spr2buffer(TFT_eSprite &spr, String &fileout, imgParam &imageParams) { } f_out.write(buffer, buffer_size); } +#endif } else { f_out.write(buffer, buffer_size); if (imageParams.hasRed && imageParams.bpp > 1) { @@ -479,9 +485,10 @@ void spr2buffer(TFT_eSprite &spr, String &fileout, imgParam &imageParams) { free(buffer); } break; - case 3: { + case 3: + case 4: { long bufw = spr.width(), bufh = spr.height(); - size_t buffer_size = (bufw * bufh) / 8 * 3; + size_t buffer_size = (bufw * bufh) / 8 * imageParams.bpp; uint8_t *buffer = (uint8_t *)ps_malloc(buffer_size); if (!buffer) { Serial.println("Failed to allocate buffer"); diff --git a/ESP32_AP-Flasher/wwwroot/content_cards.json b/ESP32_AP-Flasher/wwwroot/content_cards.json index ded082c3..c44262b4 100644 --- a/ESP32_AP-Flasher/wwwroot/content_cards.json +++ b/ESP32_AP-Flasher/wwwroot/content_cards.json @@ -593,21 +593,6 @@ } ] }, - { - "id": 15, - "name": "Send custom LUT", - "desc": "EXPERIMENTAL. Don't use. YOU RISK DAMAGING YOUR SCREEN.", - "capabilities": 4, - "properties": [ "savespace" ], - "param": [ - { - "key": "bytes", - "name": "bytes", - "desc": "76 bytes, formatted as 0x00,0x00,...", - "type": "text" - } - ] - }, { "id": 17, "name": "Send Command", diff --git a/oepl-definitions.h b/oepl-definitions.h index 66ea8c9f..50049a12 100755 --- a/oepl-definitions.h +++ b/oepl-definitions.h @@ -7,12 +7,6 @@ #define SOLUM_42_SSD1619 0x02 #define SOLUM_SEG_UK 0xF0 #define SOLUM_SEG_EU 0xF1 -#define RESERVED_TESTING 0xFE -#define SOLUM_NODISPLAY 0xFF -#define ESP32_C6 0xC6 - - - // overflow #define SOLUM_M2_BWR_16 0x20 @@ -24,8 +18,6 @@ #define SOLUM_M2_BW_75 0x26 #define SOLUM_M2_BW_29 0x27 - - #define SOLUM_M3_BWR_97 0x2E #define SOLUM_M3_BWR_43 0x2F @@ -50,7 +42,6 @@ #define SOLUM_M3_BWR_116 0x37 #define SOLUM_M3_BWY_116 0x3F - // M3 Tags overflow #define SOLUM_M3_BW_29 0x40 #define SOLUM_M3_BWR_58 0x41 @@ -80,7 +71,6 @@ #define GICI_BLE_TFT_21_BW 0xBA #define GICI_BLE_EPD_BWR_29_SILABS 0xBD #define GICI_BLE_UNKNOWN 0xBF -#define ATC_MI_THERMOMETER 0xBE // Solum types - customer data byte 16 in M3 (nRF) UICR #define STYPE_SIZE_016 0x40 @@ -98,6 +88,16 @@ #define STYPE_SIZE_097 0x64 #define STYPE_SIZE_013 0x4D +// Various types +#define ATC_MI_THERMOMETER 0xBE +#define RESERVED_TESTING 0xFE +#define SOLUM_NODISPLAY 0xFF +#define ESP32_C6 0xC6 + +#define BWRY_29 0xC0 +#define ACEP_40 0xC1 +#define SPECTRA_73 0xC2 + @@ -119,6 +119,7 @@ #define DATATYPE_IMG_RAW_1BPP 0x20 // 2888 bytes for 1.54" / 4736 2.9" / 15000 4.2" #define DATATYPE_IMG_RAW_2BPP 0x21 // 5776 bytes for 1.54" / 9472 2.9" / 30000 4.2" #define DATATYPE_IMG_RAW_3BPP 0x22 // ACEP +#define DATATYPE_IMG_RAW_4BPP 0x23 // Spectra #define DATATYPE_IMG_ZLIB 0x30 // compressed format. // [uint32_t uncompressed size][2 byte zlib header][zlib compressed image] // image format: [uint8_t header length][uint16_t width][uint16_t height][uint8_t bpp (lower 4)][img data] diff --git a/resources/tagtypes/00.json b/resources/tagtypes/00.json index d47310c6..917c347b 100644 --- a/resources/tagtypes/00.json +++ b/resources/tagtypes/00.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 4, "name": "M2 1.54\"", "width": 152, "height": 152, @@ -13,7 +13,7 @@ "g5_compression": "29", "shortlut": 2, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 15, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 17, 18, 19, 20, 21, 27 ], "template": { "1": { "weekday": [ 76, 9, "fonts/calibrib30" ], diff --git a/resources/tagtypes/01.json b/resources/tagtypes/01.json index 61149af8..a2809539 100644 --- a/resources/tagtypes/01.json +++ b/resources/tagtypes/01.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 4, "name": "M2 2.9\"", "width": 296, "height": 128, @@ -13,7 +13,7 @@ "g5_compression": "29", "shortlut": 2, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 27 ], "template": { "1": { "weekday": [ 148, -3, "Signika-SB.ttf", 60 ], diff --git a/resources/tagtypes/03.json b/resources/tagtypes/03.json index 378475ac..70b7e959 100644 --- a/resources/tagtypes/03.json +++ b/resources/tagtypes/03.json @@ -1,5 +1,5 @@ { - "version": 5, + "version": 6, "name": "M2 2.2\"", "width": 212, "height": 104, @@ -13,7 +13,7 @@ "g5_compression": "29", "shortlut": 2, "options": [ "button", "customlut" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { "weekday": [ 106, 5, "fonts/calibrib40", 40 ], diff --git a/resources/tagtypes/04.json b/resources/tagtypes/04.json index c8aeae10..fcb944af 100644 --- a/resources/tagtypes/04.json +++ b/resources/tagtypes/04.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 4, "name": "M2 2.6\"", "width": 296, "height": 152, @@ -13,7 +13,7 @@ "g5_compression": "29", "shortlut": 2, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 27 ], "template": { "1": { "weekday": [ 148, 9, "Signika-SB.ttf", 60 ], diff --git a/resources/tagtypes/06.json b/resources/tagtypes/06.json index 74de7fef..7dcfc367 100644 --- a/resources/tagtypes/06.json +++ b/resources/tagtypes/06.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "Opticon 2.2\"", "width": 250, "height": 128, @@ -14,6 +14,6 @@ "g5_compression": "29", "shortlut": 0, "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 27 ], "usetemplate": 177 } diff --git a/resources/tagtypes/07.json b/resources/tagtypes/07.json index efaca8b2..5e6cefb0 100644 --- a/resources/tagtypes/07.json +++ b/resources/tagtypes/07.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "Opticon 2.9\"", "width": 296, "height": 128, @@ -14,6 +14,6 @@ "g5_compression": "29", "shortlut": 2, "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 27 ], "usetemplate": 1 } diff --git a/resources/tagtypes/11.json b/resources/tagtypes/11.json index e817b74b..df67fd40 100644 --- a/resources/tagtypes/11.json +++ b/resources/tagtypes/11.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "M2 2.9\" (UC8151)", "width": 296, "height": 128, @@ -13,6 +13,6 @@ "g5_compression": "29", "shortlut": 0, "options": [ "button" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 27 ], "usetemplate": 1 } diff --git a/resources/tagtypes/21.json b/resources/tagtypes/21.json index 9e863aae..081bd9db 100644 --- a/resources/tagtypes/21.json +++ b/resources/tagtypes/21.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "ST‐GM29XXF 2.9\"", "width": 296, "height": 128, @@ -12,6 +12,6 @@ "highlight_color": 5, "shortlut": 0, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21 ], "usetemplate": 1 } diff --git a/resources/tagtypes/27.json b/resources/tagtypes/27.json index e3fdbe3e..645b887f 100644 --- a/resources/tagtypes/27.json +++ b/resources/tagtypes/27.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "ST‐GM29MT1 2.9\"", "width": 296, "height": 128, @@ -13,6 +13,6 @@ "highlight_color": 5, "shortlut": 0, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21 ], "usetemplate": 1 } diff --git a/resources/tagtypes/30.json b/resources/tagtypes/30.json index 98b47d80..2ac92231 100644 --- a/resources/tagtypes/30.json +++ b/resources/tagtypes/30.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "M3 1.6\"", "width": 200, "height": 200, @@ -14,7 +14,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "button" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 15, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 17, 18, 19, 20, 21 ], "template": { "1": { "weekday": [ 100, 5, "fonts/calibrib40" ], diff --git a/resources/tagtypes/43.json b/resources/tagtypes/43.json index 05f67080..2c2a50a1 100644 --- a/resources/tagtypes/43.json +++ b/resources/tagtypes/43.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "M3 1.3\" Peghook", "width": 144, "height": 200, @@ -14,7 +14,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "button" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 15, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 17, 18, 19, 20, 21 ], "template": { "1": { "weekday": [ 72, 12, "fonts/calibrib28" ], diff --git a/resources/tagtypes/45.json b/resources/tagtypes/45.json index 4a6bd7b4..54dfbd87 100644 --- a/resources/tagtypes/45.json +++ b/resources/tagtypes/45.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "M3 2.2 Lite\"", "width": 250, "height": 128, @@ -13,7 +13,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/54.json b/resources/tagtypes/54.json index 33c2934a..f421cd88 100644 --- a/resources/tagtypes/54.json +++ b/resources/tagtypes/54.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "HS BW 2.13\"", "width": 256, "height": 128, @@ -12,7 +12,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/55.json b/resources/tagtypes/55.json index 286ebc19..1d22c378 100644 --- a/resources/tagtypes/55.json +++ b/resources/tagtypes/55.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 4, "name": "HS BWR 2.13\"", "width": 256, "height": 128, @@ -13,7 +13,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/56.json b/resources/tagtypes/56.json index 3bfa906b..5622a40b 100644 --- a/resources/tagtypes/56.json +++ b/resources/tagtypes/56.json @@ -1,5 +1,5 @@ { - "version": 4, + "version": 5, "name": "HS BWR 2.66\"", "width": 296, "height": 152, @@ -13,7 +13,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 27 ], "template": { "1": { "weekday": [ 148, 9, "Signika-SB.ttf", 60 ], diff --git a/resources/tagtypes/57.json b/resources/tagtypes/57.json index 47bf694e..ecf6553e 100644 --- a/resources/tagtypes/57.json +++ b/resources/tagtypes/57.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "TLSR BWR 1.54\"", "width": 200, "height": 200, @@ -13,7 +13,7 @@ "shortlut": 2, "zlib_compression": "27", "options": ["button", "customlut"], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 15, 17, 18, 19, 20, 21], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 17, 18, 19, 20, 21], "template": { "1": { "weekday": [ 100, 5, "Signika-SB.ttf", 40 ], diff --git a/resources/tagtypes/58.json b/resources/tagtypes/58.json index 07229c54..f97e77cb 100644 --- a/resources/tagtypes/58.json +++ b/resources/tagtypes/58.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "TLSR BW 2.13\"", "width": 256, "height": 128, @@ -14,7 +14,7 @@ "shortlut": 0, "zlib_compression": "27", "options": ["led"], - "contentids": [ 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20 ], + "contentids": [ 22, 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 18, 19, 20 ], "template": { "1": { diff --git a/resources/tagtypes/59.json b/resources/tagtypes/59.json index d69fc765..e006d807 100644 --- a/resources/tagtypes/59.json +++ b/resources/tagtypes/59.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "TLSR BWR 2.13\"", "width": 264, "height": 136, @@ -15,7 +15,7 @@ "shortlut": 0, "zlib_compression": "27", "options": ["led"], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20 ], "template": { "1": { "weekday": [ 148, -3, "Signika-SB.ttf", 60 ], diff --git a/resources/tagtypes/60.json b/resources/tagtypes/60.json index 943ee50c..d76f9dc6 100644 --- a/resources/tagtypes/60.json +++ b/resources/tagtypes/60.json @@ -1,5 +1,5 @@ { - "version": 3, + "version": 4, "name": "HS BWY 3.5\"", "width": 384, "height": 184, @@ -14,7 +14,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20, 27 ], "usetemplate": 51, "template": { "27": { diff --git a/resources/tagtypes/61.json b/resources/tagtypes/61.json index 24bc9d74..7b176e5b 100644 --- a/resources/tagtypes/61.json +++ b/resources/tagtypes/61.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "HS BWR 3.5\"", "width": 384, "height": 184, @@ -13,6 +13,6 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20 ], "usetemplate": 51 } diff --git a/resources/tagtypes/62.json b/resources/tagtypes/62.json index db5ea8ca..f5600d1d 100644 --- a/resources/tagtypes/62.json +++ b/resources/tagtypes/62.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "HS BW 3.5\"", "width": 384, "height": 184, @@ -12,6 +12,6 @@ "highlight_color": 5, "shortlut": 0, "options": [ "led" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20 ], "usetemplate": 51 } diff --git a/resources/tagtypes/63.json b/resources/tagtypes/63.json index 81346221..0e055339 100644 --- a/resources/tagtypes/63.json +++ b/resources/tagtypes/63.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "TLSR BWR 4.2\"", "width": 400, "height": 304, @@ -13,7 +13,7 @@ "shortlut": 0, "zlib_compression": "27", "options": ["led"], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 17, 18, 19, 20 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 17, 18, 19, 20 ], "template": { "1": { diff --git a/resources/tagtypes/67.json b/resources/tagtypes/67.json index 6e7da219..522764e4 100644 --- a/resources/tagtypes/67.json +++ b/resources/tagtypes/67.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "HS 2.00\" BWY", "width": 152, "height": 200, @@ -14,7 +14,7 @@ "shortlut": 2, "zlib_compression": "27", "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 15, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 10, 14, 17, 18, 19, 20, 21 ], "template": { "1": { "weekday": [ 76, 9, "fonts/calibrib30" ], diff --git a/resources/tagtypes/68.json b/resources/tagtypes/68.json index 28421cdf..52e4617d 100644 --- a/resources/tagtypes/68.json +++ b/resources/tagtypes/68.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "HS BWY 3.46\"", "width": 480, "height": 176, @@ -14,7 +14,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/69.json b/resources/tagtypes/69.json index c9d9eb93..1db87ccd 100644 --- a/resources/tagtypes/69.json +++ b/resources/tagtypes/69.json @@ -1,5 +1,5 @@ { - "version": 2, + "version": 3, "name": "TLSR BW 2.13\"", "width": 250, "height": 136, @@ -12,7 +12,7 @@ "shortlut": 0, "zlib_compression": "27", "options": [ "led" ], - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/81.json b/resources/tagtypes/81.json index 3f52f89b..33397a09 100644 --- a/resources/tagtypes/81.json +++ b/resources/tagtypes/81.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "Chroma29 2.9\" (UC8154)", "width": 296, "height": 128, @@ -11,6 +11,6 @@ "red": [255, 0, 0] }, "shortlut": 0, - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 27], "usetemplate": 1 } diff --git a/resources/tagtypes/82.json b/resources/tagtypes/82.json index 9ffc7ead..facc4c46 100644 --- a/resources/tagtypes/82.json +++ b/resources/tagtypes/82.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "Chroma29 2.9\"", "width": 296, "height": 128, @@ -11,6 +11,6 @@ "red": [255, 0, 0] }, "shortlut": 0, - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 17, 18, 19, 20, 21, 27], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 14, 16, 17, 18, 19, 20, 21, 27], "usetemplate": 1 } diff --git a/resources/tagtypes/B0.json b/resources/tagtypes/B0.json index 0ec59d23..416fcb43 100644 --- a/resources/tagtypes/B0.json +++ b/resources/tagtypes/B0.json @@ -1,5 +1,5 @@ { - "version": 4, + "version": 5, "name": "Gicisky BLE EPD BW 2.13\"", "width": 250, "height": 128, @@ -10,7 +10,7 @@ "black": [ 0, 0, 0 ] }, "shortlut": 0, - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/B1.json b/resources/tagtypes/B1.json index d0a676fb..db422fcd 100644 --- a/resources/tagtypes/B1.json +++ b/resources/tagtypes/B1.json @@ -1,5 +1,5 @@ { - "version": 4, + "version": 5, "name": "Gicisky BLE EPD BWR 2.13\"", "width": 250, "height": 128, @@ -11,7 +11,7 @@ "red": [ 255, 0, 0 ] }, "shortlut": 0, - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/B2.json b/resources/tagtypes/B2.json index e252c02d..5ea7cc17 100644 --- a/resources/tagtypes/B2.json +++ b/resources/tagtypes/B2.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "Gicisky BLE EPD BW 2.9\"", "width": 296, "height": 128, @@ -11,6 +11,6 @@ }, "shortlut": 0, "options": [ "button", "customlut" ], - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21 ], "usetemplate": 1 } diff --git a/resources/tagtypes/B3.json b/resources/tagtypes/B3.json index e574269e..afb8c951 100644 --- a/resources/tagtypes/B3.json +++ b/resources/tagtypes/B3.json @@ -1,5 +1,5 @@ { - "version": 1, + "version": 2, "name": "Gicisky BLE EPD BWR 2.9\"", "width": 296, "height": 128, @@ -10,6 +10,6 @@ "black": [ 0, 0, 0 ], "red": [ 255, 0, 0 ] }, - "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 27 ], + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 21, 27 ], "usetemplate": 1 } diff --git a/resources/tagtypes/BA.json b/resources/tagtypes/BA.json index 12742c89..1c251774 100644 --- a/resources/tagtypes/BA.json +++ b/resources/tagtypes/BA.json @@ -1,5 +1,5 @@ { - "version": 4, + "version": 5, "name": "Gicisky BLE TFT 2.13\"", "width": 250, "height": 136, @@ -10,7 +10,7 @@ "black": [ 0, 0, 0 ] }, "shortlut": 0, - "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 21, 22, 23, 27 ], + "contentids": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 16, 17, 19, 20, 21, 22, 23, 27 ], "template": { "1": { diff --git a/resources/tagtypes/C0.json b/resources/tagtypes/C0.json new file mode 100644 index 00000000..6080e2fc --- /dev/null +++ b/resources/tagtypes/C0.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "name": "BWRY example", + "width": 360, + "height": 184, + "rotatebuffer": 1, + "bpp": 2, + "colortable": { + "black": [ 0, 0, 0 ], + "white": [ 255, 255, 255 ], + "yellow": [ 255, 255, 0 ], + "red": [ 255, 0, 0 ] + }, + "shortlut": 0, + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 26 ], + "usetemplate": 1 +} diff --git a/resources/tagtypes/C1.json b/resources/tagtypes/C1.json new file mode 100644 index 00000000..fd172f6a --- /dev/null +++ b/resources/tagtypes/C1.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "name": "ACeP 4.01", + "width": 640, + "height": 400, + "rotatebuffer": 0, + "bpp": 3, + "colortable": { + "black": [ 0, 0, 0 ], + "white": [ 255, 255, 255 ], + "green": [ 0, 255, 0 ], + "blue": [ 0, 0, 255 ], + "red": [ 255, 0, 0 ], + "yellow": [ 255, 255, 0 ], + "orange": [ 255, 128, 0 ] + }, + "highlight_color": 8, + "shortlut": 0, + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 26, 27 ], + "usetemplate": 5 +} diff --git a/resources/tagtypes/C2.json b/resources/tagtypes/C2.json new file mode 100644 index 00000000..8c5a6284 --- /dev/null +++ b/resources/tagtypes/C2.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "name": "Spectra 7.3", + "width": 800, + "height": 480, + "rotatebuffer": 0, + "bpp": 4, + "colortable": { + "black": [ 0, 0, 0 ], + "white": [ 255, 255, 255 ], + "yellow": [ 255, 255, 0 ], + "red": [ 255, 0, 0 ], + "blue": [ 0, 0, 255 ], + "green": [ 0, 255, 0 ] + }, + "highlight_color": 8, + "shortlut": 0, + "contentids": [ 22, 23, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 16, 17, 18, 19, 20, 26, 27 ], + "usetemplate": 54 +}