Fixed Lifetimes in Events & Tasks

This commit is contained in:
Cameron 2023-07-05 09:20:56 +02:00
parent 93caf97a04
commit 2c5146f19f
3 changed files with 10 additions and 10 deletions

View File

@ -96,7 +96,7 @@ impl<'d, G: Group> PpiGroup<'d, G> {
/// Get a reference to the "enable all" task. /// Get a reference to the "enable all" task.
/// ///
/// When triggered, it will enable all the channels in this group. /// When triggered, it will enable all the channels in this group.
pub fn task_enable_all(&self) -> Task { pub fn task_enable_all<'s: 'd>(&'d self) -> Task<'s> {
let n = self.g.number(); let n = self.g.number();
Task::from_reg(&regs().tasks_chg[n].en) Task::from_reg(&regs().tasks_chg[n].en)
} }
@ -104,7 +104,7 @@ impl<'d, G: Group> PpiGroup<'d, G> {
/// Get a reference to the "disable all" task. /// Get a reference to the "disable all" task.
/// ///
/// When triggered, it will disable all the channels in this group. /// When triggered, it will disable all the channels in this group.
pub fn task_disable_all(&self) -> Task { pub fn task_disable_all<'s: 'd>(&self) -> Task<'s> {
let n = self.g.number(); let n = self.g.number();
Task::from_reg(&regs().tasks_chg[n].dis) Task::from_reg(&regs().tasks_chg[n].dis)
} }

View File

@ -34,7 +34,7 @@ impl<'d, C: StaticChannel> Ppi<'d, C, 0, 1> {
impl<'d, C: ConfigurableChannel> Ppi<'d, C, 1, 1> { impl<'d, C: ConfigurableChannel> Ppi<'d, C, 1, 1> {
/// Configure PPI channel to trigger `task` on `event`. /// Configure PPI channel to trigger `task` on `event`.
pub fn new_one_to_one(ch: impl Peripheral<P = C> + 'd, event: Event, task: Task) -> Self { pub fn new_one_to_one(ch: impl Peripheral<P = C> + 'd, event: Event<'d>, task: Task<'d>) -> Self {
into_ref!(ch); into_ref!(ch);
let r = regs(); let r = regs();
@ -49,7 +49,7 @@ impl<'d, C: ConfigurableChannel> Ppi<'d, C, 1, 1> {
#[cfg(not(feature = "nrf51"))] // Not for nrf51 because of the fork task #[cfg(not(feature = "nrf51"))] // Not for nrf51 because of the fork task
impl<'d, C: ConfigurableChannel> Ppi<'d, C, 1, 2> { impl<'d, C: ConfigurableChannel> Ppi<'d, C, 1, 2> {
/// Configure PPI channel to trigger both `task1` and `task2` on `event`. /// Configure PPI channel to trigger both `task1` and `task2` on `event`.
pub fn new_one_to_two(ch: impl Peripheral<P = C> + 'd, event: Event, task1: Task, task2: Task) -> Self { pub fn new_one_to_two(ch: impl Peripheral<P = C> + 'd, event: Event<'d>, task1: Task<'d>, task2: Task<'d>) -> Self {
into_ref!(ch); into_ref!(ch);
let r = regs(); let r = regs();

View File

@ -168,21 +168,21 @@ impl<'d, T: Instance> Timer<'d, T> {
/// Returns the START task, for use with PPI. /// Returns the START task, for use with PPI.
/// ///
/// When triggered, this task starts the timer. /// When triggered, this task starts the timer.
pub fn task_start(&self) -> Task { pub fn task_start<'s: 'd>(&self) -> Task<'s> {
Task::from_reg(&T::regs().tasks_start) Task::from_reg(&T::regs().tasks_start)
} }
/// Returns the STOP task, for use with PPI. /// Returns the STOP task, for use with PPI.
/// ///
/// When triggered, this task stops the timer. /// When triggered, this task stops the timer.
pub fn task_stop(&self) -> Task { pub fn task_stop<'s: 'd>(&self) -> Task<'s> {
Task::from_reg(&T::regs().tasks_stop) Task::from_reg(&T::regs().tasks_stop)
} }
/// Returns the CLEAR task, for use with PPI. /// Returns the CLEAR task, for use with PPI.
/// ///
/// When triggered, this task resets the timer's counter to 0. /// When triggered, this task resets the timer's counter to 0.
pub fn task_clear(&self) -> Task { pub fn task_clear<'s: 'd>(&self) -> Task<'s> {
Task::from_reg(&T::regs().tasks_clear) Task::from_reg(&T::regs().tasks_clear)
} }
@ -190,7 +190,7 @@ impl<'d, T: Instance> Timer<'d, T> {
/// ///
/// When triggered, this task increments the timer's counter by 1. /// When triggered, this task increments the timer's counter by 1.
/// Only works in counter mode. /// Only works in counter mode.
pub fn task_count(&self) -> Task { pub fn task_count<'s: 'd>(&self) -> Task<'s> {
Task::from_reg(&T::regs().tasks_count) Task::from_reg(&T::regs().tasks_count)
} }
@ -258,14 +258,14 @@ impl<'d, T: Instance> Cc<'d, T> {
/// Returns this CC register's CAPTURE task, for use with PPI. /// Returns this CC register's CAPTURE task, for use with PPI.
/// ///
/// When triggered, this task will capture the current value of the timer's counter in this register. /// When triggered, this task will capture the current value of the timer's counter in this register.
pub fn task_capture(&self) -> Task { pub fn task_capture<'s: 'd>(&self) -> Task<'s> {
Task::from_reg(&T::regs().tasks_capture) Task::from_reg(&T::regs().tasks_capture)
} }
/// Returns this CC register's COMPARE event, for use with PPI. /// Returns this CC register's COMPARE event, for use with PPI.
/// ///
/// This event will fire when the timer's counter reaches the value in this CC register. /// This event will fire when the timer's counter reaches the value in this CC register.
pub fn event_compare(&self) -> Event { pub fn event_compare<'s: 'd>(&self) -> Event<'s> {
Event::from_reg(&T::regs().events_compare[self.n]) Event::from_reg(&T::regs().events_compare[self.n])
} }