📄 rfreceivepacket.c
字号:
/*------------------------------------------------------------------------------
Filename: rfReceivePacket.c
Target: cc1110, cc2510, cc2511
Revised: 26/10-2005
Revision: 0.1
------------------------------------------------------------------------------*/
#include "hal.h"
#include "main.h"
byte volatile length;
bool volatile isLengthByte;
uint8 index;
byte* pRssiVal;
byte pPayload[68];
byte* pLqiVal;
byte lengthReceived;
//-----------------------------------------------------------------------------
// See hal.h for a description of this function.
//-----------------------------------------------------------------------------
void halRfReceivePacket(byte* pRssi, byte* pLqi) // byte timeOut)
{
index=0;
length = 0;
INT_SETFLAG(INUM_RFTXRX, INT_CLR);
INT_ENABLE(INUM_RFTXRX, INT_ON);
INT_GLOBAL_ENABLE(INT_ON);
RFIF = RFIF & ~IRQ_DONE;
RFIM = 0x10;
// RFIF=0;
pRssiVal = pRssi;
pLqiVal = pLqi;
*pRssiVal = 0x00;
*pLqiVal = 0x00;
lengthReceived = false;
isLengthByte = true;
SRX();
Timer0_Fresh(0xDE,0x98);
while(!(RFIF & IRQ_DONE))
{
/* if(timeOut)
{
halWait(1);
timeOut--;
}
else
{
if(lengthReceived == true)
{
timeOut = 255;
lengthReceived = false;
}
else
{
SIDLE();
INT_ENABLE(INUM_RFTXRX, INT_OFF);
return 0;
}
} */
if(lengthReceived==true)
{
Timer0_Fresh(0x2D,0x4C);
lengthReceived = false;
}
if(CHKBIT(T1CTL,OVFIF))
{
SIDLE();
INT_ENABLE(INUM_RFTXRX, INT_OFF);
return;
}
}
SIDLE();
RFIF &= ~IRQ_DONE;
INT_ENABLE(INUM_RFTXRX, INT_OFF);
if(*pLqi & 0x80)
{
return;
}
else
{
index=0;
return;
}
}
#pragma vector=RFTXRX_VECTOR
__interrupt static void rf_txrx_IRQ(void)
{
//The interrupt flag is cleared automatically
if (isLengthByte)
{
length = RFD;
if((length>0)&&(length<69))
{
isLengthByte = false;
lengthReceived = true;
}
else return;
}
else if (index < length)
{
pPayload[index++] = RFD;
}
else if (index == length)
{
index++;
*pRssiVal = RFD;
}
else
{
*pLqiVal = RFD;
isLengthByte = true;
}
return;
}
/*------------------------------------------------------------------------------
0ooo
ooo0 ( )
( ) ) /
\ ( (_/
\_) Modify By:cuiqingwei [gary]
------------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -