dsvensson / cc1101

A platform agnostic driver to interface with the CC1101 (Sub-1GHz RF Transceiver)
Apache License 2.0
33 stars 18 forks source link

CRC check may stop working, requiring power cycle #19

Closed dsvensson closed 6 years ago

dsvensson commented 6 years ago

Sample from sparsnas-rs:

len: 11 addr: 3e data: 070ea27ae979e7dc66d447dbe79ce4 len: 15, ok: true, 73 c2
 11 3e 7c  40de   0009693e 377e 1554    000b45ef 64 # Current power: 675
len: 11 addr: 3e data: 070ea27ae979e7dd66dc47dbe781e4 len: 15, ok: true, e8 c2
 11 3e 7f  40de   0009693e 377f 155c    000b45f2 64 # Current power: 674
len: 11 addr: 3e data: 070ea27ae979e72266dc47dbe786e4 len: 15, ok: true, d4 c2
 11 3e 00  40de   0009693e 3780 155c    000b45f5 64 # Current power: 674
len: 11 addr: 3e data: 070ea27ae979e726676247dbe472e4 len: 15, ok: true, da c2
 11 3e 04  40de   0009693e 3784 14e2    000b4601 64 # Current power: 689
len: 11 addr: 3e data: 070ea27ae979e72766c047dbe470e4 len: 15, ok: true, e9 c2
 11 3e 05  40de   0009693e 3785 1540    000b4603 64 # Current power: 677
len: 11 addr: 3e data: 070ea27ae979e72a67e047dbe47ee4 len: 15, ok: true, d7 c2
 11 3e 08  40de   0009693e 3788 1460    000b460d 64 # Current power: 706
len: 15 addr: 3e data: 070ea27ae979e72b677c47dbe47ce4 len: 15, ok: false, 1e 22 // bad?
len: 11 addr: 3e data: 070ea27ae979e728677a47dbe461e4 len: 15, ok: false, e8 1e
len: 11 addr: 3e data: 070ea27ae979e729669047dbe466e4 len: 15, ok: false, e1 1e
len: 11 addr: 3e data: 070ea27ae979e72e67f047dbe46be4 len: 15, ok: false, e7 1e
len: 11 addr: 3e data: 070ea27ae979e72f601447dbe468e4 len: 15, ok: false, e8 1e
len: 11 addr: 3e data: 070ea27ae979e72c60cc47dbe46de4 len: 15, ok: false, db 1e
len: 01 addr: 3e data: 47470ea27ae979e72c60cc47dbe46d len: 15, ok: false, db 1e // bad
len: 11 addr: 3e data: 070ea27ae979e73367f447dbe454e4 len: 15, ok: false, eb 1e
len: 11 addr: 3e data: 070ea27ae979e73067b647dbe459e4 len: 15, ok: false, e5 1e

Restarting the app does nothing. Fixed by power cycling. Not sure why. The 15 length seems a bit funny, could it be that something needs to be done when CRC fails, that stays even SRES is strobed. There is also some register flag to filter packets that don't pass CRC-check iirc.

Maybe the trigger of this is an RX overflow. The buffer passed in is just 21 bytes, and 0x15 = 21, but then there's also the length byte and address byte. Perhaps max packet length should be set to 23 here, and some packets are actually larger in the Sparsnäs protocol.

dsvensson commented 6 years ago

This may be fixed as a side effect of fixing #8, properly resetting the radio on errors.