SmartRC-CC1101-Driver-Lib
SmartRC-CC1101-Driver-Lib copied to clipboard
Fixed packed lenght
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