3#include <freertos/semphr.h>
81 if (0 != stream.available()) {
89bool ISREvent::isr_service_installed =
false;
91void ISREvent::isr(
void* this_ptr) {
92 auto* this_ =
static_cast<ISREvent*
>(this_ptr);
100 gpio_isr_handler_add((gpio_num_t)pin_number, ISREvent::isr, (
void*)
this);
101#elif defined(ESP8266)
102 attachInterrupt(digitalPinToInterrupt(pin_number),
callback, mode);
DelayEvent(uint32_t delay, react_callback callback)
Construct a new Delay Event object.
void tick(EventLoop *event_loop) override
const react_callback callback
Asynchronous event loop supporting timed (repeating and non-repeating), interrupt and stream events.
void remove(TimedEvent *event)
SemaphoreHandle_t untimed_list_mutex_
std::vector< UntimedEvent * > untimed_list
SemaphoreHandle_t timed_queue_mutex_
TimedEventSet timed_events_
SemaphoreHandle_t isr_event_list_mutex_
std::vector< ISREvent * > isr_event_list
Event that is triggered on an input pin change.
void remove(EventLoop *event_loop) override
void add(EventLoop *event_loop) override
void tick(EventLoop *event_loop) override
void tick(EventLoop *event_loop) override
void tick(EventLoop *event_loop) override
virtual void add(EventLoop *event_loop) override
virtual void remove(EventLoop *event_loop) override
bool operator<(const TimedEvent &other) const
uint64_t last_trigger_time
TimedEvent(uint32_t interval, react_callback callback)
Construct a new Timed Event object.
void add(EventLoop *event_loop) override
void remove(EventLoop *event_loop) override
std::function< void()> react_callback
uint64_t ICACHE_RAM_ATTR micros64()
Return the current time since the device restart in microseconds.