| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the big step towards ntplib. A couple of minor issues remain to be
ironed out, the most significant of which is what to do about the timestamp_t
type.
This changes some field offsets of private fields in struct gps_device_t.
Probably does not require a version bump as access to them is all through
the libgpsd API.
All regression tests pass. PPS observed live in gpsmon direct mode.
|
|
|
|
| |
All regression tests pass. PPS observed live in gpsmon.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change is done so we can add a "log" hook to the pps_thread_t
structure (this is not done yet) and harmonize with the name of the
outer logging function. If that name had been left as gpsd_report()
there would have been scope for bad confusion with the report_hook
member.
Also, remove two stray duplicative printf calls from the NMEA2000 driver
(drivers shouldn't have printfs!) and fix one typo.
This is a step towards factoring out ntplib. For that to happen, the
PPS thread code needs to be decoupled from the core session structure.
No logic changes. Object compatibility preserved. All regression tests pass.
|
|
|
|
|
|
|
|
|
|
|
| |
No logic changes, though it looks like there are two because two guards
that would always have failed when the code was compiled with pps=off
are now conditioned out. Also, this code is offset-preserving
so as not to break link-time compatibility of libgpsd.
(This is the subtler approach...)
All regression tests pass.
|
|
|
|
|
|
| |
fom sessions."
Previous approch was a bit too frontal.
|
|
|
|
| |
We need to sneak up on this in a more subtle way.
|
|
|
|
|
|
| |
The new struct ppsthread_t isolates the interface to the PPS monitor loop.
It will need more members before we're done, including some reporting
hooks.
|
|
|
|
| |
All regression tests pass.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
On Mac OS X it will get proper nanosecond precision; elsewhere, only
microseconds. Hides the conformance failure from the rest of the code.
All regression tests pass.
|
| |
|
|
|
|
| |
Also remove another double.
|
| |
|
|
|
|
| |
No logic changes. All regression tesrs pass. Live PPS observed.
|
|
|
|
|
|
|
| |
All callers ignore value returned by timespec_str. Additionally, the
function returns simply the result of snprintf(), which is not
necessarily the number of chars written to the buffer (if the buffer
provided by the caller was too small).
|
|
|
|
| |
All regression tests pass.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
gps_reqport calls a mutex and that can add large and variable delays.
We are going for 1 nSec here, but likely just getting 100 nSec in
the wild.
|
|
|
|
| |
All regression tests pass.
|
| |
|
| |
|
|
|
|
| |
All regression tests pass.
|
|
|
|
|
| |
A good use case for timespec_str(), several slightly different
handrolled ways to print a timespec.
|
|
|
|
| |
The root cause still to be found.
|
| |
|
| |
|
|
|
|
|
| |
timespec_diff_ns() should not be used is the delta is more than
about 2 seconds.
|
|
|
|
|
|
|
|
|
|
| |
last_fixtime.clock and last_fixtime_clock were storing
63 bits of time in 53 bits of timestamp_t (double).
Change timestamp_t to timespec to restore nSec precision.
Along the way save some floating point that is
slow in embedded systems that have no FPU.
|
|
|
|
|
|
|
|
|
| |
WARNING! Loss of precision
UNIX time to nanoSec precision is 62 significant bits
UNIX time to nanoSec precision after 2038 is 63 bits
a double is only 53 significant bits.
You can not do PPS math with doubles
|
|
|
|
| |
strerror_r() is not a portable replacement and has its own problems.
|
|
|
|
|
| |
Chronyd may slew the clock rate up to 8.334%. So never fail short
term time measurements seemingly off by 10% or less.
|
|
|
|
|
|
|
|
| |
When a Rasberry Pi starts up, its clock can be very bad until gpsd
gives ntpd/chronyd enough to tame it.
ntpd/chronyd have very good filters, Let them decide what time to use
and not try to duplicate their.
|
|
|
|
|
| |
No error checking was previously done on uses of ppslast_mutex. So
likely the mutex has never worked, just created the odd segfault.
|
| |
|
|
|
|
| |
Not checking returns codes is always a bad idea.
|
| |
|
|
|
|
| |
All regression tests pass.
|
|
|
|
| |
All regression tests pass.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
...with calls to gps_notify(), which indirects to its output method
through a slot in an errout structure. Usually the errout structure
lives inside the session context, but because struct errout_t is its
own thing this does not have to be the case. One large clique of
gpsd_notify() calls, in packet.c and isgps.c, looks at a struct
errout_t copy in a lexer control block
This change is not complete. Remnant gpsd_report calls need to be changed,
and gpsmon needs to be tweaked so that the struct_error_t in its context
is a non-defaukt hook updating the cuses display rather than simply
dumping to stderr. Also the report label functionality needs to be added.
All regression tests pass.
|