#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum LrfhssCr {
Cr5p6 = 0,
Cr2p3 = 1,
Cr1p2 = 2,
Cr1p3 = 3,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum Grid {
Grid25 = 0,
Grid4 = 1,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum Hopping {
NoHopping = 0,
HoppingEnabled = 1,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
pub enum LrfhssBw {
Bw39p06 = 0,
Bw85p94 = 1,
Bw136p72 = 2,
Bw183p59 = 3,
Bw335p94 = 4,
Bw386p72 = 5,
Bw722p66 = 6,
Bw773p44 = 7,
Bw1523p4 = 8,
Bw1574p2 = 9,
}
#[allow(clippy::too_many_arguments)]
pub fn lr_fhss_build_frame_cmd(sync_header_cnt: u8, lrfhss_cr: LrfhssCr, mod_type: u8, grid: Grid, hopping: Hopping, lrfhss_bw: LrfhssBw, hop_sequence: u16, device_offset: i8) -> [u8; 11] {
let mut cmd = [0u8; 11];
cmd[0] = 0x02;
cmd[1] = 0x2C;
cmd[2] |= sync_header_cnt;
cmd[3] |= lrfhss_cr as u8;
cmd[4] |= mod_type;
cmd[5] |= grid as u8;
cmd[6] |= hopping as u8;
cmd[7] |= lrfhss_bw as u8;
cmd[8] |= ((hop_sequence >> 8) & 0xFF) as u8;
cmd[9] |= (hop_sequence & 0xFF) as u8;
cmd[10] |= (device_offset) as u8;
cmd
}
pub fn lr_fhss_set_sync_word_cmd(syncword: u32) -> [u8; 6] {
let mut cmd = [0u8; 6];
cmd[0] = 0x02;
cmd[1] = 0x2D;
cmd[2] |= ((syncword >> 24) & 0xFF) as u8;
cmd[3] |= ((syncword >> 16) & 0xFF) as u8;
cmd[4] |= ((syncword >> 8) & 0xFF) as u8;
cmd[5] |= (syncword & 0xFF) as u8;
cmd
}