Add DGR CW/RGBW light fixed color support

This commit is contained in:
Paul C Diem 2020-10-07 15:06:50 -05:00
parent 485cc5d03e
commit f4894226f7
2 changed files with 28 additions and 16 deletions

View File

@ -2400,7 +2400,7 @@ void LightHandleDevGroupItem(void)
send_state = true;
break;
case DGR_ITEM_LIGHT_FIXED_COLOR:
if (Light.subtype >= LST_RGBW) {
if (Light.subtype >= LST_COLDWARM) {
send_state = true;
#ifdef USE_LIGHT_PALETTE
if (Light.palette_count) {
@ -2409,8 +2409,19 @@ void LightHandleDevGroupItem(void)
break;
}
#endif // !USE_LIGHT_PALETTE
value = value % MAX_FIXED_COLOR + 1;
if (value) {
if (Light.subtype <= LST_COLDWARM) {
value = value % (MAX_FIXED_COLD_WARM - 1) + 201;
}
else {
uint32_t max = MAX_FIXED_COLOR;
if (Light.subtype >= LST_RGB) {
max++;
if (Light.subtype >= LST_RGBCW) max += (MAX_FIXED_COLD_WARM - 2);
}
value = value % max + 1;
if (value > MAX_FIXED_COLOR) value += 200 - MAX_FIXED_COLOR;
}
Light.fixed_color_index = value;
bool save_decimal_text = Settings.flag.decimal_text;
char str[16];
LightColorEntry(str, sprintf_P(str, PSTR("%u"), value));
@ -2420,10 +2431,6 @@ void LightHandleDevGroupItem(void)
light_controller.changeBri(old_bri);
Settings.light_scheme = 0;
Light.devgrp_no_channels_out = false;
}
else {
light_state.setColorMode(LCM_CT);
}
if (!restore_power && !Light.power) {
Light.old_power = Light.power;
Light.power = 0xff;

View File

@ -204,10 +204,15 @@ void PWMDimmerHandleDevGroupItem(void)
remote_pwm_dimmer->power_button_increases_bri = (remote_pwm_dimmer->bri < 128);
}
break;
case DGR_ITEM_LIGHT_FIXED_COLOR:
if (!device_is_local) remote_pwm_dimmer->fixed_color_index = value;
break;
#endif // USE_PWM_DIMMER_REMOTE
case DGR_ITEM_LIGHT_FIXED_COLOR:
#ifdef USE_PWM_DIMMER_REMOTE
if (!device_is_local)
remote_pwm_dimmer->fixed_color_index = value;
else
#endif // USE_PWM_DIMMER_REMOTE
local_fixed_color_index = value;
break;
case DGR_ITEM_BRI_POWER_ON:
#ifdef USE_PWM_DIMMER_REMOTE
if (!device_is_local)