diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index affb85a..41f1d82 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -176,36 +176,36 @@ struct MotortestMaxPwmAccessor : public RefAccessorSaveSettings { uint // Ledstrip #ifdef FEATURE_LEDSTRIP -struct EnableLedAnimationAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableLedAnimation; } }; -struct EnableBrakeLightsAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableBrakeLights; } }; -struct LedsCountAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.ledsCount; } }; -struct CenterOffsetAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.centerOffset; } }; -struct SmallOffsetAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.smallOffset; } }; -struct BigOffsetAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.ledstrip.bigOffset; } }; -struct LedStripMaxMilliampsAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledStripMaxMilliamps; } }; +struct EnableLedAnimationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableLedAnimation; } }; +struct EnableBrakeLightsAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableBrakeLights; } }; +struct LedsCountAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.ledsCount; } }; +struct CenterOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.centerOffset; } }; +struct SmallOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.smallOffset; } }; +struct BigOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.bigOffset; } }; +struct LedStripMaxMilliampsAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.maxMilliamps; } }; struct LedStripMaxAmpereAccessor : public virtual espgui::AccessorInterface { float getValue() const override { - return configs.ledStripMaxMilliamps.value / 1000.f; + return configs.ledstrip.maxMilliamps.value / 1000.f; } espgui::AccessorInterface::setter_result_t setValue(float value) override { - return configs.write_config(configs.ledStripMaxMilliamps, value * 1000); + return configs.write_config(configs.ledstrip.maxMilliamps, value * 1000); } }; -struct EnableBeepWhenBlinkAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableBeepWhenBlink; } }; -struct EnableFullBlinkAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableFullBlink; } }; -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; } }; -struct LedstripEnableBlinkAnimationAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.ledstrip.enableAnimBlink; } }; +struct EnableBeepWhenBlinkAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableBeepWhenBlink; } }; +struct EnableFullBlinkAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableFullBlink; } }; +struct EnableLedstripStVOAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableStVO; } }; +struct LedsStVOFrontOffsetAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.stvoFrontOffset; } }; +struct LedsStVOFrontLengthAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.stvoFrontLength; } }; +struct EnableLedstripStVOFrontlight : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.stvoFrontEnable; } }; +struct AnimationMultiplierAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.animationMultiplier; } }; +struct LedstripBrightnessAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.brightness; } }; +struct LedstripEnableBlinkAnimationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.enableAnimBlink; } }; #ifdef FEATURE_OTA -struct LedstripOtaAnimationAccessor : public RefAccessorSaveSettings { OtaAnimationModes &getRef() const override { return settings.ledstrip.otaMode; } }; +struct LedstripOtaAnimationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.ledstrip.otaMode; } }; #endif #endif diff --git a/main/displays/menus/ledstripmenu.cpp b/main/displays/menus/ledstripmenu.cpp index ed2d012..7ef971b 100644 --- a/main/displays/menus/ledstripmenu.cpp +++ b/main/displays/menus/ledstripmenu.cpp @@ -136,7 +136,7 @@ class LedStripMaxCurrentText : public virtual espgui::TextInterface public: std::string text() const override { - return fmt::format("&sLedstrip max current: &f&2{:.02f}A", configs.ledStripMaxMilliamps.value / 1000.f); + return fmt::format("&sLedstrip max current: &f&2{:.02f}A", configs.ledstrip.maxMilliamps.value / 1000.f); } }; } // namespace diff --git a/main/displays/menus/ledstripselectotamode.cpp b/main/displays/menus/ledstripselectotamode.cpp index 42d31d6..3c8e71f 100644 --- a/main/displays/menus/ledstripselectotamode.cpp +++ b/main/displays/menus/ledstripselectotamode.cpp @@ -6,7 +6,7 @@ // local includes #include "ledstrip.h" -#include "globals.h" +#include "newsettings.h" #include "utils.h" #include "ledstripmenu.h" @@ -24,8 +24,7 @@ class LedstripChangeOtaAnimModeAction : public virtual espgui::ActionInterface public: void triggered() override { - settings.ledstrip.otaMode = mode; - saveSettings(); + configs.write_config(configs.ledstrip.otaMode, mode); } }; } // namespace diff --git a/main/ledstrip.cpp b/main/ledstrip.cpp index dca4196..6e4b304 100644 --- a/main/ledstrip.cpp +++ b/main/ledstrip.cpp @@ -23,8 +23,8 @@ LedstripAnimation animation_type = LedstripAnimation::DefaultRainbow; void initLedStrip() { - animation_type = LedstripAnimation(settings.ledstrip.animationType); - leds.resize(settings.ledstrip.ledsCount); + animation_type = LedstripAnimation(configs.ledstrip.animationType.value); + leds.resize(configs.ledstrip.ledsCount.value); FastLED.addLeds(&*std::begin(leds), leds.size()) .setCorrection(TypicalSMD5050); } @@ -33,15 +33,15 @@ void updateLedStrip() { EVERY_N_MILLISECONDS( 20 ) { gHue++; } static bool have_disabled_beeper = false; - const bool enAnim = settings.ledstrip.enableAnimBlink; + const bool enAnim = configs.ledstrip.enableAnimBlink.value; if (cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) { std::fill(std::begin(leds), std::end(leds), CRGB{0, 0, 0}); if (espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms || enAnim) { - const auto anim_to_fill = time_to_percent(750ms, 500ms, 100ms, settings.ledstrip.enableFullBlink ? (leds.size() / 2) : settings.ledstrip.bigOffset - settings.ledstrip.smallOffset, settings.ledstrip.enableFullBlink); - if (settings.ledstrip.enableBeepWhenBlink) + const auto anim_to_fill = time_to_percent(750ms, 500ms, 100ms, configs.ledstrip.enableFullBlink.value ? (leds.size() / 2) : configs.ledstrip.bigOffset.value - configs.ledstrip.smallOffset.value, configs.ledstrip.enableFullBlink.value); + if (configs.ledstrip.enableBeepWhenBlink.value) { if (espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) for (Controller &controller : controllers) @@ -51,9 +51,9 @@ void updateLedStrip() controller.command.buzzer.freq = 0; } auto color = CRGB{255, 200, 0}; - const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); + const auto center = (std::begin(leds) + (leds.size() / 2) + configs.ledstrip.centerOffset.value); - if (settings.ledstrip.enableFullBlink) + if (configs.ledstrip.enableFullBlink.value) { // Full if (BLINK_LEFT_EXPR) @@ -89,11 +89,11 @@ void updateLedStrip() // Blink left if (!enAnim) { - std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, color); + std::fill(center - configs.ledstrip.bigOffset.value, center - configs.ledstrip.smallOffset.value, color); } else { - std::fill(center - settings.ledstrip.smallOffset - anim_to_fill, center - settings.ledstrip.smallOffset, color); + std::fill(center - configs.ledstrip.smallOffset.value - anim_to_fill, center - configs.ledstrip.smallOffset.value, color); } } if (BLINK_RIGHT_EXPR) @@ -101,35 +101,16 @@ void updateLedStrip() // Blink right if (!enAnim) { - std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, color); + std::fill(center + configs.ledstrip.smallOffset.value, center + configs.ledstrip.bigOffset.value, color); } else { - std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.smallOffset + anim_to_fill, color); + std::fill(center + configs.ledstrip.smallOffset.value, center + configs.ledstrip.smallOffset.value + anim_to_fill, color); } } } - -// Old way to blink -// if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKRIGHT && !settings.ledstrip.enableFullBlink) -// { -// std::fill(center - settings.ledstrip.bigOffset, center - settings.ledstrip.smallOffset, color); -// } -// else if(blinkAnimation != LEDSTRIP_OVERWRITE_BLINKRIGHT && settings.ledstrip.enableFullBlink) -// { -// std::fill(std::begin(leds), center, color); -// } -// if (blinkAnimation != LEDSTRIP_OVERWRITE_BLINKLEFT && !settings.ledstrip.enableFullBlink) -// { -// std::fill(center + settings.ledstrip.smallOffset, center + settings.ledstrip.bigOffset, color); -// } -// else if(blinkAnimation != LEDSTRIP_OVERWRITE_BLINKLEFT && settings.ledstrip.enableFullBlink) -// { -// std::fill(center, std::end(leds), color); -// } - } else { - if (settings.ledstrip.enableBeepWhenBlink) + if (configs.ledstrip.enableBeepWhenBlink.value) { for (Controller &controller : controllers) controller.command.buzzer.freq = 0; @@ -138,7 +119,7 @@ void updateLedStrip() } else { - if (settings.ledstrip.enableBrakeLights) + if (configs.ledstrip.enableBrakeLights.value) { float avgPwm{}; for (const Controller &controller : controllers) @@ -153,17 +134,17 @@ void updateLedStrip() { auto color = avgSpeedKmh < -0.1f ? CRGB{255, 255, 255} : CRGB{255, 0, 0}; - const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); + const auto center = (std::begin(leds) + (leds.size() / 2) + configs.ledstrip.centerOffset.value); std::fill(std::begin(leds), std::end(leds), CRGB{0, 0, 0}); - if (settings.ledstrip.enableFullBlink) + if (configs.ledstrip.enableFullBlink.value) { std::fill(std::begin(leds), std::end(leds), color); } - else if(!settings.ledstrip.enableAnimBlink) + else if(!configs.ledstrip.enableAnimBlink.value) { - std::fill(center - settings.ledstrip.bigOffset - 2, center - settings.ledstrip.smallOffset + 2, color); - std::fill(center + settings.ledstrip.smallOffset - 2, center + settings.ledstrip.bigOffset + 2, color); + std::fill(center - configs.ledstrip.bigOffset.value - 2, center - configs.ledstrip.smallOffset.value + 2, color); + std::fill(center + configs.ledstrip.smallOffset.value - 2, center + configs.ledstrip.bigOffset.value + 2, color); } } else @@ -177,47 +158,47 @@ void updateLedStrip() } } - if (have_disabled_beeper == false && (!(cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) || !settings.ledstrip.enableBeepWhenBlink)) + if (have_disabled_beeper == false && (!(cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) || !configs.ledstrip.enableBeepWhenBlink.value)) { for (Controller &controller : controllers) controller.command.buzzer.freq = 0; have_disabled_beeper = true; } - else if ((cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) && settings.ledstrip.enableBeepWhenBlink) have_disabled_beeper = false; + else if ((cpputils::is_in(blinkAnimation, LEDSTRIP_OVERWRITE_BLINKLEFT, LEDSTRIP_OVERWRITE_BLINKRIGHT, LEDSTRIP_OVERWRITE_BLINKBOTH)) && configs.ledstrip.enableBeepWhenBlink.value) have_disabled_beeper = false; - if (simplified || settings.ledstrip.enableStVO) + if (simplified || configs.ledstrip.enableStVO.value) { - const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); + const auto center = (std::begin(leds) + (leds.size() / 2) + configs.ledstrip.centerOffset.value); - if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKLEFT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) || settings.ledstrip.enableFullBlink) // Condition for right + if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKLEFT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) || configs.ledstrip.enableFullBlink.value) // 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 + std::fill(center - configs.ledstrip.bigOffset.value, center - configs.ledstrip.smallOffset.value, CRGB{0, 0, 0}); + std::fill(center - configs.ledstrip.bigOffset.value - 1U, center - configs.ledstrip.smallOffset.value - 1U, CRGB{255, 0, 0}); // Right } - if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKRIGHT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) || settings.ledstrip.enableFullBlink) // Condition for left + if (!(blinkAnimation == LEDSTRIP_OVERWRITE_BLINKRIGHT || blinkAnimation == LEDSTRIP_OVERWRITE_BLINKBOTH) || !(espchrono::utc_clock::now().time_since_epoch() % 750ms < 375ms) || configs.ledstrip.enableFullBlink.value) // 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 + std::fill(center + configs.ledstrip.smallOffset.value, center + configs.ledstrip.bigOffset.value, CRGB{0, 0, 0}); + std::fill(center + configs.ledstrip.smallOffset.value + 1U, center + configs.ledstrip.bigOffset.value + 1U, CRGB{255, 0, 0}); // Left } - if (settings.ledstrip.stvoFrontEnable) + if (configs.ledstrip.stvoFrontEnable.value) { - 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}); + std::fill(std::begin(leds) + configs.ledstrip.stvoFrontOffset.value, std::begin(leds) + configs.ledstrip.stvoFrontOffset.value + configs.ledstrip.stvoFrontLength.value, CRGB{255, 255, 255}); + std::fill(std::end(leds) - configs.ledstrip.stvoFrontOffset.value - configs.ledstrip.stvoFrontLength.value, std::end(leds) - configs.ledstrip.stvoFrontOffset.value, CRGB{255, 255, 255}); } } - FastLED.setMaxPowerInVoltsAndMilliamps(5, configs.ledStripMaxMilliamps.value); - FastLED.setBrightness(settings.ledstrip.brightness); + FastLED.setMaxPowerInVoltsAndMilliamps(5, configs.ledstrip.maxMilliamps.value); + FastLED.setBrightness(configs.ledstrip.brightness.value); FastLED.show(); } void showAnimation() { - if (settings.ledstrip.enableLedAnimation + if (configs.ledstrip.enableLedAnimation.value && !simplified #ifdef FEATURE_OTA - && !(asyncOtaTaskStarted && settings.ledstrip.otaMode != OtaAnimationModes::None) + && !(asyncOtaTaskStarted && configs.ledstrip.otaMode.value != OtaAnimationModes::None) #endif ) { @@ -228,7 +209,7 @@ void showAnimation() else showDefaultLedstrip(); } #ifdef FEATURE_OTA - else if (asyncOtaTaskStarted && settings.ledstrip.otaMode != OtaAnimationModes::None) + else if (asyncOtaTaskStarted && configs.ledstrip.otaMode.value != OtaAnimationModes::None) { // show ota animation showOtaAnimation(); @@ -251,7 +232,7 @@ void showOtaAnimation() if (const auto totalSize = asyncOta->totalSize(); totalSize && *totalSize > 0) { percentage = (float(progress) / *totalSize * 100); - if (settings.ledstrip.otaMode == OtaAnimationModes::GreenProgressBar) + if (configs.ledstrip.otaMode.value == OtaAnimationModes::GreenProgressBar) { int numLeds = (leds_count * percentage) / 100; if (numLeds >= leds_count) @@ -260,7 +241,7 @@ void showOtaAnimation() } std::fill(std::begin(leds), std::begin(leds) + numLeds, CRGB{0,255,0}); } - else if (settings.ledstrip.otaMode == OtaAnimationModes::ColorChangeAll) + else if (configs.ledstrip.otaMode.value == OtaAnimationModes::ColorChangeAll) { const uint8_t redChannel = 255 - (2.55 * percentage); const uint8_t greenChannel = 2.55 * percentage; @@ -309,7 +290,7 @@ void showSpeedSyncAnimation() static float hue_result = 0; - const float hue_per_led = 1. / std::max(uint8_t(1), uint8_t(settings.ledstrip.animationMultiplier)); + const float hue_per_led = 1. / std::max(uint8_t(1), uint8_t(configs.ledstrip.animationMultiplier.value)); 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; @@ -336,7 +317,7 @@ void showDefaultLedstrip() void showCustomColor() { const auto eighth_length = leds.size() / 8; - const auto center = (std::begin(leds) + (leds.size() / 2) + settings.ledstrip.centerOffset); + const auto center = (std::begin(leds) + (leds.size() / 2) + configs.ledstrip.centerOffset.value); std::fill(std::begin(leds), std::end(leds), ledstrip_custom_colors[int(Bobbycar_Side::FRONT)]); // Front std::fill(center - (eighth_length / 2), center + (eighth_length / 2), ledstrip_custom_colors[int(Bobbycar_Side::BACK)]); // Back diff --git a/main/newsettings.h b/main/newsettings.h index 9e53106..f8a3cbe 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -21,9 +21,15 @@ #include // local includes -#include "bluetoothmode.h" +#include "ledstrip.h" + +#define REMOVE_TRAILING_COMMA_N(_1,_2,_3,_4,_5,_6,_7,_8,_9,N,...) \ + REMOVE_TRAILING_COMMA_##N +#define REMOVE_TRAILING_COMMA(...) \ + REMOVE_TRAILING_COMMA_N(__VA_ARGS__,9,8,7,6,5,4,3,2,1)(__VA_ARGS__) using namespace espconfig; +#define __CONFIG__START nullptr std::string defaultHostname(); @@ -179,11 +185,6 @@ public: ConfigWrapper dns_announce_key {std::string{}, DoReset, {}, "dnsAnnounceKey" }; ConfigWrapper webserverPassword {std::string{}, DoReset, {}, "websPassword" }; - // old settings - struct { - ConfigWrapper bleEnabled {true, DoReset, {}, "bleEnabled" }; - } bleSettings; - struct { ConfigWrapper wheelDiameter {DEFAULT_WHEELDIAMETER, DoReset, {}, "wheelDiameter" }; ConfigWrapper numMagnetPoles {15, DoReset, {}, "numMagnetPoles" }; @@ -220,9 +221,32 @@ public: ConfigWrapper enableCloudDebug {false, DoReset, {}, "debugCloud" }; ConfigWrapper udpUseStdString {false, DoReset, {}, "udpusestdstr" }; } udpCloudSettings; + + struct { + ConfigWrapper enableLedAnimation {true, DoReset, {}, "enableLedAnimat" }; + ConfigWrapper enableBrakeLights {true, DoReset, {}, "enableBrakeLigh" }; + ConfigWrapper ledsCount {LEDSTRIP_LENGTH, DoReset, {}, "ledsCount" }; + ConfigWrapper centerOffset {1, DoReset, {}, "centerOffset" }; + ConfigWrapper smallOffset {4, DoReset, {}, "smallOffset" }; + ConfigWrapper bigOffset {10, DoReset, {}, "bigOffset" }; + ConfigWrapper enableBeepWhenBlink {true, DoReset, {}, "beepwhenblink" }; + ConfigWrapper animationType {1, DoReset, {}, "animationType" }; + ConfigWrapper enableFullBlink {true, DoReset, {}, "fullblink" }; + ConfigWrapper enableStVO {true, DoReset, {}, "ledstvo" }; + ConfigWrapper stvoFrontOffset {0, DoReset, {}, "ledstvofoff" }; + ConfigWrapper stvoFrontLength {10, DoReset, {}, "ledstvoflen" }; + ConfigWrapper stvoFrontEnable {false, DoReset, {}, "ledstvoen" }; + ConfigWrapper animationMultiplier{10, DoReset, {}, "ledAnimMul" }; + ConfigWrapper brightness {255, DoReset, {}, "ledbrightness" }; + ConfigWrapper enableAnimBlink {false, DoReset, {}, "enAnimBlink" }; + ConfigWrapper otaMode {OtaAnimationModes::GreenProgressBar, DoReset, {}, "ledOtaAnim" }; + ConfigWrapper maxMilliamps {3000, DoReset, {}, "ledMaxMilliamps" }; + } ledstrip; // end old settings - ConfigWrapper ledStripMaxMilliamps {3000, DoReset, {}, "ledMaxMilliamps" }; + struct { + ConfigWrapper bleEnabled {true, DoReset, {}, "bleEnabled" }; + } bleSettings; #define NEW_SETTINGS(x) \ x(baseMacAddressOverride) \ @@ -411,8 +435,6 @@ public: x(dns_announce_key) \ x(webserverPassword) \ \ - x(bleSettings.bleEnabled) \ - \ x(controllerHardware.wheelDiameter) \ x(controllerHardware.numMagnetPoles) \ x(controllerHardware.swapFrontBack) \ @@ -441,7 +463,25 @@ public: x(udpCloudSettings.enableCloudDebug) \ x(udpCloudSettings.udpUseStdString) \ \ - //x(ledStripMaxMilliamps) + x(ledstrip.enableLedAnimation) \ + x(ledstrip.enableBrakeLights) \ + x(ledstrip.ledsCount) \ + x(ledstrip.centerOffset) \ + x(ledstrip.smallOffset) \ + x(ledstrip.bigOffset) \ + x(ledstrip.enableBeepWhenBlink) \ + x(ledstrip.animationType) \ + x(ledstrip.enableFullBlink) \ + x(ledstrip.enableStVO) \ + x(ledstrip.stvoFrontOffset) \ + x(ledstrip.stvoFrontLength) \ + x(ledstrip.stvoFrontEnable) \ + x(ledstrip.animationMultiplier) \ + x(ledstrip.brightness) \ + x(ledstrip.enableAnimBlink) \ + x(ledstrip.otaMode) \ + x(ledstrip.maxMilliamps) + //x(bleSettings.bleEnabled) template void callForEveryConfig(T &&callback) @@ -449,7 +489,6 @@ public: #define HELPER(x) callback(x); NEW_SETTINGS(HELPER) #undef HELPER - callback(ledStripMaxMilliamps); } auto getAllConfigParams() @@ -458,7 +497,7 @@ public: #define HELPER(x) std::ref(x), NEW_SETTINGS(HELPER) #undef HELPER - std::ref(ledStripMaxMilliamps) + std::ref(bleSettings.bleEnabled) ); } }; diff --git a/main/presets.h b/main/presets.h index 12ae736..63a53bc 100644 --- a/main/presets.h +++ b/main/presets.h @@ -130,34 +130,6 @@ constexpr Settings::Handbremse defaultHandbremse { .visualize = true, }; -#ifdef FEATURE_LEDSTRIP -constexpr Settings::Ledstrip defaultLedstrip { - .enableLedAnimation = true, - .enableBrakeLights = true, - .ledsCount = LEDSTRIP_LENGTH, - .centerOffset = 1, - .smallOffset = 4, - .bigOffset = 10, - .enableBeepWhenBlink = false, -#ifdef LEDSTRIP_ANIMATION_DEFAULT - .animationType = LEDSTRIP_ANIMATION_DEFAULT, -#else - .animationType = LedstripAnimation::DefaultRainbow, -#endif - .enableFullBlink = false, - .enableStVO = false, - .stvoFrontOffset = 0, - .stvoFrontLength = 10, - .stvoFrontEnable = false, - .animationMultiplier = 10, - .brightness = 255, - .enableAnimBlink = false, -#ifdef FEATURE_OTA - .otaMode = OtaAnimationModes::GreenProgressBar -#endif -}; -#endif - constexpr Settings::LockscreenSettings defaultLockscreen { .allowPresetSwitch = true, .keepLockedAfterReboot = false, @@ -208,9 +180,6 @@ constexpr Settings defaultSettings { .tempomatMode = defaultTempomatMode, .larsmMode = defaultLarsmMode, .motortestMode = defaultMotortestMode, -#ifdef FEATURE_LEDSTRIP - .ledstrip = defaultLedstrip, -#endif .battery = defaultBattery, .hybrid = defaultHybrid, .lockscreen = defaultLockscreen, diff --git a/main/settings.h b/main/settings.h index 1f9a03d..9195171 100644 --- a/main/settings.h +++ b/main/settings.h @@ -39,8 +39,8 @@ struct Settings struct DefaultMode { UnifiedModelMode modelMode; // profileSetting - bool squareGas; - bool squareBrems; + bool squareGas; // profileSetting + bool squareBrems; // profileSetting bool enableSmoothingUp; // profileSetting bool enableSmoothingDown; // profileSetting bool enableFieldWeakSmoothingUp; // profileSetting @@ -67,34 +67,10 @@ struct Settings } larsmMode; struct MotortestMode { - uint8_t multiplikator; - uint16_t maxPwm; + uint8_t multiplikator; // profileSetting + uint16_t maxPwm; // profileSetting } motortestMode; -#ifdef FEATURE_LEDSTRIP - struct Ledstrip { - bool enableLedAnimation; - bool enableBrakeLights; - int16_t ledsCount; - int16_t centerOffset; - int16_t smallOffset; - int16_t bigOffset; - bool enableBeepWhenBlink; - int16_t animationType; - bool enableFullBlink; - bool enableStVO; - int16_t stvoFrontOffset; - int16_t stvoFrontLength; - bool stvoFrontEnable; - int16_t animationMultiplier; - uint8_t brightness; - bool enableAnimBlink; -#ifdef FEATURE_OTA - OtaAnimationModes otaMode; -#endif - } ledstrip; -#endif - struct Battery { uint8_t cellsSeries; uint8_t cellsParallel; @@ -150,28 +126,6 @@ struct Settings template void Settings::executeForEveryCommonSetting(T &&callable) { -#ifdef FEATURE_LEDSTRIP - callable("enableLedAnimat", ledstrip.enableLedAnimation); - callable("enableBrakeLigh", ledstrip.enableBrakeLights); - callable("ledsCount", ledstrip.ledsCount); - callable("centerOffset", ledstrip.centerOffset); - callable("smallOffset", ledstrip.smallOffset); - callable("bigOffset", ledstrip.bigOffset); - callable("beeppwhenblink", ledstrip.enableBeepWhenBlink); -// callable("animationType", ledstrip.animationType); - callable("fullblink", ledstrip.enableFullBlink); - callable("ledstvo", ledstrip.enableStVO); - callable("ledstvofoff", ledstrip.stvoFrontOffset); - callable("ledstvoflen", ledstrip.stvoFrontLength); - callable("ledstvoen", ledstrip.stvoFrontEnable); - callable("ledAnimMul", ledstrip.animationMultiplier); - callable("ledbrightness", ledstrip.brightness); - callable("enAnimBlink", ledstrip.enableAnimBlink); -#ifdef FEATURE_OTA - callable("ledOtaAnim", ledstrip.otaMode); -#endif -#endif - callable("batteryCS", battery.cellsSeries); callable("batteryCP", battery.cellsParallel); callable("batteryType", battery.cellType); @@ -242,6 +196,8 @@ void Settings::executeForEveryProfileSetting(T &&callable) callable("default.gas2_we", defaultMode.gas2_wert); callable("default.brems1_", defaultMode.brems1_wert); callable("default.brems2_", defaultMode.brems2_wert); + callable("default.squareG", defaultMode.squareGas); + callable("default.squareB", defaultMode.squareBrems); callable("tempoma.modelMo", tempomatMode.modelMode);