60 enum ButtonControlType : uint8_t {
67 enum class AutoIterateMode : uint8_t {
74 enum class LegacyChannelFunction : uint8_t {
93 bool local =
false)
override;
94 void fillChannelConfig(
void *channelConfig,
96 uint8_t configType)
override;
98 virtual void setRGBCCTValueOnDevice(uint32_t red,
101 uint32_t colorBrightness,
102 uint32_t white1Brightness,
103 uint32_t white2Brightness) = 0;
105 virtual void setRGBW(
int red,
111 bool instant =
false);
113 virtual void setRGBCCT(
int red,
118 int whiteTemperature,
120 bool instant =
false);
123 virtual void turnOn();
124 virtual void turnOff();
125 virtual void toggle();
129 void handleAction(
int event,
int action)
override;
130 void setStep(
int step);
131 void setDefaultDimmedBrightness(
int dimmedBrightness);
132 void setFadeEffectTime(
int timeMs);
133 void setMinIterationBrightness(uint8_t minBright);
134 void setMinMaxIterationDelay(uint16_t delayMs);
172 virtual RGBCCTBase &setBrightnessLimits(
int min,
int max);
175 virtual RGBCCTBase &setColorBrightnessLimits(
int min,
int max);
178 int getCurrentDimmerBrightness()
const;
179 int getCurrentRGBBrightness()
const;
180 void setMaxHwValue(
int newMaxHwValue);
208 void enableChannel();
209 void disableChannel();
211 uint8_t addWithLimit(
int value,
int addition,
int limit = 255);
212 virtual void iterateDimmerRGBW(
int rgbStep,
int wStep);
217 int adjustBrightness(
int value);
219 int getStep(
int step,
int target,
int current,
int distance)
const;
220 bool calculateAndUpdate(
int targetValue,
223 uint32_t *lastChangeMs)
const;
225 bool valueChanged =
true;
226 uint8_t buttonStep = 10;
228 uint8_t curGreen = 255;
230 uint8_t curColorBrightness = 0;
231 uint8_t curWhiteBrightness = 0;
232 uint8_t curWhiteTemperature = 0;
233 uint8_t lastColorBrightness = 100;
234 uint8_t lastWhiteBrightness = 100;
235 uint8_t defaultDimmedBrightness = 20;
236 bool dimIterationDirection =
false;
237 bool resetDisance =
false;
238 bool instant =
false;
240 bool initDone =
false;
241 bool skipLegacyMigration =
false;
242 int8_t stateOnInit = RGBW_STATE_ON_INIT_RESTORE;
243 uint8_t minIterationBrightness = 1;
244 LegacyChannelFunction legacyChannelFunction = LegacyChannelFunction::None;
246 enum ButtonControlType buttonControlType = BUTTON_FOR_RGBW;
247 enum AutoIterateMode autoIterateMode = AutoIterateMode::OFF;
249 uint16_t maxHwValue = 1023;
251 uint16_t hwGreen = 0;
253 uint16_t hwColorBrightness = 0;
254 uint16_t hwBrightness = 0;
255 uint16_t hwWhiteTemperature = 0;
256 uint16_t hwWhite1Brightness = 0;
257 uint16_t hwWhite2Brightness = 0;
258 uint16_t minBrightness = 1;
259 uint16_t maxBrightness = 1023;
260 uint16_t minColorBrightness = 1;
261 uint16_t maxColorBrightness = 1023;
262 uint16_t redDistance = 0;
263 uint16_t greenDistance = 0;
264 uint16_t blueDistance = 0;
265 uint16_t colorBrightnessDistance = 0;
266 uint16_t brightnessDistance = 0;
267 uint16_t whiteTemperatureDistance = 0;
269 uint16_t minMaxIterationDelay = 750;
270 uint16_t fadeEffect = 500;
272 uint32_t lastTick = 0;
273 uint32_t lastChangeRedMs = 0;
274 uint32_t lastChangeGreenMs = 0;
275 uint32_t lastChangeBlueMs = 0;
276 uint32_t lastChangeColorBrightnessMs = 0;
277 uint32_t lastChangeBrightnessMs = 0;
278 uint32_t lastChangeWhiteTemperatureMs = 0;
279 uint32_t lastMsgReceivedMs = 0;
280 uint32_t lastIterateDimmerTimestamp = 0;
281 uint32_t iterationDelayTimestamp = 0;
282 uint32_t lastAutoIterateStartTimestamp = 0;
284 float warmWhiteGain = 1.0;
285 float coldWhiteGain = 1.0;