59 switch (interrupt_mode) {
81 uint8_t bit = pin % 8;
82 uint8_t reg_value = 0;
88 this->
read_reg(reg_addr, ®_value);
void status_set_warning()
InternalGPIOPin * interrupt_pin_
void enable_polling_loop_()
Call from pin_mode() for an input pin: without an interrupt pin the loop polls instead.
bool digital_read_cache(uint8_t pin) override
void pin_mode(uint8_t pin, gpio::Flags flags) override
void digital_write_hw(uint8_t pin, bool value) override
bool digital_read_hw(uint8_t pin) override
void pin_interrupt_mode(uint8_t pin, mcp23xxx_base::MCP23XXXInterruptMode interrupt_mode) override
uint16_t input_mask_
State read in digital_read_hw.
void update_reg(uint8_t pin, bool pin_value, uint8_t reg_a) override
virtual bool read_reg(uint8_t reg, uint8_t *value)=0
virtual bool write_reg(uint8_t reg, uint8_t value)=0
ESPHOME_LOG_TAG(TAG, "mcp23x17_base")
ESPHOME_ALWAYS_INLINE constexpr void assign_bits(T &value, std::type_identity_t< T > mask, bool on)
Set the bits of mask in value when on is true, clear them otherwise.
constexpr uint16_t encode_uint16(uint8_t msb, uint8_t lsb)
Encode a 16-bit value given the most and least significant byte.