You're right,
Paul,sim_time() returns an uint32_t measure.I see this number in the
program :
*DEBUG (0): Booted at time 1024
DEBUG (1): Booted at time 1320
DEBUG (2): Booted at time 6000
.
.
DEBUG (1): Timer fired at 1175691828
DEBUG (1): Timer fired at -1943585060
DEBUG (1): Timer fired at -767894652
DEBUG (1): Timer fired at 407795756
.*
.
.
What is this negative numbers ? Is it because of overflow ? my boot
times are :
*t.getNode(0).bootAtTime(1024);
t.getNode(1).bootAtTime(1320);
t.getNode(2).bootAtTime(6000);*
and I use this statement to print the time in the code :
*dbg("Base","Timer fired at %d\n",sim_time());*
And timer period is 1000.But when is use sim_time_string() it returns
the correct form of time as I said before.
Thanks,
On Tue, Nov 17, 2009 at 8:51 PM, Paul Johnson <oewyn...@gmail.com
<mailto:oewyn...@gmail.com>> wrote:
Yes, you can do that, but it won't accurately model a real clock
because of clock skew. In general, clocks do not run at the exact
same rate, their frequency tends to drift. This drift depends on
a lot of factors such as temperature, humidity, etc. In TOSSIM
there is no support for clock skew. Another drawback of
simulation is that it doesn't simulate processing time. This
means that you will never have any jitter (the non-deterministic
timing differences between receiving a packet and processing it,
or preparing a packet, and sending it).
These two factors are what makes time synchronization a
non-trivial problem. Using TOSSIM you could check your algorithm
to see if it sends messages correctly, parses received messages
correctly, corrects the random offset between nodes, etc, but you
will not be able to see how accurate the synchronization is using
pure simulation.
-Paul
mojtaba raznahan wrote:
I think i should solve this problem by specifying random numbers
as clock offset between motes,and sim_time() as global time.
On Mon, Nov 16, 2009 at 10:31 PM, mojtaba raznahan
<mojtaba.razna...@gmail.com <mailto:mojtaba.razna...@gmail.com>>
wrote:
Paul,
Thanks again for your clear answers.
Yes, I think like you.So due to this issue I can't test time
synchronization algorithms in TOSSIM,am I right ?Or maybe
there is some interface for doing this job .. ?
sincerley,
Mojtaba
On Mon, Nov 16, 2009 at 9:58 PM, Paul Johnson
<oewyn...@gmail.com <mailto:oewyn...@gmail.com>> wrote:
Mojtaba,
Actually, i believe the bootAtTime is in 100's of pico
seconds (10^-10) seconds. So 1024 * 10^-10 =
0.0000001024, and apparently sim_time_string() returns
time in seconds (up to nano seconds (10^-9)). There are
actually 1024 milli "ticks" per second, so this is why
each timer fired is adding not quite 1.0 to the time.
As for your other issue, this is actually by design. If
a node transmits a broadcast packet, all other nodes in
the transmission range will receive it at the same time.
The boot times only change when the node powers up, but
doesn't skew it's clock. In fact, i can't say for 100%,
but I think that sim_time_string() grabs the global
simulation time, and there is no local clock simulation
is TOSSIM.
-Paul
mojtaba raznahan wrote:
Hi Janos,
thanks for reply.
What's the meaning of this numbers ? I set the
bootAtTime event as these :
*t.getNode(0).bootAtTime(1024);
t.getNode(1).bootAtTime(1320);
t.getNode(2).bootAtTime(6000)*;
And i get the time by *"sim_time_string()*" method and
it print the boot times as this : 0:0:0.000000102 and
0:0:0.000000132 and 0:0:0.000000600 . As i can guess 102
means "1024" MilliSec and 132 means "1320" Milil.
And I set the startPeriodic at 1000 ,some thing is
ambiguous.The last statement prints the time equal to
0:0:0.000000142 the next statment is
*Timer.startPeriodic(1000)*,but in the output when i
print the time in *Timer.fired()* event, it prints the
time equal to *0:0:0.976562642* and the later
*0:0:1.953125142* ,* 0:0:2.929687642*, *0:0:3.906250142*
what does it mean ?
And also when i send a packet, the 2 other recievers get
the packet at the same time!!(I've set the bootTimes
differently!).
Thanks,
Mojtaba
On Mon, Nov 16, 2009 at 7:34 PM, Janos Sallai
<sal...@isis.vanderbilt.edu
<mailto:sal...@isis.vanderbilt.edu>> wrote:
In tossim, the node object in python has a
bootAtTime method which
lets you set when the mote boots. You can use this
to make the local
clock's offsets different from each other. By the
way, TOSSIM does not
simulate clock skew. This might limit the validity
of the simulation
results.
Janos
On Mon, Nov 16, 2009 at 7:55 AM, mojtaba raznahan
<mojtaba.razna...@gmail.com
<mailto:mojtaba.razna...@gmail.com>> wrote:
> Hi all,
>
> I want to know how can I set the local time of
each mote programmatically ?
> I want to set different local time for each node
then test my
> synchronization algorithm on them.
> I used the LocalTime interface to get the local
time but i can't set
> different initial local time for each node.And
LocalTime interface has 2
> type "TMilli" and "TMicro" but when i use TMicro
then in configuration
> section there isn't any component provider for it!
.I'm using Tinyos 2.1.0
> and TOSSIM.
>
> Regards,
> --
> Mojtaba Raznahan
> BS of Computer engineering
> TMU university
> www.raznahan.com <http://www.raznahan.com>
>
> _______________________________________________
> Tinyos-help mailing list
> Tinyos-help@millennium.berkeley.edu
<mailto:Tinyos-help@millennium.berkeley.edu>
>
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com <http://www.raznahan.com>
------------------------------------------------------------------------
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
<mailto:Tinyos-help@millennium.berkeley.edu>
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com <http://www.raznahan.com>
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com <http://www.raznahan.com>
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com <http://www.raznahan.com>