[Tinyos-help] Software auto acknowledgements break packet timestamps in the C2420 driver
Nellen at cmc.ca
Mon Nov 8 07:36:54 PST 2010
I'm trying to run the FTSP test application (revision 5215 of http://tinyos-main.googlecode.com/svn/trunk) as described in tinyos-2.x/apps/tests/TestFTSP/Ftsp/README.txt on Shimmer. At first the nodes running TestFtspAppC didn't seem to respond to the messages sent out by the beacon mote (java FtspDataLogger reported nothing). Using a packet sniffer I discovered that the FTSP motes send ACK packets for each beacon message but they don't send report messages (which would then be picked up by the base station and ultimately be displayed by the FtspDataLogger).
I looked at the CC2420 driver source code in tos/chips/cc2420/receive/CC2420ReceiveP.nc and used printf to see what's going on, and I think I found the problem: the outgoing ACK messages trigger the SFD interrupt and cause a timestamp to be put in to the timestamp queue (line 190). If this happens BEFORE the timestamp of the incoming packet is read, the packet timestamp is cleared and the timestamp queue gets flushed (lines 633-635). Consequently all packets received by the FTSP test application contain invalid timestamps and are thus ignored (line 67 in TestFtsp.nc).
Does that make sense? Is this a known problem? Has FTSP ever been tested with CC2420?
As a temporary fix I added PFLAGS += -DCC2420_NO_ACKNOWLEDGEMENTS to the Makefile and I get messages from the FTSP motes now, however this fix doesn't really address the cause of the problem...
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Tinyos-help