From a0a906a97e88bec5dc3e0cc625d6a8d135e5e485 Mon Sep 17 00:00:00 2001 From: Oliver Kleinecke Date: Sat, 15 Feb 2025 12:59:55 +0100 Subject: [PATCH] fix: update LinkedOutput structure to track availability and usage state --- esphome/components/dynamic_lamp/dynamic_lamp.cpp | 6 +++--- esphome/components/dynamic_lamp/dynamic_lamp.h | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index 83cc159c6b..ee174d3e28 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -97,7 +97,7 @@ void DynamicLamp::set_save_mode(uint8_t save_mode) { void DynamicLamp::add_available_output(output::FloatOutput * output, std::string output_id) { uint8_t counter = 0; - while (this->available_outputs_[counter].active) { + while (this->available_outputs_[counter].available) { counter++; } this->available_outputs_[counter] = LinkedOutput{ @@ -126,9 +126,9 @@ void DynamicLamp::add_lamp_(std::string name) { void DynamicLamp::add_lamp_output_(std::string lamp_name, LinkedOutput output) { while (i < 16) { if (this->active_lamps_[i].name == lamp_name) { - this->add_lamp_output_(i, output); this->active_lamps_[lamp_number].used_outputs[output.output_index] = true; - ESP_LOGV(TAG, "Added output %s to lamp %" PRIu8 "", output.output_id.c_str(), lamp_number); + output.in_use = true; + ESP_LOGV(TAG, "Added output %s to lamp %s", output.output_id.c_str(), lamp_name.c_str()); return; } i++; diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index f523f08192..ffc379c767 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -19,7 +19,8 @@ enum LinkedOutputModeIdx : uint8_t { }; struct LinkedOutput { - bool active = false; + bool available = false; + bool in_use = false; std::string output_id; uint8_t output_index; output::FloatOutput *output;