mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 14:34:49 +00:00
[light] Fix ambiguous set_effect overload for const char* (#14732)
This commit is contained in:
committed by
Jesse Hills
parent
390bb0451f
commit
93be539789
@@ -33,7 +33,7 @@ class AddressableLightDisplay : public display::DisplayBuffer {
|
||||
// - Save the current effect index.
|
||||
this->last_effect_index_ = light_state_->get_current_effect_index();
|
||||
// - Disable any current effect.
|
||||
light_state_->make_call().set_effect(0).perform();
|
||||
light_state_->make_call().set_effect(uint32_t{0}).perform();
|
||||
}
|
||||
}
|
||||
enabled_ = enabled;
|
||||
|
||||
@@ -506,7 +506,7 @@ color_mode_bitmask_t LightCall::get_suitable_color_modes_mask_() {
|
||||
|
||||
LightCall &LightCall::set_effect(const char *effect, size_t len) {
|
||||
if (len == 4 && strncasecmp(effect, "none", 4) == 0) {
|
||||
this->set_effect(0);
|
||||
this->set_effect(uint32_t{0});
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +130,8 @@ class LightCall {
|
||||
LightCall &set_effect(optional<std::string> effect);
|
||||
/// Set the effect of the light by its name.
|
||||
LightCall &set_effect(const std::string &effect) { return this->set_effect(effect.data(), effect.size()); }
|
||||
/// Set the effect of the light by its name (const char * overload to resolve ambiguity).
|
||||
LightCall &set_effect(const char *effect) { return this->set_effect(effect, strlen(effect)); }
|
||||
/// Set the effect of the light by its name and length (zero-copy from API).
|
||||
LightCall &set_effect(const char *effect, size_t len);
|
||||
/// Set the effect of the light by its internal index number (only for internal use).
|
||||
|
||||
@@ -60,6 +60,12 @@ esphome:
|
||||
}
|
||||
}
|
||||
|
||||
# Test set_effect with const char* doesn't cause ambiguous overload (issue #14728)
|
||||
- lambda: |-
|
||||
auto call = id(test_monochromatic_light).turn_on();
|
||||
call.set_effect("None");
|
||||
call.perform();
|
||||
|
||||
- light.toggle: test_binary_light
|
||||
- light.turn_off: test_rgb_light
|
||||
- light.turn_on:
|
||||
|
||||
Reference in New Issue
Block a user