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; } }
// 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 }