ESPHome
2026.10.2
Loading...
Searching...
No Matches
esphome
components
mcp23xxx_base
mcp23xxx_base.cpp
Go to the documentation of this file.
1
#include "
mcp23xxx_base.h
"
2
#include "
esphome/core/helpers.h
"
3
#include "
esphome/core/log.h
"
4
5
namespace
esphome::mcp23xxx_base
{
6
7
void
IRAM_ATTR
mcp23xxx_gpio_intr
(
Component
*arg) { arg->
enable_loop_soon_any_context
(); }
8
9
template
<u
int
8_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
}
18
template
<u
int
8_t N>
void
MCP23XXXGPIOPin<N>::pin_mode
(
gpio::Flags
flags
) { this->parent_->pin_mode(this->pin_,
flags
); }
19
template
<u
int
8_t N>
bool
MCP23XXXGPIOPin<N>::digital_read
() {
20
return
this->parent_->digital_read(this->pin_) != this->inverted_;
21
}
22
template
<u
int
8_t N>
void
MCP23XXXGPIOPin<N>::digital_write
(
bool
value) {
23
this->parent_->digital_write(this->pin_, value != this->inverted_);
24
}
25
template
<u
int
8_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
29
template
class
MCP23XXXGPIOPin<8>
;
30
template
class
MCP23XXXGPIOPin<16>
;
31
32
}
// namespace esphome::mcp23xxx_base
esphome::Component
Definition
component.h:145
esphome::Component::enable_loop_soon_any_context
void enable_loop_soon_any_context()
Thread and ISR-safe version of enable_loop() that can be called from any context.
Definition
component.cpp:222
esphome::mcp23xxx_base::MCP23XXXGPIOPin
Definition
mcp23xxx_base.h:63
esphome::mcp23xxx_base::MCP23XXXGPIOPin::digital_write
void digital_write(bool value) override
Definition
mcp23xxx_base.cpp:22
esphome::mcp23xxx_base::MCP23XXXGPIOPin::digital_read
bool digital_read() override
Definition
mcp23xxx_base.cpp:19
esphome::mcp23xxx_base::MCP23XXXGPIOPin::pin_mode
void pin_mode(gpio::Flags flags) override
Definition
mcp23xxx_base.cpp:18
esphome::mcp23xxx_base::MCP23XXXGPIOPin::dump_summary
size_t dump_summary(char *buffer, size_t len) const override
Definition
mcp23xxx_base.cpp:25
esphome::mcp23xxx_base::MCP23XXXGPIOPin::setup
void setup() override
Definition
mcp23xxx_base.cpp:9
flags
uint16_t flags
Definition
dns_server_esp32_idf.cpp:1
buffer
uint32_t buffer
Definition
gif.cpp:50
helpers.h
log.h
mcp23xxx_base.h
esphome::gpio::Flags
Flags
Definition
gpio.h:22
esphome::mcp23xxx_base
Definition
mcp23xxx_base.cpp:5
esphome::mcp23xxx_base::MCP23XXX_NO_INTERRUPT
@ MCP23XXX_NO_INTERRUPT
Definition
mcp23xxx_base.h:9
esphome::mcp23xxx_base::mcp23xxx_gpio_intr
void IRAM_ATTR mcp23xxx_gpio_intr(Component *arg)
Definition
mcp23xxx_base.cpp:7
esphome::len
const void size_t len
Definition
hal.h:64
Generated by
1.12.0