60 enum ButtonControlType : uint8_t {
67 enum class AutoIterateMode : uint8_t {
78 bool local =
false)
override;
79 void fillChannelConfig(
void *channelConfig,
81 uint8_t configType)
override;
83 virtual void setRGBCCTValueOnDevice(uint32_t red,
86 uint32_t colorBrightness,
87 uint32_t white1Brightness,
88 uint32_t white2Brightness) = 0;
90 virtual void setRGBW(
int red,
96 bool instant =
false);
98 virtual void setRGBCCT(
int red,
103 int whiteTemperature,
105 bool instant =
false);
108 virtual void turnOn();
109 virtual void turnOff();
110 virtual void toggle();
114 void handleAction(
int event,
int action)
override;
115 void setStep(
int step);
116 void setDefaultDimmedBrightness(
int dimmedBrightness);
117 void setFadeEffectTime(
int timeMs);
118 void setMinIterationBrightness(uint8_t minBright);
119 void setMinMaxIterationDelay(uint16_t delayMs);
135 virtual RGBCCTBase &setDefaultStateOn();
136 virtual RGBCCTBase &setDefaultStateOff();
137 virtual RGBCCTBase &setDefaultStateRestore();
142 virtual RGBCCTBase &setBrightnessLimits(
int min,
int max);
145 virtual RGBCCTBase &setColorBrightnessLimits(
int min,
int max);
148 int getCurrentDimmerBrightness()
const;
149 int getCurrentRGBBrightness()
const;
150 void setMaxHwValue(
int newMaxHwValue);
153 uint8_t addWithLimit(
int value,
int addition,
int limit = 255);
154 virtual void iterateDimmerRGBW(
int rgbStep,
int wStep);
159 int adjustBrightness(
int value);
161 int getStep(
int step,
int target,
int current,
int distance)
const;
162 bool calculateAndUpdate(
int targetValue,
165 uint32_t *lastChangeMs)
const;
167 bool valueChanged =
true;
168 uint8_t buttonStep = 10;
170 uint8_t curGreen = 255;
172 uint8_t curColorBrightness = 0;
173 uint8_t curWhiteBrightness = 0;
174 uint8_t curWhiteTemperature = 0;
175 uint8_t lastColorBrightness = 100;
176 uint8_t lastWhiteBrightness = 100;
177 uint8_t defaultDimmedBrightness = 20;
178 bool dimIterationDirection =
false;
179 bool resetDisance =
false;
180 bool instant =
false;
181 int8_t stateOnInit = RGBW_STATE_ON_INIT_RESTORE;
182 uint8_t minIterationBrightness = 1;
184 enum ButtonControlType buttonControlType = BUTTON_FOR_RGBW;
185 enum AutoIterateMode autoIterateMode = AutoIterateMode::OFF;
187 uint16_t maxHwValue = 1023;
189 uint16_t hwGreen = 0;
191 uint16_t hwColorBrightness = 0;
192 uint16_t hwBrightness = 0;
193 uint16_t hwWhiteTemperature = 0;
194 uint16_t hwWhite1Brightness = 0;
195 uint16_t hwWhite2Brightness = 0;
196 uint16_t minBrightness = 1;
197 uint16_t maxBrightness = 1023;
198 uint16_t minColorBrightness = 1;
199 uint16_t maxColorBrightness = 1023;
200 uint16_t redDistance = 0;
201 uint16_t greenDistance = 0;
202 uint16_t blueDistance = 0;
203 uint16_t colorBrightnessDistance = 0;
204 uint16_t brightnessDistance = 0;
205 uint16_t whiteTemperatureDistance = 0;
207 uint16_t minMaxIterationDelay = 750;
208 uint16_t fadeEffect = 500;
210 uint32_t lastTick = 0;
211 uint32_t lastChangeRedMs = 0;
212 uint32_t lastChangeGreenMs = 0;
213 uint32_t lastChangeBlueMs = 0;
214 uint32_t lastChangeColorBrightnessMs = 0;
215 uint32_t lastChangeBrightnessMs = 0;
216 uint32_t lastChangeWhiteTemperatureMs = 0;
217 uint32_t lastMsgReceivedMs = 0;
218 uint32_t lastIterateDimmerTimestamp = 0;
219 uint32_t iterationDelayTimestamp = 0;
220 uint32_t lastAutoIterateStartTimestamp = 0;
222 float warmWhiteGain = 1.0;
223 float coldWhiteGain = 1.0;