Hi,
A customer has been designing their outdoor products with CC1310 as the remote control receiver. In test they found it could not receive remote control signal extreme temperature conditions, like high temperature 50℃ or low temperature -40℃. Their finally found this issue was caused by frequency offset and figured out a solution [Please check the code below]. Basically the Solution 2 could solve the problem, but there's still things unclear:
1.The current solution used easylink asynchronization, it lost packets sometimes. While easylink synchronization would not, do we have a easylink synchronization solution?
2.Does the solution 2 have other hidden dangers?
3.Do we have a document or example to solve this problem?
Code:
Original code(easylink synchronization, RF stuck under extreme temperature conditions, no packet loss at room temperature):
MyrxPacket.absTime = 0; EasyLink_Status result = EasyLink_receive(&MyrxPacket); if (result == EasyLink_Status_Success) { /* Toggle LED2 to indicate RX */ DealRxPack(&MyrxPacket); } else { }
Solution 1(easylink synchronization, RF stuck under extreme temperature conditions):
MyrxPacket.absTime = 10; EasyLink_Status result = EasyLink_receive(&MyrxPacket); if (result == EasyLink_Status_Success) { /* Toggle LED2 to indicate RX */ DealRxPack(&MyrxPacket); } else { }
Solution 2(easylink asynchronization, worked normally under extreme temperature conditions, but got a packet loss rate of 0.172%):
EasyLink_receiveAsync(rxDoneCb, 0); // /* Wait for Rx */ if(Semaphore_pend(rxDoneSem, g_waitTick) == FALSE) { /* RX timed out abort */ if(EasyLink_abort() == EasyLink_Status_Success) { /* Wait for the abort */ Semaphore_pend(rxDoneSem, BIOS_WAIT_FOREVER); } } RF_yield(rfHandle);