ESPHome 2026.1.0-dev
Loading...
Searching...
No Matches
bm8563.h
Go to the documentation of this file.
1#pragma once
2
5
6namespace esphome::bm8563 {
7
9 public:
10 void setup() override;
11 void update() override;
12 void dump_config() override;
13
14 void write_time();
15 void read_time();
16 void start_timer(uint32_t duration_s);
17
18 private:
19 void get_time_(ESPTime &time);
20 void get_date_(ESPTime &time);
21
22 void set_time_(const ESPTime &time);
23 void set_date_(const ESPTime &time);
24
25 void set_timer_irq_(uint32_t duration_s);
26 void clear_irq_();
27 void disable_irq_();
28
29 void write_byte_(uint8_t reg, uint8_t value);
30 void write_register_(uint8_t reg, const uint8_t *data, size_t len);
31 optional<uint8_t> read_register_(uint8_t reg);
32
33 uint8_t bcd2_to_byte_(uint8_t value);
34 uint8_t byte_to_bcd2_(uint8_t value);
35};
36
37template<typename... Ts> class WriteAction : public Action<Ts...>, public Parented<BM8563> {
38 public:
39 void play(const Ts &...x) override { this->parent_->write_time(); }
40};
41
42template<typename... Ts> class ReadAction : public Action<Ts...>, public Parented<BM8563> {
43 public:
44 void play(const Ts &...x) override { this->parent_->read_time(); }
45};
46
47template<typename... Ts> class TimerAction : public Action<Ts...>, public Parented<BM8563> {
48 public:
50
51 void play(const Ts &...x) override {
52 auto duration = this->duration_.value(x...);
53 this->parent_->start_timer(duration);
54 }
55};
56
57} // namespace esphome::bm8563
virtual void play(const Ts &...x)=0
Helper class to easily give an object a parent of type T.
Definition helpers.h:1037
void update() override
Definition bm8563.cpp:26
void dump_config() override
Definition bm8563.cpp:28
void start_timer(uint32_t duration_s)
Definition bm8563.cpp:36
void setup() override
Definition bm8563.cpp:19
void play(const Ts &...x) override
Definition bm8563.h:44
TEMPLATABLE_VALUE(uint32_t, duration) void play(const Ts &...x) override
Definition bm8563.h:49
void play(const Ts &...x) override
Definition bm8563.h:39
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
uint8_t size_t len
Definition i2c.h:273
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock.
uint8_t duration
Definition msa3xx.h:0
A more user-friendly version of struct tm from time.h.
Definition time.h:15
uint16_t x
Definition tt21100.cpp:5