ESPHome 2025.9.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 {
12namespace rdm6300 {
13
14class RDM6300BinarySensor;
15class RDM6300Trigger;
16
18 public:
19 void loop() override;
20
21 void register_card(RDM6300BinarySensor *obj) { this->cards_.push_back(obj); }
22 void register_trigger(RDM6300Trigger *trig) { this->triggers_.push_back(trig); }
23
24 protected:
25 int8_t read_state_{-1};
26 uint8_t buffer_[6]{};
27 std::vector<RDM6300BinarySensor *> cards_;
28 std::vector<RDM6300Trigger *> triggers_;
29 uint32_t last_id_{0};
30};
31
33 public:
34 void set_id(uint32_t id) { id_ = id; }
35
36 bool process(uint32_t id) {
37 if (this->id_ == id) {
38 this->publish_state(true);
39 yield();
40 this->publish_state(false);
41 return true;
42 }
43 return false;
44 }
45
46 protected:
47 uint32_t id_;
48};
49
50class RDM6300Trigger : public Trigger<uint32_t> {
51 public:
52 void process(uint32_t uid) { this->trigger(uid); }
53};
54
55} // namespace rdm6300
56} // namespace esphome
void publish_state(bool new_state)
Publish a new state to the front-end.
void register_trigger(RDM6300Trigger *trig)
Definition rdm6300.h:22
std::vector< RDM6300BinarySensor * > cards_
Definition rdm6300.h:27
void register_card(RDM6300BinarySensor *obj)
Definition rdm6300.h:21
std::vector< RDM6300Trigger * > triggers_
Definition rdm6300.h:28
void process(uint32_t uid)
Definition rdm6300.h:52
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
void IRAM_ATTR HOT yield()
Definition core.cpp:27
T id(T value)
Helper function to make id(var) known from lambdas work in custom components.
Definition helpers.h:933