From 6f7fb5817d589ef0ab9a389634cd4c43a3c0e70a Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Wed, 5 Jan 2022 02:40:37 +0100 Subject: [PATCH] Added blinker visualization --- main/accessors/settingsaccessors.h | 1 + .../menus/ledstripselectblinkmenu.cpp | 2 + main/displays/statusdisplay.cpp | 42 ++++++++++++++++--- main/newsettings.h | 2 + 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 42352b2..63e3ebd 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -202,6 +202,7 @@ struct LedstripEnableBlinkAnimationAccessor : public NewSettingsAccessor { #ifdef FEATURE_OTA struct LedstripOtaAnimationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.otaMode; } }; #endif +struct LedstripEnableVisualizeBlinkAnimationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableVisualizeBlink; } }; #endif // Battery diff --git a/main/displays/menus/ledstripselectblinkmenu.cpp b/main/displays/menus/ledstripselectblinkmenu.cpp index b72471a..04bed23 100644 --- a/main/displays/menus/ledstripselectblinkmenu.cpp +++ b/main/displays/menus/ledstripselectblinkmenu.cpp @@ -22,6 +22,7 @@ constexpr char TEXT_ANIMATION_BLINKLEFT[] = "Blink Left"; constexpr char TEXT_ANIMATION_BLINKRIGHT[] = "Blink Right"; constexpr char TEXT_ANIMATION_BLINKBOTH[] = "Blink Both"; constexpr char TEXT_LEDSTRIP_EN_BLINK_ANIM[] = "Animated Blink"; +constexpr char TEXT_LEDSTRIP_VISUALIZE_BLINK[] = "Visualize Blink"; constexpr char TEXT_BACK[] = "Back"; class CurrentSelectedBlinkAnimationText : public virtual espgui::TextInterface @@ -42,6 +43,7 @@ LedstripSelectBlinkMenu::LedstripSelectBlinkMenu() constructMenuItem, LedstripAnimationBlinkRightAction>>(); constructMenuItem, LedstripAnimationBlinkBothAction>>(); constructMenuItem, BobbyCheckbox, LedstripEnableBlinkAnimationAccessor>>(); + constructMenuItem, BobbyCheckbox, LedstripEnableVisualizeBlinkAnimationAccessor>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/displays/statusdisplay.cpp b/main/displays/statusdisplay.cpp index 0506ac4..3fc9360 100644 --- a/main/displays/statusdisplay.cpp +++ b/main/displays/statusdisplay.cpp @@ -85,12 +85,42 @@ void StatusDisplay::redraw() lastRedraw = now; } - if (configs.handbremse.enable.value && configs.handbremse.visualize.value && handbremse::angezogen) - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_RED); - else if (configs.handbremse.enable.value && configs.handbremse.visualize.value && handbremse::stateWish == handbremse::StateWish::brake) - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_YELLOW); - else - tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_BLACK); + { + static bool handbremse_fill_with_black; + if (configs.handbremse.enable.value && configs.handbremse.visualize.value && handbremse::angezogen) + { + tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_RED); + handbremse_fill_with_black = true; + } + else if (configs.handbremse.enable.value && configs.handbremse.visualize.value && handbremse::stateWish == handbremse::StateWish::brake) + { + tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_YELLOW); + handbremse_fill_with_black = true; + } + else if (handbremse_fill_with_black) + { + handbremse_fill_with_black = false; + tft.fillRect(0, tft.height()-6, tft.width(), 6, TFT_BLACK); + } + } + + { + static bool blink_fill_with_black; + if (configs.ledstrip.enableVisualizeBlink.value && (espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) && (blinkAnimation > 0)) + { + if (BLINK_LEFT_EXPR) + tft.fillRect(0, 0, tft.width() / 2, 6, TFT_YELLOW); + if (BLINK_RIGHT_EXPR) + tft.fillRect(tft.width() / 2, 0, tft.width() / 2, 6, TFT_YELLOW); + + blink_fill_with_black = true; + } + else if (blink_fill_with_black) + { + blink_fill_with_black = false; + tft.fillRect(0, 0, tft.width(), 6, TFT_BLACK); + } + } tft.setTextFont(2); m_labelRawGas.redraw(raw_gas ? std::to_string(*raw_gas) : "?"); diff --git a/main/newsettings.h b/main/newsettings.h index 6086e96..f54ed18 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -244,6 +244,7 @@ public: ConfigWrapper enableAnimBlink {false, DoReset, {}, "enAnimBlink" }; ConfigWrapper otaMode {OtaAnimationModes::GreenProgressBar, DoReset, {}, "ledOtaAnim" }; ConfigWrapper maxMilliamps {3000, DoReset, {}, "ledMaxMilliamps" }; + ConfigWrapper enableVisualizeBlink {false, DoReset, {}, "enVisualBlink" }; } ledstrip; struct { @@ -530,6 +531,7 @@ public: x(ledstrip.enableAnimBlink) \ x(ledstrip.otaMode) \ x(ledstrip.maxMilliamps) \ + x(ledstrip.enableVisualizeBlink) \ \ x(battery.cellsSeries) \ x(battery.cellsParallel) \