From af845b7d44228665dffc4432ba509fd80e8400b2 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen Date: Tue, 9 Aug 2022 12:17:30 +0200 Subject: [PATCH] Add impl for offset radio interface --- embassy-lora/src/lib.rs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/embassy-lora/src/lib.rs b/embassy-lora/src/lib.rs index 1b2dd45c..2483dcb2 100644 --- a/embassy-lora/src/lib.rs +++ b/embassy-lora/src/lib.rs @@ -11,13 +11,35 @@ pub mod stm32wl; #[cfg(feature = "sx127x")] pub mod sx127x; +#[cfg(feature = "time")] +use embassy_time::{Duration, Instant, Timer}; + /// A convenience timer to use with the LoRaWAN crate -pub struct LoraTimer; +#[cfg(feature = "time")] +pub struct LoraTimer { + start: Instant, +} + +#[cfg(feature = "time")] +impl LoraTimer { + pub fn new() -> Self { + Self { start: Instant::now() } + } +} #[cfg(feature = "time")] impl lorawan_device::async_device::radio::Timer for LoraTimer { + fn reset(&mut self) { + self.start = Instant::now(); + } + + type AtFuture<'m> = impl core::future::Future + 'm; + fn at<'m>(&'m mut self, millis: u64) -> Self::AtFuture<'m> { + Timer::at(self.start + Duration::from_millis(millis)) + } + type DelayFuture<'m> = impl core::future::Future + 'm; fn delay_ms<'m>(&'m mut self, millis: u64) -> Self::DelayFuture<'m> { - embassy_time::Timer::after(embassy_time::Duration::from_millis(millis)) + Timer::after(Duration::from_millis(millis)) } }