ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
rdm6300.h
Go to the documentation of this file.
1#pragma once
2
7
8#include <cinttypes>
9#include <vector>
10
11namespace esphome::rdm6300 {
12
13class RDM6300BinarySensor;
14class RDM6300Trigger;
15
17 public:
18 void loop() override;
19
20 void register_card(RDM6300BinarySensor *obj) { this->cards_.push_back(obj); }
21 void register_trigger(RDM6300Trigger *trig) { this->triggers_.push_back(trig); }
22
23 protected:
24 int8_t read_state_{-1};
25 uint8_t buffer_[6]{};
26 std::vector<RDM6300BinarySensor *> cards_;
27 std::vector<RDM6300Trigger *> triggers_;
29};
30
32 public:
33 void set_id(uint32_t id) { id_ = id; }
34
35 bool process(uint32_t id) {
36 if (this->id_ == id) {
37 this->publish_state(true);
38 yield();
39 this->publish_state(false);
40 return true;
41 }
42 return false;
43 }
44
45 protected:
47};
48
49class RDM6300Trigger : public Trigger<uint32_t> {
50 public:
51 void process(uint32_t uid) { this->trigger(uid); }
52};
53
54} // namespace esphome::rdm6300
void trigger(const Ts &...x) ESPHOME_ALWAYS_INLINE
Definition automation.h:461
void publish_state(bool new_state)
Publish a new state to the front-end.
void register_trigger(RDM6300Trigger *trig)
Definition rdm6300.h:21
std::vector< RDM6300BinarySensor * > cards_
Definition rdm6300.h:26
void register_card(RDM6300BinarySensor *obj)
Definition rdm6300.h:20
std::vector< RDM6300Trigger * > triggers_
Definition rdm6300.h:27
void process(uint32_t uid)
Definition rdm6300.h:51
void yield(void)
uint16_t id
static void uint32_t