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

Update mcp4461_output.cpp

This commit is contained in:
Oliver Kleinecke
2025-02-04 10:08:09 +01:00
committed by GitHub
parent 6044323543
commit bafe4c22f3

View File

@@ -10,17 +10,17 @@ namespace mcp4461 {
static const char *const TAG = "mcp4461.output"; static const char *const TAG = "mcp4461.output";
void Mcp4461Wiper::write_state(float state) { void Mcp4461Wiper::write_state(float state) {
uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGV(TAG, "Got value %02f from frontend", state); ESP_LOGV(TAG, "Got value %02f from frontend", state);
const float max_taps = 256.0; const float max_taps = 256.0;
state = state * 1000.0; state = state * 1000.0;
if (state > max_taps) { if (state > max_taps) {
ESP_LOGW(TAG, "Cannot set taps > 0.256 for wiper %" PRIu8 ", clamping to 0.256 !", ESP_LOGW(TAG, "Cannot set taps > 0.256 for wiper %" PRIu8 ", clamping to 0.256 !", wiper_idx);
static_cast<uint8_t>(this->wiper_));
state = 256.0; state = 256.0;
} }
uint16_t taps; uint16_t taps;
taps = static_cast<uint16_t>(state); taps = static_cast<uint16_t>(state);
ESP_LOGV(TAG, "Setting wiper %" PRIu8 " to value %" PRIu16 "", static_cast<uint8_t>(this->wiper_), taps); ESP_LOGV(TAG, "Setting wiper %" PRIu8 " to value %" PRIu16 "", wiper_idx, taps);
this->state_ = state; this->state_ = state;
this->parent_->set_wiper_level(this->wiper_, taps); this->parent_->set_wiper_level(this->wiper_, taps);
} }
@@ -28,57 +28,64 @@ void Mcp4461Wiper::write_state(float state) {
uint16_t Mcp4461Wiper::get_wiper_level() { return this->parent_->get_wiper_level(this->wiper_); } uint16_t Mcp4461Wiper::get_wiper_level() { return this->parent_->get_wiper_level(this->wiper_); }
void Mcp4461Wiper::save_level() { void Mcp4461Wiper::save_level() {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot save level for nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot save level for nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
uint8_t nonvolatile_wiper = this->wiper_ + 4; Mcp4461WiperIdx nonvolatile_wiper = wiper_idx + 4;
this->parent_->set_wiper_level(nonvolatile_wiper, this->state_); this->parent_->set_wiper_level(nonvolatile_wiper, this->state_);
} }
void Mcp4461Wiper::enable_wiper() { void Mcp4461Wiper::enable_wiper() {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot enable nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot enable nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->enable_wiper(this->wiper_); this->parent_->enable_wiper(this->wiper_);
} }
void Mcp4461Wiper::disable_wiper() { void Mcp4461Wiper::disable_wiper() {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot disable nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot disable nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->disable_wiper(this->wiper_); this->parent_->disable_wiper(this->wiper_);
} }
void Mcp4461Wiper::increase_wiper() { void Mcp4461Wiper::increase_wiper() {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot increase nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot increase nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->increase_wiper(this->wiper_); this->parent_->increase_wiper(this->wiper_);
} }
void Mcp4461Wiper::decrease_wiper() { void Mcp4461Wiper::decrease_wiper() {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot decrease nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot decrease nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->decrease_wiper(this->wiper_); this->parent_->decrease_wiper(this->wiper_);
} }
void Mcp4461Wiper::enable_terminal(char terminal) { void Mcp4461Wiper::enable_terminal(char terminal) {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot get/set terminals nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot get/set terminals nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->enable_terminal(this->wiper_, terminal); this->parent_->enable_terminal(this->wiper_, terminal);
} }
void Mcp4461Wiper::disable_terminal(char terminal) { void Mcp4461Wiper::disable_terminal(char terminal) {
if (this->wiper_ > 3) { uint8_t wiper_idx = static_cast<uint8_t>(this->wiper_);
ESP_LOGW(TAG, "Cannot get/set terminals for nonvolatile wiper %" PRIu8 " !", static_cast<uint8_t>(this->wiper_)); if (wiper_idx > 3) {
ESP_LOGW(TAG, "Cannot get/set terminals for nonvolatile wiper %" PRIu8 " !", wiper_idx);
return; return;
} }
this->parent_->disable_terminal(this->wiper_, terminal); this->parent_->disable_terminal(this->wiper_, terminal);