Struct riot_wrappers::ztimer::periodic::Timer
source · pub struct Timer<H: Handler, const HZ: u32> { /* private fields */ }
riot_module_ztimer
and riot_module_ztimer_periodic
only.Expand description
A periodic timer
This periodic timer is built on a clock and configured with a frequency and tick handler.
It contains the handler and a ztimer_periodic_t
C struct that then contains the actual timer
as well as a reference to the clock. Being self-referential by nature, it is mainly used in
pinned form. It can be started and stopped, and stops automatically when dropped.
Implementations§
source§impl<H: Handler, const HZ: u32> Timer<H, HZ>
impl<H: Handler, const HZ: u32> Timer<H, HZ>
pub fn new(clock: Clock<HZ>, handler: H, ticks: Ticks<HZ>) -> Self
pub fn stop(&mut self)
sourcepub fn alter<R, F: FnOnce(&mut H) -> R>(self: &mut Pin<&mut Self>, f: F) -> R
pub fn alter<R, F: FnOnce(&mut H) -> R>(self: &mut Pin<&mut Self>, f: F) -> R
Obtain a mutable reference to the handler.
This can be used, for example, to feed data into a handler that is sent out whenever the timer triggers.
This is relatively invasive to the system as it creates a critical section (ie. possibly delaying the execution of the next timer, or even other interrupts). In many cases, the preferable way to send data to the timer is to use a lock-free data structure.
source§impl<H: Handler + 'static, const HZ: u32> Timer<H, HZ>
impl<H: Handler + 'static, const HZ: u32> Timer<H, HZ>
sourcepub fn start(self: &mut Pin<&mut Self>)
pub fn start(self: &mut Pin<&mut Self>)
Start the timer, calling the handler at every interval.
This requires a Handler + 'static
because it relies on the timer’s drop to stop the
process, and only a static handler can still safely be called if that drop never happens.
(For non-static handlers, a scoped version might be introduced later).