diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 4a2d488..4bb5e4e 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -163,6 +163,9 @@ struct EnableFullBlinkAccessor : public RefAccessorSaveSettings { bool &ge struct EnableLedstripStVOAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableStVO; } }; struct LedsStVOFrontOffsetAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.stvoFrontOffset; } }; struct LedsStVOFrontLengthAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.stvoFrontLength; } }; +struct EnableLedstripStVOFrontlight : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.stvoFrontEnable; } }; +struct AnimationMultiplierAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.animationMultiplier; } }; +struct LedstripBrightnessAccessor : public RefAccessorSaveSettings { uint8_t &getRef() const override { return settings.ledstrip.brightness; } }; #endif struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } }; diff --git a/main/displays/menus/ledstripmenu.h b/main/displays/menus/ledstripmenu.h index 45dc742..a85a0fb 100644 --- a/main/displays/menus/ledstripmenu.h +++ b/main/displays/menus/ledstripmenu.h @@ -84,6 +84,22 @@ using StVOLengthChangeScreen = makeComponent< SwitchScreenAction >; +using animationMultiplierChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + AnimationMultiplierAccessor, + BackActionInterface>, + SwitchScreenAction +>; + +using ledstripBrightnessChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + LedstripBrightnessAccessor, + BackActionInterface>, + SwitchScreenAction +>; + class LedstripMenu : public MenuDisplay, public StaticText, @@ -103,10 +119,12 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } + if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } if (!simplified) { constructMenuItem, SwitchScreenAction>>(); } constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/ledstrip.h b/main/ledstrip.h index 42d81a5..6f2b430 100644 --- a/main/ledstrip.h +++ b/main/ledstrip.h @@ -126,17 +126,26 @@ void updateLedStrip() { const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); - std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, CRGB{0, 0, 0}); - std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, CRGB{0, 0, 0}); - - std::fill(center - settings.ledstrip.bigOffset - 2U, center - settings.ledstrip.smallOffset - 2U, CRGB{255, 0, 0}); - std::fill(center + settings.ledstrip.smallOffset + 2U, center + settings.ledstrip.bigOffset + 2U, CRGB{255, 0, 0}); + if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKLEFT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::millis_clock::now().time_since_epoch() % 750ms < 375ms) || settings.ledstrip.enableFullBlink) // Condition for right + { + std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, CRGB{0, 0, 0}); + std::fill(center - settings.ledstrip.bigOffset - 1U, center - settings.ledstrip.smallOffset - 1U, CRGB{255, 0, 0}); // Right + } + if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKRIGHT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::millis_clock::now().time_since_epoch() % 750ms < 375ms) || settings.ledstrip.enableFullBlink) // Condition for left + { + std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, CRGB{0, 0, 0}); + std::fill(center + settings.ledstrip.smallOffset + 1U, center + settings.ledstrip.bigOffset + 1U, CRGB{255, 0, 0}); // Left + } + if (settings.ledstrip.stvoFrontEnable) + { std::fill(std::begin(leds) + settings.ledstrip.stvoFrontOffset, std::begin(leds) + settings.ledstrip.stvoFrontOffset + settings.ledstrip.stvoFrontLength, CRGB{255, 255, 255}); std::fill(std::end(leds) - settings.ledstrip.stvoFrontOffset - settings.ledstrip.stvoFrontLength, std::end(leds) - settings.ledstrip.stvoFrontOffset, CRGB{255, 255, 255}); + } } FastLED.setMaxPowerInVoltsAndMilliamps(5,settings.ledstrip.deziampere * 100); + FastLED.setBrightness(settings.ledstrip.brightness); FastLED.show(); } @@ -190,7 +199,7 @@ void showSpeedSyncAnimation() { static float hue_result = 0; - const float hue_per_led = .1; + const float hue_per_led = 1. / std::max(uint8_t(1), uint8_t(settings.ledstrip.animationMultiplier)); const float meter_per_second = avgSpeedKmh / 3.6; const float leds_per_second = meter_per_second * leds_per_meter; const float hue_per_second = leds_per_second * hue_per_led; diff --git a/main/presets.h b/main/presets.h index 0859553..d75cc85 100644 --- a/main/presets.h +++ b/main/presets.h @@ -241,7 +241,10 @@ constexpr Settings::Ledstrip defaultLedstrip { .enableFullBlink = false, .enableStVO = false, .stvoFrontOffset = 0, - .stvoFrontLength = 10 + .stvoFrontLength = 10, + .stvoFrontEnable = false, + .animationMultiplier = 10, + .brightness = 255 }; #endif diff --git a/main/settings.h b/main/settings.h index 4b1af21..c7fc85f 100644 --- a/main/settings.h +++ b/main/settings.h @@ -166,6 +166,12 @@ struct Settings bool enableStVO; int16_t stvoFrontOffset; int16_t stvoFrontLength; +<<<<<<< HEAD +======= + bool stvoFrontEnable; + int16_t animationMultiplier; + uint8_t brightness; +>>>>>>> 3dff172 (Added led brightness and animation speed) } ledstrip; #endif @@ -271,6 +277,9 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("ledstvo", ledstrip.enableStVO); callable("ledstvofoff", ledstrip.stvoFrontOffset); callable("ledstvoflen", ledstrip.stvoFrontLength); + callable("ledstvoen", ledstrip.stvoFrontEnable); + callable("ledAnimMultiplier", ledstrip.animationMultiplier); + callable("ledbrightness", ledstrip.brightness); #endif callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); diff --git a/main/settingsutils.h b/main/settingsutils.h index c06e19f..96bcb5e 100644 --- a/main/settingsutils.h +++ b/main/settingsutils.h @@ -17,6 +17,7 @@ void switchProfile(uint8_t index) if (index == SIMPLIFIED_TRIGGER_TRIGGERONPRESET) { simplified = true; + return; } #endif diff --git a/main/texts.h b/main/texts.h index 889f5c0..383719c 100644 --- a/main/texts.h +++ b/main/texts.h @@ -254,6 +254,9 @@ constexpr char TEXT_FULLBLINK[] = "Full blink"; constexpr char TEXT_LEDSTRIP_STVO[] = "Enable StVO"; constexpr char TEXT_STVO_FRONTOFFSET[] = "StVO Front Offset"; constexpr char TEXT_STVO_FRONTLENGTH[] = "StVO Front Length"; +constexpr char TEXT_STVO_ENABLEFRONTLIGHT[] = "StVO Front Enable"; +constexpr char TEXT_ANIMATION_MULTIPLIER[] = "Animation Multiplier"; +constexpr char TEXT_LEDSTRIP_BRIGHTNESS[] = "Ledstrip Brightness"; //constexpr char TEXT_BACK[] = "Back"; //LedstripSelectAnimationMenu