diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-09-27 21:14:03 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2025-09-28 21:05:37 +0200 |
| commit | 34ed1a1f05d909cba7ce3198b434126d47faf264 (patch) | |
| tree | f2650019ada856b671f5509696123390bae5af1f | |
| parent | 65a80f698e9087f09689a616a9f383c32b59ede8 (diff) | |
nrf/egu: erase instance generics
| -rw-r--r-- | embassy-nrf/src/egu.rs | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/embassy-nrf/src/egu.rs b/embassy-nrf/src/egu.rs index 028396c7c..f7372fca1 100644 --- a/embassy-nrf/src/egu.rs +++ b/embassy-nrf/src/egu.rs | |||
| @@ -13,21 +13,26 @@ use crate::ppi::{Event, Task}; | |||
| 13 | use crate::{interrupt, pac, Peri}; | 13 | use crate::{interrupt, pac, Peri}; |
| 14 | 14 | ||
| 15 | /// An instance of the EGU. | 15 | /// An instance of the EGU. |
| 16 | pub struct Egu<'d, T: Instance> { | 16 | pub struct Egu<'d> { |
| 17 | _p: Peri<'d, T>, | 17 | r: pac::egu::Egu, |
| 18 | _phantom: PhantomData<&'d ()>, | ||
| 18 | } | 19 | } |
| 19 | 20 | ||
| 20 | impl<'d, T: Instance> Egu<'d, T> { | 21 | impl<'d> Egu<'d> { |
| 21 | /// Create a new EGU instance. | 22 | /// Create a new EGU instance. |
| 22 | pub fn new(_p: Peri<'d, T>) -> Self { | 23 | pub fn new<T: Instance>(_p: Peri<'d, T>) -> Self { |
| 23 | Self { _p } | 24 | Self { |
| 25 | r: T::regs(), | ||
| 26 | _phantom: PhantomData, | ||
| 27 | } | ||
| 24 | } | 28 | } |
| 25 | 29 | ||
| 26 | /// Get a handle to a trigger for the EGU. | 30 | /// Get a handle to a trigger for the EGU. |
| 27 | pub fn trigger(&mut self, number: TriggerNumber) -> Trigger<'d, T> { | 31 | pub fn trigger(&mut self, number: TriggerNumber) -> Trigger<'d> { |
| 28 | Trigger { | 32 | Trigger { |
| 29 | number, | 33 | number, |
| 30 | _p: PhantomData, | 34 | r: self.r, |
| 35 | _phantom: PhantomData, | ||
| 31 | } | 36 | } |
| 32 | } | 37 | } |
| 33 | } | 38 | } |
| @@ -57,36 +62,37 @@ macro_rules! impl_egu { | |||
| 57 | } | 62 | } |
| 58 | 63 | ||
| 59 | /// Represents a trigger within the EGU. | 64 | /// Represents a trigger within the EGU. |
| 60 | pub struct Trigger<'d, T: Instance> { | 65 | pub struct Trigger<'d> { |
| 61 | number: TriggerNumber, | 66 | number: TriggerNumber, |
| 62 | _p: PhantomData<&'d T>, | 67 | r: pac::egu::Egu, |
| 68 | _phantom: PhantomData<&'d ()>, | ||
| 63 | } | 69 | } |
| 64 | 70 | ||
| 65 | impl<'d, T: Instance> Trigger<'d, T> { | 71 | impl<'d> Trigger<'d> { |
| 66 | /// Get task for this trigger to use with PPI. | 72 | /// Get task for this trigger to use with PPI. |
| 67 | pub fn task(&self) -> Task<'d> { | 73 | pub fn task(&self) -> Task<'d> { |
| 68 | let nr = self.number as usize; | 74 | let nr = self.number as usize; |
| 69 | let regs = T::regs(); | 75 | Task::from_reg(self.r.tasks_trigger(nr)) |
| 70 | Task::from_reg(regs.tasks_trigger(nr)) | ||
| 71 | } | 76 | } |
| 72 | 77 | ||
| 73 | /// Get event for this trigger to use with PPI. | 78 | /// Get event for this trigger to use with PPI. |
| 74 | pub fn event(&self) -> Event<'d> { | 79 | pub fn event(&self) -> Event<'d> { |
| 75 | let nr = self.number as usize; | 80 | let nr = self.number as usize; |
| 76 | let regs = T::regs(); | 81 | Event::from_reg(self.r.events_triggered(nr)) |
| 77 | Event::from_reg(regs.events_triggered(nr)) | ||
| 78 | } | 82 | } |
| 79 | 83 | ||
| 80 | /// Enable interrupts for this trigger | 84 | /// Enable interrupts for this trigger |
| 81 | pub fn enable_interrupt(&mut self) { | 85 | pub fn enable_interrupt(&mut self) { |
| 82 | let regs = T::regs(); | 86 | self.r |
| 83 | regs.intenset().modify(|w| w.set_triggered(self.number as usize, true)); | 87 | .intenset() |
| 88 | .modify(|w| w.set_triggered(self.number as usize, true)); | ||
| 84 | } | 89 | } |
| 85 | 90 | ||
| 86 | /// Enable interrupts for this trigger | 91 | /// Enable interrupts for this trigger |
| 87 | pub fn disable_interrupt(&mut self) { | 92 | pub fn disable_interrupt(&mut self) { |
| 88 | let regs = T::regs(); | 93 | self.r |
| 89 | regs.intenset().modify(|w| w.set_triggered(self.number as usize, false)); | 94 | .intenset() |
| 95 | .modify(|w| w.set_triggered(self.number as usize, false)); | ||
| 90 | } | 96 | } |
| 91 | } | 97 | } |
| 92 | 98 | ||
