Jiakang - I know the issue; I've tried to implement this behavior before with similar results.
The CC2420 has a delay between Rx and Tx switching. The radio is defaulted to Rx, so when you transmit, it has to go from Rx->Tx, transmit, then Tx->Rx. Basically you see these Tx->Rx->Tx gaps between each transmission, when CCA is disabled properly. The solution to this is sort of a hack I implemented with the last rev of the 2.0.1 CC2420 stack, and it will be removed in the next rev because I don't want to support it or spend time maintaining it. The CC2420 has an option to continuously modulation the channel, resending the contents of the TXFIFO over and over without any gaps between the transmissions. This allows a receiver to perform an extremely small receive check to detect if a transmitter is nearby in a low power listening scheme. Because it's resending only the contents of the TXFIFO with no additional calculations, the packet's CRC needs to be pre-calculated and loaded onto the chip. Also, I'm not sure if a preamble/sync byte is automatically sent for each round of the TXFIFO transmission, so that may need to be uploaded as part of the packet too. Another option is to have your receivers do more complex backoffs. For example, sample the channel multiple times instead of once before transmitting when you know other transmitters in the area are going to be doing no-CCA packet trains. This would increase latency, but decrease collisions. -David -----Original Message----- From: Jiakang Lu [mailto:[EMAIL PROTECTED] Sent: Sunday, July 01, 2007 9:24 PM To: David Moss Subject: CC2420 Back-by-Back Sending Problem Hi David, I'm trying to control the CCA and backoff in CC2420 radio on tinyos-1.x. However, I met some unexpected radio performance when sending the packets back-by-back. I've been debugging for a long time, but still cannot fix the problem. I really hope that you can give me some idea or suggestion. Basically, my scenario is to send one packet train or two: 1. there is no CCA and backoff between any pair of packets in the train; 2. for the overall train, CCA is required. To do so, I wrote an interface called ConfigureMac to control the CCA and backoff part in CC2420RadioM by setting some flags. With ConfigureMac, my application is supposed to tell MAC layer if it's the first car of the packet train, and whether the CCA and backoff should be eliminated or not. And to make sure that every and each packet will be sent, I made countRetry not to decrease in all cases. Besides, I recorded send time and sendDone time of each packet to get a clear view how it actually works. These are all the changes I made based on standard CC2420RadioM in tinyos-1.x. But when I send this packet train as stated above, sometimes I got very weird performance: the train is separated for some reason, though each part shows back-by-back transmission. This situation doesn't happen all the time and the broken pattern is random, which makes me really confused. Does the change in countRetry cause something wrong in the operation? Does the back-by-back transmission cause some problem in TxFIFO buffer? For your reference, I related files in the mail and snapshot some cases in my data plot. I do appreciate your patience and help! Thank you very much. Best, Jiakang _______________________________________________ Tinyos-help mailing list [email protected] https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
