[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