예제 #1
0
파일: TxRx.c 프로젝트: AnCheTeng/autonet
uint8_t RF_Rx(uint8_t* RxData, uint8_t* Data_Length, uint8_t* RSSI){
	
	  int _isReceived =0;
	  int _checkFlag=0;
	
		// ============== Check RX FIFO Full/Overflow ================= //
		if (Us2400ReadShortReg(0x30) == 0x90){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &RFRssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;
				
				memcpy(RxData, Data, DataLen);
				*Data_Length = DataLen;
				*RSSI = RFRssi;
				
				_checkFlag = headerCheck_AutoNet();			
				if(!_checkFlag) {							// Not For AutoNet
					_isReceived = 1;
					Us2400WriteShortReg(0x0D, Us2400ReadShortReg(0x0D) | 0x01);	
				}
			}
		}
		// ============== Packet Receive ================= //
		if (RFRxState == 1 || Us2400ReadShortReg(0x30) == 0x80){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &rssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;			
				
				memcpy(RxData, Data, DataLen);
				*Data_Length = DataLen;
				*RSSI = RFRssi;
				
				_checkFlag = headerCheck_AutoNet();
				if(!_checkFlag) {    					// Not For AutoNet
					_isReceived = 1;
					RFRxState = 0;
				}
			}
		}
		return _isReceived;
}
예제 #2
0
uint8_t RF_Rx(uint8_t* RxData, uint8_t* Data_Length){
	
	  int _rx_check_flag =0;
	  int _header_check_flag=0;
	
		// ============== Check RX FIFO Full/Overflow ================= //
		if (Us2400ReadShortReg(0x30) == 0x90){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &RFRssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;
				
				memcpy(pRxData, Data, DataLen);
				memcpy(RxData, pRxData, DataLen);
				*Data_Length = DataLen;
				
				_header_check_flag = autonet_header_check();			
				if(!_header_check_flag) {							// Not For AutoNet
					_rx_check_flag = 1;
					Us2400WriteShortReg(0x0D, Us2400ReadShortReg(0x0D) | 0x01);	
				}
			}
		}
		// ============== Packet Receive ================= //
		if (RFRxState == 1 || Us2400ReadShortReg(0x30) == 0x80){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &rssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;			
				
				memcpy(pRxData, Data, DataLen);
				memcpy(RxData, pRxData, DataLen);
				*Data_Length = DataLen;
				
				_header_check_flag = autonet_header_check();
				if(!_header_check_flag) {    					// Not For AutoNet
					_rx_check_flag = 1;
					RFRxState = 0;
				}
			}
		}
		return _rx_check_flag;
}
예제 #3
0
파일: TxRx.c 프로젝트: AnCheTeng/autonet
int RF_RX_AUTONET(){
	
	  int _isReceived =0;
	  int _checkFlag=0;

		// ============== Check RX FIFO Full/Overflow ================= //
		if (Us2400ReadShortReg(0x30) == 0x90){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &RFRssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;
				
				memcpy(pRxData, Data, DataLen);
				
				_checkFlag = headerCheck_AutoNet();
				if(_checkFlag) {					// For AutoNet
					_isReceived = 1;
					Us2400WriteShortReg(0x0D, Us2400ReadShortReg(0x0D) | 0x01);	
				}
			}
		}
		// ============== Packet Receive ================= //
		if (RFRxState == 1 || Us2400ReadShortReg(0x30) == 0x80){
			Us2400Rx(Data, &DataLen_temp, &RFLqi, &rssi);
			if (DataLen_temp != 0){
				DataLen = DataLen_temp;
				DataLen_temp = 0;			
				
				memcpy(pRxData, Data, DataLen);
				
				_checkFlag = headerCheck_AutoNet();	
				if(_checkFlag) {					// For AutoNet
					_isReceived = 1;
					RFRxState = 0;
				}
			}
		}
		return _isReceived;
}