72 Mcp4461Component(
bool disable_wiper_0,
bool disable_wiper_1,
bool disable_wiper_2,
bool disable_wiper_3)
83 void setup()
override;
138 bool mcp4461_write_(uint8_t addr, uint16_t data,
bool nonvolatile =
false);
148 return LOG_STR(
"I2C error - communication with MCP4461 failed!");
150 return LOG_STR(
"Status register could not be read");
152 return LOG_STR(
"Invalid status register value - bits 1,7 or 8 are 0");
154 return LOG_STR(
"Invalid value for wiper given");
156 return LOG_STR(
"MCP4461 is write protected. Setting nonvolatile wipers/eeprom values is prohibited.");
158 return LOG_STR(
"MCP4461 Wiper is already enabled, ignoring cmd to enable.");
160 return LOG_STR(
"MCP4461 Wiper is disabled. All actions on this wiper are prohibited.");
162 return LOG_STR(
"MCP4461 Wiper is locked using WiperLock-technology. All actions on this wiper are prohibited.");
164 return LOG_STR(
"Status OK");
167 "Increment/decrement, store, and terminal control are prohibited on the nonvolatile wipers (E-H).");
169 return LOG_STR(
"Unknown");
This Class provides the methods to read/write bytes from/to an i2c device.
void set_initial_value(Mcp4461WiperIdx wiper, float initial_value)
public function used to set initial value
bool increase_wiper_(Mcp4461WiperIdx wiper)
uint8_t calc_terminal_connector_byte_(Mcp4461TerminalIdx terminal_connector)
uint8_t get_terminal_register_(Mcp4461TerminalIdx terminal_connector)
void update_terminal_register_(Mcp4461TerminalIdx terminal_connector)
uint16_t get_eeprom_value(Mcp4461EepromLocation location)
get eeprom value from location
void process_nonvolatile_dirty_()
Deferred NV mirroring driven from loop() — see WiperState::nonvolatile.
void dump_config() override
bool set_eeprom_value(Mcp4461EepromLocation location, uint16_t value)
set eeprom value at specified location
void disable_wiper_(Mcp4461WiperIdx wiper)
void initialize_terminal_disabled(Mcp4461WiperIdx wiper, char terminal)
public function used to set disable terminal config
void enable_wiper_(Mcp4461WiperIdx wiper)
void update_write_protection_status_()
bool mcp4461_write_(uint8_t addr, uint16_t data, bool nonvolatile=false)
bool read_16_(uint8_t address, uint16_t *buf)
enum esphome::mcp4461::Mcp4461Component::ErrorCode MCP4461_STATUS_OK
bool last_eeprom_write_timed_out_
void enable_terminal_(Mcp4461WiperIdx wiper, char terminal)
bool is_eeprom_ready_for_writing_(bool wait_if_not_ready)
float get_setup_priority() const override
uint16_t read_wiper_level_(uint8_t wiper, bool *ok=nullptr)
Read a wiper register.
uint16_t get_wiper_level_(Mcp4461WiperIdx wiper)
uint8_t get_status_register_()
Mcp4461Component(bool disable_wiper_0, bool disable_wiper_1, bool disable_wiper_2, bool disable_wiper_3)
static const LogString * get_message_string(int status)
bool update_wiper_level_(Mcp4461WiperIdx wiper)
uint8_t get_wiper_address_(uint8_t wiper)
void disable_terminal_(Mcp4461WiperIdx, char terminal)
@ MCP4461_STATUS_REGISTER_INVALID
@ MCP4461_PROHIBITED_FOR_NONVOLATILE
@ MCP4461_STATUS_REGISTER_ERROR
@ MCP4461_WRITE_PROTECTED
@ MCP4461_STATUS_I2C_ERROR
bool store_level_nonvolatile_(Mcp4461WiperIdx wiper)
Copy the current volatile level of wiper 0-3 into its NV register (immediate, blocking only for a pen...
void write_wiper_level_(uint8_t wiper, uint16_t value)
bool decrease_wiper_(Mcp4461WiperIdx wiper)
bool set_terminal_register_(Mcp4461TerminalIdx terminal_connector, uint8_t data)
bool set_wiper_level_(Mcp4461WiperIdx wiper, uint16_t value)
void read_status_register_to_log()
read status register to log
void set_nonvolatile(Mcp4461WiperIdx wiper, uint32_t write_delay_ms)
enable nonvolatile persistence for a volatile wiper (0-3): every level change is mirrored to the corr...
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
optional< float > initial_value
uint32_t nonvolatile_write_delay_ms
uint32_t last_level_change_ms