21uint64_t ICACHE_RAM_ATTR micros64();
39 virtual void add() = 0;
189 const uint8_t pin_number;
193 static bool isr_service_installed;
194 static void isr(
void* arg);
208 pin_number(pin_number),
211 gpio_int_type_t intr_type;
214 intr_type = GPIO_INTR_POSEDGE;
217 intr_type = GPIO_INTR_NEGEDGE;
220 intr_type = GPIO_INTR_ANYEDGE;
223 intr_type = GPIO_INTR_DISABLE;
227 gpio_set_intr_type((gpio_num_t)pin_number, intr_type);
229 if (!isr_service_installed) {
230 gpio_install_isr_service(ESP_INTR_FLAG_LOWMED);
231 isr_service_installed =
true;
325 std::priority_queue<TimedReaction*, std::vector<TimedReaction*>,
328 std::forward_list<UntimedReaction*> untimed_list;
329 std::forward_list<ISRReaction*> isr_reaction_list;
330 std::forward_list<ISRReaction*> isr_pending_list;
Reaction that is triggered after a certain time delay.
DelayReaction(const uint32_t delay, const react_callback callback)
Construct a new Delay Reaction object.
Reaction that is triggered on an input pin change.
ISRReaction(uint8_t pin_number, int mode, const react_callback callback)
Construct a new ISRReaction object.
Main class of a ReactESP program.
StreamReaction * onAvailable(Stream &stream, const react_callback cb)
Create a new StreamReaction.
DelayReaction * onDelayMicros(const uint64_t t, const react_callback cb)
Create a new DelayReaction.
DelayReaction * onDelay(const uint32_t t, const react_callback cb)
Create a new DelayReaction.
static ReactESP * app
Static singleton reference to the instantiated ReactESP object.
RepeatReaction * onRepeat(const uint32_t t, const react_callback cb)
Create a new RepeatReaction.
ReactESP()
Construct a new ReactESP object.
RepeatReaction * onRepeatMicros(const uint64_t t, const react_callback cb)
Create a new RepeatReaction.
TickReaction * onTick(const react_callback cb)
Create a new TickReaction.
ISRReaction * onInterrupt(const uint8_t pin_number, int mode, const react_callback cb)
Create a new ISRReaction (interrupt reaction)
Reactions are code to be called when a given condition is fulfilled.
const react_callback callback
Reaction(react_callback callback)
Construct a new Reaction object.
Reaction that is triggered repeatedly.
RepeatReaction(const uint32_t interval, const react_callback callback)
Construct a new Repeat Reaction object.
RepeatReaction(const uint64_t interval, const react_callback callback)
Construct a new Repeat Reaction object.
Reaction that is triggered when there is input available at the given Arduino Stream.
StreamReaction(Stream &stream, const react_callback callback)
Construct a new Stream Reaction object.
Reaction that is triggered unconditionally at each execution loop.
TickReaction(const react_callback callback)
Construct a new Tick Reaction object.
TimedReactions are called based on elapsing of time.
TimedReaction(const uint32_t interval, const react_callback callback)
Construct a new Timed Reaction object.
bool operator<(const TimedReaction &other)
Return the current time since the device restart in microseconds.
uint32_t getTriggerTime()
TimedReaction(const uint64_t interval, const react_callback callback)
Construct a new Timed Reaction object.
uint64_t getTriggerTimeMicros()
uint64_t last_trigger_time
Reactions that are triggered based on something else than time.
virtual ~UntimedReaction()
UntimedReaction(const react_callback callback)
std::function< void()> react_callback
void(* isr_react_callback)(void *)
bool operator()(TimedReaction *a, TimedReaction *b)