ESPHome 2025.10.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<uint8_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, uint8_t *value);
46 // write a value to a given register
47 bool write_reg_(uint8_t reg, uint8_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 uint8_t olat_0_{0x00};
52 uint8_t olat_1_{0x00};
53 // Cache for input values (16-bit combined for both banks)
54 uint16_t input_mask_{0x00};
55};
56
57class MCP23016GPIOPin : public GPIOPin {
58 public:
59 void setup() override;
60 void pin_mode(gpio::Flags flags) override;
61 bool digital_read() override;
62 void digital_write(bool value) override;
63 std::string dump_summary() const override;
64
65 void set_parent(MCP23016 *parent) { parent_ = parent; }
66 void set_pin(uint8_t pin) { pin_ = pin; }
67 void set_inverted(bool inverted) { inverted_ = inverted; }
69
70 gpio::Flags get_flags() const override { return this->flags_; }
71
72 protected:
74 uint8_t pin_;
77};
78
79} // namespace mcp23016
80} // 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:133
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
Definition i2c.h:153
void set_flags(gpio::Flags flags)
Definition mcp23016.h:68
void pin_mode(gpio::Flags flags) override
Definition mcp23016.cpp:99
std::string dump_summary() const override
Definition mcp23016.cpp:102
void set_parent(MCP23016 *parent)
Definition mcp23016.h:65
void set_inverted(bool inverted)
Definition mcp23016.h:67
gpio::Flags get_flags() const override
Definition mcp23016.h:70
void digital_write(bool value) override
Definition mcp23016.cpp:101
bool read_reg_(uint8_t reg, uint8_t *value)
Definition mcp23016.cpp:60
bool write_reg_(uint8_t reg, uint8_t value)
Definition mcp23016.cpp:66
void pin_mode(uint8_t pin, gpio::Flags flags)
Definition mcp23016.cpp:51
bool digital_read_cache(uint8_t pin) override
Definition mcp23016.cpp:46
void digital_write_hw(uint8_t pin, bool value) override
Definition mcp23016.cpp:47
bool digital_read_hw(uint8_t pin) override
Definition mcp23016.cpp:30
void update_reg_(uint8_t pin, bool pin_value, uint8_t reg_a)
Definition mcp23016.cpp:72
float get_setup_priority() const override
Definition mcp23016.cpp:59
uint16_t flags
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7