pub trait Alarm<'a>: Time {
// Required methods
fn set_alarm_client(&self, client: &'a dyn AlarmClient);
fn set_alarm(&self, reference: Self::Ticks, dt: Self::Ticks);
fn get_alarm(&self) -> Self::Ticks;
fn disarm(&self) -> Result<(), ErrorCode>;
fn is_armed(&self) -> bool;
fn minimum_dt(&self) -> Self::Ticks;
}Expand description
Interface for receiving notification when a particular time
(Counter value) is reached.
Clients use the AlarmClient trait to
signal when the counter has reached a pre-specified value set in
set_alarm. Alarms are intended for
low-level time needs that require precision (i.e., firing on a
precise clock tick). Software that needs more functionality but
can tolerate some jitter should use the Timer trait instead.
Required Methods§
Sourcefn 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.
Sourcefn 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).
Sourcefn 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.
Sourcefn 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:
Ok(())the alarm has been disarmed and will not invoke the callback in the futureErr(ErrorCode::FAIL)the alarm could not be disarmed and will invoke the callback in the future
Sourcefn 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.
Sourcefn 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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".