I've also seen issues with incorrect timestamps. Like David says, a
problem may be how a packet can be identified as dropped (by the
address recognition), because currently this is done by calculating
the time between rising and falling SFD (which may not be a 100%
reliable approach). I have two additional remarks (the second may
affect the timestamping issue):
- in CC2420ReceiveP when StdControl.stop is called it should check
whether it owns the SPI and if so give it up, otherwise there can be a
deadlock (this is done in CC2420TransmitP.StdControl.stop by default)
- it might be helpful to flush the respective FIFO in the
StdControl.stop commands

Jan

On 11/1/07, Jeongyeup Paek <[EMAIL PROTECTED]> wrote:
> Thanks for explaining the edge cases.
>
> Yes, what I've described earlier was incorrect, and that was one
> of the several things that I tried out to get around the problem.
> Right now, what I am doing is filtering out the timestamps
> by taking another timestamp when packet receive event is
> signaled and comparing them; discard when diff is greater than
> some threshold. (~150 ticks ~= 5ms)
>
> Thanks
>
> - jpaek
>
>
> David Moss wrote:
> > 2 edge cases:
> >
> > 1)    A packet is received, generating a timestamp. The packet is dropped
> > internally to CC2420 hardware, while a second packet is received which
> > generates a second timestamp. The older timestamp is applied to the newer
> > packet.
> >
> > 2)    A corrupted packet is received, forcing the CC2420 driver to flush
> > out the RX FIFO. The timestamp queue is possibly not flushed. The next
> > packet received gets a corrupted timestamp.
> >
> > Both of these edge cases can be reproduced on a single node through the use
> > of unit tests. After reproducing the errors with unit testing, we can
> > engineer a solution and use those tests to know when the problem has been
> > solved.
> >
> > One possible solution, which is what you may have been leading to: We can
> > generate a second timestamp for the "end of frame" SFD interrupt. Comparing
> > the SFD with EFD timestamps, we know if the duration of the packet was too
> > short and discard the timestamp. There are probably more reliable solutions
> > though.
> >
> > How does comparing msg->time to the CC2420Receive.sfd( uint16_t time )
> > 'time' value tell you that the timestamp should be discarded? That 'time'
> > value from the SFD interrupt gets stored in the timestamp queue before being
> > propagated to msg->time. Is there a 3rd issue here where msg->time is not
> > being set correctly to the latest value from the timestamp queue?
> >
> > -David
> >
> >
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Jeongyeup
> > Paek
> > Sent: Wednesday, October 31, 2007 9:37 AM
> > To: Min Guo
> > Cc: Federico Fiorentin; tinyos-help@Millennium.Berkeley.EDU
> > Subject: Re: [Tinyos-help] Bug in CC2420 timestamp
> >
> >
> > I am also having the same problem: incorrect timestamps.
> > This happens more often when there are more nodes sending more packets.
> > (which means more more sfd interrupts)
> >
> > As Miklos said, the problem is not overflow but mismatch between
> > the timestamp(at sfd interrup) and the received packet.
> > As Federico said, the incorrect time is always in the past.
> >  From these experience, we can guess that something is going wrong
> > in the management of timestamp_queue[] in CC2420ReceiveP.nc.
> >
> > One way to check whether I have a wrong time or not is,
> > - when I get receive sfd signal, write down the 'uint16_t time16'.
> > - later, when I get a packet, compare 'time16' with 'msg->time'.
> >    If they do not match, something went wrong... should discard.
> >
> > One thing I am going to try today is to increase the size of
> > "timestamp_queue[] in CC2420ReceiveP.nc": 8 --> 32;
> > since it might just be because of queue wrapping around.
> > Right now, there is no protection for 'head' and 'tail'
> > pointers for timestamp_queue[].
> >
> > Thanks
> >
> > - jpaek
> >
> >
> > Min Guo wrote:
> >> Hi Federico,
> >>
> >> I met the same problem. I've written a time synchronization component
> >> for TinyOS 2.x. Currently some (very few) synchronization messages are
> >> discarded because of the error of metadata->time (earlier than
> >> expected).
> >>
> >> Hope some one can point out the reason.
> >>
> >> Regards,
> >> Min
> >>
> >> On 10/31/07, Federico Fiorentin <[EMAIL PROTECTED]> wrote:
> >>> Hi all.
> >>> The issues is the 16-bit timestamp in the received packet somethimes
> >>> results incorrect, in that case the time result always less than what
> >>> I aspect.
> >>> Probably the the timestamp refers to the previous SFD signal.
> >>>
> >>> I tried to compare that timestmap against the time argument of the
> >>> RadioTimeStamp.receivedSFD(uint16_t time){ }. When the timestamp is
> >>> correct generally they are equal,  in the other cases the
> >>> RadioTimeStamp result more precise.
> >>>
> >>> Using:
> >>> RadioTimeStamp.receivedSFD(uint16_t time){ }
> >>> Now the problem is how can I determine to which kind of packet the SFD
> >>> event is referred.
> >>>
> >>> Federico
> >>>
> >>> 2007/10/30, Miklos Maroti <[EMAIL PROTECTED]>:
> >>>> Hi David,
> >>>>
> >>>> The problem is not that it overflows, but it contains an inccorect
> >>>> value. In certain situations there are more packets in the RXFIFO and
> >>>> we do not know how to pair up the timestamps made for the SFD and the
> >>>> data packets. This is especially problematic if for some reason some
> >>>> of those packets get lost or not even get into the RXFIFO.
> >>>>
> >>>> We should start a discussion on the Timestamping interface. I think it
> >>>> should be allowed for the radio stack to say that it could not
> >>>> properly timestamp the packet (just a flag) and the time synch apps
> >>>> should check for that flag.
> >>>>
> >>>> Miklos
> >>>>
> >>>> On 10/30/07, David Moss <[EMAIL PROTECTED]> wrote:
> >>>>> I haven't done much work with the timestamps in the CC2420 apart from
> >>>>> Jonathan's original implementation, nor have I used it enough to have
> >>>>> experienced any type of erratic behavior.  Is the issue here that the
> > 16-bit
> >>>>> timestamp rolls over to 0 periodically?  Would a 32-bit timestamp be
> > better?
> >>>>> -David
> >>>>>
> >>>>>
> >>>>> -----Original Message-----
> >>>>> From: [EMAIL PROTECTED]
> >>>>> [mailto:[EMAIL PROTECTED] On Behalf Of
> > Federico
> >>>>> Fiorentin
> >>>>> Sent: Tuesday, October 30, 2007 6:39 AM
> >>>>> To: tinyos-help@Millennium.Berkeley.EDU
> >>>>> Subject: [Tinyos-help] Bug in CC2420 timestamp
> >>>>>
> >>>>> I'm working on time synchronization with tmote sky motes and TinyOS2.
> >>>>>
> >>>>> I'm using a poller that sends a PollPacket every X milliseconds and a
> >>>>> set of clients that timestamp the arrival time of the PollPacket.
> >>>>> I found that the 16 timestamp in the time field of the Metadata are
> >>>>> somethimes incorrect ( CC2420Packet.getMetaData(msg)->time ).
> >>>>>
> >>>>> This affects the 1% of the TimeStamps per mote.
> >>>>> I compared the value "timestamp(n) - timestamp(n-1)" of two different
> > motes.
> >>>>> Is there any patch or a way to fix it?
> >>>>>
> >>>>> I appreciate any advice
> >>>>> _______________________________________________
> >>>>> Tinyos-help mailing list
> >>>>> Tinyos-help@Millennium.Berkeley.EDU
> >>>>>
> > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
> >>>>>
> >>>>> _______________________________________________
> >>>>> Tinyos-devel mailing list
> >>>>> [EMAIL PROTECTED]
> >>>>>
> > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-devel
> >>> _______________________________________________
> >>> Tinyos-help mailing list
> >>> Tinyos-help@Millennium.Berkeley.EDU
> >>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
> >>>
> >> _______________________________________________
> >> Tinyos-help mailing list
> >> Tinyos-help@Millennium.Berkeley.EDU
> >> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
> >
>
> --
>
> Jeongyeup Paek
> Ph.D. student
> Embedded Networks Laboratory
> Department of Computer Science
> University of Southern California
> http://enl.usc.edu/~jpaek
> _______________________________________________
> Tinyos-help mailing list
> Tinyos-help@Millennium.Berkeley.EDU
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
_______________________________________________
Tinyos-help mailing list
Tinyos-help@Millennium.Berkeley.EDU
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to