aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/exti.rs26
-rw-r--r--examples/stm32f3/src/bin/button_exti.rs1
-rw-r--r--examples/stm32f4/src/bin/button_exti.rs1
-rw-r--r--examples/stm32f7/src/bin/button_exti.rs1
-rw-r--r--examples/stm32g0/src/bin/button_exti.rs1
-rw-r--r--examples/stm32g4/src/bin/button_exti.rs1
-rw-r--r--examples/stm32h7/src/bin/button_exti.rs1
-rw-r--r--examples/stm32l0/src/bin/button_exti.rs1
-rw-r--r--examples/stm32l4/src/bin/button_exti.rs1
-rw-r--r--examples/stm32wb55/src/bin/button_exti.rs1
-rw-r--r--examples/stm32wl55/src/bin/button_exti.rs1
-rw-r--r--examples/stm32wl55/src/bin/subghz.rs1
12 files changed, 19 insertions, 18 deletions
diff --git a/embassy-stm32/src/exti.rs b/embassy-stm32/src/exti.rs
index eded6ba71..b2f168882 100644
--- a/embassy-stm32/src/exti.rs
+++ b/embassy-stm32/src/exti.rs
@@ -102,6 +102,18 @@ impl<'d, T: GpioPin> ExtiInput<'d, T> {
102 pub fn is_low(&self) -> bool { 102 pub fn is_low(&self) -> bool {
103 self.pin.is_low() 103 self.pin.is_low()
104 } 104 }
105
106 pub async fn wait_for_rising_edge<'a>(&'a mut self) {
107 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false).await
108 }
109
110 pub async fn wait_for_falling_edge<'a>(&'a mut self) {
111 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true).await
112 }
113
114 pub async fn wait_for_any_edge<'a>(&'a mut self) {
115 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true).await
116 }
105} 117}
106 118
107impl<'d, T: GpioPin> InputPin for ExtiInput<'d, T> { 119impl<'d, T: GpioPin> InputPin for ExtiInput<'d, T> {
@@ -120,10 +132,10 @@ impl<'d, T: GpioPin> WaitForRisingEdge for ExtiInput<'d, T> {
120 type Future<'a> 132 type Future<'a>
121 where 133 where
122 Self: 'a, 134 Self: 'a,
123 = ExtiInputFuture<'a>; 135 = impl Future<Output = ()> + 'a;
124 136
125 fn wait_for_rising_edge<'a>(&'a mut self) -> Self::Future<'a> { 137 fn wait_for_rising_edge<'a>(&'a mut self) -> Self::Future<'a> {
126 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false) 138 self.wait_for_rising_edge()
127 } 139 }
128} 140}
129 141
@@ -131,10 +143,10 @@ impl<'d, T: GpioPin> WaitForFallingEdge for ExtiInput<'d, T> {
131 type Future<'a> 143 type Future<'a>
132 where 144 where
133 Self: 'a, 145 Self: 'a,
134 = ExtiInputFuture<'a>; 146 = impl Future<Output = ()> + 'a;
135 147
136 fn wait_for_falling_edge<'a>(&'a mut self) -> Self::Future<'a> { 148 fn wait_for_falling_edge<'a>(&'a mut self) -> Self::Future<'a> {
137 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true) 149 self.wait_for_falling_edge()
138 } 150 }
139} 151}
140 152
@@ -142,14 +154,14 @@ impl<'d, T: GpioPin> WaitForAnyEdge for ExtiInput<'d, T> {
142 type Future<'a> 154 type Future<'a>
143 where 155 where
144 Self: 'a, 156 Self: 'a,
145 = ExtiInputFuture<'a>; 157 = impl Future<Output = ()> + 'a;
146 158
147 fn wait_for_any_edge<'a>(&'a mut self) -> Self::Future<'a> { 159 fn wait_for_any_edge<'a>(&'a mut self) -> Self::Future<'a> {
148 ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true) 160 self.wait_for_any_edge()
149 } 161 }
150} 162}
151 163
152pub struct ExtiInputFuture<'a> { 164struct ExtiInputFuture<'a> {
153 pin: u8, 165 pin: u8,
154 phantom: PhantomData<&'a mut AnyPin>, 166 phantom: PhantomData<&'a mut AnyPin>,
155} 167}
diff --git a/examples/stm32f3/src/bin/button_exti.rs b/examples/stm32f3/src/bin/button_exti.rs
index d45e4365b..b11f38ea5 100644
--- a/examples/stm32f3/src/bin/button_exti.rs
+++ b/examples/stm32f3/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32f4/src/bin/button_exti.rs b/examples/stm32f4/src/bin/button_exti.rs
index 2c4318d64..852fbe3c6 100644
--- a/examples/stm32f4/src/bin/button_exti.rs
+++ b/examples/stm32f4/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32f7/src/bin/button_exti.rs b/examples/stm32f7/src/bin/button_exti.rs
index 2c4318d64..852fbe3c6 100644
--- a/examples/stm32f7/src/bin/button_exti.rs
+++ b/examples/stm32f7/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32g0/src/bin/button_exti.rs b/examples/stm32g0/src/bin/button_exti.rs
index 0c2483ecb..848818bf2 100644
--- a/examples/stm32g0/src/bin/button_exti.rs
+++ b/examples/stm32g0/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32g4/src/bin/button_exti.rs b/examples/stm32g4/src/bin/button_exti.rs
index 2c4318d64..852fbe3c6 100644
--- a/examples/stm32g4/src/bin/button_exti.rs
+++ b/examples/stm32g4/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32h7/src/bin/button_exti.rs b/examples/stm32h7/src/bin/button_exti.rs
index 2c4318d64..852fbe3c6 100644
--- a/examples/stm32h7/src/bin/button_exti.rs
+++ b/examples/stm32h7/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32l0/src/bin/button_exti.rs b/examples/stm32l0/src/bin/button_exti.rs
index 88c75ce6d..3edea3976 100644
--- a/examples/stm32l0/src/bin/button_exti.rs
+++ b/examples/stm32l0/src/bin/button_exti.rs
@@ -9,7 +9,6 @@ use embassy::executor::Spawner;
9use embassy_stm32::exti::ExtiInput; 9use embassy_stm32::exti::ExtiInput;
10use embassy_stm32::gpio::{Input, Pull}; 10use embassy_stm32::gpio::{Input, Pull};
11use embassy_stm32::Peripherals; 11use embassy_stm32::Peripherals;
12use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
13use example_common::*; 12use example_common::*;
14 13
15fn config() -> embassy_stm32::Config { 14fn config() -> embassy_stm32::Config {
diff --git a/examples/stm32l4/src/bin/button_exti.rs b/examples/stm32l4/src/bin/button_exti.rs
index 0c2483ecb..848818bf2 100644
--- a/examples/stm32l4/src/bin/button_exti.rs
+++ b/examples/stm32l4/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32wb55/src/bin/button_exti.rs b/examples/stm32wb55/src/bin/button_exti.rs
index aeb7bd8a6..4592fa308 100644
--- a/examples/stm32wb55/src/bin/button_exti.rs
+++ b/examples/stm32wb55/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32wl55/src/bin/button_exti.rs b/examples/stm32wl55/src/bin/button_exti.rs
index 31adfb5d1..8d66c7258 100644
--- a/examples/stm32wl55/src/bin/button_exti.rs
+++ b/examples/stm32wl55/src/bin/button_exti.rs
@@ -8,7 +8,6 @@ use embassy::executor::Spawner;
8use embassy_stm32::exti::ExtiInput; 8use embassy_stm32::exti::ExtiInput;
9use embassy_stm32::gpio::{Input, Pull}; 9use embassy_stm32::gpio::{Input, Pull};
10use embassy_stm32::Peripherals; 10use embassy_stm32::Peripherals;
11use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge};
12use example_common::*; 11use example_common::*;
13 12
14#[embassy::main] 13#[embassy::main]
diff --git a/examples/stm32wl55/src/bin/subghz.rs b/examples/stm32wl55/src/bin/subghz.rs
index 570bd980f..42d4eb64c 100644
--- a/examples/stm32wl55/src/bin/subghz.rs
+++ b/examples/stm32wl55/src/bin/subghz.rs
@@ -10,7 +10,6 @@ mod example_common;
10 10
11use embassy::channel::signal::Signal; 11use embassy::channel::signal::Signal;
12use embassy::interrupt::{Interrupt, InterruptExt}; 12use embassy::interrupt::{Interrupt, InterruptExt};
13use embassy::traits::gpio::WaitForRisingEdge;
14use embassy_stm32::dma::NoDma; 13use embassy_stm32::dma::NoDma;
15use embassy_stm32::exti::ExtiInput; 14use embassy_stm32::exti::ExtiInput;
16use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; 15use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};