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 <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>
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to