[Tinyos-help] NesC and TinyOS

Andres Aberasturi benytokmelas at hotmail.com
Wed Jun 14 00:56:16 PDT 2006


Thanks for your help Philip. We are reading your programming manual, which 
is really good, but we would want to understand right. Your answers help us 
a lot.

Andres


From:  Philip Levis <pal at cs.stanford.edu>
To:  Andres Aberasturi <benytokmelas at hotmail.com>
CC:  tinyos-help at Millennium.Berkeley.EDU
Subject:  Re: [Tinyos-help] NesC and TinyOS
Date:  Tue, 13 Jun 2006 09:00:46 -0700
>On Jun 12, 2006, at 7:29 AM, Andres Aberasturi wrote:
>
>>
>>Hi all,
>>
>>We have been working with TinyOs and NesC some few months, but we  still 
>>have some doubts. We want to ask you the following three  questions:
>>
>>1.- In some places, we have read that events can call commands,  post 
>>tasks and signal other events. Also, we have read that  commands can call 
>>lower level commands. Then, a command cannot post  a task? or signal an 
>>event? is it right? We thought command can do it.
>
>The only operation that issues a warning is when an async function  calls a 
>sync function. For simplicity, sync functions are only safe  to call when 
>the root of the call graph is a task. Async functions  can also have 
>interrupt handlers are their root.
>
>In practice, it is bad practice to signal an event (signal xxxx)  inside a 
>command. There is nothing that prevents you from doing so,  however. It is 
>bad practice because it can easily lead to infinite  call loops. For 
>example:
>
>call Foo.send();
>event void Foo.sendDone();
>
>
>commmand void Foo.send() {
>   signal Foo.sendDone();
>}
>
>The TinyOS programming manual goes into detail on this and other good/ bad 
>programming practices.
>
>
>>
>>2.- We have read that there are two level scheduling: events and  tasks. 
>>We know TinyOs scheduler manages tasks which are posted, so  does TinyOs 
>>scheduler manage events? or are events managed like  commands?
>
>The distinction is sync/async. The term "event" was overloaded in the  
>original TinyOS paper to mean both "callback" and "interrupt." The  
>command/event distinction means the former, the task/event  distinction 
>means the latter. The nesC paper and the TinyOS  programming guide are good 
>resources for learning about the details.
>
>
>>
>>3.- If you have a task posted, could you post the same task other  time? 
>>We mean if we have a task in the task qeue, could we post the  same task 
>>again? Perhaps it is a simple question, but we think it  is possible that 
>>if the task is in the task qeue, we couldn't post  it again.
>>
>
>This depends on what version of  TinyOS you're using. In 1.x, a  single 
>task can have multiple outstanding posts in the task queue. In  2.x, a task 
>can only have one outstanding post. This latter behavior  turns out to have 
>a lot of nice isolation and fairness properties.  TEP 106 has a good 
>discussion of the tradeoffs.
>
>Phil

_________________________________________________________________
Moda para esta temporada. Ponte al día de todas las tendencias. 
http://www.msn.es/Mujer/moda/default.asp



More information about the Tinyos-help mailing list