📄 basic_rf.h
字号:
/*******************************************************************************
Filename: basic_rf.h
Description: Basic RF library header file
*******************************************************************************/
#ifndef BASIC_RF_H
#define BASIC_RF_H
/*******************************************************************************
The "Basic RF" library contains simple functions for packet transmission and
reception with the CC2520 radio chip. The intention of this library is mainly
to demonstrate how the CC2520 is operated, and not to provide a complete and
fully-functional packet protocol. The protocol uses 802.15.4 MAC compliant data
and acknowledgment packets, however it contains only a small subset of the
802.15.4 standard:
- Association, scanning nor beacons are not implemented
- No defined coordinator/device roles (peer-to-peer, all nodes are equal)
- Waits for the channel to become ready, but does not check CCA twice
(802.15.4 CSMA-CA)
- Does not retransmit packets
INSTRUCTIONS:
Startup:
1. Create a basicRfCfg_t structure, and initialize the members:
2. Call basicRfInit() to initialize the packet protocol.
Transmission:
1. Create a buffer with the payload to send
2. Call basicRfSendPacket()
Reception:
1. Check if a packet is ready to be received by highger layer with
basicRfPacketIsReady()
2. Call basicRfReceive() to receive the packet by higher layer
FRAME FORMATS:
Data packets (without security):
[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)]
Acknowledgment packets:
[Preambles (4)][SFD (1)][Length = 5 (1)][Frame control field (2)]
[Sequence number (1)][Frame check sequence (2)]
*******************************************************************************/
/*******************************************************************************
* INCLUDES
*/
#include "hal_types.h"
#include "hal_defs.h"
/*******************************************************************************
* TYPEDEFS
*/
typedef struct {
uint16 myAddr;
uint16 panId;
uint8 channel;
uint8 ackRequest;
#ifdef SECURITY_CCM
uint8* securityKey;
uint8* securityNonce;
#endif
} basicRfCfg_t;
/*******************************************************************************
* GLOBAL FUNCTIONS
*/
uint8 basicRfInit(basicRfCfg_t* pRfConfig);
uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length);
uint8 basicRfPacketIsReady(void);
int8 basicRfGetRssi(void);
uint8 basicRfReceive(uint8* pRxData, uint8 len, int16* pRssi);
void basicRfReceiveOn(void);
void basicRfReceiveOff(void);
#endif
/*------------------------------------------------------------------------------
0ooo
ooo0 ( )
( ) ) /
\ ( (_/
\_) Modify By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -