I’m doing security research using the DW3000 Evaluation Board using the software from GitHub - seemoo-lab/uwb-sniffer: A UWB Sniffer with accurate timestamps .
I’d need to be able to get accurate timestamps for every received packet. However when the timestamp is read out using
dwt_readrxtimestamp(), the value changes only every few seconds.
According to the User Manual, the CIADONE flag (bit 10 of the status register) indicates that the RX timestamp has been calculated and can be read out.
I discovered through debugging that for most packets, CIADONE will never read 1 (waiting results in an infinite loop).
For the packets where CIADONE reads 1, the timestamp gets updated, but this happens rarely.
In the original source code, the STS mode is set to DWT_STS_MODE_1. When the STS mode is set to DWT_STS_MODE_ND (STS with no data), the timestamp is updated for every packet, however then the captured packets all are empty.
The User manual says “Where the CIA is
configured to operate on the STS which occurs later in the packet, the CIADONE event
status flag bit is not set until CIA algorithm has completed its processing.”
I have a few questions on my mind:
- Does the CIA configuration refer to the STS mode?
- Are there other reasons why the CIA processing may fail?
- Are there any configuration options that may let the CIA processing fail for some packets?
- Does the success of CIA processing depend on the format / validity of incoming packets in some way?
I’d be thankful for any suggestions!