60 enum ButtonControlType : uint8_t {
67 enum class AutoIterateMode : uint8_t {
76 virtual void setRGBWValueOnDevice(uint32_t red,
79 uint32_t colorBrightness,
80 uint32_t brightness) = 0;
82 virtual void setRGBW(
int red,
88 bool instant =
false);
91 virtual void turnOn();
92 virtual void turnOff();
93 virtual void toggle();
97 void handleAction(
int event,
int action)
override;
98 void setStep(
int step);
99 void setDefaultDimmedBrightness(
int dimmedBrightness);
100 void setFadeEffectTime(
int timeMs);
101 void setMinIterationBrightness(uint8_t minBright);
102 void setMinMaxIterationDelay(uint16_t delayMs);
118 virtual RGBWBase &setDefaultStateOn();
119 virtual RGBWBase &setDefaultStateOff();
120 virtual RGBWBase &setDefaultStateRestore();
125 virtual RGBWBase &setBrightnessLimits(
int min,
int max);
128 virtual RGBWBase &setColorBrightnessLimits(
int min,
int max);
131 int getCurrentDimmerBrightness()
const;
132 int getCurrentRGBBrightness()
const;
133 void setMaxHwValue(
int newMaxHwValue);
136 uint8_t addWithLimit(
int value,
int addition,
int limit = 255);
137 virtual void iterateDimmerRGBW(
int rgbStep,
int wStep);
142 int adjustBrightness(
int value);
144 int getStep(
int step,
int target,
int current,
int distance)
const;
145 bool calculateAndUpdate(
int targetValue,
148 uint32_t *lastChangeMs)
const;
150 bool valueChanged =
true;
151 uint8_t buttonStep = 10;
153 uint8_t curGreen = 255;
155 uint8_t curColorBrightness = 0;
156 uint8_t curBrightness = 0;
157 uint8_t lastColorBrightness = 100;
158 uint8_t lastBrightness = 100;
159 uint8_t defaultDimmedBrightness = 20;
160 bool dimIterationDirection =
false;
161 bool resetDisance =
false;
162 bool instant =
false;
163 int8_t stateOnInit = RGBW_STATE_ON_INIT_RESTORE;
164 uint8_t minIterationBrightness = 1;
166 enum ButtonControlType buttonControlType = BUTTON_FOR_RGBW;
167 enum AutoIterateMode autoIterateMode = AutoIterateMode::OFF;
169 uint16_t maxHwValue = 1023;
171 uint16_t hwGreen = 0;
173 uint16_t hwColorBrightness = 0;
174 uint16_t hwBrightness = 0;
175 uint16_t minBrightness = 1;
176 uint16_t maxBrightness = 1023;
177 uint16_t minColorBrightness = 1;
178 uint16_t maxColorBrightness = 1023;
179 uint16_t redDistance = 0;
180 uint16_t greenDistance = 0;
181 uint16_t blueDistance = 0;
182 uint16_t colorBrightnessDistance = 0;
183 uint16_t brightnessDistance = 0;
185 uint16_t minMaxIterationDelay = 750;
186 uint16_t fadeEffect = 500;
188 uint32_t lastTick = 0;
189 uint32_t lastChangeRedMs = 0;
190 uint32_t lastChangeGreenMs = 0;
191 uint32_t lastChangeBlueMs = 0;
192 uint32_t lastChangeColorBrightnessMs = 0;
193 uint32_t lastChangeBrightnessMs = 0;
194 uint32_t lastMsgReceivedMs = 0;
195 uint32_t lastIterateDimmerTimestamp = 0;
196 uint32_t iterationDelayTimestamp = 0;
197 uint32_t lastAutoIterateStartTimestamp = 0;