#pragma once #include "effects/Common.h" #include "helpers/ColorRGBW.h" struct EffectStaticConfig { EffectStaticConfig(const ColorRGBW &c = ColorRGBW{0, 0, 0, 0}, uint16_t beg = 0, uint16_t en = 0) : color(c), begin(beg), end(en) {} ColorRGBW color; uint16_t begin = 0; uint16_t end = 0; }; template class EffectStatic { public: static constexpr auto NUM_LEDS = numLeds(); using ConfigType = EffectStaticConfig; EffectStatic(const EffectStaticConfig &cfg, TLedStrip &ledStrip) : config_(cfg), ledStrip_(ledStrip) { } int operator()() { if (config_.begin == config_.end) setLedRGBW(ledStrip_, 0, NUM_LEDS, config_.color); else setLedRGBW(ledStrip_, config_.begin, config_.end, config_.color); return 10000; // nothing changing, return some large time to sleep } private: EffectStaticConfig config_; TLedStrip &ledStrip_; }; // Traits template <> struct EffectIdToConfig { using type = EffectStaticConfig; }; template <> struct EffectConfigToId { static constexpr auto id = EffectId::STATIC; }; template struct EffectIdToClass { using type = EffectStatic; };