?? cc2420rf.h
字號:
#ifndef CC2420RF_H
#define CC2420RF_H
/*****************************************************************************
包格式:
數據包: *
[Preambles (4)][SFD (1)][Length (1)][Frame control field (2)][Sequence number (1)][PAN ID (2)]
[Dest. address (2)][Source address (2)][Payload (Length - 2+1+2+2+2)][Frame check sequence (2)]
*
確認包:
[Preambles (4)][SFD (1)][Length = 5 (1)][Frame control field (2)][Sequence number (1)]
[Frame check sequence (2)]
*****************************************************************************/
// 和基本的RF包格式相關的常量
// 包overhead ((frame control field, sequence number, PAN ID, destination and source) + (footer))
// 注意: 長度字節本身并沒有包含進包的長度里。
#define BASIC_RF_PACKET_OVERHEAD_SIZE ((2 + 1 + 2 + 2 + 2) + (2))
#define BASIC_RF_MAX_PAYLOAD_SIZE (127 - BASIC_RF_PACKET_OVERHEAD_SIZE)
#define BASIC_RF_ACK_PACKET_SIZE 5
// 在數據包傳輸后到接收到確認包所花費的時間
#define BASIC_RF_ACK_DURATION (0.5 * 32 * 2 * ((4 + 1) + (1) + (2 + 1) + (2)))
#define BASIC_RF_SYMBOL_DURATION (32 * 0.5)
// 長度字節
#define BASIC_RF_LENGTH_MASK 0x7F
// 幀控制域
#define BASIC_RF_FCF_NOACK 0x8841
#define BASIC_RF_FCF_ACK 0x8861
#define BASIC_RF_FCF_ACK_BM 0x0020
#define BASIC_RF_FCF_BM (~BASIC_RF_FCF_ACK_BM)
#define BASIC_RF_ACK_FCF 0x0002
// Footer
#define BASIC_RF_CRC_OK_BM 0x80
/******************************************************************************
數據包傳輸
*******************************************************************************/
// 傳輸包時用到的數據結構
typedef struct {
WORD destPanId;
WORD destAddr;
INT8 length;
BYTE *pPayload;
BOOL ackRequest;
} BASIC_RF_TX_INFO;
/******************************************************************************
包接收
******************************************************************************/
// 接收數據結構:
typedef struct {
BYTE seqNumber;
WORD srcAddr;
WORD srcPanId;
INT8 length;
BYTE *pPayload;
BOOL ackRequest;
INT8 rssi;
} BASIC_RF_RX_INFO;
/***********************************************************
************ Initialization *******************
***********************************************************/
// RF設置結構
typedef struct {
BASIC_RF_RX_INFO *pRxInfo;
UINT8 txSeqNumber;
volatile BOOL ackReceived;
WORD panId;
WORD myAddr;
BOOL receiveOn;
} BASIC_RF_SETTINGS;
extern BASIC_RF_SETTINGS rfSettings;
#define NOP() asm ("NOP")
void halWait(UINT16 timeout);
void halRfWaitForCrystalOscillator(void);
void halRfSetChannel(UINT8 channel);
void basicRfReceiveOn(void);
void basicRfReceiveOff(void);
void basicRfInit(BASIC_RF_RX_INFO *pRRI, UINT8 channel, WORD panId, WORD myAddr);
BOOL basicRfSendPacket(BASIC_RF_TX_INFO *pRTI);
void CC2420_FIFOP_ISP();
BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -