l_fp, time, calendar
Hal Murray
hmurray at megapathdsl.net
Sat Mar 25 09:49:44 UTC 2017
I just removed a pile of unused code from libntp/ntp_calendar.c
In the process of poking around....
Quick summary: I think the old code tried to use l_fp format times all over
the place. That may have made sense in the pre POSIX days, but I think we
should switch to time_t and timespec everywhere except in the packet.
There is a bunch of l_fp in the refclocks. That's coming from the recvbuf
where l_fp is the right format for the arrival time which goes into the
return packet in server mode or into the calculations in client mode. In the
long run, I think that should change to a timespec. In the short term, we
can add a duplicate timespec version to avoid converting back and forth while
we clean things up. (The time starts out as a timespec. Now, it gets
converted to l_fp before it is stored in the recvbuf. I think it should get
stored as a timespec and converted in the two places where it needs l_fp
format.)
The NMEA driver has a bunch of calendar code. One chunk is converting 2
digit years to 4 digit and worrying about pre 2000. That seems simple to
simplify.
I think another chunk is trying to dance around 1024 week roll over. That
comes from PGRMF sentences which I think are Garmin propriety. But there is
a normal DDMMYY in there, so I don't see why we need the GPS stuff. ??
Does gpsd handle broken units that are off by 1024 weeks? If so, I vote to
dump all that code and let gpsd handle any broken units.
There is some pretty date stuff using l_fp called from python. I vote we
write some python code that converts l_fp into a python time. Eventually, it
will have to pivot but we can punt for a few years.
We should probably invent something like a timespec so we keep all the low
order bits. If I'm counting right, there are 53 bits of fraction in a
double. With 32 for seconds, that leaves only 21 for fraction. That's 1/2
microsecond.
--
These are my opinions. I hate spam.
More information about the devel
mailing list