pub struct LiteXAlarm<'t, 'c, R: LiteXSoCRegisterConfiguration, F: Frequency> { /* private fields */ }
Expand description
LiteX alarm implementation, based on LiteXTimer
and
LiteXTimerUptime
LiteX does not have an Alarm
compatible hardware peripheral,
so an Alarm
is emulated using a repeatedly set LiteXTimer
,
comparing the current time against the LiteXTimerUptime
(which
is also exposed as Time::now
.
Implementations§
Source§impl<'t, 'c, R: LiteXSoCRegisterConfiguration, F: Frequency> LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R: LiteXSoCRegisterConfiguration, F: Frequency> LiteXAlarm<'t, 'c, R, F>
pub fn new( uptime: &'t LiteXTimerUptime<'t, R, F>, timer: &'t LiteXTimer<'t, R, F>, ) -> LiteXAlarm<'t, 'c, R, F>
Sourcepub fn initialize(&'t self)
pub fn initialize(&'t self)
Initialize the LiteXAlarm
This will register itself as a client for the underlying
LiteXTimer
.
Trait Implementations§
Source§impl<'c, R: LiteXSoCRegisterConfiguration, F: Frequency> Alarm<'c> for LiteXAlarm<'_, 'c, R, F>
impl<'c, R: LiteXSoCRegisterConfiguration, F: Frequency> Alarm<'c> for LiteXAlarm<'_, 'c, R, F>
Source§fn set_alarm_client(&self, client: &'c dyn AlarmClient)
fn set_alarm_client(&self, client: &'c 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 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 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 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 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<'t, R: LiteXSoCRegisterConfiguration, F: Frequency> Time for LiteXAlarm<'t, '_, R, F>
impl<'t, R: LiteXSoCRegisterConfiguration, F: Frequency> Time for LiteXAlarm<'t, '_, R, F>
Source§impl<R: LiteXSoCRegisterConfiguration, F: Frequency> TimerClient for LiteXAlarm<'_, '_, R, F>
impl<R: LiteXSoCRegisterConfiguration, F: Frequency> TimerClient for LiteXAlarm<'_, '_, R, F>
Auto Trait Implementations§
impl<'t, 'c, R, F> !Freeze for LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R, F> !RefUnwindSafe for LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R, F> !Send for LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R, F> !Sync for LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R, F> Unpin for LiteXAlarm<'t, 'c, R, F>
impl<'t, 'c, R, F> !UnwindSafe for LiteXAlarm<'t, 'c, R, F>
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