#![allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[repr(u8)]
#[allow(non_camel_case_types)]
pub enum Register {
CONFIG = 0x00,
EN_AA = 0x01,
EN_RXADDR = 0x02,
SETUP_AW = 0x03,
SETUP_RETR = 0x04,
RF_CH = 0x05,
RF_SETUP = 0x06,
STATUS = 0x07,
OBSERVE_TX = 0x08,
RPD = 0x09,
RX_ADDR_P0 = 0x0A,
RX_ADDR_P1 = 0x0B,
RX_ADDR_P2 = 0x0C,
RX_ADDR_P3 = 0x0D,
RX_ADDR_P4 = 0x0E,
RX_ADDR_P5 = 0x0F,
TX_ADDR = 0x10,
RX_PW_P0 = 0x11,
RX_PW_P1 = 0x12,
RX_PW_P2 = 0x13,
RX_PW_P3 = 0x14,
RX_PW_P4 = 0x15,
RX_PW_P5 = 0x16,
FIFO_STATUS = 0x17,
DYNPD = 0x1C,
FEATURE = 0x1D,
}
pub mod config {
pub const PRIM_RX: u8 = 0x01;
pub const PWR_UP: u8 = 0x02;
pub const CRCO: u8 = 0x04;
pub const EN_CRC: u8 = 0x08;
pub const MASK_MAX_RT: u8 = 0x10;
pub const MASK_TX_DS: u8 = 0x20;
pub const MASK_RX_DR: u8 = 0x40;
}
pub mod status {
pub const TX_FULL: u8 = 0x01;
pub const RX_P_NO_MASK: u8 = 0x0E;
pub const MAX_RT: u8 = 0x10;
pub const TX_DS: u8 = 0x20;
pub const RX_DR: u8 = 0x40;
}
pub mod fifo_status {
pub const RX_EMPTY: u8 = 0x01;
pub const RX_FULL: u8 = 0x02;
pub const TX_EMPTY: u8 = 0x10;
pub const TX_FULL: u8 = 0x20;
pub const TX_REUSE: u8 = 0x40;
}
pub mod commands {
pub const R_REGISTER: u8 = 0x00;
pub const W_REGISTER: u8 = 0x20;
pub const R_RX_PAYLOAD: u8 = 0x61;
pub const W_TX_PAYLOAD: u8 = 0xA0;
pub const FLUSH_TX: u8 = 0xE1;
pub const FLUSH_RX: u8 = 0xE2;
pub const REUSE_TX_PL: u8 = 0xE3;
pub const R_RX_PL_WID: u8 = 0x60;
pub const W_ACK_PAYLOAD: u8 = 0xA8;
pub const W_TX_PAYLOAD_NOACK: u8 = 0xB0;
pub const NOP: u8 = 0xFF;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_register_values() {
assert_eq!(Register::CONFIG as u8, 0x00);
assert_eq!(Register::STATUS as u8, 0x07);
assert_eq!(Register::RF_CH as u8, 0x05);
assert_eq!(Register::TX_ADDR as u8, 0x10);
}
#[test]
fn test_status_bits() {
assert_eq!(status::RX_DR, 0x40);
assert_eq!(status::TX_DS, 0x20);
assert_eq!(status::MAX_RT, 0x10);
}
#[test]
fn test_config_bits() {
assert_eq!(config::PWR_UP, 0x02);
assert_eq!(config::PRIM_RX, 0x01);
assert_eq!(config::EN_CRC, 0x08);
}
}