#![allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum Register {
IOCFG2 = 0x00,
IOCFG1 = 0x01,
IOCFG0 = 0x02,
FIFOTHR = 0x03,
SYNC1 = 0x04,
SYNC0 = 0x05,
PKTLEN = 0x06,
PKTCTRL1 = 0x07,
PKTCTRL0 = 0x08,
ADDR = 0x09,
CHANNR = 0x0A,
FSCTRL1 = 0x0B,
FSCTRL0 = 0x0C,
FREQ2 = 0x0D,
FREQ1 = 0x0E,
FREQ0 = 0x0F,
MDMCFG4 = 0x10,
MDMCFG3 = 0x11,
MDMCFG2 = 0x12,
MDMCFG1 = 0x13,
MDMCFG0 = 0x14,
DEVIATN = 0x15,
MCSM2 = 0x16,
MCSM1 = 0x17,
MCSM0 = 0x18,
FOCCFG = 0x19,
BSCFG = 0x1A,
AGCCTRL2 = 0x1B,
AGCCTRL1 = 0x1C,
AGCCTRL0 = 0x1D,
WOREVT1 = 0x1E,
WOREVT0 = 0x1F,
WORCTRL = 0x20,
FREND1 = 0x21,
FREND0 = 0x22,
FSCAL3 = 0x23,
FSCAL2 = 0x24,
FSCAL1 = 0x25,
FSCAL0 = 0x26,
RCCTRL1 = 0x27,
RCCTRL0 = 0x28,
FSTEST = 0x29,
PTEST = 0x2A,
AGCTEST = 0x2B,
TEST2 = 0x2C,
TEST1 = 0x2D,
TEST0 = 0x2E,
PARTNUM = 0x30,
VERSION = 0x31,
FREQEST = 0x32,
LQI = 0x33,
RSSI = 0x34,
MARCSTATE = 0x35,
WORTIME1 = 0x36,
WORTIME0 = 0x37,
PKTSTATUS = 0x38,
VCO_VC_DAC = 0x39,
TXBYTES = 0x3A,
RXBYTES = 0x3B,
RCCTRL1_STATUS = 0x3C,
RCCTRL0_STATUS = 0x3D,
FIFO = 0x3F,
PATABLE = 0x3E,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
pub enum Strobe {
SRES = 0x30,
SFSTXON = 0x31,
SXOFF = 0x32,
SCAL = 0x33,
SRX = 0x34,
STX = 0x35,
SIDLE = 0x36,
SWOR = 0x38,
SPWD = 0x39,
SFRX = 0x3A,
SFTX = 0x3B,
SWORRST = 0x3C,
SNOP = 0x3D,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
pub enum MarcState {
SLEEP = 0x00,
IDLE = 0x01,
XOFF = 0x02,
MANCAL = 0x03,
FS_WAKEUP = 0x06,
FS_CALIBRATE = 0x08,
SETTLING = 0x09,
RX = 0x0D,
RX_END = 0x0E,
RXFIFO_OVERFLOW = 0x11,
FSTXON = 0x12,
TX = 0x13,
TX_END = 0x14,
TXFIFO_UNDERFLOW = 0x16,
}
pub mod gdo_cfg {
pub const RX_FIFO_THRESHOLD: u8 = 0x00;
pub const RX_FIFO_EOP: u8 = 0x01;
pub const TX_FIFO_THRESHOLD: u8 = 0x02;
pub const TX_FIFO_FULL: u8 = 0x03;
pub const RX_OVERFLOW: u8 = 0x04;
pub const TX_UNDERFLOW: u8 = 0x05;
pub const SYNC_WORD: u8 = 0x06;
pub const PKT_CRC_OK: u8 = 0x07;
pub const PQT_REACHED: u8 = 0x08;
pub const CCA: u8 = 0x09;
pub const PLL_LOCK: u8 = 0x0A;
pub const SERIAL_CLOCK: u8 = 0x0B;
pub const SERIAL_DATA_SYNC: u8 = 0x0C;
pub const SERIAL_DATA_ASYNC: u8 = 0x0D;
pub const CARRIER_SENSE: u8 = 0x0E;
pub const RSSI_VALID: u8 = 0x0F;
pub const HI_Z: u8 = 0x2E;
pub const CLK_XOSC_1: u8 = 0x30;
pub const CLK_XOSC_1_5: u8 = 0x31;
pub const CLK_XOSC_2: u8 = 0x32;
pub const CLK_XOSC_3: u8 = 0x33;
pub const CLK_XOSC_4: u8 = 0x34;
pub const CLK_XOSC_6: u8 = 0x35;
pub const CLK_XOSC_8: u8 = 0x36;
pub const CLK_XOSC_12: u8 = 0x37;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_register_values() {
assert_eq!(Register::IOCFG2 as u8, 0x00);
assert_eq!(Register::FREQ2 as u8, 0x0D);
assert_eq!(Register::PKTLEN as u8, 0x06);
assert_eq!(Register::RXBYTES as u8, 0x3B);
}
#[test]
fn test_strobe_values() {
assert_eq!(Strobe::SRES as u8, 0x30);
assert_eq!(Strobe::SRX as u8, 0x34);
assert_eq!(Strobe::STX as u8, 0x35);
assert_eq!(Strobe::SIDLE as u8, 0x36);
assert_eq!(Strobe::SNOP as u8, 0x3D);
}
#[test]
fn test_marc_state_values() {
assert_eq!(MarcState::IDLE as u8, 0x01);
assert_eq!(MarcState::RX as u8, 0x0D);
assert_eq!(MarcState::TX as u8, 0x13);
}
}