From de3e9451dca7f02ec3d804a14a5b0c3e0b023632 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Jul 2025 21:43:53 -1000 Subject: [PATCH 1/4] missed existing helper --- esphome/components/light/light_json_schema.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/esphome/components/light/light_json_schema.cpp b/esphome/components/light/light_json_schema.cpp index 7af6dadd12..dac412655a 100644 --- a/esphome/components/light/light_json_schema.cpp +++ b/esphome/components/light/light_json_schema.cpp @@ -8,9 +8,6 @@ namespace light { // See https://www.home-assistant.io/integrations/light.mqtt/#json-schema for documentation on the schema -// Helper to convert float 0-1 to uint8_t 0-255 -static inline uint8_t to_uint8_scaled(float value) { return uint8_t(value * 255); } - // Lookup table for color mode strings static const char *get_color_mode_json_str(ColorMode mode) { switch (mode) { @@ -54,17 +51,17 @@ void LightJSONSchema::dump_json(LightState &state, JsonObject root) { if (color_mode & ColorCapability::ON_OFF) root["state"] = (values.get_state() != 0.0f) ? "ON" : "OFF"; if (color_mode & ColorCapability::BRIGHTNESS) - root["brightness"] = to_uint8_scaled(values.get_brightness()); + root["brightness"] = to_uint8_scale(values.get_brightness()); JsonObject color = root["color"].to(); if (color_mode & ColorCapability::RGB) { float color_brightness = values.get_color_brightness(); - color["r"] = to_uint8_scaled(color_brightness * values.get_red()); - color["g"] = to_uint8_scaled(color_brightness * values.get_green()); - color["b"] = to_uint8_scaled(color_brightness * values.get_blue()); + color["r"] = to_uint8_scale(color_brightness * values.get_red()); + color["g"] = to_uint8_scale(color_brightness * values.get_green()); + color["b"] = to_uint8_scale(color_brightness * values.get_blue()); } if (color_mode & ColorCapability::WHITE) { - uint8_t white_val = to_uint8_scaled(values.get_white()); + uint8_t white_val = to_uint8_scale(values.get_white()); color["w"] = white_val; root["white_value"] = white_val; // legacy API } @@ -73,8 +70,8 @@ void LightJSONSchema::dump_json(LightState &state, JsonObject root) { root["color_temp"] = uint32_t(values.get_color_temperature()); } if (color_mode & ColorCapability::COLD_WARM_WHITE) { - color["c"] = to_uint8_scaled(values.get_cold_white()); - color["w"] = to_uint8_scaled(values.get_warm_white()); + color["c"] = to_uint8_scale(values.get_cold_white()); + color["w"] = to_uint8_scale(values.get_warm_white()); } } From b7d48284acc90c990cb1dc37019e42e280e61409 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Jul 2025 21:44:31 -1000 Subject: [PATCH 2/4] missed existing helper --- esphome/components/light/light_json_schema.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/light/light_json_schema.cpp b/esphome/components/light/light_json_schema.cpp index dac412655a..896b821705 100644 --- a/esphome/components/light/light_json_schema.cpp +++ b/esphome/components/light/light_json_schema.cpp @@ -9,7 +9,7 @@ namespace light { // See https://www.home-assistant.io/integrations/light.mqtt/#json-schema for documentation on the schema // Lookup table for color mode strings -static const char *get_color_mode_json_str(ColorMode mode) { +static constexpr const char *get_color_mode_json_str(ColorMode mode) { switch (mode) { case ColorMode::ON_OFF: return "onoff"; From e223a1008bf36a1c5be3b4db2028b38c29384428 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Jul 2025 21:46:54 -1000 Subject: [PATCH 3/4] missed existing helper --- esphome/components/light/light_call.cpp | 71 +++++++++++++------------ 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/esphome/components/light/light_call.cpp b/esphome/components/light/light_call.cpp index 6793777690..723dfb4667 100644 --- a/esphome/components/light/light_call.cpp +++ b/esphome/components/light/light_call.cpp @@ -184,26 +184,26 @@ LightColorValues LightCall::validate_() { auto traits = this->parent_->get_traits(); // Cache frequently used flags - const bool has_color_mode = this->has_color_mode(); - const bool has_state = this->has_state(); - const bool has_brightness = this->has_brightness(); - const bool has_color_brightness = this->has_color_brightness(); - const bool has_red = this->has_red(); - const bool has_green = this->has_green(); - const bool has_blue = this->has_blue(); - const bool has_white = this->has_white(); - const bool has_color_temperature = this->has_color_temperature(); - const bool has_cold_white = this->has_cold_white(); - const bool has_warm_white = this->has_warm_white(); + const bool has_color_mode_flag = this->has_color_mode(); + const bool has_state_flag = this->has_state(); + const bool has_brightness_flag = this->has_brightness(); + const bool has_color_brightness_flag = this->has_color_brightness(); + const bool has_red_flag = this->has_red(); + const bool has_green_flag = this->has_green(); + const bool has_blue_flag = this->has_blue(); + const bool has_white_flag = this->has_white(); + const bool has_color_temperature_flag = this->has_color_temperature(); + const bool has_cold_white_flag = this->has_cold_white(); + const bool has_warm_white_flag = this->has_warm_white(); // Color mode check - if (has_color_mode && !traits.supports_color_mode(this->color_mode_)) { + if (has_color_mode_flag && !traits.supports_color_mode(this->color_mode_)) { ESP_LOGW(TAG, "'%s' does not support color mode %s", name, LOG_STR_ARG(color_mode_to_human(this->color_mode_))); this->set_flag_(FLAG_HAS_COLOR_MODE, false); } // Ensure there is always a color mode set - if (!has_color_mode) { + if (!has_color_mode_flag) { this->color_mode_ = this->compute_color_mode_(); this->set_flag_(FLAG_HAS_COLOR_MODE, true); } @@ -213,7 +213,7 @@ LightColorValues LightCall::validate_() { this->transform_parameters_(); // Brightness exists check - if (has_brightness && this->brightness_ > 0.0f && !(color_mode & ColorCapability::BRIGHTNESS)) { + if (has_brightness_flag && this->brightness_ > 0.0f && !(color_mode & ColorCapability::BRIGHTNESS)) { log_feature_not_supported(name, "brightness"); this->set_flag_(FLAG_HAS_BRIGHTNESS, false); } @@ -225,13 +225,14 @@ LightColorValues LightCall::validate_() { } // Color brightness exists check - if (has_color_brightness && this->color_brightness_ > 0.0f && !(color_mode & ColorCapability::RGB)) { + if (has_color_brightness_flag && this->color_brightness_ > 0.0f && !(color_mode & ColorCapability::RGB)) { log_color_mode_not_supported(name, "RGB brightness"); this->set_flag_(FLAG_HAS_COLOR_BRIGHTNESS, false); } // RGB exists check - if ((has_red && this->red_ > 0.0f) || (has_green && this->green_ > 0.0f) || (has_blue && this->blue_ > 0.0f)) { + if ((has_red_flag && this->red_ > 0.0f) || (has_green_flag && this->green_ > 0.0f) || + (has_blue_flag && this->blue_ > 0.0f)) { if (!(color_mode & ColorCapability::RGB)) { log_color_mode_not_supported(name, "RGB color"); this->set_flag_(FLAG_HAS_RED, false); @@ -241,21 +242,21 @@ LightColorValues LightCall::validate_() { } // White value exists check - if (has_white && this->white_ > 0.0f && + if (has_white_flag && this->white_ > 0.0f && !(color_mode & ColorCapability::WHITE || color_mode & ColorCapability::COLD_WARM_WHITE)) { log_color_mode_not_supported(name, "white value"); this->set_flag_(FLAG_HAS_WHITE, false); } // Color temperature exists check - if (has_color_temperature && + if (has_color_temperature_flag && !(color_mode & ColorCapability::COLOR_TEMPERATURE || color_mode & ColorCapability::COLD_WARM_WHITE)) { log_color_mode_not_supported(name, "color temperature"); this->set_flag_(FLAG_HAS_COLOR_TEMPERATURE, false); } // Cold/warm white value exists check - if ((has_cold_white && this->cold_white_ > 0.0f) || (has_warm_white && this->warm_white_ > 0.0f)) { + if ((has_cold_white_flag && this->cold_white_ > 0.0f) || (has_warm_white_flag && this->warm_white_ > 0.0f)) { if (!(color_mode & ColorCapability::COLD_WARM_WHITE)) { log_color_mode_not_supported(name, "cold/warm white value"); this->set_flag_(FLAG_HAS_COLD_WHITE, false); @@ -285,18 +286,18 @@ LightColorValues LightCall::validate_() { VALIDATE_RANGE_(color_temperature, "Color temperature", traits.get_min_mireds(), traits.get_max_mireds()) // Flag whether an explicit turn off was requested, in which case we'll also stop the effect. - bool explicit_turn_off_request = has_state && !this->state_; + bool explicit_turn_off_request = has_state_flag && !this->state_; // Turn off when brightness is set to zero, and reset brightness (so that it has nonzero brightness when turned on). - if (has_brightness && this->brightness_ == 0.0f) { + if (has_brightness_flag && this->brightness_ == 0.0f) { this->state_ = false; this->set_flag_(FLAG_HAS_STATE, true); this->brightness_ = 1.0f; } // Set color brightness to 100% if currently zero and a color is set. - if (has_red || has_green || has_blue) { - if (!has_color_brightness && this->parent_->remote_values.get_color_brightness() == 0.0f) { + if (has_red_flag || has_green_flag || has_blue_flag) { + if (!has_color_brightness_flag && this->parent_->remote_values.get_color_brightness() == 0.0f) { this->color_brightness_ = 1.0f; this->set_flag_(FLAG_HAS_COLOR_BRIGHTNESS, true); } @@ -304,27 +305,27 @@ LightColorValues LightCall::validate_() { // Create color values for the light with this call applied. auto v = this->parent_->remote_values; - if (has_color_mode) + if (has_color_mode_flag) v.set_color_mode(this->color_mode_); - if (has_state) + if (has_state_flag) v.set_state(this->state_); - if (has_brightness) + if (has_brightness_flag) v.set_brightness(this->brightness_); - if (has_color_brightness) + if (has_color_brightness_flag) v.set_color_brightness(this->color_brightness_); - if (has_red) + if (has_red_flag) v.set_red(this->red_); - if (has_green) + if (has_green_flag) v.set_green(this->green_); - if (has_blue) + if (has_blue_flag) v.set_blue(this->blue_); - if (has_white) + if (has_white_flag) v.set_white(this->white_); - if (has_color_temperature) + if (has_color_temperature_flag) v.set_color_temperature(this->color_temperature_); - if (has_cold_white) + if (has_cold_white_flag) v.set_cold_white(this->cold_white_); - if (has_warm_white) + if (has_warm_white_flag) v.set_warm_white(this->warm_white_); v.normalize_color(); @@ -380,7 +381,7 @@ LightColorValues LightCall::validate_() { // If not a flash and turning the light off, then disable the light // Do not use light color values directly, so that effects can set 0% brightness // Reason: When user turns off the light in frontend, the effect should also stop - bool target_state = has_state ? this->state_ : v.is_on(); + bool target_state = has_state_flag ? this->state_ : v.is_on(); if (!this->has_flash_() && !target_state) { if (this->has_effect_()) { log_invalid_parameter(name, "cannot start effect when turning off"); From bcdfc744c6a1fe5b73e17f2f961c7a6fc4697814 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 26 Jul 2025 21:48:53 -1000 Subject: [PATCH 4/4] missed existing helper --- esphome/components/light/light_call.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/light/light_call.cpp b/esphome/components/light/light_call.cpp index 723dfb4667..2b5781ca25 100644 --- a/esphome/components/light/light_call.cpp +++ b/esphome/components/light/light_call.cpp @@ -68,7 +68,7 @@ static const LogString *color_mode_to_human(ColorMode color_mode) { // Helper to log percentage values #if ESPHOME_LOG_LEVEL >= ESPHOME_LOG_LEVEL_DEBUG -static inline void log_percent(const char *name, const char *param, float value) { +static void log_percent(const char *name, const char *param, float value) { ESP_LOGD(TAG, " %s: %.0f%%", param, value * 100.0f); } #else