ESPHome 2026.10.2
Loading...
Searching...
No Matches
mcp23xxx_base.cpp
Go to the documentation of this file.
1#include "mcp23xxx_base.h"
3#include "esphome/core/log.h"
4
6
8
9template<uint8_t N> void MCP23XXXGPIOPin<N>::setup() {
10 this->pin_mode(flags_);
11 // When interrupt_pin is configured, pin_mode() already auto-enables CHANGE
12 // interrupt for input pins, so skip the explicit call if the user didn't
13 // override the default (NO_INTERRUPT)
14 if (this->interrupt_mode_ != MCP23XXX_NO_INTERRUPT || this->parent_->get_interrupt_pin() == nullptr) {
15 this->parent_->pin_interrupt_mode(this->pin_, this->interrupt_mode_);
16 }
17}
18template<uint8_t N> void MCP23XXXGPIOPin<N>::pin_mode(gpio::Flags flags) { this->parent_->pin_mode(this->pin_, flags); }
19template<uint8_t N> bool MCP23XXXGPIOPin<N>::digital_read() {
20 return this->parent_->digital_read(this->pin_) != this->inverted_;
21}
22template<uint8_t N> void MCP23XXXGPIOPin<N>::digital_write(bool value) {
23 this->parent_->digital_write(this->pin_, value != this->inverted_);
24}
25template<uint8_t N> size_t MCP23XXXGPIOPin<N>::dump_summary(char *buffer, size_t len) const {
26 return buf_append_printf(buffer, len, 0, "%u via MCP23XXX", this->pin_);
27}
28
29template class MCP23XXXGPIOPin<8>;
30template class MCP23XXXGPIOPin<16>;
31
32} // namespace esphome::mcp23xxx_base
void enable_loop_soon_any_context()
Thread and ISR-safe version of enable_loop() that can be called from any context.
void digital_write(bool value) override
void pin_mode(gpio::Flags flags) override
size_t dump_summary(char *buffer, size_t len) const override
uint16_t flags
uint32_t buffer
Definition gif.cpp:50
void IRAM_ATTR mcp23xxx_gpio_intr(Component *arg)
const void size_t len
Definition hal.h:64