summaryrefslogtreecommitdiff
path: root/driver_italk.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2013-09-29 01:42:45 -0400
committerEric S. Raymond <esr@thyrsus.com>2013-09-29 01:46:53 -0400
commit4361ec2d89bdf451602d659ddfd0fb9a79c178a2 (patch)
treeaf067d1d7614a9e67f449eec933ba3347cde10b0 /driver_italk.c
parenta77b95b57475c2856707e91b197f8aaa8e5eb407 (diff)
downloadgpsd-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.c50
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),