|using||highres_duration = TickerDataClock::duration|
|duration type used for underlying high-res timer More...|
|using||highres_time_point = TickerDataClock::time_point|
|time_point type used for underlying high-res timer More...|
|using||highres_period = TickerDataClock::period|
|period of underlying high-res timer More...|
|Default constructor uses LPTICKER if available (so the timer will continue to run in deep sleep), else USTICKER. More...|
|void||set_wake_time (time_point at)|
|Get the interrupt number for the tick. More...|
|bool||wake_time_passed () const|
|Check whether the wake time has passed. More...|
|bool||wake_time_set () const|
|Check whether wake timer is active. More...|
|Cancel any pending wake. More...|
|Schedule an os tick to fire. More...|
|Acknowledge an os tick. More...|
|Prevent any more scheduled ticks from triggering. More...|
|bool||ticking () const|
|Check whether ticker is active. More...|
|std::chrono::duration< int, period >||unacknowledged_ticks () const|
|Check unacknowledged ticks. More...|
|time_point||get_tick () const|
|Get the current tick count. More...|
|Update and get the current tick count. More...|
|highres_duration||get_time_since_tick () const|
|Returns time since last tick. More...|
|highres_time_point||get_time () const|
|Get the time. More...|
The SysTimer class is used to provide timing for system suspension, and the idle loop in TICKLESS mode.
Template for speed for testing - only one instance will be used normally.
|using highres_duration = TickerDataClock::duration|
|using highres_period = TickerDataClock::period|
|using highres_time_point = TickerDataClock::time_point|
Default constructor uses LPTICKER if available (so the timer will continue to run in deep sleep), else USTICKER.
Acknowledge an os tick.
This will queue another os tick immediately if the os is running slow
Prevent any more scheduled ticks from triggering.
If called from OS tick context, there may be remaining unacknowledged ticks.
Cancel any pending wake.
Get the current tick count.
This count is updated by the ticker interrupt, if the ticker interrupt is running. It the ticker interrupt is not running, update_and_get_tick() should be used instead.
This indicates how many ticks have been generated by the tick interrupt. The os_timer should equal this number minus the number of unacknowledged ticks.
Get the time.
Returns the instantaneous precision time from underlying timer. This is a slow operation so should not be called from critical sections.
Returns time since last tick.
Get the interrupt number for the tick.
Schedules an interrupt to cause wake-up in time for the event. Interrupt may be arranged early to account for latency. If the time has already passed, no interrupt will be scheduled.
This is called from outside a critical section, as it is known to be a slow operation.
If the wake time is already set, this is a no-op. But that check is racy, which means wake_time_set() should be rechecked after taking a critical section.
As a side-effect, this clears the unacknowledged tick count - the caller is expected to use update_and_get_tick() after the suspend operation.
|at||Wake up tick|
Schedule an os tick to fire.
Ticks will be rescheduled automatically every tick until cancel_tick is called.
A tick will be fired immediately if there are any unacknowledged ticks.
|std::chrono::duration<int, period> unacknowledged_ticks||(||)||const|
Check unacknowledged ticks.
Returns the count of how many times the OS timer has been queued minus the number of times is has been acknowledged.
Update and get the current tick count.
This is a slow operation that reads the timer and adjusts for elapsed time. Can only be used when the ticker is not running, as there is no IRQ synchronization.
This clears the unacknowledged tick counter - the caller is assumed to update their timer based on this return.