On Tue, Jul 29, 2008 at 5:52 AM, Nicola Wegner <[EMAIL PROTECTED]
> wrote:
> Hi,
>
> I am not sure if I got it right.
Close.
> Does it mean that I do not have to
> care about virtual timers because they will be used automatically by
> TinyOS?
>
Yes it means tinyos will handle the virtualization for you.
> If this is the case then the following code would create virtual
> timers based on another virtual timer. Right?
Not quite. You don't want to reference VirtualizeTimerC directly. You
want to use Timer<TMilli> and let the platform wiring handle the
virtualization
for you.
Take a look at tinyos-2.x/apps/tutorials/BlinkTask/*
You'll see something like:
BlinkTaskAppC.nc:
configuration BlinkTaskAppC
{
}
implementation
{
components MainC, BlinkTaskC, LedsC;
components new TimerMilliC() as Timer0;
BlinkTaskC -> MainC.Boot;
BlinkTaskC.Timer0 -> Timer0;
BlinkTaskC.Leds -> LedsC;
}
And in BlinkTaskC.nc:
module BlinkTaskC
{
uses interface Timer<TMilli> as Timer0;
uses interface Leds;
uses interface Boot;
}
implementation
{
task void toggle()
{
call Leds.led0Toggle();
}
event void Boot.booted()
{
call Timer0.startPeriodic( 1000 );
}
event void Timer0.fired()
{
post toggle();
}
}
So if you wanted to use three timers you would do something like:
BlinkTaskC.nc (app)
uses interface Timer<TMilli> as Timer0;
uses interface Timer<TMilli> as Timer1;
uses interface Timer<TMilli> as Timer2;
And in the wiring:
components new TimerMilliC() as Timer0;
components new TimerMilliC() as Timer1;
components new TimerMilliC() as Timer2;
BlinkTaskC.Timer0 -> Timer0;
BlinkTaskC.Timer1 -> Timer1;
BlinkTaskC.Timer2 -> Timer2;
Where this wires into the underlying layers is via the system component
TimerMilliC which eventually
causes VirtualizeTimerC to hook up to the underlying platform timer
hardware.
Take a look at:
tinyos-2.x/tos/system/TimerMilliC.nc
tinyos-2.x/tos/system/TimerMilliP.nc
tinyos-2.x/tos/chips/msp430/timer/HilTimerMilliC.nc (I build for telosb)
tinyos-2.x/tos/chips/msp430/timer/AlarmMilli32C.nc
etc.
To follow what is happening, build BlinkTask as follows:
cd tinyos-2.x/apps/tutorials/BlinkTask
make verbose telosb
It will show which files are being pulled in.
eric
make
> components new TimerMilliC() as BaseTimer;
> components new VirtualizeTimerC(TMilli, 5);
>
> VirtualizeTimerC.TimerFrom -> BaseTimer.Timer;
> DbgMessengerP.Timer0 -> VirtualizeTimerC.Timer[0];
> DbgMessengerP.Timer1 -> VirtualizeTimerC.Timer[1];
> [...]
>
>
> Thank you,
>
> Nicola
> _______________________________________________
> Tinyos-help mailing list
> [email protected]
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
--
Eric B. Decker
Senior (over 50 :-) Researcher
Autonomous Systems Lab
Jack Baskin School of Engineering
UCSC
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help