From 4032fc06556312eab27488f05efe1803ade47b45 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Wed, 26 Jan 2022 22:39:06 +0100 Subject: Support unstable-trait feature for stm32 --- embassy-lora/src/sx127x/mod.rs | 24 ++++++++++++------------ embassy-lora/src/sx127x/sx127x_lora/mod.rs | 9 +++++---- 2 files changed, 17 insertions(+), 16 deletions(-) (limited to 'embassy-lora/src') diff --git a/embassy-lora/src/sx127x/mod.rs b/embassy-lora/src/sx127x/mod.rs index c26628b0f..6a15dab82 100644 --- a/embassy-lora/src/sx127x/mod.rs +++ b/embassy-lora/src/sx127x/mod.rs @@ -1,7 +1,7 @@ use core::future::Future; -use embassy::traits::gpio::WaitForRisingEdge; -use embassy::traits::spi::*; use embedded_hal::digital::v2::OutputPin; +use embedded_hal_async::digital::Wait; +use embedded_hal_async::spi::*; use lorawan_device::async_device::{ radio::{Bandwidth, PhyRxTx, RfConfig, RxQuality, SpreadingFactor, TxConfig}, Timings, @@ -20,11 +20,11 @@ pub trait RadioSwitch { /// Semtech Sx127x radio peripheral pub struct Sx127xRadio where - SPI: FullDuplex + 'static, + SPI: ReadWrite + 'static, E: 'static, CS: OutputPin + 'static, RESET: OutputPin + 'static, - I: WaitForRisingEdge + 'static, + I: Wait + 'static, RFS: RadioSwitch + 'static, { radio: LoRa, @@ -42,10 +42,10 @@ pub enum State { impl Sx127xRadio where - SPI: FullDuplex + 'static, + SPI: ReadWrite + 'static, CS: OutputPin + 'static, RESET: OutputPin + 'static, - I: WaitForRisingEdge + 'static, + I: Wait + 'static, RFS: RadioSwitch + 'static, E: 'static, { @@ -64,10 +64,10 @@ where impl Timings for Sx127xRadio where - SPI: FullDuplex + 'static, + SPI: ReadWrite + 'static, CS: OutputPin + 'static, RESET: OutputPin + 'static, - I: WaitForRisingEdge + 'static, + I: Wait + 'static, RFS: RadioSwitch + 'static, { fn get_rx_window_offset_ms(&self) -> i32 { @@ -80,11 +80,11 @@ where impl PhyRxTx for Sx127xRadio where - SPI: FullDuplex + 'static, + SPI: ReadWrite + 'static, CS: OutputPin + 'static, E: 'static, RESET: OutputPin + 'static, - I: WaitForRisingEdge + 'static, + I: Wait + 'static, RFS: RadioSwitch + 'static, { type PhyError = Sx127xError; @@ -126,7 +126,7 @@ where self.radio.transmit_start(buf).await?; loop { - self.irq.wait_for_rising_edge().await; + self.irq.wait_for_rising_edge().await.unwrap(); self.radio.set_mode(RadioMode::Stdby).await.ok().unwrap(); let irq = self.radio.clear_irq().await.ok().unwrap(); if (irq & IRQ::IrqTxDoneMask.addr()) != 0 { @@ -171,7 +171,7 @@ where self.radio.set_mode(RadioMode::RxContinuous).await?; loop { - self.irq.wait_for_rising_edge().await; + self.irq.wait_for_rising_edge().await.unwrap(); self.radio.set_mode(RadioMode::Stdby).await.ok().unwrap(); let irq = self.radio.clear_irq().await.ok().unwrap(); if (irq & IRQ::IrqRxDoneMask.addr()) != 0 { diff --git a/embassy-lora/src/sx127x/sx127x_lora/mod.rs b/embassy-lora/src/sx127x/sx127x_lora/mod.rs index a903779ca..6fbd3a4bd 100644 --- a/embassy-lora/src/sx127x/sx127x_lora/mod.rs +++ b/embassy-lora/src/sx127x/sx127x_lora/mod.rs @@ -7,8 +7,8 @@ use bit_field::BitField; use embassy::time::{Duration, Timer}; -use embassy::traits::spi::*; use embedded_hal::digital::v2::OutputPin; +use embedded_hal_async::spi::ReadWrite; mod register; use self::register::PaConfig; @@ -36,9 +36,10 @@ pub enum Error { Transmitting, } -use super::sx127x_lora::register::{FskDataModulationShaping, FskRampUpRamDown}; use Error::*; +use super::sx127x_lora::register::{FskDataModulationShaping, FskRampUpRamDown}; + #[cfg(not(feature = "version_0x09"))] const VERSION_CHECK: u8 = 0x12; @@ -47,7 +48,7 @@ const VERSION_CHECK: u8 = 0x09; impl LoRa where - SPI: FullDuplex, + SPI: ReadWrite, CS: OutputPin, RESET: OutputPin, { @@ -546,7 +547,7 @@ where let _ = self .spi - .read_write(&mut buffer, &[reg & 0x7f, 0]) + .transfer(&mut buffer, &[reg & 0x7f, 0]) .await .map_err(SPI)?; -- cgit