mirror of
https://github.com/esphome/esphome.git
synced 2025-10-23 12:13:49 +01:00
preen
This commit is contained in:
@@ -426,8 +426,7 @@ ColorMode LightCall::compute_color_mode_() {
|
|||||||
// pre-colormode clients and automations, but also for the MQTT API, where HA doesn't let us know which color mode
|
// pre-colormode clients and automations, but also for the MQTT API, where HA doesn't let us know which color mode
|
||||||
// was used for some reason.
|
// was used for some reason.
|
||||||
// Compute intersection of suitable and supported modes using bitwise AND
|
// Compute intersection of suitable and supported modes using bitwise AND
|
||||||
ColorModeMask suitable = this->get_suitable_color_modes_();
|
color_mode_bitmask_t intersection = this->get_suitable_color_modes_() & supported_modes.get_mask();
|
||||||
color_mode_bitmask_t intersection = suitable.get_mask() & supported_modes.get_mask();
|
|
||||||
|
|
||||||
// Don't change if the current mode is in the intersection (suitable AND supported)
|
// Don't change if the current mode is in the intersection (suitable AND supported)
|
||||||
if (ColorModeMask::mask_contains(intersection, current_mode)) {
|
if (ColorModeMask::mask_contains(intersection, current_mode)) {
|
||||||
@@ -451,7 +450,7 @@ ColorMode LightCall::compute_color_mode_() {
|
|||||||
LOG_STR_ARG(color_mode_to_human(color_mode)));
|
LOG_STR_ARG(color_mode_to_human(color_mode)));
|
||||||
return color_mode;
|
return color_mode;
|
||||||
}
|
}
|
||||||
ColorModeMask LightCall::get_suitable_color_modes_() {
|
color_mode_bitmask_t LightCall::get_suitable_color_modes_() {
|
||||||
bool has_white = this->has_white() && this->white_ > 0.0f;
|
bool has_white = this->has_white() && this->white_ > 0.0f;
|
||||||
bool has_ct = this->has_color_temperature();
|
bool has_ct = this->has_color_temperature();
|
||||||
bool has_cwww =
|
bool has_cwww =
|
||||||
@@ -466,29 +465,37 @@ ColorModeMask LightCall::get_suitable_color_modes_() {
|
|||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case KEY(true, false, false, false): // white only
|
case KEY(true, false, false, false): // white only
|
||||||
return {ColorMode::WHITE, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE,
|
return ColorModeMask({ColorMode::WHITE, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE,
|
||||||
ColorMode::RGB_COLD_WARM_WHITE};
|
ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
case KEY(false, true, false, false): // ct only
|
case KEY(false, true, false, false): // ct only
|
||||||
return {ColorMode::COLOR_TEMPERATURE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE,
|
return ColorModeMask({ColorMode::COLOR_TEMPERATURE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE,
|
||||||
ColorMode::RGB_COLD_WARM_WHITE};
|
ColorMode::RGB_COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
case KEY(true, true, false, false): // white + ct
|
case KEY(true, true, false, false): // white + ct
|
||||||
return {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask(
|
||||||
|
{ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
case KEY(false, false, true, false): // cwww only
|
case KEY(false, false, true, false): // cwww only
|
||||||
return {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask({ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE}).get_mask();
|
||||||
case KEY(false, false, false, false): // none
|
case KEY(false, false, false, false): // none
|
||||||
return {ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE, ColorMode::RGB,
|
return ColorModeMask({ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE,
|
||||||
ColorMode::WHITE, ColorMode::COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE};
|
ColorMode::RGB, ColorMode::WHITE, ColorMode::COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
case KEY(true, false, false, true): // rgb + white
|
case KEY(true, false, false, true): // rgb + white
|
||||||
return {ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask({ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
case KEY(false, true, false, true): // rgb + ct
|
case KEY(false, true, false, true): // rgb + ct
|
||||||
case KEY(true, true, false, true): // rgb + white + ct
|
case KEY(true, true, false, true): // rgb + white + ct
|
||||||
return {ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask({ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}).get_mask();
|
||||||
case KEY(false, false, true, true): // rgb + cwww
|
case KEY(false, false, true, true): // rgb + cwww
|
||||||
return {ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask({ColorMode::RGB_COLD_WARM_WHITE}).get_mask();
|
||||||
case KEY(false, false, false, true): // rgb only
|
case KEY(false, false, false, true): // rgb only
|
||||||
return {ColorMode::RGB, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE};
|
return ColorModeMask({ColorMode::RGB, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE,
|
||||||
|
ColorMode::RGB_COLD_WARM_WHITE})
|
||||||
|
.get_mask();
|
||||||
default:
|
default:
|
||||||
return {}; // conflicting flags
|
return 0; // conflicting flags
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef KEY
|
#undef KEY
|
||||||
|
@@ -186,7 +186,7 @@ class LightCall {
|
|||||||
//// Compute the color mode that should be used for this call.
|
//// Compute the color mode that should be used for this call.
|
||||||
ColorMode compute_color_mode_();
|
ColorMode compute_color_mode_();
|
||||||
/// Get potential color modes bitmask for this light call.
|
/// Get potential color modes bitmask for this light call.
|
||||||
ColorModeMask get_suitable_color_modes_();
|
color_mode_bitmask_t get_suitable_color_modes_();
|
||||||
/// Some color modes also can be set using non-native parameters, transform those calls.
|
/// Some color modes also can be set using non-native parameters, transform those calls.
|
||||||
void transform_parameters_();
|
void transform_parameters_();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user