ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
expander_gpio_pin.h
Go to the documentation of this file.
1#pragma once
2
3#include "esphome/core/gpio.h"
5
7
12template<typename Parent> class ExpanderGPIOPin final : public GPIOPin, public Parented<Parent> {
13 public:
14 // User provided, not "= default": `new(p) ExpanderGPIOPin()` would zero-fill .bss that is already zero.
16
17 void setup() override { this->pin_mode(this->flags_); }
18 void pin_mode(gpio::Flags flags) override { this->parent_->pin_mode(this->pin_, flags); }
19 bool digital_read() override { return this->parent_->digital_read(this->pin_) != this->inverted_; }
20 void digital_write(bool value) override { this->parent_->digital_write(this->pin_, value != this->inverted_); }
21 size_t dump_summary(char *buffer, size_t len) const override;
22
23 void set_pin(uint8_t pin) { this->pin_ = pin; }
24 void set_inverted(bool inverted) { this->inverted_ = inverted; }
26
27 gpio::Flags get_flags() const override { return this->flags_; }
28
29 protected:
30 uint8_t pin_{0};
31 bool inverted_{false};
33};
34
35} // namespace esphome::gpio_expander
36
38#define ESPHOME_EXPANDER_PIN_SUMMARY_DECL(Parent) \
39 template<> size_t esphome::gpio_expander::ExpanderGPIOPin<Parent>::dump_summary(char *buffer, size_t len) const
40
42#define ESPHOME_EXPANDER_PIN_SUMMARY(Parent, format) \
43 ESPHOME_EXPANDER_PIN_SUMMARY_DECL(Parent) { return buf_append_printf(buffer, len, 0, format, this->pin_); }
Helper class to easily give an object a parent of type T.
Definition helpers.h:2073
gpio::Flags get_flags() const 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
const void size_t len
Definition hal.h:68