From ddcaac89b3990b6f4fc9a5da686184e131cb33bc Mon Sep 17 00:00:00 2001 From: Oliver Kleinecke Date: Wed, 19 Feb 2025 22:42:17 +0100 Subject: [PATCH] fix: correct loop index in remove_lamp function and update return type of get_lamp_name in DynamicLampComponent --- esphome/components/dynamic_lamp/dynamic_lamp.cpp | 5 ++--- esphome/components/dynamic_lamp/dynamic_lamp.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.cpp b/esphome/components/dynamic_lamp/dynamic_lamp.cpp index f7f4d45d13..50325f0a6c 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.cpp +++ b/esphome/components/dynamic_lamp/dynamic_lamp.cpp @@ -161,8 +161,7 @@ void DynamicLampComponent::remove_lamp(std::string lamp_name) { this->active_lamps_[i].used_outputs[j] = false; } } - for (uint8_t j = i; j < 24; j++) { - this->active_lamps_[j] = this->active_lamps_[j + 1]; + for (uint8_t j = 0; j < 24; j++) { this->fram_->write((0x0000 + (i * 24) + j), { 0xff }, 1); } this->active_lamps_[i].active = false; @@ -413,7 +412,7 @@ bool DynamicLampComponent::write_state_(uint8_t lamp_number, float state) { return false; } -unsigned char[16] DynamicLampComponent::get_lamp_name(uint8_t lamp_number) { +unsigned char* DynamicLampComponent::get_lamp_name(uint8_t lamp_number) { return this->active_lamps_[lamp_number].name; } diff --git a/esphome/components/dynamic_lamp/dynamic_lamp.h b/esphome/components/dynamic_lamp/dynamic_lamp.h index b2b8834cc2..167c37530a 100644 --- a/esphome/components/dynamic_lamp/dynamic_lamp.h +++ b/esphome/components/dynamic_lamp/dynamic_lamp.h @@ -104,7 +104,7 @@ class DynamicLampComponent : public Component { void set_save_mode(uint8_t save_mode); void add_lamp(std::string name); void remove_lamp(std::string name); - unsigned char[16] get_lamp_name(uint8_t lamp_number); + unsigned char* get_lamp_name(uint8_t lamp_number); void add_output_to_lamp(std::string lamp_name, LinkedOutput *output); void remove_output_from_lamp(std::string lamp_name, LinkedOutput *output); std::array get_lamp_outputs(uint8_t lamp_number);