diff --git a/esphome/components/mcp4461/mcp4461.cpp b/esphome/components/mcp4461/mcp4461.cpp index c0002dc6d9..dabe84613e 100644 --- a/esphome/components/mcp4461/mcp4461.cpp +++ b/esphome/components/mcp4461/mcp4461.cpp @@ -134,9 +134,9 @@ void Mcp4461Component::loop() { if (status_has_warning()) { this->get_status_register(); } - if (this->update_) { - uint8_t i; - for (i = 0; i < 8; i++) { + uint8_t i; + for (i = 0; i < 8; i++) { + if (this->reg_[i].update) { // set wiper i state if changed if (this->reg_[i].state != this->read_wiper_level_(i)) { this->write_wiper_level_(i, this->reg_[i].state); @@ -158,7 +158,7 @@ void Mcp4461Component::loop() { } } } - this->update_ = false; + this->reg_[i].update = false; } } @@ -292,7 +292,7 @@ void Mcp4461Component::set_wiper_level(Mcp4461WiperIdx wiper, uint16_t value) { } ESP_LOGV(TAG, "Setting MCP4461 wiper %" PRIu8 " to %" PRIu16 "!", wiper_idx, value); this->reg_[wiper_idx].state = value; - this->update_ = true; + this->reg_[wiper_idx].update = true; } void Mcp4461Component::write_wiper_level_(uint8_t wiper, uint16_t value) { @@ -324,7 +324,7 @@ void Mcp4461Component::enable_wiper(Mcp4461WiperIdx wiper) { } ESP_LOGV(TAG, "Enabling wiper %" PRIu8, wiper_idx); this->reg_[wiper_idx].terminal_hw = true; - this->update_ = true; + this->reg_[wiper_idx].update = true; } void Mcp4461Component::disable_wiper(Mcp4461WiperIdx wiper) { @@ -343,7 +343,7 @@ void Mcp4461Component::disable_wiper(Mcp4461WiperIdx wiper) { } ESP_LOGV(TAG, "Disabling wiper %" PRIu8, wiper_idx); this->reg_[wiper_idx].terminal_hw = false; - this->update_ = true; + this->reg_[wiper_idx].update = true; } bool Mcp4461Component::increase_wiper(Mcp4461WiperIdx wiper) { @@ -530,7 +530,7 @@ void Mcp4461Component::enable_terminal(Mcp4461WiperIdx wiper, char terminal) { ESP_LOGW(TAG, "Unknown terminal %c specified", terminal); return; } - this->update_ = true; + this->reg_[wiper_idx].update = true; } void Mcp4461Component::disable_terminal(Mcp4461WiperIdx wiper, char terminal) { @@ -560,7 +560,7 @@ void Mcp4461Component::disable_terminal(Mcp4461WiperIdx wiper, char terminal) { ESP_LOGW(TAG, "Unknown terminal %c specified", terminal); return; } - this->update_ = true; + this->reg_[wiper_idx].update = true; } uint16_t Mcp4461Component::get_eeprom_value(Mcp4461EepromLocation location) { diff --git a/esphome/components/mcp4461/mcp4461.h b/esphome/components/mcp4461/mcp4461.h index 830f483b5a..1af51cae1b 100644 --- a/esphome/components/mcp4461/mcp4461.h +++ b/esphome/components/mcp4461/mcp4461.h @@ -8,6 +8,7 @@ namespace esphome { namespace mcp4461 { struct WiperState { + bool update = false; bool terminal_a = true; bool terminal_b = true; bool terminal_w = true; @@ -118,7 +119,6 @@ class Mcp4461Component : public Component, public i2c::I2CDevice { WiperState reg_[8]; void begin_(); - bool update_{false}; bool last_eeprom_write_timed_out_{false}; bool write_protected_{false}; bool wiper_0_disabled_{false};