Exemplo n.º 1
0
//=====================================
u8 sx1278_LoRaRxPacket(void)
//=====================================
{
  u8 i; 
  u8 addr;
  u8 packet_size; 
  if(Get_NIRQ())
  {
    for(i=0;i<32;i++) 
      RxData[i] = 0x00;    
    addr = SPIRead(LR_RegFifoRxCurrentaddr);      //last packet addr
    SPIWrite(LR_RegFifoAddrPtr,addr);             //RxBaseAddr -> FiFoAddrPtr    
    if(sx1278SpreadFactorTable[Lora_Rate_Sel]==6)	//When SpreadFactor is six£¬will used Implicit Header mode(Excluding internal packet length)
      packet_size=21;
    else
      packet_size = SPIRead(LR_RegRxNbBytes);     //Number for received bytes    
    SPIBurstRead(0x00, RxData, packet_size);    
    SPIWrite(LR_RegIrqFlags,LoRa_ClearIRQ_Value);
    for(i=0;i<17;i++)
    {
      if(RxData[i]!=sx1278Data[i])
        break;  
    }    
    if(i>=17)                                     //Rx success
      return(1);
    else
      return(0);
  }
  else
    return(0);
}
Exemplo n.º 2
0
Arquivo: SI4432.c Projeto: edwios/IoT
/******************************************************************************
**Name:           SI4432_RxPacket
**Function:       receive package data in FIFO to buffer
**Input:          receive buffer
**				  len =0--dont care
**				  >0--max bytes to read
**output:         1--receive sucessful
**                0--no receive or receive wrong
******************************************************************************/
byte SI4432_RxPacket(byte *buffer, int len)
{
	byte i;
	int recvLen;

	if (!buffer) return 0;				// no nil buffer!

	SPIWrite(0x0701);					// Disable Rx chain
	recvLen = SPIRead(0x4B);			// How many bytes do we have?
	if (((len > 0) && (recvLen < len)) || (len == 0)) {
		len = recvLen;
	}
	if (len > FIFOSIZE)
		len = FIFOSIZE;					// so that we won't BOF
	for(i=0;i<len;i++)	
		buffer[i] = 0x00; 	
	SPIBurstRead(0x7F, buffer, len);			
	return len;
}