pub struct MonotonicTimeProvider<F>where
F: Fn() -> Microseconds,{ /* private fields */ }Expand description
A monotonic time provider for no_std environments.
This implementation uses a user-provided timer function to get the current time. It’s designed to work with hardware timers or other monotonic time sources.
Implementations§
Source§impl<F> MonotonicTimeProvider<F>where
F: Fn() -> Microseconds,
impl<F> MonotonicTimeProvider<F>where
F: Fn() -> Microseconds,
Sourcepub fn new(timer_fn: F) -> Self
pub fn new(timer_fn: F) -> Self
Create a new monotonic time provider with the given timer function.
The timer function should return the current time in microseconds from a monotonic source (e.g., hardware timer, system tick counter).
§Example
use embedded_charts::time::MonotonicTimeProvider;
// Example with a hypothetical hardware timer
fn hardware_timer_get_us() -> u64 {
// Mock implementation - in real use, this would read from hardware
1000
}
let timer = MonotonicTimeProvider::new(|| {
// Get microseconds from hardware timer
hardware_timer_get_us()
});Sourcepub fn from_ticks<G>(
get_ticks: G,
ticks_per_second: u32,
) -> MonotonicTimeProvider<impl Fn() -> Microseconds>
pub fn from_ticks<G>( get_ticks: G, ticks_per_second: u32, ) -> MonotonicTimeProvider<impl Fn() -> Microseconds>
Create a new monotonic time provider with a tick-based timer.
This is useful when you have a timer that increments at a known frequency.
§Arguments
get_ticks- Function that returns the current tick countticks_per_second- Number of ticks per second (timer frequency)
§Example
use embedded_charts::time::{MonotonicTimeProvider, Microseconds};
// Mock hardware timer function
fn hardware_timer_get_ticks() -> u64 {
// Mock implementation - in real use, this would read from hardware
1000
}
// Example with a 1MHz timer (1,000,000 ticks per second)
// let get_ticks = || hardware_timer_get_ticks();
// let timer = MonotonicTimeProvider::from_ticks(get_ticks, 1_000_000);
// Use the timer to get current time
// let current_time = timer.now();Trait Implementations§
Source§impl<F> Debug for MonotonicTimeProvider<F>
impl<F> Debug for MonotonicTimeProvider<F>
Source§impl<F> TimeProvider for MonotonicTimeProvider<F>where
F: Fn() -> Microseconds,
impl<F> TimeProvider for MonotonicTimeProvider<F>where
F: Fn() -> Microseconds,
Source§fn current_time_ms(&self) -> Milliseconds
fn current_time_ms(&self) -> Milliseconds
Get the current time in milliseconds since some reference point. Read more
Source§fn current_time_us(&self) -> Microseconds
fn current_time_us(&self) -> Microseconds
Get the current time in microseconds since some reference point. Read more
Source§fn last_time_ms(&self) -> Milliseconds
fn last_time_ms(&self) -> Milliseconds
Get the last recorded time in milliseconds. Read more
Source§fn last_time_us(&self) -> Microseconds
fn last_time_us(&self) -> Microseconds
Get the last recorded time in microseconds. Read more
Source§fn update_last_time_ms(&mut self, time: Milliseconds)
fn update_last_time_ms(&mut self, time: Milliseconds)
Update the last recorded time in milliseconds. Read more
Source§fn update_last_time_us(&mut self, time: Microseconds)
fn update_last_time_us(&mut self, time: Microseconds)
Update the last recorded time in microseconds. Read more
Source§fn elapsed_ms(&mut self) -> Milliseconds
fn elapsed_ms(&mut self) -> Milliseconds
Calculate elapsed time in milliseconds since the last call. Read more
Source§fn elapsed_us(&mut self) -> Microseconds
fn elapsed_us(&mut self) -> Microseconds
Calculate elapsed time in microseconds since the last call. Read more
Auto Trait Implementations§
impl<F> Freeze for MonotonicTimeProvider<F>where
F: Freeze,
impl<F> RefUnwindSafe for MonotonicTimeProvider<F>where
F: RefUnwindSafe,
impl<F> Send for MonotonicTimeProvider<F>where
F: Send,
impl<F> Sync for MonotonicTimeProvider<F>where
F: Sync,
impl<F> Unpin for MonotonicTimeProvider<F>where
F: Unpin,
impl<F> UnwindSafe for MonotonicTimeProvider<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
Source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
Source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
Casts the value.
Source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
Source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
Source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
Casts the value.
Source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
Source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
Source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> UnwrappedAs for T
impl<T> UnwrappedAs for T
Source§fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
fn unwrapped_as<Dst>(self) -> Dstwhere
T: UnwrappedCast<Dst>,
Casts the value.
Source§impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
impl<Src, Dst> UnwrappedCastFrom<Src> for Dstwhere
Src: UnwrappedCast<Dst>,
Source§fn unwrapped_cast_from(src: Src) -> Dst
fn unwrapped_cast_from(src: Src) -> Dst
Casts the value.
Source§impl<T> WrappingAs for T
impl<T> WrappingAs for T
Source§fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
fn wrapping_as<Dst>(self) -> Dstwhere
T: WrappingCast<Dst>,
Casts the value.
Source§impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
impl<Src, Dst> WrappingCastFrom<Src> for Dstwhere
Src: WrappingCast<Dst>,
Source§fn wrapping_cast_from(src: Src) -> Dst
fn wrapping_cast_from(src: Src) -> Dst
Casts the value.