[Tinyos-help] a problem about "Dissemination" in tinyos 2.0.1

Razvan Musaloiu-E. razvanm at cs.jhu.edu
Thu May 17 13:20:20 PDT 2007


Hi!

You also need to call the start of the StdControl interface provided by 
DisseminationC.

Here you can see a working example:
 	http://tinyos.cvs.sourceforge.net/tinyos/tinyos-2.x/apps/tests/TestDissemination/

Have a nice day!
Razvan ME

On Thu, 17 May 2007, eamin_winfor at 126.com wrote:

>
> hi all,
>
> I 'm studing tinyos2.0.1 and  meet a problem about "Dissemination" .
> The problem is quite simple. I read the Tutorial 12, and compile the
> program which is similar to the program in the Tutorial 12, but it doese't work.
>
> Here is the program:
>
> #include <Timer.h>
> module EasyDisseminationC
> {
>     uses interface Boot;
>     uses interface DisseminationValue<uint16_t> as Value;
>     uses interface DisseminationUpdate<uint16_t> as Update;
>     uses interface SplitControl as AMControl;
>
>     uses interface Timer<TMilli>;
> }
> implementation
> {
>     uint16_t counter;
>
>     task void ShowCounter()
>    {
>        dbg("Dissemination","Counter is %d.\n", counter);
>    }
>
>    event void Boot.booted()
>   {
>      dbg("Boot","Booted: The application started. \n");
>      counter = 0;
>      call AMControl.start();
>   }
>
>     event void AMControl.startDone(error_t err)
>    {
>         if (err == SUCCESS)
>         {
>             if (TOS_NODE_ID == 1)
>            {
>                 call Timer.startPeriodic(100);
>             }
>        }
>        else
>       {
>           dbg("Error","Error: The AMControl doesn't started. \n");
>           call AMControl.start();
>        }
>    }
>
>    event void AMControl.stopDone(error_t err)
>    {
>        dbg("Dissemination","STOP: Stop the application. \n\n");
>    }
>
>    event void Timer.fired()
>    {
>         counter = counter + 1;
>         post ShowCounter();
>        call Update.change(&counter);
>    }
>
>    event void Value.changed()
>   {
>        const uint16_t* newVal = call Value.get();
>        counter = *newVal;
>        post ShowCounter();
>    }
>
> }
>
> It seems Update.change() does't work at all. I don't know why.
> And i remember the same program was fine under tinyos2.0.
> Any help would be appreciated.
>
> Eamin
>
>


More information about the Tinyos-help mailing list