Yes, that is what the explanations in the corresponding interface files suggest.

Are you developing a driver for the CC2520? My understanding is that it was done a few years ago as part of the Blaze project in tinyos-contrib.

Sergio


On 02/17/2012 01:10 PM, Eric Decker wrote:


On Fri, Feb 17, 2012 at 3:48 PM, Sergio Gonzalez <[email protected] <mailto:[email protected]>> wrote:

    Hi Eric,

    I don't know whether the radio drivers for the respective chips
    were written so that if sendDone() returns a success value, then
    it means that the packet's transmission is indeed complete.


I know explicitly what sendDone means is that all of the packet has been handed off to the radio's fifo. It is the signal that says you can send the next packet.

It does NOT mean the packet has left the hardware and has been completed as far as the transmission is concerned.

I'm not sure what exactly sync does. I haven't looked at what that does. Will probably get to it in the next month or so. At least for the 2520 chip.

    Hopefully someone more experienced on transceiver details can
    help. Either way, the available interfaces do not allow to specify
    the transmission channel on a per-packet basis, so for the time
    being, using sync() and syncDone() seems to address Ramakrishnan's
    need.

    Sergio


    On 02/17/2012 11:38 AM, Eric Decker wrote:

    That still doesn't help with seeing when the end of the packet
    has actually gone out.

    On Wed, Feb 15, 2012 at 5:44 PM, Sergio Gonzalez
    <[email protected] <mailto:[email protected]>> wrote:

        Hi Ramakrishna,

        Before sending a packet, do:

        ...
        call CC2420Config.setChannel(<channel>); // 11 or 26, etc.
        call CC2420Config.sync();
        ...

        Then, send the packet inside the synchDone callback afterwards:

        // Called after radio has tuned into a new channel
        event void CC2420Config.syncDone(error_t error)
        {
            if(error == SUCCESS) call AMSender.send(..);
            ...
        }


        Sergio Gonzalez


        >  Hi , This is Ramakrishna, working on tinyos-2.1.1. I am 
experimenting on
        >  dynamic channel switching for telosb mote. I am trying to send 2 
packets
        >  one in 26th channel and second in 11th channel. When i change the 
channel
        >  from 26 to 11 after sending the first packet in my program, first 
packet
        >  also being sent on 11th channel but not on 26th. why it is so? I am
        >  modifying the channel only after getting 'sendDone' event of the 
first
        >  packet. how it is overwriting the channel register with 11 before
        >  transmitting the first packet? Please help me in this regard.
        >
        It is my understanding that sendDone gets generated when the last byte 
has
        been transfered to the h/w.   It doesn't mean that the packet has 
acutally
        transmitted.

        So if you are changing the channel at that point you will probably cause
        problems for the back part of the packet.

        I'm not aware of an event being available from the h/w to indicate the
        complete TX has finished.  Not sure if  current h/w  makes that
        available....   You will need to stare at the radio docs.


        You could try putting a delay of somekind to see if that helps.

        As far as the channel register changing, I have no clue.



        -- Eric B. Decker Senior (over 50 :-) Researcher

        _______________________________________________
        Tinyos-help mailing list
        [email protected]
        <mailto:[email protected]>
        https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help




-- Eric B. Decker
    Senior (over 50 :-) Researcher





--
Eric B. Decker
Senior (over 50 :-) Researcher


_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to