1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-09 23:02:23 +01:00

feat: implement add_lamp method to manage active lamps in DynamicLamp

This commit is contained in:
Oliver Kleinecke
2025-02-14 16:22:52 +01:00
parent 0ca28d4597
commit c805d45ed8
2 changed files with 22 additions and 6 deletions

View File

@@ -24,10 +24,12 @@ void DynamicLamp::setup() {
}
}
// for testing only
this->add_lamp_output_(0, this->available_outputs_[0]);
this->add_lamp_output_(0, this->available_outputs_[1]);
this->add_lamp_output_(0, this->available_outputs_[2]);
this->add_lamp_output_(0, this->available_outputs_[3]);
uint8_t first_lamp;
first_lamp = this->add_lamp();
this->add_lamp_output_(first_lamp, this->available_outputs_[0]);
this->add_lamp_output_(first_lamp, this->available_outputs_[1]);
this->add_lamp_output_(first_lamp, this->available_outputs_[2]);
this->add_lamp_output_(first_lamp, this->available_outputs_[3]);
}
void DynamicLamp::loop() {
@@ -36,8 +38,8 @@ void DynamicLamp::loop() {
if (this->active_lamps_[i].active) {
uint8_t j = 0;
for (j = 0; j < 16; j++) {
if (this->active_lamps_[i].used_outputs[j].active) {
if (this->active_lamps_[i].used_outputs[j].update_level) {
if (this->active_lamps_[i].used_outputs[j]) {
if (this->available_outputs_[j].update_level) {
// Update level
switch (this->active_lamps_[i].used_outputs[j].mode) {
case MODE_EQUAL:
@@ -105,6 +107,18 @@ void DynamicLamp::set_available_outputs(std::string output_list) {
}
}
uint8_t DynamicLamp::add_lamp() {
uint8_t i = 0;
while (i < 16) {
if (!this->active_lamps_[i].active) {
this->active_lamps_[i].active = true;
this->lamp_count_++;
return i;
}
i++;
}
}
void DynamicLamp::add_lamp_output_(uint8_t lamp_number, LinkedOutput output) {
this->active_lamps_[lamp_number].used_outputs[output.output_index] = true;
}