11 #ifndef _SMING_CORE_Timer_H_ 12 #define _SMING_CORE_Timer_H_ 15 #include "../SmingCore/Interrupts.h" 16 #include "../SmingCore/Delegate.h" 17 #include "../Wiring/WiringFrameworkDependencies.h" 25 #define MAX_OS_TIMER_INTERVAL_US 268435000 49 Timer& IRAM_ATTR
initializeMs(uint32_t milliseconds, InterruptCallback callback = NULL);
56 Timer& IRAM_ATTR
initializeUs(uint32_t microseconds, InterruptCallback callback = NULL);
75 void IRAM_ATTR
start(
bool repeating =
true);
85 void IRAM_ATTR
stop();
110 void IRAM_ATTR
setIntervalUs(uint64_t microseconds = 1000000);
115 void IRAM_ATTR
setIntervalMs(uint32_t milliseconds = 1000000);
121 void IRAM_ATTR
setCallback(InterruptCallback interrupt = NULL);
132 static void IRAM_ATTR processing(
void *arg);
137 uint64_t interval = 0;
138 InterruptCallback callback =
nullptr;
140 bool repeating =
false;
141 bool started =
false;
145 uint16_t long_intvl_cntr = 0;
146 uint16_t long_intvl_cntr_lim = 0;
Timer &IRAM_ATTR initializeMs(uint32_t milliseconds, InterruptCallback callback=NULL)
Initialise millisecond timer.
void IRAM_ATTR start(bool repeating=true)
Start timer running.
void IRAM_ATTR setIntervalUs(uint64_t microseconds=1000000)
Set timer interval.
uint64_t getIntervalUs()
Get timer interval.
void __forceinline IRAM_ATTR startOnce()
Start one-shot timer running.
Definition: Timer.h:80
void IRAM_ATTR restart()
Restarts timer.
Delegate< void()> TimerDelegate
Delegate callback type for timer trigger.
Definition: HardwareTimer.h:26
uint32_t getIntervalMs()
Get timer interval.
Timer &IRAM_ATTR initializeUs(uint32_t microseconds, InterruptCallback callback=NULL)
Initialise microsecond timer.
void IRAM_ATTR stop()
Stop timer.
void IRAM_ATTR setIntervalMs(uint32_t milliseconds=1000000)
Set timer interval.
void IRAM_ATTR setCallback(InterruptCallback interrupt=NULL)
Set timer trigger function.
bool isStarted()
Check if timer is started.