embassy/embassy-lora/src/lib.rs

40 lines
942 B
Rust
Raw Normal View History

#![no_std]
#![feature(async_fn_in_trait, impl_trait_projections)]
2023-04-27 18:05:33 +02:00
//! embassy-lora holds LoRa-specific functionality.
pub(crate) mod fmt;
2023-04-28 20:33:20 +02:00
2023-04-27 18:05:33 +02:00
/// interface variants required by the external lora physical layer crate (lora-phy)
pub mod iv;
2022-08-09 12:17:30 +02:00
#[cfg(feature = "time")]
use embassy_time::{Duration, Instant, Timer};
/// A convenience timer to use with the LoRaWAN crate
2022-08-09 12:17:30 +02:00
#[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 {
2022-08-09 12:17:30 +02:00
fn reset(&mut self) {
self.start = Instant::now();
}
async fn at(&mut self, millis: u64) {
Timer::at(self.start + Duration::from_millis(millis)).await
2022-08-09 12:17:30 +02:00
}
async fn delay_ms(&mut self, millis: u64) {
Timer::after(Duration::from_millis(millis)).await
}
}