Hi, everyone:
I've read the Trickle implementation code
(\tos\lib\net\TrickleTimerImplP.nc) in 2.X.
And I'm puzzled by the variable "time" in this code.
This is the defination of struct "trickle_t":
typedef struct {
uint16_t period;
uint32_t time;
uint32_t remainder;
uint8_t count;
} trickle_t;
I wonder about what the "time" and "remainder" means?
Also, at the function "adjustTimer()", I have some questions.
event void Timer.fired()
{
uint8_t i;
uint32_t dt = call Timer.getdt();
for (i = 0; i < count; i++)
{
uint32_t remaining = trickles[i].time;//What does the remaining mean?
if (remaining != 0)
{
remaining -= dt;// Does this make remaining negative?
if (remaining == 0)
{
if (trickles[i].count < k)
{
atomic
{
call Pending.set(i);
}
post timerTask();
}
generateTime(i);
/* Note that this logic is not the exact trickle algorithm.
* Rather than C being reset at the beginning of an interval,
* it is being reset at a firing point. This means that the
* listening period, rather than of length tau/2, is in the
* range [tau/2, tau].
*/
trickles[i].count = 0;//
}
else
{
trickles[i].time = remaining;//So trickles[i].time becomes
negative?
}
}
}
adjustTimer();
}
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help