ESPHome 2025.9.0-dev
Loading...
Searching...
No Matches
mcp23xxx_base.h
Go to the documentation of this file.
1#pragma once
2
5#include "esphome/core/hal.h"
6
7namespace esphome {
8namespace mcp23xxx_base {
9
11
12template<uint8_t N> class MCP23XXXBase : public Component, public gpio_expander::CachedGpioExpander<uint8_t, N> {
13 public:
14 virtual void pin_mode(uint8_t pin, gpio::Flags flags);
15 virtual void pin_interrupt_mode(uint8_t pin, MCP23XXXInterruptMode interrupt_mode);
16
17 void set_open_drain_ints(const bool value) { this->open_drain_ints_ = value; }
18 float get_setup_priority() const override { return setup_priority::IO; }
19
20 void loop() override { this->reset_pin_cache_(); }
21
22 protected:
23 // read a given register
24 virtual bool read_reg(uint8_t reg, uint8_t *value);
25 // write a value to a given register
26 virtual bool write_reg(uint8_t reg, uint8_t value);
27 // update registers with given pin value.
28 virtual void update_reg(uint8_t pin, bool pin_value, uint8_t reg_a);
29
31};
32
33template<uint8_t N> class MCP23XXXGPIOPin : public GPIOPin {
34 public:
35 void setup() override;
36 void pin_mode(gpio::Flags flags) override;
37 bool digital_read() override;
38 void digital_write(bool value) override;
39 std::string dump_summary() const override;
40
41 void set_parent(MCP23XXXBase<N> *parent) { parent_ = parent; }
42 void set_pin(uint8_t pin) { pin_ = pin; }
43 void set_inverted(bool inverted) { inverted_ = inverted; }
44 void set_flags(gpio::Flags flags) { flags_ = flags; }
45 void set_interrupt_mode(MCP23XXXInterruptMode interrupt_mode) { interrupt_mode_ = interrupt_mode; }
46
47 gpio::Flags get_flags() const override { return this->flags_; }
48
49 protected:
51 uint8_t pin_;
55};
56
57} // namespace mcp23xxx_base
58} // namespace esphome
A class to cache the read state of a GPIO expander.
Definition cached_gpio.h:19
virtual void pin_interrupt_mode(uint8_t pin, MCP23XXXInterruptMode interrupt_mode)
virtual void update_reg(uint8_t pin, bool pin_value, uint8_t reg_a)
void set_open_drain_ints(const bool value)
virtual bool read_reg(uint8_t reg, uint8_t *value)
virtual void pin_mode(uint8_t pin, gpio::Flags flags)
float get_setup_priority() const override
virtual bool write_reg(uint8_t reg, uint8_t value)
void digital_write(bool value) override
void pin_mode(gpio::Flags flags) override
void set_parent(MCP23XXXBase< N > *parent)
void set_interrupt_mode(MCP23XXXInterruptMode interrupt_mode)
std::string dump_summary() const override
gpio::Flags get_flags() const override
const float IO
For components that represent GPIO pins like PCF8573.
Definition component.cpp:48
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7