hil:: time:: Alarm
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
fn set_alarm_client(&'a 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.
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
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).
Return the current alarm value. This is undefined at boot and
now + dt from the last call to
fn disarm(&self) -> ReturnCode
Disable the alarm and stop it from firing in the future.
ReturnCode codes are:
ReturnCode::SUCCESSthe alarm has been disarmed and will not invoke the callback in the future
ReturnCode::FAILthe alarm could not be disarmed and will invoke the callback in the future
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.
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.