ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
wiegand.h
Go to the documentation of this file.
1#pragma once
2
6#include "esphome/core/hal.h"
7
8namespace esphome::wiegand {
9
10class Wiegand;
11
15 volatile uint64_t value{0};
17 volatile bool done{true};
18 volatile uint8_t count{0};
19
20 static void d0_gpio_intr(WiegandStore *arg);
21 static void d1_gpio_intr(WiegandStore *arg);
22};
23
24class WiegandTagTrigger : public Trigger<std::string> {};
25
26class WiegandRawTrigger : public Trigger<uint8_t, uint64_t> {};
27
28class WiegandKeyTrigger : public Trigger<uint8_t> {};
29
31 public:
32 float get_setup_priority() const override { return setup_priority::HARDWARE; }
33 void setup() override;
34 void loop() override;
35 void dump_config() override;
36
37 void set_d0_pin(InternalGPIOPin *pin) { this->d0_pin_ = pin; };
38 void set_d1_pin(InternalGPIOPin *pin) { this->d1_pin_ = pin; };
39 void register_tag_trigger(WiegandTagTrigger *trig) { this->tag_triggers_.push_back(trig); }
40 void register_raw_trigger(WiegandRawTrigger *trig) { this->raw_triggers_.push_back(trig); }
41 void register_key_trigger(WiegandKeyTrigger *trig) { this->key_triggers_.push_back(trig); }
42
43 protected:
47 std::vector<WiegandTagTrigger *> tag_triggers_;
48 std::vector<WiegandRawTrigger *> raw_triggers_;
49 std::vector<WiegandKeyTrigger *> key_triggers_;
50};
51
52} // namespace esphome::wiegand
Copy of GPIOPin that is safe to use from ISRs (with no virtual functions)
Definition gpio.h:92
interface for components that provide keypresses
Definition key_provider.h:9
InternalGPIOPin * d1_pin_
Definition wiegand.h:45
void loop() override
Definition wiegand.cpp:58
void register_tag_trigger(WiegandTagTrigger *trig)
Definition wiegand.h:39
void dump_config() override
Definition wiegand.cpp:123
std::vector< WiegandKeyTrigger * > key_triggers_
Definition wiegand.h:49
InternalGPIOPin * d0_pin_
Definition wiegand.h:44
void setup() override
Definition wiegand.cpp:29
std::vector< WiegandTagTrigger * > tag_triggers_
Definition wiegand.h:47
void register_raw_trigger(WiegandRawTrigger *trig)
Definition wiegand.h:40
std::vector< WiegandRawTrigger * > raw_triggers_
Definition wiegand.h:48
void set_d0_pin(InternalGPIOPin *pin)
Definition wiegand.h:37
WiegandStore store_
Definition wiegand.h:46
float get_setup_priority() const override
Definition wiegand.h:32
void register_key_trigger(WiegandKeyTrigger *trig)
Definition wiegand.h:41
void set_d1_pin(InternalGPIOPin *pin)
Definition wiegand.h:38
constexpr float HARDWARE
For components that deal with hardware and are very important like GPIO switch.
Definition component.h:41
static void uint32_t
ISRInternalGPIOPin d0
Definition wiegand.h:13
static void d0_gpio_intr(WiegandStore *arg)
Definition wiegand.cpp:11
static void d1_gpio_intr(WiegandStore *arg)
Definition wiegand.cpp:20
ISRInternalGPIOPin d1
Definition wiegand.h:14
volatile uint64_t value
Definition wiegand.h:15
volatile uint8_t count
Definition wiegand.h:18
volatile uint32_t last_bit_time
Definition wiegand.h:16