aboutsummaryrefslogtreecommitdiff
path: root/embassy-rp
diff options
context:
space:
mode:
authorpennae <[email protected]>2023-05-04 11:14:21 +0200
committerpennae <[email protected]>2023-05-05 19:08:16 +0200
commited843b519b1cfdcc69f9022e3e14fbb9f62972bb (patch)
treeebc727308a70cf5566f37b3d6e9e5a47dd5ac119 /embassy-rp
parent09f078a1cc33781a01012ebc43e9d20cff53e2a3 (diff)
rp/pio: tighten variance of particle structs
all of these exist in 1:1 correspondence to their parent hal objects, so let's make all of their lifetimes invariant.
Diffstat (limited to 'embassy-rp')
-rw-r--r--embassy-rp/src/pio.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/embassy-rp/src/pio.rs b/embassy-rp/src/pio.rs
index c2c144c00..d2eedc72a 100644
--- a/embassy-rp/src/pio.rs
+++ b/embassy-rp/src/pio.rs
@@ -181,7 +181,7 @@ impl<'a, 'd, PIO: Instance, const SM: usize> Drop for FifoInFuture<'a, 'd, PIO,
181/// Future that waits for IRQ 181/// Future that waits for IRQ
182#[must_use = "futures do nothing unless you `.await` or poll them"] 182#[must_use = "futures do nothing unless you `.await` or poll them"]
183pub struct IrqFuture<'a, 'd, PIO: Instance> { 183pub struct IrqFuture<'a, 'd, PIO: Instance> {
184 pio: PhantomData<&'a Irq<'d, PIO, 0>>, 184 pio: PhantomData<&'a mut Irq<'d, PIO, 0>>,
185 irq_no: u8, 185 irq_no: u8,
186} 186}
187 187
@@ -287,7 +287,7 @@ impl<'l, PIO: Instance> Pin<'l, PIO> {
287} 287}
288 288
289pub struct StateMachineRx<'d, PIO: Instance, const SM: usize> { 289pub struct StateMachineRx<'d, PIO: Instance, const SM: usize> {
290 pio: PhantomData<&'d PIO>, 290 pio: PhantomData<&'d mut PIO>,
291} 291}
292 292
293impl<'d, PIO: Instance, const SM: usize> StateMachineRx<'d, PIO, SM> { 293impl<'d, PIO: Instance, const SM: usize> StateMachineRx<'d, PIO, SM> {
@@ -364,7 +364,7 @@ impl<'d, PIO: Instance, const SM: usize> StateMachineRx<'d, PIO, SM> {
364} 364}
365 365
366pub struct StateMachineTx<'d, PIO: Instance, const SM: usize> { 366pub struct StateMachineTx<'d, PIO: Instance, const SM: usize> {
367 pio: PhantomData<&'d PIO>, 367 pio: PhantomData<&'d mut PIO>,
368} 368}
369 369
370impl<'d, PIO: Instance, const SM: usize> StateMachineTx<'d, PIO, SM> { 370impl<'d, PIO: Instance, const SM: usize> StateMachineTx<'d, PIO, SM> {
@@ -777,7 +777,7 @@ impl<'d, PIO: Instance + 'd, const SM: usize> StateMachine<'d, PIO, SM> {
777 777
778pub struct Common<'d, PIO: Instance> { 778pub struct Common<'d, PIO: Instance> {
779 instructions_used: u32, 779 instructions_used: u32,
780 pio: PhantomData<&'d PIO>, 780 pio: PhantomData<&'d mut PIO>,
781} 781}
782 782
783impl<'d, PIO: Instance> Drop for Common<'d, PIO> { 783impl<'d, PIO: Instance> Drop for Common<'d, PIO> {
@@ -788,7 +788,7 @@ impl<'d, PIO: Instance> Drop for Common<'d, PIO> {
788 788
789pub struct InstanceMemory<'d, PIO: Instance> { 789pub struct InstanceMemory<'d, PIO: Instance> {
790 used_mask: u32, 790 used_mask: u32,
791 pio: PhantomData<&'d PIO>, 791 pio: PhantomData<&'d mut PIO>,
792} 792}
793 793
794impl<'d, PIO: Instance> Common<'d, PIO> { 794impl<'d, PIO: Instance> Common<'d, PIO> {
@@ -859,7 +859,7 @@ impl<'d, PIO: Instance> Common<'d, PIO> {
859} 859}
860 860
861pub struct Irq<'d, PIO: Instance, const N: usize> { 861pub struct Irq<'d, PIO: Instance, const N: usize> {
862 pio: PhantomData<&'d PIO>, 862 pio: PhantomData<&'d mut PIO>,
863} 863}
864 864
865impl<'d, PIO: Instance, const N: usize> Irq<'d, PIO, N> { 865impl<'d, PIO: Instance, const N: usize> Irq<'d, PIO, N> {
@@ -873,7 +873,7 @@ impl<'d, PIO: Instance, const N: usize> Irq<'d, PIO, N> {
873 873
874#[derive(Clone)] 874#[derive(Clone)]
875pub struct IrqFlags<'d, PIO: Instance> { 875pub struct IrqFlags<'d, PIO: Instance> {
876 pio: PhantomData<&'d PIO>, 876 pio: PhantomData<&'d mut PIO>,
877} 877}
878 878
879impl<'d, PIO: Instance> IrqFlags<'d, PIO> { 879impl<'d, PIO: Instance> IrqFlags<'d, PIO> {
@@ -920,6 +920,7 @@ pub struct Pio<'d, PIO: Instance> {
920 pub sm1: StateMachine<'d, PIO, 1>, 920 pub sm1: StateMachine<'d, PIO, 1>,
921 pub sm2: StateMachine<'d, PIO, 2>, 921 pub sm2: StateMachine<'d, PIO, 2>,
922 pub sm3: StateMachine<'d, PIO, 3>, 922 pub sm3: StateMachine<'d, PIO, 3>,
923 _pio: PhantomData<&'d mut PIO>,
923} 924}
924 925
925impl<'d, PIO: Instance> Pio<'d, PIO> { 926impl<'d, PIO: Instance> Pio<'d, PIO> {
@@ -952,6 +953,7 @@ impl<'d, PIO: Instance> Pio<'d, PIO> {
952 rx: StateMachineRx { pio: PhantomData }, 953 rx: StateMachineRx { pio: PhantomData },
953 tx: StateMachineTx { pio: PhantomData }, 954 tx: StateMachineTx { pio: PhantomData },
954 }, 955 },
956 _pio: PhantomData,
955 } 957 }
956 } 958 }
957} 959}