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> { pub fn is_low(&self) -> bool { self.pin.is_low() } + + pub async fn wait_for_rising_edge<'a>(&'a mut self) { + ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false).await + } + + pub async fn wait_for_falling_edge<'a>(&'a mut self) { + ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true).await + } + + pub async fn wait_for_any_edge<'a>(&'a mut self) { + ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true).await + } } impl<'d, T: GpioPin> InputPin for ExtiInput<'d, T> { @@ -120,10 +132,10 @@ impl<'d, T: GpioPin> WaitForRisingEdge for ExtiInput<'d, T> { type Future<'a> where Self: 'a, - = ExtiInputFuture<'a>; + = impl Future + 'a; fn wait_for_rising_edge<'a>(&'a mut self) -> Self::Future<'a> { - ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, false) + self.wait_for_rising_edge() } } @@ -131,10 +143,10 @@ impl<'d, T: GpioPin> WaitForFallingEdge for ExtiInput<'d, T> { type Future<'a> where Self: 'a, - = ExtiInputFuture<'a>; + = impl Future + 'a; fn wait_for_falling_edge<'a>(&'a mut self) -> Self::Future<'a> { - ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), false, true) + self.wait_for_falling_edge() } } @@ -142,14 +154,14 @@ impl<'d, T: GpioPin> WaitForAnyEdge for ExtiInput<'d, T> { type Future<'a> where Self: 'a, - = ExtiInputFuture<'a>; + = impl Future + 'a; fn wait_for_any_edge<'a>(&'a mut self) -> Self::Future<'a> { - ExtiInputFuture::new(self.pin.pin.pin(), self.pin.pin.port(), true, true) + self.wait_for_any_edge() } } -pub struct ExtiInputFuture<'a> { +struct ExtiInputFuture<'a> { pin: u8, phantom: PhantomData<&'a mut AnyPin>, } 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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; fn 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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Pull}; use embassy_stm32::Peripherals; -use embassy_traits::gpio::{WaitForFallingEdge, WaitForRisingEdge}; use example_common::*; #[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; use embassy::channel::signal::Signal; use embassy::interrupt::{Interrupt, InterruptExt}; -use embassy::traits::gpio::WaitForRisingEdge; use embassy_stm32::dma::NoDma; use embassy_stm32::exti::ExtiInput; use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};