From 674c044dd1c17172a35cddbee4318b1ea0e974cc Mon Sep 17 00:00:00 2001 From: sebastian Date: Wed, 14 Oct 2026 16:25:30 -0300 Subject: [PATCH] feat(ui,theme): soporte completo de temas y colores individuales en modo Yapa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Reemplazo de tipografías por renderizado anti-aliased suave y sin parpadeo (DSEG7 y bitmaps AA) - Títulos, unidades y guiones ('---') adaptados dinámicamente al tema de color activo - Modo Yapa con color pastel distintivo por cada letra, dígito y símbolo en velocímetro y temperaturas - Indicador ECO sobre RPM e icono GPS dinámico en velocímetro según origen de datos - Temperaturas interior y exterior redondeadas a números enteros --- dop.png | Bin 0 -> 268550 bytes emulator/obd2_emulator.py | 4 +- gauge_design.png | Bin 0 -> 67967 bytes gps_icon.png | Bin 0 -> 12660 bytes gps_icon.svg | 8 +- gps_icon.xcf | Bin 0 -> 17641 bytes sketch/obd2_gauge/bluetooth.h | 3 +- sketch/obd2_gauge/cluster_screen.h | 496 +++++++++++++-------------- sketch/obd2_gauge/coords_font.h | 39 +++ sketch/obd2_gauge/gps_clock.h | 11 +- sketch/obd2_gauge/gps_icon_aa_data.h | 283 ++++++++------- sketch/obd2_gauge/gps_module.h | 36 +- sketch/obd2_gauge/gps_nav.h | 97 ++++-- sketch/obd2_gauge/kmh_aa_data.h | 234 +++++++++++++ sketch/obd2_gauge/meter.h | 391 ++++----------------- sketch/obd2_gauge/obd2_gauge.ino | 154 +++++---- sketch/obd2_gauge/rainbow_text.h | 263 +++++++++++++- sketch/obd2_gauge/tri_temp.h | 91 +++-- 18 files changed, 1229 insertions(+), 881 deletions(-) create mode 100644 dop.png create mode 100644 gauge_design.png create mode 100644 gps_icon.png create mode 100644 gps_icon.xcf create mode 100644 sketch/obd2_gauge/kmh_aa_data.h diff --git a/dop.png b/dop.png new file mode 100644 index 0000000000000000000000000000000000000000..3da17dca968e01571ae15bad4d34c15a46c96a66 GIT binary patch literal 268550 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 &@p8nml{p<_jrz75e8X+kP;{5wKP#+U( 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

dF0@5 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

w4`xRB8;;F--q5 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
  • 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 eeE|5r`u_oYiA|gKPo^&b0000Snlb&f8pJX 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 + transform="translate(100.00, 88.00) rotate(-39.5) translate(61.44, 0)"/> + transform="translate(100.00, 88.00) rotate(-39.5) translate(-61.44, 0)"/> diff --git a/gps_icon.xcf b/gps_icon.xcf new file mode 100644 index 0000000000000000000000000000000000000000..11dc114dca03d0f6a3115d955663f1d4e59a0c06 GIT binary patch literal 17641 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 0.0f) return last_valid_data[1]; - return 0.0f; + return -999.0f; } inline bool isClusterSpeedFromGps() { @@ -56,29 +58,34 @@ static int oldClusterSpd = -999; static int oldClusterCoolant = -999; static float oldClusterVolt = -999.0f; static bool oldClusterGpsLock = false; +static bool oldClusterEco = false; +static uint16_t oldClusterCoolCol = 0; +static uint16_t oldClusterVoltCol = 0; +static int oldClusterSegs = -1; static uint32_t lastClusterUpdate = 0; inline void syncClusterTrackers() { oldClusterRpm = (int)round(getClusterRpmVal()); - oldClusterSpd = (int)round(getClusterSpeedVal()); + float s = getClusterSpeedVal(); + oldClusterSpd = (s >= 0.0f) ? (int)round(s) : -999; float c = getClusterCoolantVal(); oldClusterCoolant = (c > -900.0f) ? (int)round(c) : -999; oldClusterVolt = getClusterVoltVal(); oldClusterGpsLock = isClusterSpeedFromGps(); + oldClusterEco = isEcoOptimal; lastClusterUpdate = millis(); } -// Helper: draw 5 top pagination dots (page 4 active) +// Helper: draw 4 top pagination dots (page 0 active) inline void drawClusterDots(int x_offset = 0) { - uint16_t actCol = isRainbowTheme() ? getRainbowScreenColor(188, 2) : (isYapaTheme() ? getYapaColor(4) : getThemePrimaryColor()); - tft.fillCircle(132 + x_offset, 2, 2, 0x5AEB); - tft.fillCircle(146 + x_offset, 2, 2, 0x5AEB); - tft.fillCircle(160 + x_offset, 2, 2, 0x5AEB); - tft.fillCircle(174 + x_offset, 2, 2, 0x5AEB); - tft.fillCircle(188 + x_offset, 2, 2, actCol); + uint16_t actCol = isRainbowTheme() ? getRainbowScreenColor(139, 2) : (isYapaTheme() ? getYapaColor(0) : getThemePrimaryColor()); + tft.fillCircle(139 + x_offset, 2, 2, actCol); + tft.fillCircle(153 + x_offset, 2, 2, 0x5AEB); + tft.fillCircle(167 + x_offset, 2, 2, 0x5AEB); + tft.fillCircle(181 + x_offset, 2, 2, 0x5AEB); } -// Draw static framing of all 4 cards +// Draw static framing of all 4 cards (units and titles drawn ONCE without flicker) inline void drawClusterBaseCards(int x_offset = 0) { uint16_t cardBg = 0x10A2; uint16_t border = 0x2945; @@ -90,54 +97,47 @@ inline void drawClusterBaseCards(int x_offset = 0) { uint16_t cCool = isRainbowTheme() ? getRainbowScreenColor(20, 150) : (isYapaTheme() ? getYapaColor(2) : priCol); uint16_t cVolt = isRainbowTheme() ? getRainbowScreenColor(180, 150) : (isYapaTheme() ? getYapaColor(3) : accCol); - // 1. TACHOMETER CARD (x: 8, y: 10, w: 304, h: 42) - tft.fillRoundRect(8 + x_offset, 10, 304, 42, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 10, 304, 42, 5, border); - tft.fillRoundRect(12 + x_offset, 14, 3, 34, 1, cRpm); - drawPidIcon(18 + x_offset, 14, "010C"); - tft.setTextColor(0x8410, cardBg); - tft.drawString("RPM", 38 + x_offset, 16, 2); - // Tachometer background track (x: 76 to 216, w: 140, h: 12) - tft.fillRoundRect(76 + x_offset, 16, 140, 12, 3, 0x0841); - // RPM ticks - tft.drawString("1 2 3 4 5 6 7", 86 + x_offset, 31, 1); + // 1. TACHOMETER CARD (x: 8, y: 8, w: 304, h: 50) + tft.fillRoundRect(8 + x_offset, 8, 304, 50, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 8, 304, 50, 5, border); + // Tachometer background rail on the LEFT (x: 18 to 90, w: 72, h: 14) + tft.fillRoundRect(18 + x_offset, 15, 72, 14, 3, 0x0841); + if (isYapaTheme()) { + int sx = 20 + x_offset; + char buf[2] = {0, 0}; + for (int i = 0; i < 7; i++) { + buf[0] = '1' + i; + tft.setTextColor(getYapaColor(i), cardBg); + tft.drawString(buf, sx, 32, 1); + sx += tft.textWidth(buf, 1) + tft.textWidth(" ", 1); + } + } else { + tft.setTextColor(cRpm, cardBg); + tft.drawString("1 2 3 4 5 6 7", 20 + x_offset, 32, 1); + } + // "RPM" unit on the far right in Chakra Petch Bold Italic (aligned with foot of digits at y = 55) + drawRpm_AA(tft, 242 + x_offset, 35, cRpm, cardBg, 240, isRainbowTheme()); - // 2. SPEEDOMETER CARD (x: 8, y: 56, w: 304, h: 76) - tft.fillRoundRect(8 + x_offset, 56, 304, 76, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 56, 304, 76, 5, border); - tft.fillRoundRect(12 + x_offset, 60, 3, 68, 1, cSpd); - drawPidIcon(18 + x_offset, 60, "010D"); - tft.setTextColor(0x8410, cardBg); - tft.drawString("VELOCIDAD", 38 + x_offset, 62, 2); - // Background speed glow rail - tft.fillRoundRect(18 + x_offset, 124, 284, 3, 1, 0x0841); + // 2. SPEEDOMETER CARD (x: 8, y: 62, w: 304, h: 86) + tft.fillRoundRect(8 + x_offset, 62, 304, 86, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 62, 304, 86, 5, border); + // Large anti-aliased "KM/H" (Chakra Petch Bold Italic) at far right (baseline at y = 145) + drawKmH_AA(tft, 198 + x_offset, 117, cSpd, cardBg, 240, isRainbowTheme()); - // 3. COOLANT TEMP CARD (x: 8, y: 136, w: 148, h: 98) - tft.fillRoundRect(8 + x_offset, 136, 148, 98, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 136, 148, 98, 5, border); - tft.fillRoundRect(12 + x_offset, 140, 3, 90, 1, cCool); - drawPidIcon(18 + x_offset, 140, "0105"); - tft.setTextColor(0x8410, cardBg); - tft.drawString("REFRIG.", 38 + x_offset, 142, 2); - // Thermal bar rail (x: 18, y: 196, w: 128, h: 8) - tft.fillRoundRect(18 + x_offset, 196, 128, 8, 3, 0x0841); - tft.drawString("40`C", 18 + x_offset, 210, 1); - tft.drawString("120`C", 112 + x_offset, 210, 1); + // 3. COOLANT TEMP CARD (x: 8, y: 152, w: 148, h: 84) + tft.fillRoundRect(8 + x_offset, 152, 148, 84, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 152, 148, 84, 5, border); + drawTitRef_AA(tft, 28 + x_offset, 158, cCool, cardBg, 240, isRainbowTheme()); + drawDegreeC_AA(tft, 117 + x_offset, 198, cCool, cardBg, 240, isRainbowTheme()); - // 4. BATTERY VOLTAGE CARD (x: 164, y: 136, w: 148, h: 98) - tft.fillRoundRect(164 + x_offset, 136, 148, 98, 5, cardBg); - tft.drawRoundRect(164 + x_offset, 136, 148, 98, 5, border); - tft.fillRoundRect(168 + x_offset, 140, 3, 90, 1, cVolt); - drawPidIcon(174 + x_offset, 140, "ATRV"); - tft.setTextColor(0x8410, cardBg); - tft.drawString("BATERIA", 194 + x_offset, 142, 2); - // Voltage bar rail (x: 174, y: 196, w: 128, h: 8) - tft.fillRoundRect(174 + x_offset, 196, 128, 8, 3, 0x0841); - tft.drawString("10V", 174 + x_offset, 210, 1); - tft.drawString("16V", 272 + x_offset, 210, 1); + // 4. BATTERY VOLTAGE CARD (x: 164, y: 152, w: 148, h: 84) + tft.fillRoundRect(164 + x_offset, 152, 148, 84, 5, cardBg); + tft.drawRoundRect(164 + x_offset, 152, 148, 84, 5, border); + drawTitBat_AA(tft, 208 + x_offset, 158, cVolt, cardBg, 240, isRainbowTheme()); + drawVolt_AA(tft, 286 + x_offset, 198, cVolt, cardBg, 240, isRainbowTheme()); } -// Initial direct draw of Page 4 +// Initial direct draw of Page 0 inline void drawClusterScreen(int x_offset = 0) { tft.fillScreen(TFT_BLACK); drawClusterDots(x_offset); @@ -149,14 +149,18 @@ inline void drawClusterScreen(int x_offset = 0) { oldClusterCoolant = -999; oldClusterVolt = -999.0f; oldClusterGpsLock = false; + oldClusterEco = !isEcoOptimal; + oldClusterCoolCol = 0; + oldClusterVoltCol = 0; + oldClusterSegs = -1; void updateClusterScreen(bool forceRedraw = false); updateClusterScreen(true); } -// Live zero-flicker non-blocking update of Page 4 +// Live zero-flicker non-blocking update of Page 0 (Cockpit Instrumental) inline void updateClusterScreen(bool forceRedraw) { - if (currentScreenPage != 4 || fullScreenCell != -1) return; + if (currentScreenPage != 0 || fullScreenCell != -1) return; uint16_t cardBg = 0x10A2; uint16_t priCol = getThemePrimaryColor(); @@ -175,33 +179,57 @@ inline void updateClusterScreen(bool forceRedraw) { if (forceRedraw || abs(curRpm - oldClusterRpm) >= 20 || (curRpm == 0 && oldClusterRpm != 0)) { oldClusterRpm = curRpm; - // Erase numeric text area - tft.fillRect(222, 14, 84, 26, cardBg); - tft.setTextPadding(0); - if (curRpm > 0) { - uint16_t rpmCol = (curRpm >= 6000) ? TFT_RED : ((curRpm >= 4500) ? 0xFD60 : cRpm); - tft.setTextColor(rpmCol, cardBg); - String rpmStr = String(curRpm); - tft.drawRightString(rpmStr, 302, 16, 4); - } else { - tft.setTextColor(0x632C, cardBg); - tft.drawRightString("---", 302, 16, 4); + // Segmented Tachometer Bar on the LEFT (10 segments between x: 20 and 88) + int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 10); + if (activeSegs != oldClusterSegs || forceRedraw) { + oldClusterSegs = activeSegs; + for (int s = 0; s < 10; s++) { + int sx = 20 + s * 7; + uint16_t segCol; + if (s < activeSegs) { + if (s >= 8) segCol = TFT_RED; + else if (s >= 6) segCol = 0xFD60; + else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : (isYapaTheme() ? getYapaColor(s) : cRpm); + } else { + segCol = 0x0841; // inactive dark track + } + tft.fillRect(sx, 17, 5, 10, segCol); + } } - // Segmented Tachometer Bar (12 segments between x: 78 and 214) - // 0 to 7000 RPM -> ~583 RPM per segment - int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 12); - for (int s = 0; s < 12; s++) { - int sx = 78 + s * 11; - uint16_t segCol; - if (s < activeSegs) { - if (s >= 10) segCol = TFT_RED; - else if (s >= 8) segCol = 0xFD60; - else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : cRpm; + // RPM Numeric Value (44pt) rendered with zero-flicker line buffer (x: 100..238, rightX: 238) + bool rainbowTxt = isRainbowTheme(); + if (curRpm > 0) { + uint16_t rpmCol = (curRpm >= 6000) ? TFT_RED : ((curRpm >= 4500) ? 0xFD60 : cRpm); + String rpmStr = String(curRpm); + drawDseg7RightFast44(tft, rpmStr.c_str(), 238, 11, rpmCol, cardBg, 138, rainbowTxt && (rpmCol != TFT_RED)); + } else { + drawDseg7RightFast44(tft, "---", 238, 11, cRpm, cardBg, 138, rainbowTxt); + } + } + + // ECO Indicator in Card 1 centered directly above RPM unit (x = 248, y = 14, w = 48, h = 17) + if (forceRedraw || isEcoOptimal != oldClusterEco) { + oldClusterEco = isEcoOptimal; + if (isEcoOptimal) { + tft.fillRoundRect(248, 14, 48, 17, 3, 0x0202); + if (isYapaTheme()) { + char buf[2] = {0, 0}; + const char *ecoStr = "ECO"; + int ex = 260; + for (int i = 0; i < 3; i++) { + buf[0] = ecoStr[i]; + tft.setTextColor(getYapaColor(i), 0x0202); + tft.drawString(buf, ex, 15, 2); + ex += tft.textWidth(buf, 2); + } } else { - segCol = 0x0841; // inactive dark track + tft.setTextColor(TFT_WHITE, 0x0202); + tft.drawString("ECO", 260, 15, 2); } - tft.fillRect(sx, 18, 9, 8, segCol); + tft.drawRoundRect(248, 14, 48, 17, 3, 0x07E0); + } else { + tft.fillRect(248, 14, 48, 17, cardBg); } } @@ -209,50 +237,31 @@ inline void updateClusterScreen(bool forceRedraw) { // 2. SPEEDOMETER (VELOCIDAD) // ------------------------------------------------------------- float curSpdF = getClusterSpeedVal(); - int curSpd = (int)round(curSpdF); + int curSpd = (curSpdF >= 0.0f) ? (int)round(curSpdF) : -999; bool isGps = isClusterSpeedFromGps(); - if (forceRedraw || curSpd != oldClusterSpd || isGps != oldClusterGpsLock) { - oldClusterSpd = curSpd; + // GPS Satellite icon in Card 2 centered directly above KM/H (where ECO was): x = 243, y = 82, w = 18, h = 18 + // Only shows satellite icon if speed comes from GPS; clears when speed is from OBD2 + if (forceRedraw || isGps != oldClusterGpsLock) { oldClusterGpsLock = isGps; - - // Source Pill (GPS / OBD) - tft.fillRect(116, 61, 46, 14, cardBg); if (isGps) { - tft.fillRoundRect(116, 61, 42, 14, 3, 0x0254); - tft.setTextColor(0x07FF, 0x0254); - tft.drawString("GPS", 125, 63, 1); + drawGpsSatelliteIcon(tft, 243, 82, 0x07FF, 0x07FF, cardBg, 2); } else { - tft.fillRoundRect(116, 61, 42, 14, 3, 0x18C3); - tft.setTextColor(0x8410, 0x18C3); - tft.drawString("OBD", 125, 63, 1); + tft.fillRect(238, 80, 28, 22, cardBg); } + } - // Giant Speed Display - tft.fillRect(166, 60, 138, 56, cardBg); - String spdStr = String(curSpd); + if (forceRedraw || curSpd != oldClusterSpd) { + oldClusterSpd = curSpd; - tft.loadFont(DSEG7_Modern_BoldItalic_44); - uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(210, 80) : cSpd; - tft.setTextColor(spdCol, cardBg); - tft.drawRightString(spdStr, 248, 64, 1); - tft.unloadFont(); - - // Unit "km/h" - tft.setTextColor(0xBDD7, cardBg); - tft.drawString("km/h", 254, 88, 2); - - // Dynamic Bottom Speed Rail (w = 284) - int fillSpdW = map(constrain(curSpd, 0, 200), 0, 200, 0, 284); - tft.fillRect(18, 124, 284, 3, 0x0841); - if (fillSpdW > 0) { - if (isRainbowTheme()) { - for (int bx = 0; bx < fillSpdW; bx++) { - tft.drawFastVLine(18 + bx, 124, 3, getRainbowScreenColor(18 + bx, 124)); - } - } else { - tft.fillRect(18, 124, fillSpdW, 3, cSpd); - } + // Giant Speed Display using DSEG7 80pt rendered with zero-flicker line buffer (x: 14..194, rightX: 194) + if (curSpd >= 0) { + String spdStr = String(curSpd); + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 105) : cSpd; + drawDseg7RightFast80(tft, spdStr.c_str(), 194, 65, spdCol, cardBg, 180, isRainbowTheme()); + } else { + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 105) : cSpd; + drawDseg7RightFast80(tft, "---", 194, 65, spdCol, cardBg, 180, isRainbowTheme()); } } @@ -264,27 +273,18 @@ inline void updateClusterScreen(bool forceRedraw) { if (forceRedraw || curCool != oldClusterCoolant) { oldClusterCoolant = curCool; - tft.fillRect(20, 158, 130, 36, cardBg); if (curCool > -900) { uint16_t coolCol = (curCool >= 105) ? TFT_RED : ((curCool < 70) ? 0x05BF : cCool); - tft.setTextColor(coolCol, cardBg); String valStr = String(curCool); - tft.loadFont(DSEG7_Modern_BoldItalic_34); - tft.drawRightString(valStr, 102, 160, 1); - tft.unloadFont(); + bool rainbowTxt = isRainbowTheme(); + drawDseg7RightFast44(tft, valStr.c_str(), 112, 179, coolCol, cardBg, 102, rainbowTxt && (coolCol != TFT_RED)); - draw7SegDegreeC(tft, 106, 164, coolCol, cardBg, isRainbowTheme()); - - // Progress bar (40 to 120 °C) - int barW = map(constrain(curCool, 40, 120), 40, 120, 0, 128); - tft.fillRect(18, 196, 128, 8, 0x0841); - if (barW > 0) { - tft.fillRoundRect(18, 196, barW, 8, 2, coolCol); + if (coolCol != oldClusterCoolCol || forceRedraw) { + oldClusterCoolCol = coolCol; + drawDegreeC_AA(tft, 117, 198, coolCol, cardBg, 240, rainbowTxt); } } else { - tft.setTextColor(0x632C, cardBg); - tft.drawString("---", 60, 164, 4); - tft.fillRect(18, 196, 128, 8, 0x0841); + drawDseg7RightFast44(tft, "---", 112, 179, cCool, cardBg, 102, isRainbowTheme()); } } @@ -295,35 +295,24 @@ inline void updateClusterScreen(bool forceRedraw) { if (forceRedraw || abs(curVolt - oldClusterVolt) >= 0.08f) { oldClusterVolt = curVolt; - tft.fillRect(174, 158, 130, 36, cardBg); if (curVolt > 0.0f) { uint16_t voltCol = (curVolt < 11.8f || curVolt > 15.0f) ? TFT_RED : ((curVolt >= 13.5f) ? 0x07E0 : cVolt); String voltStr = String(curVolt, 1); + bool rainbowTxt = isRainbowTheme(); + drawDseg7RightFast44(tft, voltStr.c_str(), 282, 179, voltCol, cardBg, 112, rainbowTxt && (voltCol != TFT_RED)); - tft.loadFont(DSEG7_Modern_BoldItalic_34); - tft.setTextColor(voltCol, cardBg); - tft.drawRightString(voltStr, 268, 160, 1); - tft.unloadFont(); - - tft.setTextColor(0xBDD7, cardBg); - tft.drawString("V", 274, 172, 2); - - // Voltage bar (10.0 to 16.0 V) - int vBarW = map(constrain((int)(curVolt * 10), 100, 160), 100, 160, 0, 128); - tft.fillRect(174, 196, 128, 8, 0x0841); - if (vBarW > 0) { - tft.fillRoundRect(174, 196, vBarW, 8, 2, voltCol); + if (voltCol != oldClusterVoltCol || forceRedraw) { + oldClusterVoltCol = voltCol; + drawVolt_AA(tft, 286, 198, voltCol, cardBg, 240, rainbowTxt); } } else { - tft.setTextColor(0x632C, cardBg); - tft.drawString("---", 216, 164, 4); - tft.fillRect(174, 196, 128, 8, 0x0841); + drawDseg7RightFast44(tft, "---", 282, 179, cVolt, cardBg, 112, isRainbowTheme()); } } } -// Render Page 4 slice-by-slice into sprite (for double-buffered transitions) -inline void renderPage4ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int slice_h) { +// Render Cluster Screen (Page 0) slice-by-slice into sprite (for double-buffered transitions) +inline void renderClusterScreenToSprite(TFT_eSprite &s, int x_offset, int y_slice, int slice_h) { uint16_t cardBg = 0x10A2; uint16_t border = 0x2945; uint16_t priCol = getThemePrimaryColor(); @@ -334,157 +323,148 @@ inline void renderPage4ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int s uint16_t cCool = isRainbowTheme() ? getRainbowScreenColor(20, 150) : (isYapaTheme() ? getYapaColor(2) : priCol); uint16_t cVolt = isRainbowTheme() ? getRainbowScreenColor(180, 150) : (isYapaTheme() ? getYapaColor(3) : accCol); - // Pagination dots on top slice (page 4 active) + // Pagination dots on top slice (page 0 active of 4 pages) if (y_slice == 0) { - uint16_t actCol = isRainbowTheme() ? getRainbowScreenColor(188, 2) : (isYapaTheme() ? getYapaColor(4) : priCol); - s.fillCircle(132, 2, 2, 0x5AEB); - s.fillCircle(146, 2, 2, 0x5AEB); - s.fillCircle(160, 2, 2, 0x5AEB); - s.fillCircle(174, 2, 2, 0x5AEB); - s.fillCircle(188, 2, 2, actCol); + uint16_t actCol = isRainbowTheme() ? getRainbowScreenColor(139, 2) : (isYapaTheme() ? getYapaColor(0) : priCol); + s.fillCircle(139, 2, 2, actCol); + s.fillCircle(153, 2, 2, 0x5AEB); + s.fillCircle(167, 2, 2, 0x5AEB); + s.fillCircle(181, 2, 2, 0x5AEB); } - // 1. TACHOMETER CARD (y: 10 to 52) - int c0Y = 10 - y_slice; - if (c0Y < slice_h && c0Y + 42 > 0) { - s.fillRoundRect(8, c0Y, 304, 42, 5, cardBg); - s.drawRoundRect(8, c0Y, 304, 42, 5, border); - s.fillRoundRect(12, c0Y + 4, 3, 34, 1, cRpm); - drawPidIconToSprite(s, 18, c0Y + 4, "010C", y_slice, slice_h, 10); - s.setTextColor(0x8410, cardBg); - s.drawString("RPM", 38, c0Y + 6, 2); - - // Tachometer background rail - s.fillRoundRect(76, c0Y + 6, 140, 12, 3, 0x0841); - s.drawString("1 2 3 4 5 6 7", 86, c0Y + 21, 1); + // 1. TACHOMETER CARD (y: 8 to 58) + int c0Y = 8 - y_slice; + if (c0Y < slice_h && c0Y + 50 > 0) { + s.fillRoundRect(8, c0Y, 304, 50, 5, cardBg); + s.drawRoundRect(8, c0Y, 304, 50, 5, border); + s.setTextColor(cRpm, cardBg); + // Tachometer background rail on the LEFT + s.fillRoundRect(18, c0Y + 7, 72, 14, 3, 0x0841); + if (isYapaTheme()) { + int sx = 20; + char buf[2] = {0, 0}; + for (int i = 0; i < 7; i++) { + buf[0] = '1' + i; + s.setTextColor(getYapaColor(i), cardBg); + s.drawString(buf, sx, c0Y + 24, 1); + sx += s.textWidth(buf, 1) + s.textWidth(" ", 1); + } + } else { + s.setTextColor(cRpm, cardBg); + s.drawString("1 2 3 4 5 6 7", 20, c0Y + 24, 1); + } float curRpmF = getClusterRpmVal(); int curRpm = (int)round(curRpmF); + bool rainbowTxt = isRainbowTheme(); + int digitY = c0Y + 3; if (curRpm > 0) { uint16_t rpmCol = (curRpm >= 6000) ? TFT_RED : ((curRpm >= 4500) ? 0xFD60 : cRpm); - s.setTextColor(rpmCol, cardBg); - s.drawRightString(String(curRpm), 302, c0Y + 6, 4); + String rpmStr = String(curRpm); + drawDseg7RightString44(s, rpmStr.c_str(), 238, digitY, rpmCol, cardBg, 0, slice_h, rainbowTxt && (rpmCol != TFT_RED)); - int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 12); - for (int seg = 0; seg < 12; seg++) { - int sx = 78 + seg * 11; + int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 10); + for (int seg = 0; seg < 10; seg++) { + int sx = 20 + seg * 7; uint16_t segCol = 0x0841; if (seg < activeSegs) { - if (seg >= 10) segCol = TFT_RED; - else if (seg >= 8) segCol = 0xFD60; - else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : cRpm; + if (seg >= 8) segCol = TFT_RED; + else if (seg >= 6) segCol = 0xFD60; + else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : (isYapaTheme() ? getYapaColor(seg) : cRpm); } - s.fillRect(sx, c0Y + 8, 9, 8, segCol); + s.fillRect(sx, c0Y + 9, 5, 10, segCol); } } else { - s.setTextColor(0x632C, cardBg); - s.drawRightString("---", 302, c0Y + 6, 4); + drawDseg7RightString44(s, "---", 238, digitY, cRpm, cardBg, 0, slice_h, rainbowTxt); + } + + drawRpm_AA(s, 242, c0Y + 27, cRpm, cardBg, slice_h, isRainbowTheme()); + + if (isEcoOptimal) { + s.fillRoundRect(248, c0Y + 6, 48, 17, 3, 0x0202); + if (isYapaTheme()) { + char buf[2] = {0, 0}; + const char *ecoStr = "ECO"; + int ex = 260; + for (int i = 0; i < 3; i++) { + buf[0] = ecoStr[i]; + s.setTextColor(getYapaColor(i), 0x0202); + s.drawString(buf, ex, c0Y + 7, 2); + ex += s.textWidth(buf, 2); + } + } else { + s.setTextColor(TFT_WHITE, 0x0202); + s.drawString("ECO", 260, c0Y + 7, 2); + } + s.drawRoundRect(248, c0Y + 6, 48, 17, 3, 0x07E0); } } - // 2. SPEEDOMETER CARD (y: 56 to 132) - int c1Y = 56 - y_slice; - if (c1Y < slice_h && c1Y + 76 > 0) { - s.fillRoundRect(8, c1Y, 304, 76, 5, cardBg); - s.drawRoundRect(8, c1Y, 304, 76, 5, border); - s.fillRoundRect(12, c1Y + 4, 3, 68, 1, cSpd); - drawPidIconToSprite(s, 18, c1Y + 4, "010D", y_slice, slice_h, 56); - s.setTextColor(0x8410, cardBg); - s.drawString("VELOCIDAD", 38, c1Y + 6, 2); + // 2. SPEEDOMETER CARD (y: 62 to 148) + int c1Y = 62 - y_slice; + if (c1Y < slice_h && c1Y + 86 > 0) { + s.fillRoundRect(8, c1Y, 304, 86, 5, cardBg); + s.drawRoundRect(8, c1Y, 304, 86, 5, border); bool isGps = isClusterSpeedFromGps(); if (isGps) { - s.fillRoundRect(116, c1Y + 5, 42, 14, 3, 0x0254); - s.setTextColor(0x07FF, 0x0254); - s.drawString("GPS", 125, c1Y + 7, 1); + drawGpsSatelliteIcon(s, 243, c1Y + 20, 0x07FF, 0x07FF, cardBg, 2); + } + + float curSpdF = getClusterSpeedVal(); + int curSpd = (curSpdF >= 0.0f) ? (int)round(curSpdF) : -999; + int digitY = c1Y + 3; + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(240, 105) : cSpd; + if (curSpd >= 0) { + String spdStr = String(curSpd); + drawDseg7RightString80(s, spdStr.c_str(), 194, digitY, spdCol, cardBg, 0, slice_h, isRainbowTheme()); } else { - s.fillRoundRect(116, c1Y + 5, 42, 14, 3, 0x18C3); - s.setTextColor(0x8410, 0x18C3); - s.drawString("OBD", 125, c1Y + 7, 1); + drawDseg7RightString80(s, "---", 194, digitY, spdCol, cardBg, 0, slice_h, isRainbowTheme()); } - int curSpd = (int)round(getClusterSpeedVal()); - String spdStr = String(curSpd); - s.loadFont(DSEG7_Modern_BoldItalic_44); - uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(210, 80) : cSpd; - s.setTextColor(spdCol, cardBg); - s.drawRightString(spdStr, 248, c1Y + 8, 1); - s.unloadFont(); - - s.setTextColor(0xBDD7, cardBg); - s.drawString("km/h", 254, c1Y + 32, 2); - - int fillSpdW = map(constrain(curSpd, 0, 200), 0, 200, 0, 284); - s.fillRect(18, c1Y + 68, 284, 3, 0x0841); - if (fillSpdW > 0) { - s.fillRect(18, c1Y + 68, fillSpdW, 3, cSpd); - } + drawKmH_AA(s, 198, c1Y + 55, cSpd, cardBg, slice_h, isRainbowTheme()); } - // 3. COOLANT TEMP CARD (y: 136 to 234) - int c2Y = 136 - y_slice; - if (c2Y < slice_h && c2Y + 98 > 0) { - s.fillRoundRect(8, c2Y, 148, 98, 5, cardBg); - s.drawRoundRect(8, c2Y, 148, 98, 5, border); - s.fillRoundRect(12, c2Y + 4, 3, 90, 1, cCool); - drawPidIconToSprite(s, 18, c2Y + 4, "0105", y_slice, slice_h, 136); - s.setTextColor(0x8410, cardBg); - s.drawString("REFRIG.", 38, c2Y + 6, 2); - - s.fillRect(18, c2Y + 60, 128, 8, 0x0841); - s.drawString("40`C", 18, c2Y + 74, 1); - s.drawString("120`C", 112, c2Y + 74, 1); + // 3. COOLANT TEMP CARD (y: 152 to 236) + int c2Y = 152 - y_slice; + if (c2Y < slice_h && c2Y + 84 > 0) { + s.fillRoundRect(8, c2Y, 148, 84, 5, cardBg); + s.drawRoundRect(8, c2Y, 148, 84, 5, border); + drawTitRef_AA(s, 28, c2Y + 6, cCool, cardBg, slice_h, isRainbowTheme()); float curCoolF = getClusterCoolantVal(); int curCool = (curCoolF > -900.0f) ? (int)round(curCoolF) : -999; if (curCool > -900) { uint16_t coolCol = (curCool >= 105) ? TFT_RED : ((curCool < 70) ? 0x05BF : cCool); - s.loadFont(DSEG7_Modern_BoldItalic_34); - s.setTextColor(coolCol, cardBg); - s.drawRightString(String(curCool), 102, c2Y + 24, 1); - s.unloadFont(); + String valStr = String(curCool); + bool rainbowTxt = isRainbowTheme(); + int rightX = (valStr.length() >= 3) ? 112 : 106; + drawDseg7RightString44(s, valStr.c_str(), rightX, c2Y + 27, coolCol, cardBg, 0, slice_h, rainbowTxt && (coolCol != TFT_RED)); - int barW = map(constrain(curCool, 40, 120), 40, 120, 0, 128); - if (barW > 0) { - s.fillRoundRect(18, c2Y + 60, barW, 8, 2, coolCol); - } + drawDegreeC_AA(s, 117, c2Y + 46, coolCol, cardBg, slice_h, isRainbowTheme()); } else { - s.setTextColor(0x632C, cardBg); - s.drawString("---", 60, c2Y + 28, 4); + drawDseg7RightString44(s, "---", 112, c2Y + 27, cCool, cardBg, 0, slice_h, isRainbowTheme()); } } - // 4. BATTERY VOLTAGE CARD (y: 136 to 234) - int c3Y = 136 - y_slice; - if (c3Y < slice_h && c3Y + 98 > 0) { - s.fillRoundRect(164, c3Y, 148, 98, 5, cardBg); - s.drawRoundRect(164, c3Y, 148, 98, 5, border); - s.fillRoundRect(168, c3Y + 4, 3, 90, 1, cVolt); - drawPidIconToSprite(s, 174, c3Y + 4, "ATRV", y_slice, slice_h, 136); - s.setTextColor(0x8410, cardBg); - s.drawString("BATERIA", 194, c3Y + 6, 2); - - s.fillRect(174, c3Y + 60, 128, 8, 0x0841); - s.drawString("10V", 174, c3Y + 74, 1); - s.drawString("16V", 272, c3Y + 74, 1); + // 4. BATTERY VOLTAGE CARD (y: 152 to 236) + int c3Y = 152 - y_slice; + if (c3Y < slice_h && c3Y + 84 > 0) { + s.fillRoundRect(164, c3Y, 148, 84, 5, cardBg); + s.drawRoundRect(164, c3Y, 148, 84, 5, border); + drawTitBat_AA(s, 208, c3Y + 6, cVolt, cardBg, slice_h, isRainbowTheme()); float curVolt = getClusterVoltVal(); if (curVolt > 0.0f) { uint16_t voltCol = (curVolt < 11.8f || curVolt > 15.0f) ? TFT_RED : ((curVolt >= 13.5f) ? 0x07E0 : cVolt); - s.loadFont(DSEG7_Modern_BoldItalic_34); - s.setTextColor(voltCol, cardBg); - s.drawRightString(String(curVolt, 1), 268, c3Y + 24, 1); - s.unloadFont(); - s.setTextColor(0xBDD7, cardBg); - s.drawString("V", 274, c3Y + 36, 2); + String voltStr = String(curVolt, 1); + bool rainbowTxt = isRainbowTheme(); + drawDseg7RightString44(s, voltStr.c_str(), 282, c3Y + 27, voltCol, cardBg, 0, slice_h, rainbowTxt && (voltCol != TFT_RED)); - int vBarW = map(constrain((int)(curVolt * 10), 100, 160), 100, 160, 0, 128); - if (vBarW > 0) { - s.fillRoundRect(174, c3Y + 60, vBarW, 8, 2, voltCol); - } + drawVolt_AA(s, 286, c3Y + 46, voltCol, cardBg, slice_h, isRainbowTheme()); } else { - s.setTextColor(0x632C, cardBg); - s.drawString("---", 216, c3Y + 28, 4); + drawDseg7RightString44(s, "---", 282, c3Y + 27, cVolt, cardBg, 0, slice_h, isRainbowTheme()); } } } + diff --git a/sketch/obd2_gauge/coords_font.h b/sketch/obd2_gauge/coords_font.h index 8ef9c53..28d4db0 100644 --- a/sketch/obd2_gauge/coords_font.h +++ b/sketch/obd2_gauge/coords_font.h @@ -609,6 +609,45 @@ inline void drawGpsNavSubword(T &dst, const char *str, int x, int y, uint16_t co } } +// Calculate exact pixel width of anti-aliased Subword string +inline int getNavSubwordWidth(const char *str) { + int totalW = 0; + for (int i = 0; str[i] != '\0'; i++) { + char c = str[i]; + int gIdx = -1; + if (c >= 'A' && c <= 'Z') { + gIdx = c - 'A'; + } else if (c >= 'a' && c <= 'z') { + gIdx = c - 'a'; + } else if (c >= '0' && c <= '9') { + gIdx = 26 + (c - '0'); + } else if (c == ':') { + gIdx = 36; + } else if (c == '.') { + gIdx = 37; + } else if (c == '-') { + gIdx = 38; + } else if ((uint8_t)c == 0xC2 && (uint8_t)str[i + 1] == 0xB0) { + gIdx = 39; + i++; + } else if ((uint8_t)c == 0xB0 || c == '`') { + gIdx = 39; + } else if (c == '/') { + gIdx = 40; + } else if (c == ' ') { + gIdx = 41; + } + + if (gIdx >= 0) { + CoordsGlyphAA g; + memcpy_P(&g, &s_navSubGlyphs[gIdx], sizeof(CoordsGlyphAA)); + totalW += g.xAdv; + } + } + return totalW; +} + + // 3. Draw 100% anti-aliased Coordinate Value (e.g. "-34.60371°" or "--.-----°") template inline void drawCoordsAAValue(T &dst, const char *str, int x, int y, uint16_t color, uint16_t bgCol, int clip_h = 240) { diff --git a/sketch/obd2_gauge/gps_clock.h b/sketch/obd2_gauge/gps_clock.h index ad52a26..75e6d13 100644 --- a/sketch/obd2_gauge/gps_clock.h +++ b/sketch/obd2_gauge/gps_clock.h @@ -348,12 +348,11 @@ inline void drawGpsClockScreen(int x_offset = 0) { uint16_t cardBorder = 0x2945; // Subtle edge border bool synced = isGpsSynced(); - // Center: 5 Pagination Indicator Dots [○ ○ ● ○ ○] (Page 2 of 5 active) - tft.fillCircle(132 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive - tft.fillCircle(146 + x_offset, 2, 2, 0x5AEB); // Page 1 inactive - tft.fillCircle(160 + x_offset, 2, 2, priCol); // Page 2 active - tft.fillCircle(174 + x_offset, 2, 2, 0x5AEB); // Page 3 inactive - tft.fillCircle(188 + x_offset, 2, 2, 0x5AEB); // Page 4 inactive + // Center: 4 Pagination Indicator Dots [○ ○ ● ○] (Page 2 of 4 active) + tft.fillCircle(139 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive + tft.fillCircle(153 + x_offset, 2, 2, 0x5AEB); // Page 1 inactive + tft.fillCircle(167 + x_offset, 2, 2, priCol); // Page 2 active + tft.fillCircle(181 + x_offset, 2, 2, 0x5AEB); // Page 3 inactive // 2. MAIN CLOCK CARD (y = 19 to 121, height = 102, width = 312, x = 4) int clkX = 4 + x_offset; diff --git a/sketch/obd2_gauge/gps_icon_aa_data.h b/sketch/obd2_gauge/gps_icon_aa_data.h index c68f13b..5654864 100644 --- a/sketch/obd2_gauge/gps_icon_aa_data.h +++ b/sketch/obd2_gauge/gps_icon_aa_data.h @@ -1,160 +1,155 @@ -// Generated from accurate vector model matching gps_icon.jpg / gps_icon.svg +// Generated from accurate vector model matching gps_icon.png / gps_icon.svg // 8-bit Subpixel Antialiased Alpha Maps (0..255) #pragma once #include static const uint8_t GPS_BODY_AA_18[324] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 201, 255, 99, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 48, 26, 54, 255, 255, 250, 106, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 171, 255, 238, 115, 216, 211, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 255, 250, 255, 223, 33, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 96, 255, 251, 255, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 106, 240, 183, 165, 255, 243, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 172, 255, 255, 213, 0, 45, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 160, 255, 147, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 28, 27, 0, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 4, 0, 56, 231, 231, 22, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 252, 255, 209, 24, 1, 1, 0, 0, 0, + 0, 0, 0, 2, 0, 45, 184, 182, 102, 233, 174, 10, 0, 1, 0, 0, 0, 0, + 0, 0, 1, 4, 7, 209, 255, 255, 212, 34, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 4, 0, 0, 233, 254, 252, 250, 13, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 76, 155, 128, 249, 255, 130, 1, 3, 0, 0, 0, 0, 0, 0, 0, + 2, 5, 107, 249, 255, 101, 36, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 23, 255, 255, 153, 17, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 91, 118, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static const uint8_t GPS_WAVE1_AA_18[324] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 185, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 199, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 254, 137, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 255, 44, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 193, 255, 151, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 227, 225, 229, 255, 255, 152, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 199, 234, 226, 167, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 201, 107, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 32, 255, 162, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 6, 0, 77, 253, 111, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 207, 252, 33, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 12, 11, 61, 198, 255, 125, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 174, 248, 242, 255, 255, 135, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 2, 0, 104, 191, 190, 141, 51, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 2, 2, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static const uint8_t GPS_WAVE2_AA_18[324] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 96, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 255, 84, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 239, 82, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 243, 53, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 229, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 245, 137, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 210, 232, 42, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 182, 248, 112, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 201, 255, 142, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 124, 88, 96, 142, 198, 254, 242, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 234, 255, 255, 255, 255, 244, 151, 57, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 94, 111, 103, 73, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 15, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 187, 210, 2, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, 241, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 238, 212, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 51, 255, 158, 0, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 162, 255, 69, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 6, 0, 73, 255, 201, 3, 2, 0, + 0, 0, 0, 0, 2, 1, 3, 3, 1, 0, 0, 69, 242, 248, 48, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 142, 255, 253, 81, 0, 3, 0, 0, + 0, 0, 3, 0, 79, 205, 175, 176, 211, 255, 255, 210, 60, 0, 3, 0, 0, 0, + 0, 0, 3, 0, 87, 239, 255, 255, 239, 184, 93, 6, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 25, 25, 9, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 3, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static const uint8_t GPS_BODY_AA_28[784] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 213, 255, 255, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 255, 255, 244, 255, 201, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 49, 29, 0, 124, 255, 249, 251, 255, 220, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 120, 235, 255, 242, 135, 38, 241, 255, 255, 155, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 94, 255, 255, 254, 255, 255, 106, 87, 210, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 200, 253, 251, 255, 252, 252, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 218, 253, 253, 255, 254, 254, 238, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 115, 40, 149, 255, 247, 252, 248, 255, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 54, 201, 255, 213, 33, 216, 255, 255, 255, 237, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 126, 250, 255, 243, 255, 133, 16, 130, 169, 137, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 155, 255, 251, 249, 255, 229, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 110, 255, 255, 255, 169, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 181, 234, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 32, 58, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 62, 231, 255, 65, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 3, 0, 98, 249, 255, 254, 234, 8, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 126, 255, 251, 253, 255, 127, 3, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 0, 40, 114, 112, 26, 132, 255, 255, 246, 91, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 84, 246, 255, 255, 234, 53, 171, 225, 55, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 15, 234, 255, 249, 249, 255, 208, 5, 13, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 3, 54, 255, 253, 255, 254, 253, 249, 28, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 18, 252, 252, 251, 250, 253, 232, 13, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4, 0, 21, 173, 87, 117, 255, 255, 255, 255, 111, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 51, 219, 255, 248, 65, 97, 187, 180, 89, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 1, 84, 243, 255, 245, 255, 136, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 24, 255, 254, 251, 255, 143, 5, 5, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 145, 255, 251, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 134, 69, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static const uint8_t GPS_WAVE1_AA_28[784] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 166, 81, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 255, 245, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 252, 244, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 249, 213, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 249, 243, 158, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 236, 239, 106, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 240, 230, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 250, 233, 231, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 76, 51, 68, 116, 193, 249, 232, 255, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 119, 255, 255, 248, 246, 255, 255, 242, 224, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 142, 255, 255, 255, 249, 255, 229, 149, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 123, 149, 157, 140, 103, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 176, 241, 83, 0, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 22, 245, 255, 162, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 32, 245, 254, 144, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 83, 255, 255, 105, 0, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 0, 192, 254, 251, 38, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 0, 0, 117, 255, 255, 177, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 131, 255, 253, 247, 40, 1, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 0, 42, 117, 91, 95, 141, 219, 255, 255, 255, 86, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 1, 2, 219, 255, 255, 255, 255, 255, 255, 230, 78, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 1, 165, 255, 255, 255, 252, 218, 135, 24, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 50, 75, 73, 46, 7, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static const uint8_t GPS_WAVE2_AA_28[784] PROGMEM = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 199, 227, 71, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 255, 255, 179, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 248, 252, 171, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 225, 232, 133, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 228, 225, 106, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 224, 226, 68, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 193, 238, 179, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 243, 227, 119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 180, 228, 189, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 221, 236, 154, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 243, 233, 192, 34, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 240, 243, 241, 88, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 167, 228, 232, 242, 134, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 74, 144, 225, 244, 229, 235, 121, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 84, 218, 199, 159, 175, 166, 177, 221, 238, 247, 243, 253, 183, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 214, 255, 255, 255, 255, 255, 244, 237, 247, 248, 186, 126, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 107, 238, 242, 231, 255, 245, 224, 196, 175, 102, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 43, 63, 80, 70, 47, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 30, 88, 13, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 203, 255, 157, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 230, 252, 197, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 15, 230, 255, 185, 0, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 36, 248, 255, 164, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 83, 255, 255, 121, 0, 4, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 164, 255, 255, 58, 0, 3, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 29, 243, 254, 218, 6, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 162, 255, 255, 117, 0, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 89, 255, 253, 228, 14, 1, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 72, 248, 250, 255, 80, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 3, 3, 4, 4, 0, 0, 0, 107, 250, 250, 255, 138, 0, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 67, 186, 255, 253, 255, 153, 0, 3, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 57, 125, 90, 71, 73, 96, 143, 207, 255, 255, 255, 254, 124, 0, 2, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 12, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 62, 0, 2, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 6, 191, 255, 255, 255, 255, 255, 255, 232, 171, 77, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 0, 8, 63, 97, 115, 113, 93, 59, 17, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1, 3, 4, 4, 4, 4, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; diff --git a/sketch/obd2_gauge/gps_module.h b/sketch/obd2_gauge/gps_module.h index b1b0072..f1c3657 100644 --- a/sketch/obd2_gauge/gps_module.h +++ b/sketch/obd2_gauge/gps_module.h @@ -149,7 +149,7 @@ extern Preferences pref; static const uint32_t CANDIDATE_BAUDS[4] = {38400, 115200, 9600, 57600}; static const char *const CANDIDATE_LABELS[4] = { - "BUSCANDO: 38400", "BUSCANDO: 115K", "BUSCANDO: 9600", "BUSCANDO: 57.6K"}; + "BUSCANDO: 38.4 KBPS", "BUSCANDO: 115.2 KBPS", "BUSCANDO: 9.6 KBPS", "BUSCANDO: 57.6 KBPS"}; static uint32_t activeGpsBaud = 38400; static bool gpsUartLocked = false; @@ -305,7 +305,17 @@ inline void processGPS() { gpsUartLocked = true; activeGpsBaud = CANDIDATE_BAUDS[gpsBaudScanIdx]; pref.putUInt("gps_baud", activeGpsBaud); // Guardar velocidad exacta en NVRAM! - snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: %lu BPS", (unsigned long)activeGpsBaud); + if (activeGpsBaud == 115200) { + snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: 115.2 KBPS"); + } else if (activeGpsBaud == 57600) { + snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: 57.6 KBPS"); + } else if (activeGpsBaud == 38400) { + snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: 38.4 KBPS"); + } else if (activeGpsBaud == 9600) { + snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: 9.6 KBPS"); + } else { + snprintf(gpsDiagLabel, sizeof(gpsDiagLabel), "FIJADO: %lu BPS", (unsigned long)activeGpsBaud); + } configureGpsModule(); } } @@ -533,6 +543,26 @@ inline bool isGpsSerialReceiving() { } inline bool isGpsUartLocked() { return gpsUartLocked; } +// DOP Precision Rating matching standard DOP table (dop.png) +inline const char *getGpsDopRating() { + if (gpsHdop < 1.0f) return "IDEAL"; + if (gpsHdop < 2.0f) return "EXCELENTE"; + if (gpsHdop < 5.0f) return "BUENA"; + if (gpsHdop < 10.0f) return "MODERADA"; + if (gpsHdop <= 20.0f) return "REGULAR"; + return "POBRE"; +} + +inline uint16_t getGpsDopColor() { + if (!isGpsSynced()) return 0x9CD3; + if (gpsHdop < 1.0f) return 0x07FF; // Cyan (Ideal) + if (gpsHdop < 2.0f) return 0x07E0; // Verde (Excelente) + if (gpsHdop < 5.0f) return 0xFFE0; // Amarillo (Buena) + if (gpsHdop < 10.0f) return 0xFD20; // Naranja (Moderada) + if (gpsHdop <= 20.0f) return 0xFA60; // Naranja oscuro (Regular) + return TFT_RED; // Rojo (Pobre) +} + inline const char *getGpsDiagMessage() { if (gpsIsSleeping) return "MODO REPOSO"; @@ -543,7 +573,7 @@ inline const char *getGpsDiagMessage() { return "SIN DATOS RX"; } if (isGpsSynced()) { - return "PRECISION OPTIMA"; + return getGpsDopRating(); } if (gpsSats > 0) { return "SINTONIZANDO SATS"; diff --git a/sketch/obd2_gauge/gps_nav.h b/sketch/obd2_gauge/gps_nav.h index b07aa7e..8e6af6f 100644 --- a/sketch/obd2_gauge/gps_nav.h +++ b/sketch/obd2_gauge/gps_nav.h @@ -40,9 +40,22 @@ static uint8_t oldNavWaveState = 255; static bool oldNavSynced = false; static uint32_t lastNavPageEnterTime = 0; +static TFT_eSprite sprNavDiag(&tft); +static bool sprNavDiagAllocated = false; + +inline void initNavDiagSprite() { + if (!sprNavDiagAllocated) { + if (sprNavDiag.createSprite(138, 16) != nullptr) { + sprNavDiagAllocated = true; + } + } +} + // Synchronize tracking variables without touching TFT display (zero flicker) -inline void syncGpsNavTrackers() { - lastNavPageEnterTime = millis(); +inline void syncGpsNavTrackers(bool isPageEnter = false) { + if (isPageEnter) { + lastNavPageEnterTime = millis(); + } bool synced = isGpsSynced(); bool altValid = isGpsAltitudeValid(); lastNavAltRound = altValid ? (int)round(gpsAltitudeM) : -999; @@ -85,6 +98,32 @@ inline void drawLargeSatelliteIconSprite(TFT_eSprite &s, int x, int y, uint16_t drawLargeGpsSatelliteIcon(s, x, y, TFT_WHITE, color, bgColor, waveState); } +// Draw diagnostic message with static, right-justified "KBPS" unit for scanning/locked baud +template +inline void drawGpsNavDiag(T &dst, const char *msg, int c2X, int c2Y, uint16_t color, uint16_t bgCol, int clip_h = 240) { + if (strncmp(msg, "BUSCANDO", 8) == 0 || strncmp(msg, "FIJADO", 6) == 0) { + bool isBuscando = (strncmp(msg, "BUSCANDO", 8) == 0); + const char *prefix = isBuscando ? "BUSCANDO:" : "FIJADO:"; + drawGpsNavSubword(dst, prefix, c2X + 16, c2Y + 90, color, bgCol, clip_h); + drawGpsNavSubword(dst, "KBPS", c2X + 116, c2Y + 90, color, bgCol, clip_h); + + const char *p = msg + (isBuscando ? 8 : 6); + while (*p == ':' || *p == ' ') p++; + char valBuf[10]; + int vi = 0; + while (*p != '\0' && *p != ' ' && vi < (int)sizeof(valBuf) - 1) { + valBuf[vi++] = *p++; + } + valBuf[vi] = '\0'; + + int valW = getNavSubwordWidth(valBuf); + int valX = c2X + 113 - valW; + drawGpsNavSubword(dst, valBuf, valX, c2Y + 90, color, bgCol, clip_h); + } else { + drawGpsNavSubword(dst, msg, c2X + 16, c2Y + 90, color, bgCol, clip_h); + } +} + // Draw full Page 3 (GPS Navigation & Telemetry Screen: Altitud, Rumbo, Satélites, Coordenadas) inline void drawGpsNavScreen(int x_offset = 0) { if (x_offset == 0) { @@ -103,12 +142,11 @@ inline void drawGpsNavScreen(int x_offset = 0) { uint16_t cardBorder = 0x2945; // Subtle edge border bool synced = isGpsSynced(); - // Center: 5 Pagination Indicator Dots [○ ○ ○ ● ○] (Page 3 of 5 active) - tft.fillCircle(132 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive - tft.fillCircle(146 + x_offset, 2, 2, 0x5AEB); // Page 1 inactive - tft.fillCircle(160 + x_offset, 2, 2, 0x5AEB); // Page 2 inactive - tft.fillCircle(174 + x_offset, 2, 2, priCol); // Page 3 active - tft.fillCircle(188 + x_offset, 2, 2, 0x5AEB); // Page 4 inactive + // Center: 4 Pagination Indicator Dots [○ ○ ○ ●] (Page 3 of 4 active) + tft.fillCircle(139 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive + tft.fillCircle(153 + x_offset, 2, 2, 0x5AEB); // Page 1 inactive + tft.fillCircle(167 + x_offset, 2, 2, 0x5AEB); // Page 2 inactive + tft.fillCircle(181 + x_offset, 2, 2, priCol); // Page 3 active // 2. CARD 0 (Top Left): ALTITUD (x = 4, y = 19, w = 152, h = 102) int c0X = 4 + x_offset; @@ -124,7 +162,7 @@ inline void drawGpsNavScreen(int x_offset = 0) { bool altValid = isGpsAltitudeValid(); String altStr = altValid ? String((int)round(gpsAltitudeM)) : "---"; - drawDseg7RightString34(tft, altStr.c_str(), c0X + 140, c0Y + 28, c0Col, cardBg, 0, 240, isRainbowTheme()); + drawDseg7RightString34(tft, altStr.c_str(), c0X + 140, c0Y + 28, c0Col, cardBg, 126, 240, isRainbowTheme()); // 3. CARD 1 (Top Right): RUMBO / BRÚJULA (x = 164, y = 19, w = 152, h = 102) int c1X = 164 + x_offset; @@ -137,7 +175,7 @@ inline void drawGpsNavScreen(int x_offset = 0) { bool hasCourse = synced && isGpsCourseValid(); String crsStr = hasCourse ? String((int)round(gpsCourseDeg)) : "---"; - drawDseg7RightString34(tft, crsStr.c_str(), c1X + 130, c1Y + 28, c1Col, cardBg, 0, 240, isRainbowTheme()); + drawDseg7RightString34(tft, crsStr.c_str(), c1X + 130, c1Y + 28, c1Col, cardBg, 95, 240, isRainbowTheme()); if (hasCourse) { tft.drawCircle(c1X + 137, c1Y + 33, 3, c1Col); tft.drawCircle(c1X + 137, c1Y + 33, 2, c1Col); @@ -164,13 +202,21 @@ inline void drawGpsNavScreen(int x_offset = 0) { // Large Satellites Count (DSEG7 34pt): Shows "---" while scanning/probing UART, "0" or count when locked String satStr = isGpsUartLocked() ? String(gpsSats) : "---"; - drawDseg7RightString34(tft, satStr.c_str(), c2X + 140, c2Y + 26, c2Col, cardBg, 0, 240, isRainbowTheme()); + drawDseg7RightString34(tft, satStr.c_str(), c2X + 140, c2Y + 26, c2Col, cardBg, 85, 240, isRainbowTheme()); // Telemetry details: HDOP precision & live diagnostic status String hdopStr = "HDOP: " + (synced ? String(gpsHdop, 1) : "---"); drawGpsNavSubword(tft, hdopStr.c_str(), c2X + 16, c2Y + 70, TFT_WHITE, cardBg, 240); - drawGpsNavSubword(tft, getGpsDiagMessage(), c2X + 16, c2Y + 90, synced ? 0x9CD3 : priCol, cardBg, 240); + uint16_t diagCol = synced ? getGpsDopColor() : priCol; + initNavDiagSprite(); + if (sprNavDiagAllocated) { + sprNavDiag.fillSprite(cardBg); + drawGpsNavDiag(sprNavDiag, getGpsDiagMessage(), -12, -88, diagCol, cardBg, 16); + sprNavDiag.pushSprite(c2X + 12, c2Y + 88); + } else { + drawGpsNavDiag(tft, getGpsDiagMessage(), c2X, c2Y, diagCol, cardBg, 240); + } // 5. CARD 3 (Bottom Right): COORDENADAS GPS (x = 164, y = 125, w = 152, h = 110) int c3X = 164 + x_offset; @@ -190,7 +236,7 @@ inline void drawGpsNavScreen(int x_offset = 0) { drawCoordsAAValue(tft, lonStr.c_str(), c3X + 16, c3Y + 76, c3Col, cardBg, 240); // Sync state trackers - syncGpsNavTrackers(); + syncGpsNavTrackers(true); } // 100% Flicker-Free Live Refresh for resting Page 3 (GPS Navigation & Telemetry) @@ -201,7 +247,7 @@ inline void updateGpsNavScreen(bool forceRedraw = false) { // do not wipe or repaint cards over SPI. Any incoming serial bytes from GPS // are safely absorbed into tracking variables so there is ZERO blackout/blink! if (!forceRedraw && (millis() - lastNavPageEnterTime < 400)) { - syncGpsNavTrackers(); + syncGpsNavTrackers(false); return; } @@ -238,7 +284,7 @@ inline void updateGpsNavScreen(bool forceRedraw = false) { oldNavCourse = gpsCourseDeg; lastNavHasCourse = hasCourse; String crsStr = hasCourse ? String(curCrsRound) : "---"; - drawDseg7RightString34(tft, crsStr.c_str(), c1X + 130, c1Y + 28, c1Col, cardBg, 85, 240, isRainbowTheme()); + drawDseg7RightString34(tft, crsStr.c_str(), c1X + 130, c1Y + 28, c1Col, cardBg, 95, 240, isRainbowTheme()); if (hasCourse) { tft.drawCircle(c1X + 137, c1Y + 33, 3, c1Col); @@ -287,8 +333,16 @@ inline void updateGpsNavScreen(bool forceRedraw = false) { strncpy(lastNavCardDiag, curDiag, sizeof(lastNavCardDiag) - 1); lastNavCardDiag[sizeof(lastNavCardDiag) - 1] = '\0'; lastNavDiagSynced = synced; - tft.fillRect(c2X + 16, c2Y + 88, 130, 16, cardBg); - drawGpsNavSubword(tft, curDiag, c2X + 16, c2Y + 90, synced ? 0x9CD3 : c2Col, cardBg, 240); + uint16_t diagCol = synced ? getGpsDopColor() : c2Col; + initNavDiagSprite(); + if (sprNavDiagAllocated) { + sprNavDiag.fillSprite(cardBg); + drawGpsNavDiag(sprNavDiag, curDiag, -12, -88, diagCol, cardBg, 16); + sprNavDiag.pushSprite(c2X + 12, c2Y + 88); + } else { + tft.fillRect(c2X + 12, c2Y + 88, 138, 16, cardBg); + drawGpsNavDiag(tft, curDiag, c2X, c2Y, diagCol, cardBg, 240); + } } // 3d. Large Satellite Icon: only redrawn if waveState or sync changes @@ -344,7 +398,7 @@ inline void renderPage3ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int s String altStr = altValid ? String((int)round(gpsAltitudeM)) : "---"; int valY = c0Y + 28; if (valY < slice_h && valY + 38 > 0) { - drawDseg7RightString34(s, altStr.c_str(), c0X + 140, valY, c0Col, cardBg, 0, slice_h, isRainbowTheme()); + drawDseg7RightString34(s, altStr.c_str(), c0X + 140, valY, c0Col, cardBg, 126, slice_h, isRainbowTheme()); } } @@ -361,7 +415,7 @@ inline void renderPage3ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int s String crsStr = hasCourse ? String((int)round(gpsCourseDeg)) : "---"; int valY = c1Y + 28; if (valY < slice_h && valY + 38 > 0) { - drawDseg7RightString34(s, crsStr.c_str(), c1X + 130, valY, c1Col, cardBg, 0, slice_h, isRainbowTheme()); + drawDseg7RightString34(s, crsStr.c_str(), c1X + 130, valY, c1Col, cardBg, 95, slice_h, isRainbowTheme()); if (hasCourse) { int circY = c1Y + 33; if (circY + 4 > 0 && circY - 4 < slice_h) { @@ -392,11 +446,12 @@ inline void renderPage3ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int s int satY = c2Y + 26; if (satY < slice_h && satY + 38 > 0) { String satStr = isGpsUartLocked() ? String(gpsSats) : "---"; - drawDseg7RightString34(s, satStr.c_str(), c2X + 140, satY, c2Col, cardBg, 0, slice_h, isRainbowTheme()); + drawDseg7RightString34(s, satStr.c_str(), c2X + 140, satY, c2Col, cardBg, 85, slice_h, isRainbowTheme()); } String hdopStr = "HDOP: " + (synced ? String(gpsHdop, 1) : "---"); drawGpsNavSubword(s, hdopStr.c_str(), c2X + 16, c2Y + 70, TFT_WHITE, cardBg, slice_h); - drawGpsNavSubword(s, getGpsDiagMessage(), c2X + 16, c2Y + 90, synced ? 0x9CD3 : c2Col, cardBg, slice_h); + uint16_t diagCol = synced ? getGpsDopColor() : c2Col; + drawGpsNavDiag(s, getGpsDiagMessage(), c2X, c2Y, diagCol, cardBg, slice_h); } // 5. CARD 3 (Bottom Right): COORDENADAS (y = 125 to 235) diff --git a/sketch/obd2_gauge/kmh_aa_data.h b/sketch/obd2_gauge/kmh_aa_data.h new file mode 100644 index 0000000..fc45d1a --- /dev/null +++ b/sketch/obd2_gauge/kmh_aa_data.h @@ -0,0 +1,234 @@ +#pragma once +#include + +#define KMH_AA_WIDTH 108 +#define KMH_AA_HEIGHT 28 + +#define RPM_AA_WIDTH 60 +#define RPM_AA_HEIGHT 20 + +#define DEGC_AA_WIDTH 33 +#define DEGC_AA_HEIGHT 25 + +#define VOLT_AA_WIDTH 22 +#define VOLT_AA_HEIGHT 25 + +#define TIT_REF_WIDTH 108 +#define TIT_REF_HEIGHT 11 + +#define TIT_BAT_WIDTH 60 +#define TIT_BAT_HEIGHT 11 + +// 8-bit Anti-Aliased 'kmh' (108x28) +static const uint8_t s_kmhAlpha[3024] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x10, 0x00, 0x00, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x01, 0x00, 0x4B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x64, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x2F, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x15, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xFA, 0xFF, 0xFF, 0xFF, 0xFD, 0x44, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x05, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x05, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x04, 0x00, 0x00, 0x00, 0x05, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x29, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x27, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x6C, 0x6C, 0x6C, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xAA, 0xFF, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xF2, 0xFF, 0xFF, 0xFF, 0xEA, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x51, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x0A, 0xF6, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x07, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFB, 0xFF, 0xFF, 0xFF, 0xFD, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x10, 0xE6, 0xFF, 0xFF, 0xFF, 0xEB, 0x15, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x9A, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x00, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x15, 0xFD, 0xFF, 0xFF, 0xFF, 0x3C, 0x3D, 0xFE, 0xFF, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x62, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x02, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0x8C, 0xD7, 0xFF, 0xFF, 0xFF, 0xEC, 0x16, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0x17, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x17, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xE5, 0xFF, 0xFF, 0xED, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x14, 0x14, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x3B, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x09, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x10, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x05, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0B, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x01, 0x00, 0x0B, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +// 8-bit Anti-Aliased 'rpm' (60x20) +static const uint8_t s_rpmAlpha[1200] PROGMEM = { + 0x00, 0x00, 0x00, 0x09, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x09, 0xFD, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xB9, + 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xD8, 0xFF, 0xFF, 0xFF, 0x8D, + 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x3C, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x3C, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFC, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, + 0x00, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, 0x4E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xA3, 0xFF, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, 0x4E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xA6, 0xFF, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x8B, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x35, + 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x0B, + 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x00, + 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x11, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x00, + 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xFF, 0xFF, 0xFB, 0x06, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xFF, 0xFF, 0xFB, 0x07, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x99, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x85, 0x00, + 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xFC, 0xFF, 0xFF, 0xD5, 0x00, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xD6, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0xA2, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0x39, 0xFE, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0x59, 0x00, + 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x59, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x8E, 0xFF, 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0x2B, 0xFB, 0xFF, 0xF8, 0x0A, 0x00, 0x04, 0xD2, 0xFF, 0xFF, 0xA8, 0x7A, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, + 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x40, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x45, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xED, 0x00, 0xC0, 0xFF, 0xFF, 0x4A, 0x00, 0x77, 0xFF, 0xFF, 0xEC, 0x15, 0xA7, 0xFF, 0xFF, 0xFB, 0x06, 0x00, + 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x10, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x36, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xC0, 0x00, 0x72, 0xFF, 0xFF, 0x92, 0x20, 0xF5, 0xFF, 0xFF, 0x5B, 0x00, 0xD3, 0xFF, 0xFF, 0xD5, 0x00, 0x00, + 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0xB0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xC2, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x22, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0x94, 0x00, 0x23, 0xFF, 0xFF, 0xDA, 0xB5, 0xFF, 0xFF, 0xB4, 0x00, 0x05, 0xFA, 0xFF, 0xFF, 0xA9, 0x00, 0x00, + 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF4, 0xFF, 0xFF, 0xFF, 0x12, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x8F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x1C, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0x00, + 0x00, 0x71, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0xFF, 0xFF, 0xE9, 0x00, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0x66, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0x51, 0x00, 0x00, + 0x00, 0x9E, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xBE, 0x01, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x00, + 0x00, 0xCA, 0xFF, 0xFF, 0xFA, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x00, 0xCA, 0xFF, 0xFF, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x02, 0xE8, 0xFF, 0xF5, 0x23, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0xF6, 0x02, 0x00, 0x00, + 0x01, 0xF4, 0xFF, 0xFF, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0x67, 0x00, 0x00, 0x01, 0xF4, 0xFF, 0xFF, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF4, 0xFF, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x26, 0x34, 0x24, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, + 0x22, 0xFF, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xFE, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, + 0x4E, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x4E, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x00, 0x00, +}; + +// 8-bit Anti-Aliased 'degc' (33x25) +static const uint8_t s_degcAlpha[825] PROGMEM = { + 0x00, 0x00, 0x1A, 0xCB, 0xFF, 0xFF, 0xFF, 0xFE, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x33, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x3B, 0x00, 0x00, 0x00, + 0x2C, 0xF5, 0xFF, 0xFF, 0xF7, 0xE8, 0xF8, 0xFF, 0xFF, 0xE0, 0x14, 0x00, 0x00, 0x00, 0x01, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x21, 0x00, 0x00, + 0x6A, 0xFF, 0xFF, 0xDA, 0x24, 0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x08, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x0F, 0x00, + 0x9A, 0xFF, 0xFF, 0x7D, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFA, 0x06, 0x00, 0x08, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x04, + 0xC9, 0xFF, 0xFF, 0x9E, 0x00, 0x04, 0x95, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, + 0x9B, 0xFF, 0xFF, 0xFF, 0xE9, 0xEE, 0xFF, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x62, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0xF3, 0x01, + 0x06, 0xC2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x03, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0xFD, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xC5, 0x00, + 0x00, 0x14, 0xDE, 0xFF, 0xFF, 0xFF, 0xFA, 0x65, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x68, 0x68, 0x68, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0xFA, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF3, 0xFF, 0xFF, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6C, 0x6C, 0x6C, 0x6C, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xEB, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD5, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x37, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +// 8-bit Anti-Aliased 'volt' (22x25) +static const uint8_t s_voltAlpha[550] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xDA, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0x38, + 0xAC, 0xFF, 0xFF, 0xFF, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x00, + 0x7E, 0xFF, 0xFF, 0xFF, 0xF7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xFF, 0xFF, 0xFF, 0xFD, 0x2C, 0x00, + 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x00, 0x00, + 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0xFA, 0x21, 0x00, 0x00, + 0x01, 0xF3, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x00, 0x00, 0x00, + 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xF5, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x9A, 0xFF, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x6C, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xEF, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFA, 0x03, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xE7, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xFF, 0x48, 0x00, 0x00, 0x00, 0x2F, 0xFE, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xB6, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0xAD, 0xFF, 0xFF, 0xFF, 0xDE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x2D, 0xFE, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x5A, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0xAB, 0xFF, 0xFF, 0xFF, 0xD3, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2D, 0xFF, 0xFF, 0xFF, 0xDD, 0x00, 0x2B, 0xFE, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x05, 0xF9, 0xFF, 0xFF, 0xFC, 0x06, 0xA8, 0xFF, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xFF, 0x51, 0xFD, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 0xE6, 0xFF, 0xFF, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +// 8-bit Anti-Aliased 'titRef' (108x11) +static const uint8_t s_titRefAlpha[1188] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x0F, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x0A, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x0B, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFA, 0x31, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDC, 0xFF, 0xC7, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDC, 0xFF, 0xC7, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xBB, 0xFF, 0xEE, 0xC4, 0xC4, 0xC4, 0xEB, 0xFF, 0xBC, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDC, 0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0x08, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xC4, 0xC4, 0xC4, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0A, 0xFD, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0A, 0xFD, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFE, 0x2D, 0x00, 0x00, 0x00, 0x26, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0A, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x05, 0xED, 0xF6, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7E, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x91, 0xE4, 0xF4, 0x0A, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xEF, 0xFE, 0x42, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x22, 0xFE, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x22, 0xFE, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x22, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0x40, 0x93, 0xFF, 0x58, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x5B, 0xFF, 0xE2, 0x0F, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x0B, 0xF4, 0xEC, 0x03, 0x40, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0xA9, 0xFF, 0xA2, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xF1, 0xFF, 0x4E, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xF1, 0xFF, 0x4E, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x4F, 0xC4, 0xC4, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xF1, 0xFF, 0x4E, 0x00, 0x00, 0x5A, 0xFF, 0xA0, 0x00, 0x03, 0xEA, 0xF9, 0x11, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x12, 0xE5, 0xFF, 0x53, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xF4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xF4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xF4, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x47, 0xFE, 0xEC, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFE, 0x28, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x12, 0xFA, 0xFE, 0xD0, 0xD0, 0xD0, 0xDD, 0xFF, 0xBC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xBB, 0xFF, 0xEE, 0xC4, 0xC4, 0xC4, 0xE9, 0xFF, 0xB7, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x66, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x12, 0xF8, 0xFD, 0x18, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0A, 0xD8, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x0A, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x09, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0x6F, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFB, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, +}; + +// 8-bit Anti-Aliased 'titBat' (60x11) +static const uint8_t s_titBatAlpha[660] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x0F, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDA, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0xC4, 0xC4, 0xC4, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDC, 0xFF, 0xC7, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x05, 0xED, 0xF6, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0A, 0xFD, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x05, 0xED, 0xF6, 0xFF, 0xA6, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x08, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x91, 0xE4, 0xF4, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x91, 0xE4, 0xF4, 0x0A, 0x00, 0x00, + 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xDB, 0xFF, 0xDA, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0x40, 0x93, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x22, 0xFE, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0x40, 0x93, 0xFF, 0x58, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4C, 0x00, 0x0B, 0xF4, 0xEC, 0x03, 0x40, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0xEC, 0x03, 0x40, 0xFF, 0xB1, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x02, 0x6D, 0xFF, 0xF9, 0x00, 0x5A, 0xFF, 0xA0, 0x00, 0x03, 0xEA, 0xF9, 0x11, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xF1, 0xFF, 0x4E, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xA0, 0x00, 0x03, 0xEA, 0xF9, 0x11, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x45, 0xFF, 0xF4, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x34, 0xFF, 0xFC, 0x12, 0xFA, 0xFE, 0xD0, 0xD0, 0xD0, 0xDD, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x12, 0xFA, 0xFE, 0xD0, 0xD0, 0xD0, 0xDD, 0xFF, 0xBC, 0x00, + 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC5, 0xFC, 0xFF, 0xBF, 0x66, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x12, 0xF8, 0xFD, 0x18, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0x62, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x66, 0xFF, 0xBA, 0x00, 0x00, 0x00, 0x12, 0xF8, 0xFD, 0x18, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x0A, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0x6F, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0x6F, +}; + +// Draw anti-aliased bitmap to destination (TFT or Sprite) with alpha blending, rainbow and Yapa multi-color per letter +template +inline void drawKmhAaBitmap(T &dst, int bx, int by, int w, int h, const uint8_t *alpha, + uint16_t color, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + dst.startWrite(); + for (int j = 0; j < h; j++) { + int py = by + j; + if (py < 0 || py >= clip_h) continue; + int rowOffset = j * w; + for (int i = 0; i < w; i++) { + int px = bx + i; + if (px < 0 || px >= 320) continue; + uint8_t a = pgm_read_byte(alpha + rowOffset + i); + if (a > 6) { + uint16_t curCol = color; + if (rainbow) { + curCol = getRainbowScreenColor(px, py); + } else if (isYapaTheme()) { + if (alpha == s_rpmAlpha) { + curCol = (i < 20) ? getYapaColor(0) : ((i < 39) ? getYapaColor(1) : getYapaColor(2)); + } else if (alpha == s_kmhAlpha) { + curCol = (i < 31) ? getYapaColor(0) : ((i < 63) ? getYapaColor(1) : ((i < 76) ? getYapaColor(2) : getYapaColor(3))); + } else if (alpha == s_degcAlpha) { + curCol = (i < 13) ? getYapaColor(0) : getYapaColor(1); + } else if (alpha == s_voltAlpha) { + curCol = getYapaColor(2); + } else if (alpha == s_titRefAlpha) { + curCol = getYapaColor((i * 12) / 108); + } else if (alpha == s_titBatAlpha) { + curCol = getYapaColor((i * 7) / 60); + } + } + uint16_t pixCol = (a >= 250) ? curCol : dst.alphaBlend(a, curCol, bgCol); + dst.drawPixel(px, py, pixCol); + } + } + } + dst.endWrite(); +} + +template +inline void drawKmH_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, KMH_AA_WIDTH, KMH_AA_HEIGHT, s_kmhAlpha, color, bgCol, clip_h, rainbow); +} + +template +inline void drawRpm_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, RPM_AA_WIDTH, RPM_AA_HEIGHT, s_rpmAlpha, color, bgCol, clip_h, rainbow); +} + +template +inline void drawDegreeC_AA(T &dst, int bx, int by, uint16_t color = 0xC618, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, DEGC_AA_WIDTH, DEGC_AA_HEIGHT, s_degcAlpha, color, bgCol, clip_h, rainbow); +} + +template +inline void drawVolt_AA(T &dst, int bx, int by, uint16_t color = 0xC618, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, VOLT_AA_WIDTH, VOLT_AA_HEIGHT, s_voltAlpha, color, bgCol, clip_h, rainbow); +} + +template +inline void drawTitRef_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, TIT_REF_WIDTH, TIT_REF_HEIGHT, s_titRefAlpha, color, bgCol, clip_h, rainbow); +} + +template +inline void drawTitBat_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, TIT_BAT_WIDTH, TIT_BAT_HEIGHT, s_titBatAlpha, color, bgCol, clip_h, rainbow); +} diff --git a/sketch/obd2_gauge/meter.h b/sketch/obd2_gauge/meter.h index 44288e9..d028f4b 100644 --- a/sketch/obd2_gauge/meter.h +++ b/sketch/obd2_gauge/meter.h @@ -256,76 +256,9 @@ void drawFullScreenTitle(const String &label, uint16_t color) { // Tactical ECO / OPT Badge (Ford Ka Endura 1.3 Sweet Spot: 1900 - 2550 RPM & // 45% - 82% Load) void updateEcoBadge(bool forceRedraw = false) { - // CRITICAL: ECO badge ONLY belongs on Page 0 (RPM quadrant or fullscreen - // RPM), NEVER on Page 1 (Tri-Temp)! - if (currentScreenPage != 0) { - badgeEcoDrawn = false; - return; - } - - // If in fullscreen on Page 0, only display if the fullscreen cell is RPM - bool isQuad = (fullScreenCell < 0 || fullScreenCell >= 4); - if (!isQuad && pidConfig[pidInCell[fullScreenCell]][3].toInt() != 3) { - badgeEcoDrawn = false; - return; - } - bool newEco = (ignitionOn && currentRpm >= 1900.0f && currentRpm <= 2550.0f && currentEngineLoad >= 45.0f && currentEngineLoad <= 82.0f); isEcoOptimal = newEco; - - if (forceRedraw) { - badgeEcoDrawn = !newEco; // Force redraw/re-erase - } - - if (newEco == badgeEcoDrawn) { - return; - } - - int bx = 0, by = 0, bw = 0, bh = 0; - - if (isQuad) { - // 4-Quadrant View: Positioned in top-right of RPM Quadrant (Cell 2) - int rpmCell = 2; - for (int c = 0; c < 4; c++) { - if (pidConfig[pidInCell[c]][3].toInt() == 3) { - rpmCell = c; - break; - } - } - bx = cell4_x[rpmCell] + 100; - by = cell4_y[rpmCell] + 4; - bw = 48; - bh = 18; - } else { - // Full-Screen View: Positioned in top-right header band - bx = 260; - by = 11; - bw = 50; - bh = 20; - } - - if (newEco) { - // Elegant tactical pill badge [ ECO ] - const uint16_t bgFill = 0x0202; // Deep dark forest emerald green - const uint16_t borderCol = 0x07E0; // Vibrant emerald neon green - tft.fillRoundRect(bx, by, bw, bh, 4, bgFill); - tft.drawRoundRect(bx, by, bw, bh, 4, borderCol); - tft.setTextColor(TFT_WHITE, bgFill); - if (isQuad) { - tft.drawCentreString("ECO", bx + (bw / 2), by + 1, 2); - } else { - tft.drawCentreString("ECO", bx + (bw / 2), by + 2, 2); - } - } else { - // Cleanly restore background gradient lines with zero visual trace - int ry = (isQuad && by >= 120) ? 121 : 0; - for (int y = by; y < by + bh; y++) { - uint16_t bgCol = getInstrumentBgColor(y, isQuad, ry); - tft.drawFastHLine(bx, y, bw, bgCol); - } - } - badgeEcoDrawn = newEco; } @@ -1052,13 +985,12 @@ inline int calcMeterBlocks(float val, int min, int max) { return b; } -// Restore natural vignette vertical gradient where GPS icon sits inline void clearPage0GpsIcon() { - uint16_t c1 = tft.alphaBlend((uint8_t)(255 * (82 - 3) / 82), - getThemeBgColor(), TFT_BLACK); - uint16_t c2 = tft.alphaBlend((uint8_t)(255 * (82 - 25) / 82), - getThemeBgColor(), TFT_BLACK); - tft.fillRectVGradient(294, 3, 24, 22, c1, c2); + // Page 0 uses the integrated GPS/OBD status pill inside the speedometer card +} + +inline void drawPage0GpsIcon(uint8_t waveState, bool synced) { + // Page 0 uses the integrated GPS/OBD status pill inside the speedometer card } inline void clearFullscreenGpsIcon() { @@ -1069,19 +1001,6 @@ inline void clearFullscreenGpsIcon() { tft.fillRectVGradient(294, 3, 24, 22, c1, c2); } -// Draw animated GPS satellite icon in top right of Quadrant 1 (Velocidad: cell -// 1) -inline void drawPage0GpsIcon(uint8_t waveState, bool synced) { - if (currentScreenPage != 0 || fullScreenCell != -1) - return; - clearPage0GpsIcon(); - uint16_t waveCol = getThemePrimaryColor(); - uint16_t bodyCol = TFT_WHITE; - uint16_t bgCol = tft.alphaBlend((uint8_t)(255 * (82 - 3) / 82), - getThemeBgColor(), TFT_BLACK); - drawGpsSatelliteIcon(tft, 296, 3, bodyCol, waveCol, bgCol, waveState); -} - // Draw animated GPS satellite icon in top right of Fullscreen Velocidad (cell // 1) inline void drawFullscreenGpsIcon(uint8_t waveState, bool synced) { @@ -1187,7 +1106,7 @@ void arcMeter4(uint8_t cell, uint8_t pid, bool redrawHeader = true) { int warn = warningValue[pid].toInt(); String unit = pidConfig[pid][1]; - if (last_valid_data[cell] != -999) { + if (last_valid_data[cell] > -900.0f) { old_data[cell] = -999; plotArc4(cell, last_valid_data[cell], warn, min, max, digit, unit); } else { @@ -1325,7 +1244,7 @@ void fullScreenMeter(uint8_t cell, uint8_t pid, bool redrawHeader = true) { bool digit = pidConfig[pid][7].toInt(); int warn = warningValue[pid].toInt(); - if (last_valid_data[cell] != -999) { + if (last_valid_data[cell] > -900.0f) { old_data[cell] = -999; plotFullScreen(cell, last_valid_data[cell], warn, min, max, digit, unit); } else { @@ -1440,6 +1359,12 @@ void plotNoData(uint8_t cell) { wasInRedAlarm[cell] = false; uint8_t pidIdx = pidInCell[cell]; + if (pidIdx == 0) { + tempEngineCoolant = -999.0f; + if (currentScreenPage == 1 && fullScreenCell == -1) { + updateTriTempCoolant(-999.0f); + } + } if (fullScreenCell >= 0 && fullScreenCell < 4) { if (cell == fullScreenCell) { @@ -1456,19 +1381,7 @@ void plotNoData(uint8_t cell) { tft.unloadFont(); } } else if (currentScreenPage == 0) { - int x = cell4_x[cell]; - int y = cell4_y[cell]; - clearPidIcon(x + 5, y + 3, pidConfig[pidIdx][2]); - drawPidIcon(x + 5, y + 3, pidConfig[pidIdx][2]); - for (uint8_t i = 0; i < NUM_BAR_BLOCKS; i++) { - drawQuadBarBlock(cell, i, METER_INACTIVE_COLOR); - } - tft.loadFont(DSEG7_Modern_BoldItalic_34); - tft.setTextColor(getThemeCellColor(cell), TFT_BLACK); - tft.setTextPadding(114); - tft.drawRightString("---", x + 152, y + 74, 1); - tft.setTextPadding(0); - tft.unloadFont(); + updateClusterScreen(false); } } @@ -1597,103 +1510,10 @@ inline void drawQuadBarBlockToSprite(TFT_eSprite &s, int16_t qx, int16_t qy, } } -// Render Page 0 (4 Quadrants) into double-buffered Sprite slice +// Render Page 0 (Cockpit Instrumental) into double-buffered Sprite slice inline void renderPage0ToSprite(TFT_eSprite &s, int x_offset, int y_slice, int slice_h) { - checkUpdateThemeGradients(); - uint16_t divCol = getThemeDivColor(); - uint16_t priCol = getThemePrimaryColor(); - - for (uint8_t c = 0; c < 4; c++) { - int qx = cell4_x[c] + x_offset; - int qy = cell4_y[c] - y_slice; - int rx = (c & 1) ? (161 + x_offset) : (0 + x_offset); - int global_ry = (c & 2) ? 121 : 0; - int ry = global_ry - y_slice; - - if (qx + 160 <= 0 || qx >= 320 || ry + 119 <= 0 || ry >= slice_h) - continue; - - // 1. Exact dark vignette gradient matching real arcMeter4 - s.fillRect(rx, ry, 159, 119, TFT_BLACK); - int gradStartY = (ry < 0) ? -ry : 0; - int gradEndY = (ry + 82 > slice_h) ? (slice_h - ry) : 82; - for (int j = gradStartY; j < gradEndY; j++) { - int curY = ry + j; - if (curY >= 0 && curY < slice_h) { - s.drawFastHLine(rx, curY, 159, themeGradQuad[j]); - } - } - - uint8_t pidIdx = pidInCell[c]; - - // 2. Real high-definition parameter icon (thermometer, speedometer, - // tachometer, battery) - drawPidIconToSprite(s, qx + 5, qy + 3, pidConfig[pidIdx][2], y_slice, - slice_h, global_ry); - - // 3. Exact 20 curved segmented gauge blocks along the arc (true - // mathematical polygons) - int warn = warningValue[pidIdx].toInt(); - int min = pidConfig[pidIdx][4].toInt(); - int max = pidConfig[pidIdx][5].toInt(); - bool digit = pidConfig[pidIdx][7].toInt(); - float val = last_valid_data[c]; - - int numActive = (val > -900.0f) ? calcMeterBlocks(val, min, max) : 0; - uint16_t activeCol = - (val > -900.0f) ? getMeterColor(pidIdx, val, warn) : priCol; - - for (uint8_t i = 0; i < NUM_BAR_BLOCKS; i++) { - uint16_t bCol = (i < numActive) ? activeCol : METER_INACTIVE_COLOR; - drawQuadBarBlockToSprite(s, qx, qy, i, bCol, slice_h); - } - - // 4. Digital value string using authentic DSEG7 34pt font with rainbow gradient - String numStr = (val <= -900.0f) ? "---" : String(val, digit); - uint16_t txtCol = (activeCol == TFT_RED) ? TFT_RED : getThemeCellColor(c); - bool rainbowTxt = isRainbowTheme() && (activeCol != TFT_RED); - int textY = qy + 74; - if (textY < slice_h && textY + 40 > 0) { - drawDseg7RightString34(s, numStr.c_str(), qx + 152, textY, txtCol, TFT_BLACK, 0, slice_h, rainbowTxt); - } - - // GPS Satellite icon in top right of Quadrant 1 (Velocidad: cell 1) - if (c == 1 && isGpsSpeedValid() && y_slice == 0) { - uint16_t waveCol = isRainbowTheme() ? (uint16_t)0x07E0 : priCol; - uint16_t bodyCol = TFT_WHITE; - uint16_t bgCol = themeGradQuad[3]; - drawGpsSatelliteIcon(s, qx + 136, 3, bodyCol, waveCol, bgCol, - getGpsWaveAnimState()); - } - } - - // 5. Eco Badge if active - if (isEcoOptimal) { - int rpmCell = 2; - for (int c = 0; c < 4; c++) { - if (pidConfig[pidInCell[c]][3].toInt() == 3) { - rpmCell = c; - break; - } - } - int bx = cell4_x[rpmCell] + 100 + x_offset; - int by = cell4_y[rpmCell] + 4 - y_slice; - int bw = 48, bh = 18; - if (by + bh > 0 && by < slice_h && bx + bw > 0 && bx < 320) { - s.fillRoundRect(bx, by, bw, bh, 4, 0x0202); - s.drawRoundRect(bx, by, bw, bh, 4, 0x07E0); - s.setTextColor(TFT_WHITE, 0x0202); - s.drawCentreString("ECO", bx + (bw / 2), by + 1, 2); - } - } - - // 6. Crosshair dividers - s.fillRect(159 + x_offset, 0, 2, slice_h, divCol); - int hLineY = 119 - y_slice; - if (hLineY >= 0 && hLineY < slice_h) { - s.fillRect(x_offset, hLineY, 320, 2, divCol); - } + renderClusterScreenToSprite(s, x_offset, y_slice, slice_h); } // Render Page 1 (3 Temperature Cards) into double-buffered Sprite slice @@ -1762,13 +1582,17 @@ inline void renderPage1ToSprite(TFT_eSprite &s, int x_offset, int y_slice, if (sprTriTitleReady && sprTriTitle[cardIdx].created()) { sprTriTitle[cardIdx].pushToSprite(&s, cardX + 16, cardY + 5); } else { - s.setTextColor(TFT_WHITE, cardBg); - s.drawString(titleStr, cardX + 16, cardY + 5, 4); + if (isYapaTheme()) { + drawYapaStringToSprite(s, titleStr, cardX + 16, cardY + 5, 4); + } else { + s.setTextColor(TFT_WHITE, cardBg); + s.drawString(titleStr, cardX + 16, cardY + 5, 4); + } } if (isYapaTheme()) { drawYapaStringToSprite(s, subStr, cardX + 16, cardY + 32, 1); } else { - s.setTextColor(0x8410, cardBg); + s.setTextColor(accentCol, cardBg); s.drawString(subStr, cardX + 16, cardY + 32, 1); } @@ -1782,24 +1606,26 @@ inline void renderPage1ToSprite(TFT_eSprite &s, int x_offset, int y_slice, ratio = 0.0f; if (ratio > 1.0f) ratio = 1.0f; - int fillW = (int)(barW * ratio); - if (fillW < 4) + int fillW = (val <= -900.0f) ? 0 : (int)(barW * ratio); + if (fillW < 4 && val > -900.0f) fillW = 4; - s.fillRoundRect(barX, barY, fillW, 8, 3, accentCol); + if (fillW > 0) + s.fillRoundRect(barX, barY, fillW, 8, 3, accentCol); // Value text using authentic DSEG7 34pt font with rainbow gradient String numStr = - (val <= -900.0f) ? "---" : (isInt ? String((int)val) : String(val, 1)); + (val <= -900.0f) ? "---" : String((int)round(val)); + uint16_t numCol = accentCol; bool rainbowTxt = isRainbowTheme() && (accentCol != TFT_RED); int numY = cardY + 20; if (numY < slice_h && numY + 40 > 0) { - drawDseg7RightString34(s, numStr.c_str(), cardX + 262, numY, accentCol, cardBg, 0, slice_h, rainbowTxt); + drawDseg7RightString34(s, numStr.c_str(), cardX + 262, numY, numCol, cardBg, 0, slice_h, rainbowTxt); } int unitY = cardY + 22; if (unitY < slice_h && unitY + 26 > 0) { bool rainbowUnit = isRainbowTheme() && (accentCol != TFT_RED); - uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, unitY) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(numStr.length()) : (accentCol == TFT_RED ? TFT_RED : 0xC618)); + uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, unitY) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(numStr.length()) : (accentCol == TFT_RED ? TFT_RED : accentCol)); draw7SegDegreeC(s, cardX + 268, unitY, unitCol, cardBg, rainbowUnit); } } @@ -1839,28 +1665,24 @@ inline void animateBlackTransition(int8_t toPage = -1) { sprTrans.fillSprite(TFT_BLACK); if (toPage == 0) - renderPage0ToSprite(sprTrans, 0, y_slice, slice_h); + renderClusterScreenToSprite(sprTrans, 0, y_slice, slice_h); else if (toPage == 1) renderPage1ToSprite(sprTrans, 0, y_slice, slice_h); else if (toPage == 2) renderPage2ToSprite(sprTrans, 0, y_slice, slice_h); - else if (toPage == 3) - renderPage3ToSprite(sprTrans, 0, y_slice, slice_h); else - renderPage4ToSprite(sprTrans, 0, y_slice, slice_h); + renderPage3ToSprite(sprTrans, 0, y_slice, slice_h); - // Pagination indicator dots on top slice (5 dots for 5 pages) + // Pagination indicator dots on top slice (4 dots for 4 pages) if (y_slice == 0) { - sprTrans.fillCircle(132, 2, 2, + sprTrans.fillCircle(139, 2, 2, (toPage == 0) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(146, 2, 2, + sprTrans.fillCircle(153, 2, 2, (toPage == 1) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(160, 2, 2, + sprTrans.fillCircle(167, 2, 2, (toPage == 2) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(174, 2, 2, + sprTrans.fillCircle(181, 2, 2, (toPage == 3) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(188, 2, 2, - (toPage == 4) ? getThemePrimaryColor() : 0x5AEB); } sprTrans.pushSprite(0, y_slice); @@ -1915,26 +1737,22 @@ inline void animateFadeTransition(int8_t fromPage = -1, int8_t toPage = -1) { sprFadeB.fillSprite(TFT_BLACK); if (fromPage == 0) - renderPage0ToSprite(sprTrans, 0, y_slice, slice_h); + renderClusterScreenToSprite(sprTrans, 0, y_slice, slice_h); else if (fromPage == 1) renderPage1ToSprite(sprTrans, 0, y_slice, slice_h); else if (fromPage == 2) renderPage2ToSprite(sprTrans, 0, y_slice, slice_h); - else if (fromPage == 3) - renderPage3ToSprite(sprTrans, 0, y_slice, slice_h); else - renderPage4ToSprite(sprTrans, 0, y_slice, slice_h); + renderPage3ToSprite(sprTrans, 0, y_slice, slice_h); if (toPage == 0) - renderPage0ToSprite(sprFadeB, 0, y_slice, slice_h); + renderClusterScreenToSprite(sprFadeB, 0, y_slice, slice_h); else if (toPage == 1) renderPage1ToSprite(sprFadeB, 0, y_slice, slice_h); else if (toPage == 2) renderPage2ToSprite(sprFadeB, 0, y_slice, slice_h); - else if (toPage == 3) - renderPage3ToSprite(sprFadeB, 0, y_slice, slice_h); else - renderPage4ToSprite(sprFadeB, 0, y_slice, slice_h); + renderPage3ToSprite(sprFadeB, 0, y_slice, slice_h); uint16_t *pA = (uint16_t *)sprTrans.getPointer(); uint16_t *pB = (uint16_t *)sprFadeB.getPointer(); @@ -1964,19 +1782,17 @@ inline void animateFadeTransition(int8_t fromPage = -1, int8_t toPage = -1) { } } - // Pagination indicator dots on top slice (5 dots for 5 pages) + // Pagination indicator dots on top slice (4 dots for 4 pages) if (y_slice == 0) { uint8_t activeDot = (alpha < 16) ? fromPage : toPage; - sprTrans.fillCircle(132, 2, 2, + sprTrans.fillCircle(139, 2, 2, (activeDot == 0) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(146, 2, 2, + sprTrans.fillCircle(153, 2, 2, (activeDot == 1) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(160, 2, 2, + sprTrans.fillCircle(167, 2, 2, (activeDot == 2) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(174, 2, 2, + sprTrans.fillCircle(181, 2, 2, (activeDot == 3) ? getThemePrimaryColor() : 0x5AEB); - sprTrans.fillCircle(188, 2, 2, - (activeDot == 4) ? getThemePrimaryColor() : 0x5AEB); } sprTrans.pushSprite(0, y_slice); @@ -1997,7 +1813,7 @@ inline void performScreenTransition(bool swipeLeft, int8_t fromPage = -1, if (fromPage < 0) fromPage = currentScreenPage; if (toPage < 0) - toPage = (fromPage + 1) % 5; + toPage = (fromPage + 1) % 4; if (transitionType == 1) { animateFadeTransition(fromPage, toPage); } else { @@ -2030,16 +1846,14 @@ void initScreen(bool redrawTFT) { // Screen is ALREADY 100% rendered with zero flicker by the double-buffered // transition engine! ONLY sync tracking variables so live updates continue // seamlessly without redrawing or blanking! - if (currentScreenPage == 1) { + if (currentScreenPage == 0) { + syncClusterTrackers(); + } else if (currentScreenPage == 1) { syncTriTempTrackers(); } else if (currentScreenPage == 2) { syncGpsClockTrackers(); } else if (currentScreenPage == 3) { - syncGpsNavTrackers(); - } else if (currentScreenPage == 4) { - syncClusterTrackers(); - } else if (currentScreenPage == 0 && fullScreenCell == -1) { - syncPage0Trackers(); + syncGpsNavTrackers(true); } #ifdef SERIAL_DEBUG Serial.printf(">>> [DB] initScreen (NO REDRAW) FINISHED OK (heap: %u)\n", @@ -2052,11 +1866,11 @@ void initScreen(bool redrawTFT) { old_data[i] = -999; } - if (fullScreenCell >= 0 && fullScreenCell < 4) { + if (currentScreenPage == 0) { #ifdef SERIAL_DEBUG - Serial.println(">>> [DB] initScreen: drawing fullScreenMeter"); + Serial.println(">>> [DB] initScreen: drawing drawClusterScreen(0)"); #endif - fullScreenMeter(fullScreenCell, pidInCell[fullScreenCell]); + drawClusterScreen(0); } else if (currentScreenPage == 1) { #ifdef SERIAL_DEBUG Serial.println(">>> [DB] initScreen: drawing drawTriTempScreen(0)"); @@ -2072,27 +1886,6 @@ void initScreen(bool redrawTFT) { Serial.println(">>> [DB] initScreen: drawing drawGpsNavScreen(0)"); #endif drawGpsNavScreen(0); - } else if (currentScreenPage == 4) { -#ifdef SERIAL_DEBUG - Serial.println(">>> [DB] initScreen: drawing drawClusterScreen(0)"); -#endif - drawClusterScreen(0); - } else { -#ifdef SERIAL_DEBUG - Serial.println(">>> [DB] initScreen: drawing Page 0 quadrants"); -#endif - tft.fillScreen(TFT_BLACK); // clear screen - for (uint8_t c = 0; c < 4; c++) { - uint8_t pid = pidInCell[c]; - arcMeter4(c, pid); - } - drawQuadrantDividers(); - // Pagination indicator dots [● ○ ○ ○ ○] (Page 0 active) - tft.fillCircle(132, 2, 2, getThemePrimaryColor()); - tft.fillCircle(146, 2, 2, 0x5AEB); - tft.fillCircle(160, 2, 2, 0x5AEB); - tft.fillCircle(174, 2, 2, 0x5AEB); - tft.fillCircle(188, 2, 2, 0x5AEB); } if (currentScreenPage == 0 && fullScreenCell == -1) { badgeEcoDrawn = false; @@ -2232,10 +2025,8 @@ inline void updateGpsSpeedometer() { last_valid_data[1] = spd; int warn = warningValue[3].toInt(); - if (fullScreenCell == 1) { - plotFullScreen(1, spd, warn, 0, 160, false, "km/h"); - } else if (currentScreenPage == 0 && fullScreenCell == -1) { - plotArc4(1, spd, warn, 0, 160, false, "km/h"); + if (currentScreenPage == 0) { + updateClusterScreen(false); } } } @@ -2420,13 +2211,7 @@ void updateMeter(uint8_t pidNo, String response) { // update parameter on screen last_valid_data[pidNo] = data; - if (fullScreenCell >= 0 && fullScreenCell < 4) { - if (pidNo == fullScreenCell) { - plotFullScreen(fullScreenCell, data, warn, min, max, digit, unit); - } - } else if (currentScreenPage == 0) { - plotArc4(pidNo, data, warn, min, max, digit, unit); - } else if (currentScreenPage == 4) { + if (currentScreenPage == 0) { updateClusterScreen(false); } bt_message = ""; // reset @@ -2656,7 +2441,7 @@ void handleArcAlarmFlash() { if (fullScreenCell >= 0 && fullScreenCell < 4) { uint8_t cell = fullScreenCell; - if (last_valid_data[cell] != -999) { + if (last_valid_data[cell] > -900.0f) { uint8_t pidIdx = pidInCell[cell]; int warn = warningValue[pidIdx].toInt(); float data = last_valid_data[cell]; @@ -2720,9 +2505,9 @@ void handleArcAlarmFlash() { } } } else if (currentScreenPage == 0) { - // 4 quadrants mode + // Cockpit Instrumental: check alarms for buzzer without drawing old quadrants for (uint8_t cell = 0; cell < 4; cell++) { - if (last_valid_data[cell] != -999) { + if (last_valid_data[cell] > -900.0f) { uint8_t pidIdx = pidInCell[cell]; int warn = warningValue[pidIdx].toInt(); float data = last_valid_data[cell]; @@ -2731,65 +2516,13 @@ void handleArcAlarmFlash() { bool isAlarmActive = alarmEnabled[pidIdx]; if (inRed && isAlarmActive) anyInRedAlarm = true; - bool digit = pidConfig[pidIdx][7].toInt(); - String numStr = String(data, digit); - int x = cell4_x[cell]; - int y = cell4_y[cell]; - - if (wasInRedAlarm[cell] && !inRed) { - // Exited red alarm: restore steady arc, text, and icon - wasInRedAlarm[cell] = false; - drawPidIcon(x + 5, y + 3, pidConfig[pidIdx][2]); - int min = pidConfig[pidIdx][4].toInt(); - int max = pidConfig[pidIdx][5].toInt(); - int newBlocks = calcMeterBlocks(data, min, max); - for (uint8_t i = 0; i < newBlocks; i++) { - drawQuadBarBlock(cell, i, col); - } - for (uint8_t i = newBlocks; i < NUM_BAR_BLOCKS; i++) { - drawQuadBarBlock(cell, i, METER_INACTIVE_COLOR); - } - tft.loadFont(DSEG7_Modern_BoldItalic_34); - tft.setTextColor(getThemeCellColor(cell), TFT_BLACK); - tft.setTextPadding(114); - tft.drawRightString(numStr.c_str(), x + 152, y + 74, 1); - tft.setTextPadding(0); - tft.unloadFont(); - } else if (inRed) { - wasInRedAlarm[cell] = true; - if (isAlarmActive) { - if (toggleTick) { - if (arcFlashVisible) { - drawPidIcon(x + 5, y + 3, pidConfig[pidIdx][2]); - } else { - clearPidIcon(x + 5, y + 3, pidConfig[pidIdx][2]); - } - int min = pidConfig[pidIdx][4].toInt(); - int max = pidConfig[pidIdx][5].toInt(); - int newBlocks = calcMeterBlocks(data, min, max); - - if (arcFlashVisible) { - for (uint8_t i = 0; i < newBlocks; i++) { - drawQuadBarBlock(cell, i, TFT_RED); - } - for (uint8_t i = newBlocks; i < NUM_BAR_BLOCKS; i++) { - drawQuadBarBlock(cell, i, METER_INACTIVE_COLOR); - } - } else { - for (uint8_t i = 0; i < NUM_BAR_BLOCKS; i++) { - drawQuadBarBlock(cell, i, TFT_BLACK); - } - } - } - } - } } } } else { // Page 1 (Tri-Temperature screen): check alarm conditions for acoustic // warning without touching screen graphics for (uint8_t cell = 0; cell < 4; cell++) { - if (last_valid_data[cell] != -999) { + if (last_valid_data[cell] > -900.0f) { uint8_t pidIdx = pidInCell[cell]; int warn = warningValue[pidIdx].toInt(); float data = last_valid_data[cell]; diff --git a/sketch/obd2_gauge/obd2_gauge.ino b/sketch/obd2_gauge/obd2_gauge.ino index 241a8ea..68ab684 100644 --- a/sketch/obd2_gauge/obd2_gauge.ino +++ b/sketch/obd2_gauge/obd2_gauge.ino @@ -301,16 +301,16 @@ int8_t currentScreenPage = inline void setScreenPage(int8_t page) { if (page < 0) page = 0; - if (page > 4) - page = 4; + if (page > 3) + page = 3; currentScreenPage = page; pref.begin("setting", false); pref.putChar("scr_page", page); pref.end(); } -float tempEngineCoolant = 88.0f; // Temperatura de refrigerante de motor (OBD2) -float tempInterior = 22.5f; // Temperatura interior habitáculo (DS18B20 #1) -float tempExterior = 16.8f; // Temperatura exterior ambiente (DS18B20 #2) +float tempEngineCoolant = -999.0f; // Temperatura de refrigerante de motor (OBD2) +float tempInterior = -999.0f; // Temperatura interior habitáculo (DS18B20 #1) +float tempExterior = -999.0f; // Temperatura exterior ambiente (DS18B20 #2) uint8_t dsSensorCount = 0; // Cantidad de sensores 1-Wire detectados // User configuration here to change display > @@ -344,12 +344,12 @@ uint8_t btDeviceCount = 0; // discovered bluetooth devices counter esp_bd_addr_t client_addr = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // obdII mac addr esp_bd_addr_t recent_client_addr = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // keep last btaddr in RTC memory + 0x6C, 0x62, 0x6D, 0x14, 0x08, 0xFD}; // Default to PC emulator MAC const String client_name = "OBDII"; // adaptor name to search esp_spp_sec_t sec_mask = ESP_SPP_SEC_NONE; // or ESP_SPP_SEC_ENCRYPT|ESP_SPP_SEC_AUTHENTICATE to // request pincode confirmation -esp_spp_role_t role = ESP_SPP_ROLE_SLAVE; // or ESP_SPP_ROLE_MASTER +esp_spp_role_t role = ESP_SPP_ROLE_MASTER; // Initiator is SPP MASTER bool foundOBD2 = false; BluetoothSerial BTSerial; // bluetooth serial device @@ -548,8 +548,12 @@ volatile bool btConnectedTrigger = false; volatile bool systemSleeping = false; void btBackgroundTask(void *pvParameters) { + const esp_bd_addr_t EMU_ADDR = {0x6C, 0x62, 0x6D, 0x14, 0x08, 0xFD}; while (true) { if (!systemSleeping && !foundOBD2) { + bool connected = false; + + // 1. Intentar conectar a la direccion reciente guardada si es valida bool hasRecentAddr = false; for (uint8_t i = 0; i < 6; i++) { if (recent_client_addr[i] != 0) { @@ -563,29 +567,66 @@ void btBackgroundTask(void *pvParameters) { vTaskDelay(pdMS_TO_TICKS(100)); if (BTSerial.connect(recent_client_addr, 0, sec_mask, role)) { if (BTSerial.connected() && !systemSleeping) { - sendATCommand("ATE0", 800); - sendATCommand("ATL0", 800); - sendATCommand("ATH0", 800); - sendATCommand("ATAT1", 800); - sendATCommand("ATSP1", 800); - String r0100 = sendATCommand("0100", 2500); - ignitionOn = (r0100.indexOf("41 00") != -1); - foundOBD2 = true; - prompt = true; - bt_message = ""; - updateRearLedTheme(); - btConnectedTrigger = - true; // Signal Core 1 (UI thread) to switch screen! - } else { - BTSerial.disconnect(); - setRearLedOff(); - foundOBD2 = false; + connected = true; } - } else { - setRearLedOff(); - foundOBD2 = false; } } + + // 2. Si fallo o no habia direccion, intentar conectar a la MAC del emulador PC + if (!connected && !systemSleeping) { + bool isRecentSameAsEmu = true; + for (uint8_t i = 0; i < 6; i++) { + if (recent_client_addr[i] != EMU_ADDR[i]) { + isRecentSameAsEmu = false; + break; + } + } + if (!isRecentSameAsEmu) { + setRearLedColor(0, 0, 200); + BTSerial.disconnect(); + vTaskDelay(pdMS_TO_TICKS(100)); + if (BTSerial.connect(const_cast(EMU_ADDR), 0, sec_mask, role)) { + if (BTSerial.connected() && !systemSleeping) { + connected = true; + memcpy(recent_client_addr, EMU_ADDR, 6); + pref.putBytes("recent_client", recent_client_addr, 6); + } + } + } + } + + // 3. Si aun no conecto, buscar y conectar por nombre "OBDII" (inquiry scan) + if (!connected && !systemSleeping) { + setRearLedColor(0, 0, 200); + BTSerial.disconnect(); + vTaskDelay(pdMS_TO_TICKS(100)); + if (BTSerial.connect("OBDII")) { + if (BTSerial.connected() && !systemSleeping) { + connected = true; + } + } + } + + // Si logro conectar con cualquiera de los metodos: + if (connected && !systemSleeping) { + sendATCommand("ATE0", 800); + sendATCommand("ATL0", 800); + sendATCommand("ATH0", 800); + sendATCommand("ATAT1", 800); + sendATCommand("ATSP1", 800); + String r0100 = sendATCommand("0100", 2500); + ignitionOn = (r0100.indexOf("41 00") != -1); + foundOBD2 = true; + prompt = true; + bt_message = ""; + updateRearLedTheme(); + btConnectedTrigger = + true; // Signal Core 1 (UI thread) to switch screen! + } else { + BTSerial.disconnect(); + setRearLedOff(); + foundOBD2 = false; + } } ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(3500)); } @@ -711,7 +752,7 @@ recent_client_addr : {0x00,0x00,0x00,0x00,0x00,0x00} array of bytes[6] if (transitionType > 1) transitionType = 0; currentScreenPage = pref.getChar("scr_page", 0); - if (currentScreenPage < 0 || currentScreenPage > 4) + if (currentScreenPage < 0 || currentScreenPage > 3) currentScreenPage = 0; if (brightnessIndex > 0) { targetBacklight = BRIGHTNESS_PWM_TABLE[brightnessIndex]; @@ -853,6 +894,11 @@ void loop() { updateGpsSpeedometer(); updateGpsIconAnim(); + // Non-blocking live refresh for resting Page 0 (Cockpit Instrumental Deportivo) + if (currentScreenPage == 0 && fullScreenCell == -1) { + updateClusterScreen(false); + } + // Non-blocking live refresh for resting Page 2 (GPS Clock & Date) if (currentScreenPage == 2 && fullScreenCell == -1) { updateGpsClockScreen(false); @@ -863,11 +909,6 @@ void loop() { updateGpsNavScreen(false); } - // Non-blocking live refresh for resting Page 4 (Cockpit Instrumental Deportivo) - if (currentScreenPage == 4 && fullScreenCell == -1) { - updateClusterScreen(false); - } - if (wokeFromSleep) { wokeFromSleep = false; lastActivityTime = millis(); @@ -927,10 +968,10 @@ void loop() { // (disabled in full-screen mode) if (!longPressHandled) { if (fullScreenCell == -1 && liveDeltaX < -28 && abs(liveDeltaY) < 85) { - // SWIPE LEFT: Transition to next page (0 -> 1 -> 2 -> 3 -> 4 -> 0) + // SWIPE LEFT: Transition to next page (0 -> 1 -> 2 -> 3 -> 0) longPressHandled = true; touchBeep(); - uint8_t nextPage = (currentScreenPage + 1) % 5; + uint8_t nextPage = (currentScreenPage + 1) % 4; performScreenTransition(true, currentScreenPage, nextPage); setScreenPage(nextPage); initScreen(false); // Seamless: keep transition frame without blanking @@ -940,11 +981,11 @@ void loop() { lastActivityTime = millis(); } else if (fullScreenCell == -1 && liveDeltaX > 28 && abs(liveDeltaY) < 85) { - // SWIPE RIGHT: Transition to previous page (0 -> 4 -> 3 -> 2 -> 1 -> 0) + // SWIPE RIGHT: Transition to previous page (0 -> 3 -> 2 -> 1 -> 0) longPressHandled = true; touchBeep(); uint8_t nextPage = - (currentScreenPage == 0) ? 4 : (currentScreenPage - 1); + (currentScreenPage == 0) ? 3 : (currentScreenPage - 1); performScreenTransition(false, currentScreenPage, nextPage); setScreenPage(nextPage); initScreen(false); // Seamless: keep transition frame without blanking @@ -984,7 +1025,7 @@ void loop() { // SWIPE LEFT longPressHandled = true; touchBeep(); - uint8_t nextPage = (currentScreenPage + 1) % 5; + uint8_t nextPage = (currentScreenPage + 1) % 4; performScreenTransition(true, currentScreenPage, nextPage); setScreenPage(nextPage); initScreen(false); // Seamless: keep transition frame without blanking @@ -997,7 +1038,7 @@ void loop() { longPressHandled = true; touchBeep(); uint8_t nextPage = - (currentScreenPage == 0) ? 4 : (currentScreenPage - 1); + (currentScreenPage == 0) ? 3 : (currentScreenPage - 1); performScreenTransition(false, currentScreenPage, nextPage); setScreenPage(nextPage); initScreen(false); // Seamless: keep transition frame without blanking @@ -1010,16 +1051,8 @@ void loop() { // Valid TAP detected! touchBeep(); if (currentScreenPage == 0) { - if (fullScreenCell == -1) { - // Switch to full screen for tapped quadrant - int quad = (lastTouchX < 160) ? ((lastTouchY < 120) ? 0 : 2) - : ((lastTouchY < 120) ? 1 : 3); - fullScreenCell = quad; - } else { - // Return to 4 quadrants view - fullScreenCell = -1; - } - initScreen(); + // Tap on Cockpit Instrumental: immediate cluster refresh + updateClusterScreen(true); } else if (currentScreenPage == 1) { // Tap on Tri-Temp screen: immediate sensor refresh updateTriTempSensors(true); @@ -1029,9 +1062,6 @@ void loop() { } else if (currentScreenPage == 3) { // Tap on GPS Navigation screen: immediate telemetry refresh updateGpsNavScreen(true); - } else if (currentScreenPage == 4) { - // Tap on Cockpit Instrumental: immediate cluster refresh - updateClusterScreen(true); } waitForTouchRelease(); lastActivityTime = millis(); @@ -1075,6 +1105,12 @@ void loop() { if (!isBtConnected && wasBtConnected) { wasBtConnected = false; currentRpm = 0.0f; + tempEngineCoolant = -999.0f; + for (uint8_t c = 0; c < 4; c++) { + if (c != 1 || !isGpsSpeedValid()) { + last_valid_data[c] = -999.0f; + } + } ignitionOn = false; foundOBD2 = false; uint8_t fallbackPage = isGpsSynced() ? 2 : 1; @@ -1089,14 +1125,16 @@ void loop() { if (!isBtConnected) { currentRpm = 0.0f; - ignitionOn = false; - if (currentScreenPage == 0 || fullScreenCell != -1) { - for (uint8_t c = 0; c < 4; c++) { - if (c == 1 && isGpsSpeedValid()) - continue; // Mantener la velocidad de GPS en el velocimetro - plotNoData(c); + tempEngineCoolant = -999.0f; + for (uint8_t c = 0; c < 4; c++) { + if (c != 1 || !isGpsSpeedValid()) { + last_valid_data[c] = -999.0f; } } + ignitionOn = false; + if (currentScreenPage == 0) { + updateClusterScreen(false); + } foundOBD2 = false; // Core 0 background task will handle reconnection smoothly! return; diff --git a/sketch/obd2_gauge/rainbow_text.h b/sketch/obd2_gauge/rainbow_text.h index 4b54142..8857d53 100644 --- a/sketch/obd2_gauge/rainbow_text.h +++ b/sketch/obd2_gauge/rainbow_text.h @@ -2,6 +2,7 @@ #include #include #include "DSEG7_Modern_BoldItalic_34.h" +#include "DSEG7_Modern_BoldItalic_44.h" #include "DSEG7_Modern_BoldItalic_80.h" extern bool isRainbowTheme(); @@ -132,9 +133,9 @@ inline void drawDseg7RightString34(T &dst, const char *str, int rightX, int y0, int totalW = getDseg7StringWidth34(str); int startX = rightX - totalW; - if (padding > totalW) { - int clearW = padding - totalW; - int clearX = rightX - padding; + if (padding > 0) { + int clearW = (padding > totalW) ? padding : totalW; + int clearX = rightX - clearW; if (clearX < 0) { clearW += clearX; clearX = 0; @@ -154,10 +155,93 @@ inline void drawDseg7RightString34(T &dst, const char *str, int rightX, int y0, } } +// Measure width in pixels of a string rendered in DSEG7 44pt (tight tracking adv=31) +inline int getDseg7StringWidth44(const char *str) { + int w = 0; + for (int i = 0; str[i] != '\0'; i++) { + char c = str[i]; + if (c == '.') w += 10; + else if (c == ' ') w += 31; + else w += 31; + } + return w + 5; +} + +// Draw a single DSEG7 44pt character directly to destination +template +inline void drawDseg7Digit44(T &dst, int x0, int y0, char c, uint16_t color, + uint16_t bgCol, int clip_h = 240, bool rainbow = false, int screen_offset_x = 0) { + uint32_t offset = 0; + uint8_t w = 36; + if (c >= '0' && c <= '9') { + offset = 388 + (c - '0') * 1584; + } else if (c == '.') { + offset = 16228; + w = 10; + } else if (c == '-') { + offset = 16668; + } else { + return; + } + + dst.startWrite(); + for (int dy = 0; dy < 44; dy++) { + int curY = y0 + dy; + if (curY < 0 || curY >= clip_h) + continue; + const uint8_t *row = &DSEG7_Modern_BoldItalic_44[offset + dy * w]; + for (int dx = 0; dx < w; dx++) { + int curX = x0 + dx; + if (curX < 0 || curX >= 320) + continue; + uint8_t a = pgm_read_byte(row + dx); + if (a == 0) + continue; + uint16_t fg = rainbow ? getRainbowScreenColor(curX + screen_offset_x, curY) : color; + if (a >= 240) { + dst.drawPixel(curX, curY, fg); + } else { + dst.drawPixel(curX, curY, dst.alphaBlend(a, fg, bgCol)); + } + } + } + dst.endWrite(); +} + +// Draw a DSEG7 44pt string right-aligned with automatic background padding and rainbow support +template +inline void drawDseg7RightString44(T &dst, const char *str, int rightX, int y0, + uint16_t color, uint16_t bgCol, int padding = 0, + int clip_h = 240, bool rainbow = false, int screen_offset_x = 0) { + int totalW = getDseg7StringWidth44(str); + int startX = rightX - totalW; + + if (padding > 0) { + int clearW = (padding > totalW) ? padding : totalW; + int clearX = rightX - clearW; + if (clearX < 0) { + clearW += clearX; + clearX = 0; + } + if (clearW > 0) { + dst.fillRect(clearX, y0, clearW, 44, bgCol); + } + } + + int curX = startX; + for (int i = 0; str[i] != '\0'; i++) { + char c = str[i]; + uint16_t charColor = isYapaTheme() ? getYapaColor(i) : color; + drawDseg7Digit44(dst, curX, y0, c, charColor, bgCol, clip_h, rainbow, screen_offset_x); + if (c == '.') curX += 10; + else curX += 31; + } +} + // Draw a single DSEG7 80pt digit directly to destination with rainbow gradient template inline void drawDseg7Digit80(T &dst, int x0, int y0, uint8_t digit, - uint16_t color, uint16_t bgCol, int clip_h = 240, bool rainbow = false) { + uint16_t color, uint16_t bgCol, int clip_h = 240, bool rainbow = false, int screen_offset_x = 0) { if (digit > 9) return; const uint8_t *bmp = &DSEG7_Modern_BoldItalic_80[388 + digit * 5200]; dst.startWrite(); @@ -173,7 +257,7 @@ inline void drawDseg7Digit80(T &dst, int x0, int y0, uint8_t digit, continue; uint8_t a = pgm_read_byte(row + dx); if (a == 0) continue; - uint16_t fg = rainbow ? getRainbowScreenColor(curX, curY) : color; + uint16_t fg = rainbow ? getRainbowScreenColor(curX + screen_offset_x, curY) : color; if (a >= 240) { dst.drawPixel(curX, curY, fg); } else { @@ -188,16 +272,17 @@ inline void drawDseg7Digit80(T &dst, int x0, int y0, uint8_t digit, template inline void drawDseg7RightString80(T &dst, const char *str, int rightX, int y0, uint16_t color, uint16_t bgCol, int padding = 0, - int clip_h = 240, bool rainbow = false) { - // Ancho aproximado por digito 80pt: advance de 65px - int len = 0; - for (int i = 0; str[i] != '\0'; i++) len++; - int totalW = len * 65; + int clip_h = 240, bool rainbow = false, int screen_offset_x = 0) { + int totalW = 0; + for (int i = 0; str[i] != '\0'; i++) { + if (str[i] == '-') totalW += 50; + else totalW += 65; + } int startX = rightX - totalW; - if (padding > totalW) { - int clearW = padding - totalW; - int clearX = rightX - padding; + if (padding > 0) { + int clearW = (padding > totalW) ? padding : totalW; + int clearX = rightX - clearW; if (clearX < 0) { clearW += clearX; clearX = 0; @@ -212,15 +297,159 @@ inline void drawDseg7RightString80(T &dst, const char *str, int rightX, int y0, char c = str[i]; uint16_t charColor = isYapaTheme() ? getYapaColor(i) : color; if (c >= '0' && c <= '9') { - drawDseg7Digit80(dst, curX, y0, c - '0', charColor, bgCol, clip_h, rainbow); + drawDseg7Digit80(dst, curX, y0, c - '0', charColor, bgCol, clip_h, rainbow, screen_offset_x); + curX += 65; } else if (c == '-') { - // Si es '-', dibujamos barra horizontal central de DSEG7 - dst.fillRect(curX + 10, y0 + 36, 45, 8, rainbow ? getRainbowScreenColor(curX + 32, y0 + 40) : charColor); + for (int dy = 0; dy < 6; dy++) { + int py = y0 + 37 + dy; + if (py >= 0 && py < clip_h) { + int startDx = 11 - dy / 2; + dst.fillRect(curX + startDx, py, 28, 1, rainbow ? getRainbowScreenColor(curX + screen_offset_x + startDx + 14, py) : charColor); + } + } + curX += 50; + } else { + curX += 65; } - curX += 65; } } +// Fast zero-flicker line-buffered DSEG7 44pt renderer (direct to TFT, NO heap allocation!) +template +inline void drawDseg7RightFast44(T &dst, const char *str, int rightX, int y0, + uint16_t color, uint16_t bgCol, int minTotalW = 0, + bool rainbow = false) { + int totalW = getDseg7StringWidth44(str); + int renderW = (minTotalW > totalW) ? minTotalW : totalW; + if (renderW > 160) renderW = 160; + int startX = rightX - renderW; + int textOffsetX = renderW - totalW; + + uint16_t lineBuf[160]; + + dst.startWrite(); + for (int dy = 0; dy < 44; dy++) { + int curY = y0 + dy; + if (curY < 0 || curY >= 240) continue; + + for (int i = 0; i < renderW; i++) { + lineBuf[i] = bgCol; + } + + int curX = textOffsetX; + for (int idx = 0; str[idx] != '\0'; idx++) { + char c = str[idx]; + uint32_t offset = 0; + uint8_t w = 36; + uint8_t adv = 31; + if (c >= '0' && c <= '9') { + offset = 388 + (c - '0') * 1584; + } else if (c == '.') { + offset = 16228; + w = 10; + adv = 10; + } else if (c == '-') { + offset = 16668; + } else { + curX += adv; + continue; + } + + const uint8_t *row = &DSEG7_Modern_BoldItalic_44[offset + dy * w]; + uint16_t charColor = isYapaTheme() ? getYapaColor(idx) : color; + + for (int dx = 0; dx < w; dx++) { + int bufX = curX + dx; + if (bufX < 0 || bufX >= renderW) continue; + uint8_t a = pgm_read_byte(row + dx); + if (a == 0) continue; + int screenX = startX + bufX; + uint16_t fg = rainbow ? getRainbowScreenColor(screenX, curY) : charColor; + if (a >= 240) { + lineBuf[bufX] = fg; + } else { + lineBuf[bufX] = dst.alphaBlend(a, fg, bgCol); + } + } + curX += adv; + } + + dst.pushImage(startX, curY, renderW, 1, lineBuf); + } + dst.endWrite(); +} + +// Fast zero-flicker line-buffered DSEG7 80pt renderer (direct to TFT, NO heap allocation!) +template +inline void drawDseg7RightFast80(T &dst, const char *str, int rightX, int y0, + uint16_t color, uint16_t bgCol, int minTotalW = 0, + bool rainbow = false) { + int totalW = 0; + for (int i = 0; str[i] != '\0'; i++) { + if (str[i] == '-') totalW += 50; + else totalW += 65; + } + int renderW = (minTotalW > totalW) ? minTotalW : totalW; + if (renderW > 184) renderW = 184; + int startX = rightX - renderW; + if (startX < 10) { + renderW -= (10 - startX); + startX = 10; + } + int textOffsetX = renderW - totalW; + + uint16_t lineBuf[200]; + + dst.startWrite(); + for (int dy = 0; dy < 80; dy++) { + int curY = y0 + dy; + if (curY < 0 || curY >= 240) continue; + + for (int i = 0; i < renderW; i++) { + lineBuf[i] = bgCol; + } + + int curX = textOffsetX; + for (int idx = 0; str[idx] != '\0'; idx++) { + char c = str[idx]; + uint16_t charColor = isYapaTheme() ? getYapaColor(idx) : color; + if (c >= '0' && c <= '9') { + const uint8_t *bmp = &DSEG7_Modern_BoldItalic_80[388 + (c - '0') * 5200 + dy * 65]; + for (int dx = 0; dx < 65; dx++) { + int bufX = curX + dx; + if (bufX < 0 || bufX >= renderW) continue; + uint8_t a = pgm_read_byte(bmp + dx); + if (a == 0) continue; + int screenX = startX + bufX; + uint16_t fg = rainbow ? getRainbowScreenColor(screenX, curY) : charColor; + if (a >= 240) { + lineBuf[bufX] = fg; + } else { + lineBuf[bufX] = dst.alphaBlend(a, fg, bgCol); + } + } + curX += 65; + } else if (c == '-') { + if (dy >= 37 && dy < 43) { + int startDx = 11 - (dy - 37) / 2; + for (int dx = startDx; dx < startDx + 28; dx++) { + int bufX = curX + dx; + if (bufX >= 0 && bufX < renderW) { + lineBuf[bufX] = rainbow ? getRainbowScreenColor(startX + bufX, curY) : charColor; + } + } + } + curX += 50; + } else { + curX += 65; + } + } + + dst.pushImage(startX, curY, renderW, 1, lineBuf); + } + dst.endWrite(); +} + // Apply spectral rainbow coloring to any pre-rendered text sprite with 100% anti-aliasing preservation inline void applyRainbowToSprite(TFT_eSprite &s, int screenX, int screenY, uint16_t bgCol = 0x10A2) { if (!s.created()) return; diff --git a/sketch/obd2_gauge/tri_temp.h b/sketch/obd2_gauge/tri_temp.h index 964c27a..41c3e0b 100644 --- a/sketch/obd2_gauge/tri_temp.h +++ b/sketch/obd2_gauge/tri_temp.h @@ -47,6 +47,11 @@ static TFT_eSprite sprTriTitle[3] = { TFT_eSprite(&tft), TFT_eSprite(&tft), TFT_ static bool sprTriTitleReady = false; inline void invalidateTriTempTitles() { + for (int i = 0; i < 3; i++) { + if (sprTriTitle[i].created()) { + sprTriTitle[i].deleteSprite(); + } + } sprTriTitleReady = false; } @@ -167,7 +172,12 @@ inline void draw7SegDegreeC(TFT_eSPI &dst, int bx, int by, uint16_t color = 0xC6 if (px < 0 || px >= dst.width()) continue; uint8_t a = pgm_read_byte(&s_dsegUnitAlpha[rowOffset + i]); if (a > 8) { - uint16_t curCol = rainbow ? getRainbowScreenColor(px, py) : color; + uint16_t curCol = color; + if (rainbow) { + curCol = getRainbowScreenColor(px, py); + } else if (isYapaTheme()) { + curCol = (i < 12) ? getYapaColor(0) : getYapaColor(1); + } uint16_t pixCol = (a >= 250) ? curCol : fastBlend(a, curCol, bgCol); dst.drawPixel(px, py, pixCol); } @@ -247,13 +257,13 @@ inline void drawTriTempCard(uint8_t cardIdx, float val, int x_offset = 0) { else accentCol = TFT_RED; } else if (cardIdx == 1) { titleStr = "INTERIOR"; - subStr = (dsSensorCount > 0) ? "DS18B20 SENSOR 1 (GPIO 22)" : "DS18B20 SENSOR 1"; + subStr = (dsSensorCount > 0) ? "DS18B20 SENSOR 1 (GPIO 22)" : "DS18B20 NO DETECTADO"; minRange = 10.0f; maxRange = 40.0f; accentCol = isRainbowTheme() ? (uint16_t)0x07E0 : (isYapaTheme() ? getYapaColor(1) : getThemeAccentColor()); } else { titleStr = "EXTERIOR"; - subStr = (dsSensorCount > 1) ? "DS18B20 SENSOR 2 (GPIO 22)" : (dsSensorCount == 1 ? "ESTIMADA (-4.5`C)" : "DS18B20 SENSOR 2"); + subStr = (dsSensorCount > 1) ? "DS18B20 SENSOR 2 (GPIO 22)" : "DS18B20 NO DETECTADO"; minRange = -10.0f; maxRange = 50.0f; accentCol = isRainbowTheme() ? (uint16_t)0xFD20 : (isYapaTheme() ? getYapaColor(2) : getThemePrimaryColor()); @@ -298,7 +308,7 @@ inline void drawTriTempCard(uint8_t cardIdx, float val, int x_offset = 0) { tft.unloadFont(); } - tft.setTextColor(0x8410, cardBg); // Soft gray + tft.setTextColor(accentCol, cardBg); tft.drawString(subStr, cardX + 16, cardY + 32, 1); } @@ -310,34 +320,35 @@ inline void drawTriTempCard(uint8_t cardIdx, float val, int x_offset = 0) { float ratio = (val - minRange) / (maxRange - minRange); if (ratio < 0.0f) ratio = 0.0f; if (ratio > 1.0f) ratio = 1.0f; - int fillW = (int)(barW * ratio); - if (fillW < 4) fillW = 4; + int fillW = (val <= -900.0f) ? 0 : (int)(barW * ratio); + if (fillW < 4 && val > -900.0f) fillW = 4; if (x_offset == 0) { - drawTriTempBar(barX, barY, fillW, accentCol); + drawTriTempBar(barX, barY, fillW, (val <= -900.0f) ? (uint16_t)0x18C3 : accentCol); oldTriFillW[cardIdx] = fillW; oldTriAccentCol[cardIdx] = accentCol; } else { tft.fillRoundRect(barX, barY, barW, 8, 3, 0x18C3); - tft.fillRoundRect(barX, barY, fillW, 8, 3, accentCol); + if (fillW > 0) { + tft.fillRoundRect(barX, barY, fillW, 8, 3, accentCol); + } } // 4. Digital Number using DSEG7 Modern Bold Italic 34pt String numStr; + uint16_t numCol = accentCol; if (val <= -900.0f) { numStr = "---"; - } else if (isInt) { - numStr = String((int)val); } else { - numStr = String(val, 1); + numStr = String((int)round(val)); } bool rainbowTxt = isRainbowTheme() && (accentCol != TFT_RED); - drawDseg7RightString34(tft, numStr.c_str(), cardX + 262, cardY + 20, accentCol, cardBg, 100, 240, rainbowTxt); + drawDseg7RightString34(tft, numStr.c_str(), cardX + 262, cardY + 20, numCol, cardBg, 100, 240, rainbowTxt); // Unit "°C" in authentic digital 7-segment italic typography matching numbers bool rainbowUnit = isRainbowTheme() && (accentCol != TFT_RED); - uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, cardY + 22) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(numStr.length()) : (accentCol == TFT_RED ? TFT_RED : 0xC618)); + uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, cardY + 22) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(numStr.length()) : (accentCol == TFT_RED ? TFT_RED : accentCol)); draw7SegDegreeC(tft, cardX + 268, cardY + 22, unitCol, cardBg, rainbowUnit); } @@ -388,7 +399,7 @@ inline void updateTriTempCardValue(uint8_t cardIdx, float val, float oldVal) { sX += cw; } } else { - tft.setTextColor(0x8410, cardBg); + tft.setTextColor(accentCol, cardBg); tft.drawString(subStr, cardX + 16, cardY + 32, 1); } } @@ -420,27 +431,26 @@ inline void updateTriTempCardValue(uint8_t cardIdx, float val, float oldVal) { float ratio = (val - minRange) / (maxRange - minRange); if (ratio < 0.0f) ratio = 0.0f; if (ratio > 1.0f) ratio = 1.0f; - int fillW = (int)(barW * ratio); - if (fillW < 4) fillW = 4; + int fillW = (val <= -900.0f) ? 0 : (int)(barW * ratio); + if (fillW < 4 && val > -900.0f) fillW = 4; if (fillW != oldTriFillW[cardIdx] || accentCol != oldTriAccentCol[cardIdx]) { - drawTriTempBar(barX, barY, fillW, accentCol); + drawTriTempBar(barX, barY, fillW, (val <= -900.0f) ? (uint16_t)0x18C3 : accentCol); oldTriFillW[cardIdx] = fillW; oldTriAccentCol[cardIdx] = accentCol; } // 3. Digital Number update using DSEG7 Modern Bold Italic 34pt (setTextPadding prevents flicker) String numStr; + uint16_t numCol = accentCol; if (val <= -900.0f) { numStr = "---"; - } else if (isInt) { - numStr = String((int)val); } else { - numStr = String(val, 1); + numStr = String((int)round(val)); } bool rainbowTxt = isRainbowTheme() && (accentCol != TFT_RED); - drawDseg7RightString34(tft, numStr.c_str(), cardX + 262, cardY + 20, accentCol, cardBg, 100, 240, rainbowTxt); + drawDseg7RightString34(tft, numStr.c_str(), cardX + 262, cardY + 20, numCol, cardBg, 100, 240, rainbowTxt); } // Synchronize tracking variables without touching TFT display (zero flicker) @@ -463,8 +473,8 @@ inline void syncTriTempTrackers() { float ratio = (vals[i] - minR[i]) / (maxR[i] - minR[i]); if (ratio < 0.0f) ratio = 0.0f; if (ratio > 1.0f) ratio = 1.0f; - int fillW = (int)(120 * ratio); - if (fillW < 4) fillW = 4; + int fillW = (vals[i] <= -900.0f) ? 0 : (int)(120 * ratio); + if (fillW < 4 && vals[i] > -900.0f) fillW = 4; oldTriFillW[i] = fillW; uint16_t acc = defAcc[i]; @@ -492,12 +502,11 @@ inline void drawTriTempScreen(int x_offset = 0) { syncTriTempTrackers(); - // Draw Page Indicator: [○ ● ○ ○ ○] (Page 2 of 5 active) - tft.fillCircle(132 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive - tft.fillCircle(146 + x_offset, 2, 2, getThemePrimaryColor()); // Page 1 active - tft.fillCircle(160 + x_offset, 2, 2, 0x5AEB); // Page 2 inactive - tft.fillCircle(174 + x_offset, 2, 2, 0x5AEB); // Page 3 inactive - tft.fillCircle(188 + x_offset, 2, 2, 0x5AEB); // Page 4 inactive + // Draw Page Indicator: [○ ● ○ ○] (Page 1 of 4 active) + tft.fillCircle(139 + x_offset, 2, 2, 0x5AEB); // Page 0 inactive + tft.fillCircle(153 + x_offset, 2, 2, getThemePrimaryColor()); // Page 1 active + tft.fillCircle(167 + x_offset, 2, 2, 0x5AEB); // Page 2 inactive + tft.fillCircle(181 + x_offset, 2, 2, 0x5AEB); // Page 3 inactive } // Update coolant reading dynamically without redrawing entire screen @@ -529,23 +538,25 @@ inline void updateTriTempSensors(bool forceRedraw = false) { if (dsSensorCount > 0) { float t1 = dsSensors.getTempCByIndex(0); - if (t1 > -50.0f && t1 < 100.0f) { + if (t1 > -50.0f && t1 < 100.0f && t1 != 85.0f && t1 != -127.0f) { tempInterior = t1; + } else { + tempInterior = -999.0f; } if (dsSensorCount > 1) { float t2 = dsSensors.getTempCByIndex(1); - if (t2 > -50.0f && t2 < 100.0f) { + if (t2 > -50.0f && t2 < 100.0f && t2 != 85.0f && t2 != -127.0f) { tempExterior = t2; + } else { + tempExterior = -999.0f; } } else { - // Demo exterior offset if only 1 physical sensor connected - tempExterior = tempInterior - 4.5f; + tempExterior = -999.0f; } dsSensors.requestTemperatures(); // non-blocking next reading request } else { - // Simulated demo readings if sensors not yet plugged in - tempInterior = 22.4f + 0.3f * sin(millis() / 4000.0f); - tempExterior = 16.8f + 0.2f * cos(millis() / 5000.0f); + tempInterior = -999.0f; + tempExterior = -999.0f; } if (currentScreenPage == 1 && fullScreenCell == -1) { @@ -557,11 +568,15 @@ inline void updateTriTempSensors(bool forceRedraw = false) { oldTriInterior = tempInterior; oldTriExterior = tempExterior; } else { - if (forceRedraw || abs(tempInterior - oldTriInterior) >= 0.1f) { + int curI = (tempInterior > -900.0f) ? (int)round(tempInterior) : -999; + int oldI = (oldTriInterior > -900.0f) ? (int)round(oldTriInterior) : -999; + if (forceRedraw || curI != oldI) { updateTriTempCardValue(1, tempInterior, oldTriInterior); oldTriInterior = tempInterior; } - if (forceRedraw || abs(tempExterior - oldTriExterior) >= 0.1f) { + int curE = (tempExterior > -900.0f) ? (int)round(tempExterior) : -999; + int oldE = (oldTriExterior > -900.0f) ? (int)round(oldTriExterior) : -999; + if (forceRedraw || curE != oldE) { updateTriTempCardValue(2, tempExterior, oldTriExterior); oldTriExterior = tempExterior; }