51 lines
929 B
C++
51 lines
929 B
C++
#pragma once
|
|
|
|
#include "effects/Common.h"
|
|
#include "helpers/ColorRGBW.h"
|
|
|
|
struct EffectStaticConfig
|
|
{
|
|
ColorRGBW color;
|
|
};
|
|
|
|
template <typename TLedStrip>
|
|
class EffectStatic
|
|
{
|
|
public:
|
|
static constexpr auto NUM_LEDS = numLeds<TLedStrip>();
|
|
|
|
EffectStatic(const EffectStaticConfig &cfg, TLedStrip &ledStrip)
|
|
: config_(cfg),
|
|
ledStrip_(ledStrip)
|
|
{
|
|
}
|
|
|
|
int operator()()
|
|
{
|
|
setLedRGBW(ledStrip_, 0, NUM_LEDS, config_.color);
|
|
return 10000; // nothing changing, return some large time to sleep
|
|
}
|
|
|
|
private:
|
|
EffectStaticConfig config_;
|
|
TLedStrip &ledStrip_;
|
|
};
|
|
|
|
// Traits
|
|
template <>
|
|
struct EffectIdToConfig<EffectId::STATIC>
|
|
{
|
|
using type = EffectStaticConfig;
|
|
};
|
|
|
|
template <>
|
|
struct EffectConfigToId<EffectStaticConfig>
|
|
{
|
|
static constexpr auto id = EffectId::STATIC;
|
|
};
|
|
|
|
template <typename TLedStrip>
|
|
struct EffectIdToClass<EffectId::STATIC, TLedStrip>
|
|
{
|
|
using type = EffectStatic<TLedStrip>;
|
|
}; |