ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
pi4ioe5v6408.h
Go to the documentation of this file.
1#pragma once
2
6#include "esphome/core/hal.h"
7
8namespace esphome::pi4ioe5v6408 {
10 public i2c::I2CDevice,
11 public gpio_expander::CachedGpioExpander<uint8_t, 8> {
12 public:
14
15 void setup() override;
16 void pin_mode(uint8_t pin, gpio::Flags flags);
17
18 float get_setup_priority() const override;
19 void dump_config() override;
20 void loop() override;
21
23 void set_reset(bool reset) { this->reset_ = reset; }
25
26 protected:
27 static void IRAM_ATTR gpio_intr(PI4IOE5V6408Component *arg);
28
29 bool digital_read_hw(uint8_t pin) override;
30 bool digital_read_cache(uint8_t pin) override;
31 void digital_write_hw(uint8_t pin, bool value) override;
32
34 uint8_t mode_mask_{0x00};
36 uint8_t output_mask_{0x00};
38 uint8_t input_mask_{0x00};
40 uint8_t pull_enable_mask_{0x00};
42 uint8_t pull_up_down_mask_{0x00};
43
44 bool reset_{true};
46
47 bool read_gpio_modes_();
48 bool write_gpio_modes_();
49 bool read_gpio_outputs_();
50};
51
52class PI4IOE5V6408GPIOPin : public GPIOPin, public Parented<PI4IOE5V6408Component> {
53 public:
54 void setup() override;
55 void pin_mode(gpio::Flags flags) override;
56 bool digital_read() override;
57 void digital_write(bool value) override;
58 size_t dump_summary(char *buffer, size_t len) const override;
59
60 void set_pin(uint8_t pin) { this->pin_ = pin; }
61 void set_inverted(bool inverted) { this->inverted_ = inverted; }
63
64 gpio::Flags get_flags() const override { return this->flags_; }
65
66 protected:
67 uint8_t pin_;
70};
71
72} // namespace esphome::pi4ioe5v6408
Helper class to easily give an object a parent of type T.
Definition helpers.h:1861
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
static void IRAM_ATTR gpio_intr(PI4IOE5V6408Component *arg)
uint8_t pull_enable_mask_
The mask to write as input buffer state - 1 means enabled, 0 means disabled.
uint8_t output_mask_
The mask to write as output state - 1 means HIGH, 0 means LOW.
uint8_t pull_up_down_mask_
The mask to write as pullup state - 1 means pullup, 0 means pulldown.
bool digital_read_cache(uint8_t pin) override
void digital_write_hw(uint8_t pin, bool value) override
uint8_t input_mask_
The state read in digital_read_hw - 1 means HIGH, 0 means LOW.
uint8_t mode_mask_
Mask for the pin mode - 1 means output, 0 means input.
void set_interrupt_pin(InternalGPIOPin *pin)
void pin_mode(uint8_t pin, gpio::Flags flags)
void set_reset(bool reset)
Indicate if the component should reset the state during setup.
void pin_mode(gpio::Flags flags) override
size_t dump_summary(char *buffer, size_t len) const override
gpio::Flags get_flags() const override
uint16_t flags
uint16_t reset
Definition ina226.h:5
const void size_t len
Definition hal.h:64