use ieee802154::mac::*;
#[derive(Clone, PartialEq, Debug)]
pub struct CoreConfig {
pub channel_clear_threshold: i16,
pub ack_timeout_ms: u32,
pub tx_timeout_ms: u32,
pub max_retries: u16,
pub rx_has_footer: bool,
pub send_acks: bool,
}
impl Default for CoreConfig {
fn default() -> Self {
Self {
channel_clear_threshold: -90,
ack_timeout_ms: 10,
tx_timeout_ms: 20,
max_retries: 5,
rx_has_footer: false,
send_acks: true,
}
}
}
pub struct AddressConfig {
pub pan_id: PanId,
pub short_address: Option<ShortAddress>,
pub extended_address: Option<ExtendedAddress>,
}
impl AddressConfig {
pub fn new(pan_id: u16, extended_address: u64) -> Self {
Self{
pan_id: PanId(pan_id),
short_address: None,
extended_address: Some(ExtendedAddress(extended_address)),
}
}
pub fn get(&self) -> Address {
if let Some(s) = self.short_address {
return Address::Short(self.pan_id, s)
}
if let Some(e) = self.extended_address {
return Address::Extended(self.pan_id, e)
}
Address::None
}
}
pub struct BeaconConfig {
pub enabled: bool,
pub period_us: u32,
pub slot_time_us: u32,
pub slots_per_round: u16,
}
impl Default for BeaconConfig {
fn default() -> Self {
Self {
enabled: false,
period_us: 10 * 1000,
slots_per_round: 10,
slot_time_us: 10 * 1000,
}
}
}