aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32wl55/src/bin
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-09-11 01:53:53 +0200
committerDario Nieuwenhuis <[email protected]>2021-09-11 02:35:35 +0200
commitead987245d083b7e6be7158ea3fb63c8a47bf304 (patch)
tree2d51b80e3d4fc2670b64cb05af22cc54202a6104 /examples/stm32wl55/src/bin
parent200f881048a8193c490ff5906ebf320ac98a8331 (diff)
embassy: Refactor module structure to remove kitchen-sink `util`.
Diffstat (limited to 'examples/stm32wl55/src/bin')
-rw-r--r--examples/stm32wl55/src/bin/subghz.rs32
1 files changed, 20 insertions, 12 deletions
diff --git a/examples/stm32wl55/src/bin/subghz.rs b/examples/stm32wl55/src/bin/subghz.rs
index 1e406886a..89549c766 100644
--- a/examples/stm32wl55/src/bin/subghz.rs
+++ b/examples/stm32wl55/src/bin/subghz.rs
@@ -8,16 +8,16 @@
8#[path = "../example_common.rs"] 8#[path = "../example_common.rs"]
9mod example_common; 9mod example_common;
10 10
11use embassy::{traits::gpio::WaitForRisingEdge, util::InterruptFuture}; 11use embassy::channel::signal::Signal;
12use embassy_stm32::{ 12use embassy::interrupt::{Interrupt, InterruptExt};
13 dbgmcu::Dbgmcu, 13use embassy::traits::gpio::WaitForRisingEdge;
14 dma::NoDma, 14use embassy_stm32::dbgmcu::Dbgmcu;
15 exti::ExtiInput, 15use embassy_stm32::dma::NoDma;
16 gpio::{Input, Level, Output, Pull, Speed}, 16use embassy_stm32::exti::ExtiInput;
17 interrupt, 17use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed};
18 subghz::*, 18use embassy_stm32::interrupt;
19 Peripherals, 19use embassy_stm32::subghz::*;
20}; 20use embassy_stm32::Peripherals;
21use embedded_hal::digital::v2::OutputPin; 21use embedded_hal::digital::v2::OutputPin;
22use example_common::unwrap; 22use example_common::unwrap;
23 23
@@ -83,7 +83,13 @@ async fn main(_spawner: embassy::executor::Spawner, p: Peripherals) {
83 let button = Input::new(p.PA0, Pull::Up); 83 let button = Input::new(p.PA0, Pull::Up);
84 let mut pin = ExtiInput::new(button, p.EXTI0); 84 let mut pin = ExtiInput::new(button, p.EXTI0);
85 85
86 let mut radio_irq = interrupt::take!(SUBGHZ_RADIO); 86 static IRQ_SIGNAL: Signal<()> = Signal::new();
87 let radio_irq = interrupt::take!(SUBGHZ_RADIO);
88 radio_irq.set_handler(|_| {
89 IRQ_SIGNAL.signal(());
90 unsafe { interrupt::SUBGHZ_RADIO::steal() }.disable();
91 });
92
87 let mut radio = SubGhz::new(p.SUBGHZSPI, p.PA5, p.PA7, p.PA6, NoDma, NoDma); 93 let mut radio = SubGhz::new(p.SUBGHZSPI, p.PA5, p.PA7, p.PA6, NoDma, NoDma);
88 94
89 defmt::info!("Radio ready for use"); 95 defmt::info!("Radio ready for use");
@@ -118,7 +124,9 @@ async fn main(_spawner: embassy::executor::Spawner, p: Peripherals) {
118 unwrap!(radio.write_buffer(TX_BUF_OFFSET, PING_DATA_BYTES)); 124 unwrap!(radio.write_buffer(TX_BUF_OFFSET, PING_DATA_BYTES));
119 unwrap!(radio.set_tx(Timeout::DISABLED)); 125 unwrap!(radio.set_tx(Timeout::DISABLED));
120 126
121 InterruptFuture::new(&mut radio_irq).await; 127 radio_irq.enable();
128 IRQ_SIGNAL.wait().await;
129
122 let (_, irq_status) = unwrap!(radio.irq_status()); 130 let (_, irq_status) = unwrap!(radio.irq_status());
123 if irq_status & Irq::TxDone.mask() != 0 { 131 if irq_status & Irq::TxDone.mask() != 0 {
124 defmt::info!("TX done"); 132 defmt::info!("TX done");