Exemple #1
0
bool CC2500_PacketCheck()
{
	u8 i;
	u32 *pu32 = NULL;
	
	RSSI = CC2500_ReadStatus(CCxxx0_RSSI);
	LQI = CC2500_ReadStatus(CCxxx0_LQI);
	
	CC2500_ReceivePacket(gPacketbuf);
	
	ReceiveTime = Timer2Counter;
	
	CC2500_SetRxd();		

  pu32 = (u32*) &gPacketbuf[1];
	CRC_ResetDR();
	if (CRC_CalcBlockCRC(pu32, CRC_LENGTH - 1) == pu32[CRC_LENGTH - 1])
	{		
		if (NodeTimestamp[gPacketbuf[SRC_NUM]] != pu32[CRC_LENGTH - 2])
		{
			NodeTimestamp[gPacketbuf[SRC_NUM]] = pu32[CRC_LENGTH - 2];		
			return TRUE;
		}
		else
		{
			return FALSE;
		}
	}
	else
	{
		return FALSE;
	}
}
Exemple #2
0
// rf communication
void CC2500_Process(void)
{
	u8 i,j;

#define GDO0_
#ifdef GDO0_
	if(!GDO0_IN())
	{
		return;
	}

	while(GDO0_IN());
#else
    if(!(CC2500_ReadStatus(0x38)&0x01))
    {
    	return;
	}
	while((CC2500_ReadStatus(0x38)&0x01));
#endif

	Debug("Have a packet!\n\r");
    i = CC2500_ReadRSSIValue();

    for(i=0;i<sizeof(bTempBuf);i++) bTempBuf[i]=0;
    CC2500_ReceivePacket(bTempBuf);
	Debug("Receive over!\n\r");
	
    CC2500_SetRxd();
//	CC2500_REnter_WOR();

	
#if 1//def RF_DEBUG_
	Debug("\n\rRX Data:");
	for(j=0;j<sizeof(bTempBuf);j++)
	{	
		Debug("0x%x ",bTempBuf[j]);
	}
	Debug("\n\r");
#endif
}