aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-09-27 21:14:03 +0200
committerDario Nieuwenhuis <[email protected]>2025-09-28 21:05:37 +0200
commit34ed1a1f05d909cba7ce3198b434126d47faf264 (patch)
treef2650019ada856b671f5509696123390bae5af1f
parent65a80f698e9087f09689a616a9f383c32b59ede8 (diff)
nrf/egu: erase instance generics
-rw-r--r--embassy-nrf/src/egu.rs42
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};
13use crate::{interrupt, pac, Peri}; 13use crate::{interrupt, pac, Peri};
14 14
15/// An instance of the EGU. 15/// An instance of the EGU.
16pub struct Egu<'d, T: Instance> { 16pub struct Egu<'d> {
17 _p: Peri<'d, T>, 17 r: pac::egu::Egu,
18 _phantom: PhantomData<&'d ()>,
18} 19}
19 20
20impl<'d, T: Instance> Egu<'d, T> { 21impl<'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.
60pub struct Trigger<'d, T: Instance> { 65pub 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
65impl<'d, T: Instance> Trigger<'d, T> { 71impl<'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