pub use crate::radio::{RfConfig, RxConfig, RxMode, RxQuality, TxConfig};
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub struct Error<E>(pub E);
impl<R> From<Error<R>> for super::Error<R> {
fn from(radio_error: Error<R>) -> super::Error<R> {
super::Error::Radio(radio_error.0)
}
}
pub enum RxStatus {
Rx(usize, RxQuality),
RxTimeout,
}
#[allow(async_fn_in_trait)]
pub trait Timer {
fn reset(&mut self);
async fn at(&mut self, millis: u64);
async fn delay_ms(&mut self, millis: u64);
}
#[allow(async_fn_in_trait)]
pub trait PhyRxTx: Sized {
#[cfg(feature = "defmt")]
type PhyError: defmt::Format;
#[cfg(not(feature = "defmt"))]
type PhyError;
const ANTENNA_GAIN: i8 = 0;
const MAX_RADIO_POWER: u8;
async fn tx(&mut self, config: TxConfig, buf: &[u8]) -> Result<u32, Self::PhyError>;
async fn setup_rx(&mut self, config: RxConfig) -> Result<(), Self::PhyError>;
async fn rx_continuous(
&mut self,
rx_buf: &mut [u8],
) -> Result<(usize, RxQuality), Self::PhyError>;
async fn rx_single(&mut self, buf: &mut [u8]) -> Result<RxStatus, Self::PhyError>;
async fn low_power(&mut self) -> Result<(), Self::PhyError> {
Ok(())
}
}