ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
ch423.h
Go to the documentation of this file.
1#pragma once
2
4#include "esphome/core/hal.h"
6
7namespace esphome::ch423 {
8
9class CH423Component : public Component, public i2c::I2CDevice {
10 public:
11 CH423Component() = default;
12
14 void setup() override;
16 void loop() override;
18 bool digital_read(uint8_t pin);
20 void digital_write(uint8_t pin, bool value);
22 void pin_mode(uint8_t pin, gpio::Flags flags);
23
24 float get_setup_priority() const override;
25 float get_loop_priority() const override;
26 void dump_config() override;
27
28 protected:
29 bool write_reg_(uint8_t reg, uint8_t value);
30 uint8_t read_reg_(uint8_t reg);
31 bool read_inputs_();
32 bool write_outputs_();
33
35 uint32_t output_bits_{0x00};
37 uint8_t pin_read_flags_{0x00};
39 uint8_t input_bits_{0x00};
41 uint8_t sys_params_{0x00};
42};
43
45class CH423GPIOPin : public GPIOPin {
46 public:
47 void setup() override{};
48 void pin_mode(gpio::Flags flags) override;
49 bool digital_read() override;
50 void digital_write(bool value) override;
51 size_t dump_summary(char *buffer, size_t len) const override;
52
53 void set_parent(CH423Component *parent) { parent_ = parent; }
54 void set_pin(uint8_t pin) { pin_ = pin; }
55 void set_inverted(bool inverted) { inverted_ = inverted; }
57
58 gpio::Flags get_flags() const override { return this->flags_; }
59
60 protected:
62 uint8_t pin_{};
63 bool inverted_{};
65};
66
67} // namespace esphome::ch423
uint8_t read_reg_(uint8_t reg)
Definition ch423.cpp:106
void digital_write(uint8_t pin, bool value)
Helper function to write the value of a pin.
Definition ch423.cpp:70
bool write_reg_(uint8_t reg, uint8_t value)
Definition ch423.cpp:94
void setup() override
Check i2c availability and setup masks.
Definition ch423.cpp:17
uint8_t pin_read_flags_
Flags to check if read previously during this loop.
Definition ch423.h:37
uint8_t input_bits_
Copy of last read values.
Definition ch423.h:39
uint8_t sys_params_
System parameters.
Definition ch423.h:41
bool digital_read(uint8_t pin)
Helper function to read the value of a pin.
Definition ch423.cpp:60
float get_loop_priority() const override
Definition ch423.cpp:134
float get_setup_priority() const override
Definition ch423.cpp:130
void pin_mode(uint8_t pin, gpio::Flags flags)
Helper function to set the pin mode of a pin.
Definition ch423.cpp:48
void dump_config() override
Definition ch423.cpp:41
void loop() override
Poll for input changes periodically.
Definition ch423.cpp:36
uint32_t output_bits_
The mask to write as output state - 1 means HIGH, 0 means LOW.
Definition ch423.h:35
Helper class to expose a CH423 pin as a GPIO pin.
Definition ch423.h:45
void set_pin(uint8_t pin)
Definition ch423.h:54
void digital_write(bool value) override
Definition ch423.cpp:139
void set_flags(gpio::Flags flags)
Definition ch423.cpp:143
CH423Component * parent_
Definition ch423.h:61
void set_inverted(bool inverted)
Definition ch423.h:55
size_t dump_summary(char *buffer, size_t len) const override
Definition ch423.cpp:140
void setup() override
Definition ch423.h:47
gpio::Flags get_flags() const override
Definition ch423.h:58
bool digital_read() override
Definition ch423.cpp:137
void pin_mode(gpio::Flags flags) override
Definition ch423.cpp:136
void set_parent(CH423Component *parent)
Definition ch423.h:53
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
uint16_t flags
std::string size_t len
Definition helpers.h:692