SmartRC-CC1101-Driver-Lib icon indicating copy to clipboard operation
SmartRC-CC1101-Driver-Lib copied to clipboard

Fixed packed lenght

Open kaczorgsm opened this issue 3 years ago • 0 comments

Hi. When I set fixed packed lenght is problem with data. I found problem (temporary) but I don't know how working "infinite lenght"

Look into code

void ELECHOUSE_CC1101::SendData(byte *txBuffer,byte size) { SpiWriteReg(CC1101_TXFIFO,size); // <------------------- SpiWriteBurstReg(CC1101_TXFIFO,txBuffer,size); //write data to send SpiStrobe(CC1101_SIDLE); SpiStrobe(CC1101_STX); //start send while (!digitalRead(GDO0)); // Wait for GDO0 to be set -> sync transmitted while (digitalRead(GDO0)); // Wait for GDO0 to be cleared -> end of packet SpiStrobe(CC1101_SFTX); //flush TXfifo trxstate=1; } In fixed lenght we don't need "lenght" byte

so

if (pc0LenConf != 0) SpiWriteReg(CC1101_TXFIFO,size);

Also in RX mode we have problem:

` byte ELECHOUSE_CC1101::ReceiveData(byte *rxBuffer) { byte size; byte status[2];

if(SpiReadStatus(CC1101_RXBYTES) & BYTES_IN_RXFIFO)
{
	size=SpiReadReg(CC1101_RXFIFO);  // <-----------
	SpiReadBurstReg(CC1101_RXFIFO,rxBuffer,size);
	SpiReadBurstReg(CC1101_RXFIFO,status,2);
	SpiStrobe(CC1101_SFRX);
SpiStrobe(CC1101_SRX);
	return size;
}
else
{
	SpiStrobe(CC1101_SFRX);
SpiStrobe(CC1101_SRX);
	return 0;
}

} `

So I think better make something like that:

if (pc0LenConf != 0) {size=SpiReadReg(CC1101_RXFIFO);} else {size=SpiReadStatus(CC1101_RXBYTES);}

Or maybe I make something wrong ?

PS. Flushing RXFIFO and TXFIFO working only in IDLE - so I thinh also must be updated

kaczorgsm avatar Apr 03 '21 22:04 kaczorgsm