ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
mcp23016.h
Go to the documentation of this file.
1#pragma once
2
4#include "esphome/core/hal.h"
7
8namespace esphome {
9namespace mcp23016 {
10
27
28class MCP23016 : public Component, public i2c::I2CDevice, public gpio_expander::CachedGpioExpander<uint16_t, 16> {
29 public:
30 MCP23016() = default;
31
32 void setup() override;
33 void loop() override;
34 void pin_mode(uint8_t pin, gpio::Flags flags);
35
36 float get_setup_priority() const override;
37
38 protected:
39 // Virtual methods from CachedGpioExpander
40 bool digital_read_hw(uint8_t pin) override;
41 bool digital_read_cache(uint8_t pin) override;
42 void digital_write_hw(uint8_t pin, bool value) override;
43
44 // read a given register
45 bool read_reg_(uint8_t reg, uint16_t *value);
46 // write a value to a given register
47 bool write_reg_(uint8_t reg, uint16_t value);
48 // update registers with given pin value.
49 void update_reg_(uint8_t pin, bool pin_value, uint8_t reg_a);
50
51 uint16_t olat_{0x0000};
52 // Cache for input values (16-bit combined for both banks)
53 uint16_t input_mask_{0x0000};
54};
55
56class MCP23016GPIOPin : public GPIOPin {
57 public:
58 void setup() override;
59 void pin_mode(gpio::Flags flags) override;
60 bool digital_read() override;
61 void digital_write(bool value) override;
62 size_t dump_summary(char *buffer, size_t len) const override;
63
64 void set_parent(MCP23016 *parent) { parent_ = parent; }
65 void set_pin(uint8_t pin) { pin_ = pin; }
66 void set_inverted(bool inverted) { inverted_ = inverted; }
68
69 gpio::Flags get_flags() const override { return this->flags_; }
70
71 protected:
73 uint8_t pin_;
76};
77
78} // namespace mcp23016
79} // namespace esphome
A class to cache the read state of a GPIO expander.
Definition cached_gpio.h:29
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
Definition i2c.h:152
void set_flags(gpio::Flags flags)
Definition mcp23016.h:67
void pin_mode(gpio::Flags flags) override
Definition mcp23016.cpp:80
void set_parent(MCP23016 *parent)
Definition mcp23016.h:64
size_t dump_summary(char *buffer, size_t len) const override
Definition mcp23016.cpp:83
void set_inverted(bool inverted)
Definition mcp23016.h:66
gpio::Flags get_flags() const override
Definition mcp23016.h:69
void digital_write(bool value) override
Definition mcp23016.cpp:82
void pin_mode(uint8_t pin, gpio::Flags flags)
Definition mcp23016.cpp:37
bool digital_read_cache(uint8_t pin) override
Definition mcp23016.cpp:35
void digital_write_hw(uint8_t pin, bool value) override
Definition mcp23016.cpp:36
bool digital_read_hw(uint8_t pin) override
Definition mcp23016.cpp:33
void update_reg_(uint8_t pin, bool pin_value, uint8_t reg_a)
Definition mcp23016.cpp:57
float get_setup_priority() const override
Definition mcp23016.cpp:44
bool read_reg_(uint8_t reg, uint16_t *value)
Definition mcp23016.cpp:45
bool write_reg_(uint8_t reg, uint16_t value)
Definition mcp23016.cpp:51
uint16_t flags
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
std::string size_t len
Definition helpers.h:817