[Tinyos-help] State of Radio CC2420_lpl

David Moss dmm at rincon.com
Tue Dec 5 17:47:41 PST 2006


Hi Miguel,

The software will definitely let you turn the radio on and 
off manually using CC2420Csma.SplitControl. The only issue 
you'd run into with doing it manually is if you turn it on 
at the same time the radio is already on doing a receive 
check, then the receive check (CC2420DutyCycleP) will 
think it is in control and will force the radio back off. 
 That means you'd probably need to modify CC2420DutyCycleP 
to not turn the radio off if your component is in control. 
 Also, if your software turns on the radio between receive 
checks, then the next time CC2420DutyCycleP tries to do a 
receive check it will see the radio is already on and skip 
the receive check until the next period elapses.  So, 
again, the only issue you'd run into is turning the radio 
on while it's already on to do a receive check.

This asynchronous low power listening implementation 
(which isn't x-mac, by the way - this was actually 
developed separately from what the guys at UC Boulder 
researched) was designed to allow a synchronous delivery 
layer to sit on top without much (if any) modification. 
 I'm going to be eventually building a synchronous network 
on top of this myself.  What I had in mind was to allow 
the motes to duty cycle asynchronously as they normally 
do, and combine it with the network synchronization stuff 
done by Moteiv with Boomerang:  Each mote has a neighbor 
table that keeps track of when its neighbors are on.  If a 
message needs to be sent to a particular neighbor, it will 
be schedule to send just before that neighbor is scheduled 
to turn on. The act of sending the message will turn on 
the radio for you, so you don't need to explicitly turn it 
on with CC2420CsmaC.SplitControl.

How do you know when your neighbors turn on?  Well one way 
to tell is to actually send a message to a neighbor.  When 
the sendDone() event returns and your message was ack'd, 
then you know your neighbor had just turned on to receive 
that message, so you know when your neighbor will turn on 
next time if you know its sleep interval.  The message 
resending mechanism of CC2420LowPowerListeningP will 
ensure that the message gets delivered, even if its sent a 
little bit early due to clock skew or dropped messages. 
 Add to this the ability for each neighbor to maintain 
channel information in a neighbor table, and that might be 
what you're looking for.

What I described is a difficult implementation, but would 
certainly be useful if done in a general way.  Hope that 
gives you some ideas,

-David



On Tue, 5 Dec 2006 22:59:21 +0000
  "Miguel Pereira" <miguelpereira.pro at gmail.com> wrote:
> Hi David,
> 
> Thanks for your help. Now I start to understand this 
>thing.
> What I need to do is to create on top X-MAC, 
>synchronized channels to send
> messages to one specific mote without contention.
> To do that I need to put radio ON to send that message 
>in one period of time
> which is inside of sendInterval. By this way I can 
>create synchronize
> transmissions with several motes but continuing using 
>X-MAC underneath.
> Using the component CC2420CsmaC.SplitControl could I 
>make this? It's
> important to understand that I still want the Duty-Cycle 
>running underneath.
> 
> Thanks for any help,
> 
> Miguel Pereira
> 
> 
> On 12/5/06, David Moss <dmm at rincon.com> wrote:
>>
>> When you send a message using low power listening, the
>> sendDone event inside CC2420LowPowerListeningP will
>> execute the signalDone() function, which calls the
>> startOffTimer() function.  This OffTimer will keep the
>> radio on for a short period of time before turning it 
>>off,
>> in case some transaction needs to occur.  The mote will
>> continue duty cycling with the same duty cycle rate 
>>after
>> the send is complete, and there is nothing else that 
>>needs
>> to happen.
>>
>> You should probably stay away from controlling the 
>>radio's
>> on/off state manually, but if you really wanted to you
>> could control it by connecting your component to
>> CC2420CsmaC.SplitControl.  The SplitControl provided by
>> CC2420DutyCycleP only turns the duty cycling on and off.
>> If you set the duty cycle to 100% (always on) then you
>> could call the regular ActiveMessageC.SplitControl to 
>>turn
>> the radio on and off manually.
>>
>> Hope that helps,
>> -David
>>
>>
>>
>>
>> On Tue, 5 Dec 2006 00:22:09 +0000
>>   "Miguel Pereira" <miguelpereira.pro at gmail.com> wrote:
>> > Hi,
>> >
>> > I need some help to understand one thing. When I'm 
>>using
>> >the interface Send
>> > and Receive provided by CC2420LowPowerListeningP.nc 
>>and
>> >I send one message
>> > with sendInterval>0 the radio stay On or Off after 
>>that?
>> > By the code it seems that the radio stays indefinably
>> >on. If that's true
>> > what can I do to them sleep again with the same
>> >sendInterval? Should I call
>> > again LowPowerListening.setLocalSleepInterval on file
>> > CC2420LowPowerListeningP.nc?
>> > But, if I only want to put the radio On or Off 
>>manually
>> >and not disturb the
>> > timers of sleep and wake periods, I need to use the
>> >interface SplitControl
>> > provided by CC2420DutyCycleP.nc? I'm not sure if that
>> >not will reset and
>> > start the timers, and that is one thing that do not
>> >wanted.
>> >
>> > Any elucidation will be much appreciated.
>> > Thanks….
>> >
>> > Miguel Pereira
>>
>>



More information about the Tinyos-help mailing list