Paul,
thanks,Yes corrected by %lu.
but why between this to line of code there is a big gap ?
*dbg("Control","AMControl started Successfully %lu .\n",sim_time());
if(TOS_NODE_ID == 1 ) {
dbg("Base","This is the base station...ready for sending packets
%lu.\n",sim_time());
call Timer.startPeriodic(TIMER_DELAY);
}
*In the output i have this times :
*DEBUG (0): Booted at time 1024 **--->it's true*
*DEBUG (0): AMControl started Successfully 1124 . **--->it's true*
*DEBUG (1): Booted at time 1320 .**--->it's true*
*DEBUG (1): AMControl started Successfully 1420 .**--->it's true*
*DEBUG (1): This is the base station...ready for sending packets 1420. --->it's
true*
*DEBUG (2): Booted at time 6000 .**--->it's true*
*DEBUG (2): AMControl started Successfully 6100 .**--->it's true*
*DEBUG (1): Timer fired at 1175691828 ---->What's wrong ?
DEBUG (1): Packet sent at 1175691828 data is :2
DEBUG (2): The Packet recieved at 1195375551 and the length is : 0000000002
and data is :7.
DEBUG (0): The Packet recieved at 1195375551 and the length is : 0000000002
and data is :7.
DEBUG (1): sendDone at 1197054008.
*
On Tue, Nov 17, 2009 at 9:43 PM, Paul Johnson <[email protected]> wrote:
> Mojtaba,
>
> %d in printf is used for signed 16 bit integers, you need to use %lu for 32
> bit unsigned integers.
>
> -Paul
>
>
> mojtaba raznahan wrote:
>
> 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 <[email protected]> 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 <
>> [email protected]> 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 <[email protected]>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 <
>>>> [email protected]> 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
>>>>> <[email protected]> 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
>>>>> >
>>>>> > _______________________________________________
>>>>> > Tinyos-help mailing list
>>>>> > [email protected]
>>>>> >
>>>>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>>>> >
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Mojtaba Raznahan
>>>> BS of Computer engineering
>>>> TMU university
>>>> www.raznahan.com
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> Tinyos-help mailing
>>>> [email protected]https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>>>
>>>>
>>>
>>>
>>> --
>>> Mojtaba Raznahan
>>> BS of Computer engineering
>>> TMU university
>>> www.raznahan.com
>>>
>>
>>
>>
>> --
>> Mojtaba Raznahan
>> BS of Computer engineering
>> TMU university
>> www.raznahan.com
>>
>>
>
>
> --
> Mojtaba Raznahan
> BS of Computer engineering
> TMU university
> www.raznahan.com
>
>
--
Mojtaba Raznahan
BS of Computer engineering
TMU university
www.raznahan.com
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help