diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index 16d1ec4518..db8cf1bce7 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -100,15 +100,13 @@ void DynamicLamp::set_available_outputs(std::string output_list) { { std::string id_string; id_string = static_cast(this->trim_(s.c_str())); - this->available_outputs_[counter] = static_cast({true, id_string, 0, 0, 1.0, false}); + this->available_outputs_[counter] = static_cast({true, id_string, counter, 0, 0, 1.0, false}); counter++; } } void add_lamp_output_(uint8_t lamp_number, LinkedOutput output) { - uint8_t output_index; - output_index = this->index_of_(this->available_outputs_, this->available_outputs_ + 16, output); - this->active_lamps_[lamp_number].used_outputs[output_index] = true; + this->active_lamps_[lamp_number].used_outputs[output.output_index] = true; } void DynamicLamp::set_lamp_values_(uint8_t lamp_number, bool active, uint16_t selected_outputs, uint8_t mode, uint8_t mode_value) { @@ -119,15 +117,6 @@ void DynamicLamp::restore_lamp_values_(uint8_t lamp_number) { this->active_lamps_[lamp_number].active = false; } -template -size_t DynamicLamp::index_of_(Iter first, Iter last, typename const std::iterator_traits::value_type& x) -{ - size_t i = 0; - while (first != last && *first != x) - ++first, ++i; - return i; -} - std::string_view DynamicLamp::ltrim_(std::string_view str) { const auto pos(str.find_first_not_of(" \t\n\r\f\v")); diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index ee6fab65da..a45649fa98 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -20,6 +20,7 @@ enum LinkedOutputModeIdx : uint8_t { struct LinkedOutput { bool active = false; std::string output_id; + uint8_t output_index; uint8_t mode = 0; optional min_value; optional max_value;