diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2013-09-29 01:42:45 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2013-09-29 01:46:53 -0400 |
commit | 4361ec2d89bdf451602d659ddfd0fb9a79c178a2 (patch) | |
tree | af067d1d7614a9e67f449eec933ba3347cde10b0 /driver_italk.c | |
parent | a77b95b57475c2856707e91b197f8aaa8e5eb407 (diff) | |
download | gpsd-4361ec2d89bdf451602d659ddfd0fb9a79c178a2.tar.gz |
Change gpsd_report to no longer use a global. All regression tests pass.
This is a large, ugly change. But without it we can't troubleshoot the
ICP/IP-source initialization bug properly - colliding definitions of
gpsd_report() were interfering with error reporting early in gpsd runs.
More cleanup work remains to be done, but at least this is working.
Diffstat (limited to 'driver_italk.c')
-rw-r--r-- | driver_italk.c | 50 |
1 files changed, 27 insertions, 23 deletions
diff --git a/driver_italk.c b/driver_italk.c index 224a3392..c8f6b2fe 100644 --- a/driver_italk.c +++ b/driver_italk.c @@ -41,7 +41,8 @@ static gps_mask_t decode_itk_navfix(struct gps_device_t *session, double epx, epy, epz, evx, evy, evz, eph; if (len != 296) { - gpsd_report(LOG_PROG, "ITALK: bad NAV_FIX (len %zu, should be 296)\n", + gpsd_report(session->context->debug, LOG_PROG, + "ITALK: bad NAV_FIX (len %zu, should be 296)\n", len); return -1; } @@ -105,7 +106,7 @@ static gps_mask_t decode_itk_navfix(struct gps_device_t *session, session->gpsdata.status = STATUS_FIX; } - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "NAV_FIX: time=%.2f, lat=%.2f lon=%.2f alt=%.f speed=%.2f track=%.2f climb=%.2f mode=%d status=%d gdop=%.2f pdop=%.2f hdop=%.2f vdop=%.2f tdop=%.2f\n", session->newdata.time, session->newdata.latitude, session->newdata.longitude, session->newdata.altitude, @@ -123,7 +124,7 @@ static gps_mask_t decode_itk_prnstatus(struct gps_device_t *session, gps_mask_t mask; if (len < 62) { - gpsd_report(LOG_PROG, "ITALK: runt PRN_STATUS (len=%zu)\n", len); + gpsd_report(session->context->debug, LOG_PROG, "ITALK: runt PRN_STATUS (len=%zu)\n", len); mask = 0; } else { unsigned int i, nsv, nchan, st; @@ -155,7 +156,7 @@ static gps_mask_t decode_itk_prnstatus(struct gps_device_t *session, session->gpsdata.satellites_used = (int)nsv; mask = USED_IS | SATELLITE_SET;; - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "PRN_STATUS: time=%.2f visible=%d used=%d mask={USED|SATELLITE}\n", session->newdata.time, session->gpsdata.satellites_visible, @@ -172,7 +173,7 @@ static gps_mask_t decode_itk_utcionomodel(struct gps_device_t *session, unsigned short flags; if (len != 64) { - gpsd_report(LOG_PROG, + gpsd_report(session->context->debug, LOG_PROG, "ITALK: bad UTC_IONO_MODEL (len %zu, should be 64)\n", len); return 0; @@ -189,7 +190,7 @@ static gps_mask_t decode_itk_utcionomodel(struct gps_device_t *session, session->newdata.time = gpsd_gpstime_resolve(session, (unsigned short) getleu16(buf, 7 + 36), (unsigned int)getleu32(buf, 7 + 38) / 1000.0); - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "UTC_IONO_MODEL: time=%.2f mask={TIME}\n", session->newdata.time); return TIME_SET | PPSTIME_IS; @@ -203,7 +204,7 @@ static gps_mask_t decode_itk_subframe(struct gps_device_t *session, uint32_t words[10]; if (len != 64) { - gpsd_report(LOG_PROG, + gpsd_report(session->context->debug, LOG_PROG, "ITALK: bad SUBFRAME (len %zu, should be 64)\n", len); return 0; } @@ -211,7 +212,7 @@ static gps_mask_t decode_itk_subframe(struct gps_device_t *session, flags = (unsigned short) getleu16(buf, 7 + 4); prn = (unsigned short) getleu16(buf, 7 + 6); sf = (unsigned short) getleu16(buf, 7 + 8); - gpsd_report(LOG_PROG, "iTalk 50B SUBFRAME prn %u sf %u - decode %s %s\n", + gpsd_report(session->context->debug, LOG_PROG, "iTalk 50B SUBFRAME prn %u sf %u - decode %s %s\n", prn, sf, flags & SUBFRAME_WORD_FLAG_MASK ? "error" : "ok", flags & SUBFRAME_GPS_PREAMBLE_INVERTED ? "(inverted)" : ""); @@ -235,16 +236,17 @@ static gps_mask_t decode_itk_pseudo(struct gps_device_t *session, n = (unsigned short) getleu16(buf, 7 + 4); if ((n < 1) || (n > MAXCHANNELS)){ - gpsd_report(LOG_INF, "ITALK: bad PSEUDO channel count\n"); + gpsd_report(session->context->debug, LOG_INF, + "ITALK: bad PSEUDO channel count\n"); return 0; } if (len != (size_t)((n+1)*36)) { - gpsd_report(LOG_PROG, + gpsd_report(session->context->debug, LOG_PROG, "ITALK: bad PSEUDO len %zu\n", len); } - gpsd_report(LOG_PROG, "iTalk PSEUDO [%u]\n", n); + gpsd_report(session->context->debug, LOG_PROG, "iTalk PSEUDO [%u]\n", n); flags = (unsigned short)getleu16(buf, 7 + 6); if ((flags & 0x3) != 0x3) return 0; // bail if measurement time not valid. @@ -282,45 +284,46 @@ static gps_mask_t italk_parse(struct gps_device_t *session, type = (uint) getub(buf, 4); /* we may need to dump the raw packet */ - gpsd_report(LOG_RAW, "raw italk packet type 0x%02x\n", type); + gpsd_report(session->context->debug, LOG_RAW, + "raw italk packet type 0x%02x\n", type); session->cycle_end_reliable = true; switch (type) { case ITALK_NAV_FIX: - gpsd_report(LOG_IO, "iTalk NAV_FIX len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk NAV_FIX len %zu\n", len); mask = decode_itk_navfix(session, buf, len) | (CLEAR_IS | REPORT_IS); break; case ITALK_PRN_STATUS: - gpsd_report(LOG_IO, "iTalk PRN_STATUS len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk PRN_STATUS len %zu\n", len); mask = decode_itk_prnstatus(session, buf, len); break; case ITALK_UTC_IONO_MODEL: - gpsd_report(LOG_IO, "iTalk UTC_IONO_MODEL len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk UTC_IONO_MODEL len %zu\n", len); mask = decode_itk_utcionomodel(session, buf, len); break; case ITALK_ACQ_DATA: - gpsd_report(LOG_IO, "iTalk ACQ_DATA len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk ACQ_DATA len %zu\n", len); break; case ITALK_TRACK: - gpsd_report(LOG_IO, "iTalk TRACK len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk TRACK len %zu\n", len); break; case ITALK_PSEUDO: - gpsd_report(LOG_IO, "iTalk PSEUDO len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk PSEUDO len %zu\n", len); mask = decode_itk_pseudo(session, buf, len); break; case ITALK_RAW_ALMANAC: - gpsd_report(LOG_IO, "iTalk RAW_ALMANAC len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk RAW_ALMANAC len %zu\n", len); break; case ITALK_RAW_EPHEMERIS: - gpsd_report(LOG_IO, "iTalk RAW_EPHEMERIS len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk RAW_EPHEMERIS len %zu\n", len); break; case ITALK_SUBFRAME: mask = decode_itk_subframe(session, buf, len); break; case ITALK_BIT_STREAM: - gpsd_report(LOG_IO, "iTalk BIT_STREAM len %zu\n", len); + gpsd_report(session->context->debug, LOG_IO, "iTalk BIT_STREAM len %zu\n", len); break; case ITALK_AGC: @@ -354,12 +357,13 @@ static gps_mask_t italk_parse(struct gps_device_t *session, case ITALK_PULL_FIX: case ITALK_MEMCTRL: case ITALK_STOP_TASK: - gpsd_report(LOG_IO, + gpsd_report(session->context->debug, LOG_IO, "iTalk not processing packet: id 0x%02x length %zu\n", type, len); break; default: - gpsd_report(LOG_IO, "iTalk unknown packet: id 0x%02x length %zu\n", + gpsd_report(session->context->debug, LOG_IO, + "iTalk unknown packet: id 0x%02x length %zu\n", type, len); } (void)snprintf(session->gpsdata.tag, sizeof(session->gpsdata.tag), |