#ifndef _NRF_PHY_H
#define _NRF_PHY_H

#include "bsp.h"

u8 NRF_CmpMultiPack(/*const u8 the_addr,*/const u8 src_addr,const u8 dst_addr,const u8 pack_type,const u16 ID);
u8 NRF_SearchHandleTimeoutId(void);
u8 NRF_AppropriateChannelDetect(void);//检测拥挤程度最低的信道
u8 NRF_MallocIdleDataBufId(void);//得到一个空闲DATABUF
u8 NRF_SearchDataBuf(const u8 status);//查找状态为status的DataBuf
u8 NRF_SearchDataByID(u16 ID);//根据ID搜索缓冲区
u8 NRF_GetThreadLockState(void);
void NRF_Init(void);//初始化协议
void NRF_FreeDataBuf(u8 id);//释放被使用的DATABUF,仅改变为空闲状态
void NRF_WaitDistributionAddr(void);
void NRF_ClearNodeData(void);
void NRF_SetNodeAddrMac(const u8 node,const u8 *mac);
void NRF_StoreParam(void);
void NRF_HandleBuf(void);//根据缓冲区状态处理缓冲区
void NRF_RecvData(void);//接收数据包
void NRF_Thread(void);//定时线程，执行协议
void NRF_SetWaitLinkTime(u32 time);
void NRF_SendData(const u8 dst_addr,const u8 type,const u8 *buf,HANDLESENDCALLBACK fun);//发送数据接口
void NRF_SetDefaultRecvHandler(HANDLERECECALLBACK pFun);//设置接收数据处理函数(回调函数)
void NRF_SetDefaultSendHandler(HANDLESENDCALLBACK pFun);
void NRF_SetPipe1Mac(u8 *addr);
void NRF_SetPipe2Mac(u8 *addr);
//void NRF_SetPipe5Mac(u8 *addr);
//void Get_MacAddr(u8 *mac,const u8 addr);//获取mac地址
void NRF_GetMacAddr(u8 *mac,const u8 addr);
static void NRF_AutoLink(void);//用于NODE到ROUTER的自动连接
static void NRF_ReadParam(void);
static void NRF_RelayPackage(LPayload pPayLoad);//转发数据包
static void NRF_NrfSendData(void);//根据缓冲区状态发送数据,发送前先检测干扰

extern NODESTATUS NodeStatus;

#endif
