| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
for scons minimal=on
clang identified af as assigned but never used.
on closer inspection af is a file static and a parameter to one of the
functions renamed file static and guarded it with SOCKET_EXPORT_ENABLED
|
|
|
|
| |
Missing ifdef guard for SOCKET_EXPORT around usage of notify_watchers
|
|
|
|
| |
No code changes.
|
|
|
|
|
|
| |
All regression tests pass. PPS observed live with gosmon.
gpsmon presently ignores this message, but shout display its contents near PPS.
|
|
|
|
| |
No logic changes. All regression tesrs pass. Live PPS observed.
|
|
|
|
| |
declaration was missing a stacked guard for CONTROL_SOCKET_ENABLE
|
| |
|
|
|
|
| |
All regression tests pass. No logic changes.
|
| |
|
| |
|
| |
|
|
|
|
| |
All regression tests pass.
|
|
|
|
|
| |
No error checking was previously done on uses of ppslast_mutex. So
likely the mutex has never worked, just created the odd segfault.
|
| |
|
|
|
|
|
|
|
|
| |
Instead, we're going to try telling the tty layer to deliver input in chunks
larger than chracters, with a timeout. That way the select call in the main
loop will return data ready less often.
All regression tests pass.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To replicate the problem:
(1) Check out the parent of this revision.
(2) Run "gpsd -n -N -D 3 /dev/ttyUSB0" substituting the device as needed.
(3) Run the following script in another window:
while true
do
date
./gpspipe -n 3 -R -o /dev/null # hang if gpsd is sick
./gpspipe -d -R -o /dev/null
sleep 2
DELAY=$RANDOM # 0-32K
#usleep ${DELAY}00 # 0-3 seconds
sleep `echo "scale=6; $DELAY / 1000000" | bc`
killall gpspipe
#ps ax | grep gpspipe
done
(4) Run gpsmon in a third window.
gpsd will hang in 3-5 minutes, requiring kill -9, in the kernal hrtime
function.
|
|
|
|
| |
All regression tests pass.
|
| |
|
|
|
|
| |
All regression tests pass.
|
| |
|
|
|
|
| |
All regression tests pass.
|
|
|
|
| |
All regression tests pass.
|
|
|
|
| |
All regression tests pass.
|
|
|
|
| |
All regression tests pass.
|
|
|
|
| |
All regression tests pass.
|
| |
|
|
|
|
|
|
| |
This is not, alas, sufficient to allow us to zero out CLOSE_DELAY; I tried.
But it can't hurt, and might help in combination wuth some black magic
we have yet to discover.
|
| |
|
|
|
|
|
|
| |
As a side effect, simplify configuration slightly.
All regression tests pass.
|
|
|
|
| |
guard for using ship_pps_drift_message didn't match it's declaration
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When select(2) returns too fast with only small amounts of data, the main loop
will buzz and eat power - a significant issue on, e.g. battery-powered RasPi
devices, where it was first spotted. This code watches read volume and delays
when it sees lots of small bursts.
All regressiion tests pass. But note: the adaptive-delay logic has to
suppress delays to arrange this, otherwise we get an all too familiar
class of spurious test failure.
|
| |
|
| |
|
|
|
|
| |
This change doesn't affect generated binary code.
|
|
|
|
| |
This change doesn't affect generated binary code.
|
|
|
|
| |
This change doesn't affect generated binary code.
|
|
|
|
|
|
|
|
|
|
| |
This is a first step towards removing the NTPSHMSEGS limit.
Instead of devices holding two indices into the segment array in
the context structure, give them copies of the actual segment pointers
and allow ntpshm_put() to take a pointer limit.
All regression tests pass.
|
|
|
|
|
|
| |
Don't use constant/expression from an array's definition when referring
to its size. Eliminates redundancy and avoids problems when array size
changes. The change doesn't affect generated code.
|
| |
|
|
|
|
| |
All regression tests pass.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cygwin GCC complains about code like isprint(c), where c is of type char.
The isX() and toX() functions/macros (ISO C allows either) all accept an
int, whose value should be either that of an unsigned char, or the
special value EOF (== -1).
So cast to unsigned char each argument to isprint, tolower, etc.
Silences several warnings of the form:
gpsutils.c: In function 'safe_atof':
gpsutils.c:90:5: warning: array subscript has type 'char'
[-Wchar-subscripts]
while (isspace(*p)) {
^
gpsutils.c:188:2: warning: array subscript has type 'char'
[-Wchar-subscripts]
while (isdigit(*p)) {
^
|
|
|
|
|
| |
All regression tests pass with default options (GPS tests are disabled with
minimal on, because socket_export is off).
|