15#ifndef __FW_XL2400_H__
16#define __FW_XL2400_H__
23#define XL2400_MOSI P34
25#define XL2400_PLOAD_WIDTH 32
27#define XL2400_DATA_OUT() GPIO_P3_SetMode(GPIO_Pin_4, GPIO_Mode_Output_PP)
28#define XL2400_DATA_IN() GPIO_P3_SetMode(GPIO_Pin_4, GPIO_Mode_Input_HIP)
29#define XL2400_DATA_LOW() XL2400_MOSI = 0
30#define XL2400_DATA_HIGH() XL2400_MOSI = 1
31#define XL2400_DATA_READ() XL2400_MOSI
33#define XL2400_CLK_LOW() XL2400_SCK = 0
34#define XL2400_CLK_HIGH() XL2400_SCK = 1
36#define XL2400_NSS_LOW() XL2400_CSN = 0
37#define XL2400_NSS_HIGH() XL2400_CSN = 1
43#define XL2400_CMD_R_REGISTER 0x00
44#define XL2400_CMD_W_REGISTER 0x20
45#define XL2400_CMD_R_RX_PAYLOAD 0x61
46#define XL2400_CMD_W_TX_PAYLOAD 0xA0
47#define XL2400_CMD_FLUSH_TX 0xE1
48#define XL2400_CMD_FLUSH_RX 0xE2
49#define XL2400_CMD_REUSE_TX_PL 0xE3
50#define XL2400_CMD_ACTIVATE 0x50
51#define XL2400_CMD_DEACTIVATE 0x50
52#define XL2400_CMD_RST_FSPI 0x53
53#define XL2400_CMD_R_RX_PL_WID 0x60
54#define XL2400_CMD_W_ACK_PAYLOAD 0xA8
55#define XL2400_CMD_W_TX_PAYLOAD_NOACK 0xB0
56#define XL2400_CMD_NOP 0xFF
59#define XL2400_REG_CFG_TOP 0x00
60#define XL2400_REG_EN_AA 0x01
61#define XL2400_REG_EN_RXADDR 0x02
62#define XL2400_REG_SETUP_AW 0x03
63#define XL2400_REG_SETUP_RETR 0x04
64#define XL2400_REG_RF_CH 0x05
65#define XL2400_REG_RF_SETUP 0x06
66#define XL2400_REG_STATUS 0x07
67#define XL2400_REG_OBSERVE_TX 0x08
68#define XL2400_REG_RSSI 0x09
69#define XL2400_REG_RX_ADDR_P0 0x0A
70#define XL2400_REG_RX_ADDR_P1 0x0B
71#define XL2400_REG_RX_ADDR_P2_P5 0x0C
72#define XL2400_REG_BER_RESULT 0x0D
73#define XL2400_REG_AGC_SETTING 0x0E
74#define XL2400_REG_PGA_SETTING 0x0F
75#define XL2400_REG_TX_ADDR 0x10
76#define XL2400_REG_RX_PW_PX 0x11
77#define XL2400_REG_ANALOG_CFG0 0x12
78#define XL2400_REG_ANALOG_CFG1 0x13
79#define XL2400_REG_ANALOG_CFG2 0x14
80#define XL2400_REG_ANALOG_CFG3 0x15
81#define XL2400_REG_FIFO_STATUS 0x17
82#define XL2400_REG_RSSIREC 0x18
83#define XL2400_REG_TXPROC_CFG 0x19
84#define XL2400_REG_RXPROC_CFG 0x1A
85#define XL2400_REG_DYNPD 0x1C
86#define XL2400_REG_FEATURE 0x1D
87#define XL2400_REG_RAMP_CFG 0x1E
92#define XL2400_PL_WIDTH_MAX 64
93#define XL2400_RF_10DB 0x3F
94#define XL2400_RF_9DB 0x38
95#define XL2400_RF_8DB 0x34
96#define XL2400_RF_7DB 0x30
97#define XL2400_RF_6DB 0x2C
98#define XL2400_RF_5DB 0x28
99#define XL2400_RF_4DB 0x24
100#define XL2400_RF_3DB 0x20
101#define XL2400_RF_2DB 0x14
102#define XL2400_RF_0DB 0x10
103#define XL2400_RF__2DB 0x0C
104#define XL2400_RF__6DB 0x08
105#define XL2400_RF__12DB 0x04
106#define XL2400_RF__18DB 0x02
107#define XL2400_RF__24DB 0x01
108#define XL2400_RF_DR_1M 0x02
109#define XL2400_RF_DR_250K 0x22
111#define RX_DR_FLAG 0X40
112#define TX_DS_FLAG 0X20
113#define RX_TX_CMP_FLAG 0X60
114#define MAX_RT_FLAG 0X10
116#define XL2400_TEST_ADDR "XL240"
void XL2400_SetTxMode(void)
void XL2400_FlushRxTX(void)
void XL2400_SetRxAddress(uint8_t *address)
void XL2400_WriteReg(uint8_t reg, uint8_t value)
void XL2400_SetTxAddress(uint8_t *address)
void XL2400_WriteFromBuf(uint8_t reg, const uint8_t *pBuf, uint8_t len)
void XL2400_SetPower(uint8_t power)
uint8_t XL2400_ReadStatus(void)
void XL2400_CarrierTest(void)
uint8_t XL2400_ReadReg(uint8_t reg)
uint8_t XL2400_PrintStatus(void)
void XL2400_SetChannel(uint8_t channel)
void XL2400_SetRxMode(void)
void XL2400_CE_High(void)
void XL2400_ReadToBuf(uint8_t reg, uint8_t *pBuf, uint8_t len)
uint8_t XL2400_Tx(uint8_t *ucPayload, uint8_t length)
uint8_t XL2400_SPI_Test(void)
uint8_t XL2400_RxCalibrate(void)
void XL2400_ClearStatus(void)