Trait Monotonic

Source
pub trait Monotonic {
    type Instant: Copy + Ord + Sub;

    // Required methods
    fn ratio() -> Fraction;
    fn now() -> Self::Instant;
    unsafe fn reset();
    fn zero() -> Self::Instant;
}
Expand description

A monotonic clock / counter

Required Associated Types§

Source

type Instant: Copy + Ord + Sub

A measurement of this clock, use CYCCNT as a reference implementation for Instant. Note that the Instant must be a signed value such as i32.

Required Methods§

Source

fn ratio() -> Fraction

The ratio between the system timer (SysTick) frequency and this clock frequency, i.e. Monotonic clock * Fraction = System clock

The ratio must be expressed in reduced Fraction form to prevent overflows. That is 2 / 3 instead of 4 / 6

Source

fn now() -> Self::Instant

Returns the current time

§Correctness

This function is allowed to return nonsensical values if called before reset is invoked by the runtime. Therefore application authors should not call this function during the #[init] phase.

Source

unsafe fn reset()

Resets the counter to zero

§Safety

This function will be called exactly once by the RTFM runtime after #[init] returns and before tasks can start; this is also the case in multi-core applications. User code must never call this function.

Source

fn zero() -> Self::Instant

A Self::Instant that represents a count of zero

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§