pub struct LiteXAlarm<'t, 'c, R, F>where
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, F> LiteXAlarm<'t, 'c, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
impl<'t, 'c, R, F> LiteXAlarm<'t, 'c, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
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, F> Alarm<'c> for LiteXAlarm<'_, 'c, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
impl<'c, R, F> Alarm<'c> for LiteXAlarm<'_, 'c, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
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: <LiteXAlarm<'_, 'c, R, F> as Time>::Ticks,
dt: <LiteXAlarm<'_, 'c, R, F> as Time>::Ticks,
)
fn set_alarm( &self, reference: <LiteXAlarm<'_, 'c, R, F> as Time>::Ticks, dt: <LiteXAlarm<'_, 'c, R, F> as Time>::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) -> <LiteXAlarm<'_, 'c, R, F> as Time>::Ticks
fn get_alarm(&self) -> <LiteXAlarm<'_, 'c, R, F> as Time>::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) -> <LiteXAlarm<'_, 'c, R, F> as Time>::Ticks
fn minimum_dt(&self) -> <LiteXAlarm<'_, 'c, R, F> as Time>::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, F> Time for LiteXAlarm<'t, '_, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
impl<'t, R, F> Time for LiteXAlarm<'t, '_, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
Source§impl<R, F> TimerClient for LiteXAlarm<'_, '_, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
impl<R, F> TimerClient for LiteXAlarm<'_, '_, R, F>where
R: LiteXSoCRegisterConfiguration,
F: Frequency,
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