mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 07:08:20 +00:00
fix: correct state assignment and string handling in DynamicLampComponent
This commit is contained in:
parent
2d21f49fad
commit
2cc7398375
@ -124,14 +124,14 @@ void DynamicLampComponent::add_available_output(output::FloatOutput * output, st
|
|||||||
this->available_outputs_[counter].output_id = output_id;
|
this->available_outputs_[counter].output_id = output_id;
|
||||||
this->available_outputs_[counter].output = output;
|
this->available_outputs_[counter].output = output;
|
||||||
this->available_outputs_[counter].output_index = counter;
|
this->available_outputs_[counter].output_index = counter;
|
||||||
this->available_outputs_[counter].state = output->state;
|
this->available_outputs_[counter].state = output.state;
|
||||||
counter++;
|
counter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DynamicLampComponent::add_lamp(std::string name) {
|
void DynamicLampComponent::add_lamp(std::string name) {
|
||||||
if (this->lamp_count_ < 15) {
|
if (this->lamp_count_ < 15) {
|
||||||
this->active_lamps_[this->lamp_count_].active = true;
|
this->active_lamps_[this->lamp_count_].active = true;
|
||||||
this->active_lamps_[this->lamp_count_].name = name;
|
this->active_lamps_[this->lamp_count_].name = nam.c_str();
|
||||||
this->active_lamps_[this->lamp_count_].validation_byte = 'L';
|
this->active_lamps_[this->lamp_count_].validation_byte = 'L';
|
||||||
this->active_lamps_[this->lamp_count_].lamp_index = this->lamp_count_;
|
this->active_lamps_[this->lamp_count_].lamp_index = this->lamp_count_;
|
||||||
this->active_lamps_[this->lamp_count_].used_outputs[0] = 0;
|
this->active_lamps_[this->lamp_count_].used_outputs[0] = 0;
|
||||||
@ -148,7 +148,7 @@ void DynamicLampComponent::add_lamp(std::string name) {
|
|||||||
void DynamicLampComponent::remove_lamp(std::string lamp_name) {
|
void DynamicLampComponent::remove_lamp(std::string lamp_name) {
|
||||||
uint8_t i = 0;
|
uint8_t i = 0;
|
||||||
while (i < this->lamp_count_) {
|
while (i < this->lamp_count_) {
|
||||||
if (this->active_lamps_[i].name == lamp_name) {
|
if (this->active_lamps_[i].name == lamp_name.c_str()) {
|
||||||
for (uint8_t j = 0; j < 16; j++) {
|
for (uint8_t j = 0; j < 16; j++) {
|
||||||
uint8_t k = 0;
|
uint8_t k = 0;
|
||||||
uint8_t l = j;
|
uint8_t l = j;
|
||||||
@ -164,7 +164,7 @@ void DynamicLampComponent::remove_lamp(std::string lamp_name) {
|
|||||||
}
|
}
|
||||||
for (uint8_t j = i; j < 24; j++) {
|
for (uint8_t j = i; j < 24; j++) {
|
||||||
this->active_lamps_[j] = this->active_lamps_[j + 1];
|
this->active_lamps_[j] = this->active_lamps_[j + 1];
|
||||||
this->fram_->write((0x0000 + (i * 24) + j), { 'FF' }, 1);
|
this->fram_->write((0x0000 + (i * 24) + j), { 0xff }, 1);
|
||||||
}
|
}
|
||||||
this->active_lamps_[i].active = false;
|
this->active_lamps_[i].active = false;
|
||||||
this->lamp_count_--;
|
this->lamp_count_--;
|
||||||
|
@ -62,8 +62,8 @@ enum DynamicLampIdx : uint8_t {
|
|||||||
struct CombinedLamp {
|
struct CombinedLamp {
|
||||||
unsigned char validation_byte;
|
unsigned char validation_byte;
|
||||||
uint8_t lamp_index : 4;
|
uint8_t lamp_index : 4;
|
||||||
bool active = false : 1;
|
bool active : 1;
|
||||||
bool update_ = false : 1;
|
bool update_ : 1;
|
||||||
unsigned char :0;
|
unsigned char :0;
|
||||||
unsigned char name[16];
|
unsigned char name[16];
|
||||||
float state_;
|
float state_;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user