Struct capsules_core::virtualizers::virtual_alarm::VirtualMuxAlarm
source · pub struct VirtualMuxAlarm<'a, A: Alarm<'a>> { /* private fields */ }
Expand description
An object to multiplex multiple “virtual” alarms over a single underlying alarm. A
VirtualMuxAlarm
is a node in a linked list of alarms that share the same underlying alarm.
Implementations§
source§impl<'a, A: Alarm<'a>> VirtualMuxAlarm<'a, A>
impl<'a, A: Alarm<'a>> VirtualMuxAlarm<'a, A>
Trait Implementations§
source§impl<'a, A: Alarm<'a>> Alarm<'a> for VirtualMuxAlarm<'a, A>
impl<'a, A: Alarm<'a>> Alarm<'a> for VirtualMuxAlarm<'a, A>
source§fn set_alarm_client(&self, client: &'a dyn AlarmClient)
fn set_alarm_client(&self, client: &'a dyn AlarmClient)
Specify the callback for when the counter reaches the alarm
value. If there was a previously installed callback this call
replaces it.
source§fn disarm(&self) -> Result<(), ErrorCode>
fn disarm(&self) -> Result<(), ErrorCode>
Disable the alarm and stop it from firing in the future.
Valid
Result<(), ErrorCode>
codes are: Read moresource§fn is_armed(&self) -> bool
fn is_armed(&self) -> bool
Returns whether the alarm is currently armed. Note that this
does not reliably indicate whether there will be a future
callback: it is possible that the alarm has triggered (and
disarmed) and a callback is pending and has not been called yet.
In this case it possible for
is_armed
to return false yet to
receive a callback.source§fn set_alarm(&self, reference: Self::Ticks, dt: Self::Ticks)
fn set_alarm(&self, reference: Self::Ticks, dt: Self::Ticks)
Specify when the callback should be called and enable it. The
callback will be enqueued when
Time::now() == reference + dt
. The
callback itself may not run exactly at this time, due to delays.
However, it it assured to execute after reference + dt
: it can
be delayed but will never fire early. The method takes reference
and dt
rather than a single value denoting the counter value so it
can distinguish between alarms which have very recently already
passed and those in the far far future (see #1651).source§fn get_alarm(&self) -> Self::Ticks
fn get_alarm(&self) -> Self::Ticks
Return the current alarm value. This is undefined at boot and
otherwise returns
now + dt
from the last call to set_alarm
.source§fn minimum_dt(&self) -> Self::Ticks
fn minimum_dt(&self) -> Self::Ticks
Return the minimum dt value that is supported. Any dt smaller than
this will automatically be increased to this minimum value.
source§impl<'a, A: Alarm<'a>> AlarmClient for VirtualMuxAlarm<'a, A>
impl<'a, A: Alarm<'a>> AlarmClient for VirtualMuxAlarm<'a, A>
source§impl<'a, A: Alarm<'a>> ListNode<'a, VirtualMuxAlarm<'a, A>> for VirtualMuxAlarm<'a, A>
impl<'a, A: Alarm<'a>> ListNode<'a, VirtualMuxAlarm<'a, A>> for VirtualMuxAlarm<'a, A>
fn next(&self) -> &'a ListLink<'_, VirtualMuxAlarm<'a, A>>
source§impl<'a, A: Alarm<'a>> Time for VirtualMuxAlarm<'a, A>
impl<'a, A: Alarm<'a>> Time for VirtualMuxAlarm<'a, A>
Auto Trait Implementations§
impl<'a, A> !Freeze for VirtualMuxAlarm<'a, A>
impl<'a, A> !RefUnwindSafe for VirtualMuxAlarm<'a, A>
impl<'a, A> !Send for VirtualMuxAlarm<'a, A>
impl<'a, A> !Sync for VirtualMuxAlarm<'a, A>
impl<'a, A> Unpin for VirtualMuxAlarm<'a, A>
impl<'a, A> !UnwindSafe for VirtualMuxAlarm<'a, A>
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> ConvertTicks<<T as Time>::Ticks> for T
impl<T> ConvertTicks<<T as Time>::Ticks> for T
source§fn ticks_from_seconds(&self, s: u32) -> <T as Time>::Ticks
fn ticks_from_seconds(&self, s: u32) -> <T as Time>::Ticks
Returns the number of ticks in the provided number of seconds,
rounding down any fractions. If the value overflows Ticks it
returns
Ticks::max_value()
.source§fn ticks_from_ms(&self, ms: u32) -> <T as Time>::Ticks
fn ticks_from_ms(&self, ms: u32) -> <T as Time>::Ticks
Returns the number of ticks in the provided number of milliseconds,
rounding down any fractions. If the value overflows Ticks it
returns
Ticks::max_value()
.source§fn ticks_from_us(&self, us: u32) -> <T as Time>::Ticks
fn ticks_from_us(&self, us: u32) -> <T as Time>::Ticks
Returns the number of ticks in the provided number of microseconds,
rounding down any fractions. If the value overflows Ticks it
returns
Ticks::max_value()
.source§fn ticks_to_seconds(&self, tick: <T as Time>::Ticks) -> u32
fn ticks_to_seconds(&self, tick: <T as Time>::Ticks) -> u32
Returns the number of seconds in the provided number of ticks,
rounding down any fractions. If the value overflows u32,
u32::MAX
is returned,