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_evermore.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_evermore.c')
-rw-r--r-- | driver_evermore.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/driver_evermore.c b/driver_evermore.c index 83888076..30cf7ff9 100644 --- a/driver_evermore.c +++ b/driver_evermore.c @@ -173,7 +173,8 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, /*@ +usedef @*/ /*@ -usedef -compdef @*/ - gpsd_report(LOG_RAW, "EverMore packet type 0x%02x (%zd bytes)\n", type, tp-buf2); + gpsd_report(session->context->debug, LOG_RAW, + "EverMore packet type 0x%02x (%zd bytes)\n", type, tp-buf2); /*@ +usedef +compdef @*/ (void)snprintf(session->gpsdata.tag, sizeof(session->gpsdata.tag), @@ -211,7 +212,7 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, "%3.2f", version); mask |= DEVICEID_SET; } - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "NDO 0x02: time=%.2f, lat=%.2f lon=%.2f alt=%.2f speed=%.2f track=%.2f climb=%.2f mode=%d subtype='%s\n", session->newdata.time, session->newdata.latitude, session->newdata.longitude, session->newdata.altitude, @@ -256,7 +257,7 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, } /* that's all the information in this packet */ mask = TIME_SET | PPSTIME_IS | DOP_SET | MODE_SET | STATUS_SET; - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "DDO 0x04: gdop=%.2f pdop=%.2f hdop=%.2f vdop=%.2f tdop=%.2f mode=%d, status=%d mask={TIME| DOP|MODE|STATUS}\n", session->gpsdata.dop.gdop, session->gpsdata.dop.pdop, session->gpsdata.dop.hdop, session->gpsdata.dop.vdop, @@ -272,7 +273,7 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, gpsd_zero_satellites(&session->gpsdata); memset(session->gpsdata.used, 0, sizeof(session->gpsdata.used)); if (session->gpsdata.satellites_visible > 12) { - gpsd_report(LOG_WARN, + gpsd_report(session->context->debug, LOG_WARN, "Warning: EverMore packet has information about %d satellites!\n", session->gpsdata.satellites_visible); } @@ -311,7 +312,7 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, session->gpsdata.satellites_visible = (int)satcnt; /* that's all the information in this packet */ mask = SATELLITE_SET | USED_IS; - gpsd_report(LOG_DATA, + gpsd_report(session->context->debug, LOG_DATA, "CSO 0x06: time=%.2f used=%d visible=%d mask={TIME|SATELLITE|USED}\n", session->newdata.time, session->gpsdata.satellites_used, session->gpsdata.satellites_visible); @@ -354,24 +355,28 @@ gps_mask_t evermore_parse(struct gps_device_t * session, unsigned char *buf, } #undef SBITS #undef UBITS - gpsd_report(LOG_DATA, "MDO 0x04: time=%.2f mask={TIME|RAW}\n", + gpsd_report(session->context->debug, LOG_DATA, + "MDO 0x04: time=%.2f mask={TIME|RAW}\n", session->newdata.time); return TIME_SET | PPSTIME_IS | RAW_IS; case 0x20: /* LogConfig Info, could be used as a probe for EverMore GPS */ - gpsd_report(LOG_IO, "LogConfig EverMore packet, length %zd\n", datalen); + gpsd_report(session->context->debug, LOG_IO, + "LogConfig EverMore packet, length %zd\n", datalen); return ONLINE_SET; case 0x22: /* LogData */ - gpsd_report(LOG_IO, "LogData EverMore packet, length %zd\n", datalen); + gpsd_report(session->context->debug, LOG_IO, + "LogData EverMore packet, length %zd\n", datalen); return ONLINE_SET; case 0x38: /* ACK */ - gpsd_report(LOG_PROG, "EverMore command %02X ACK\n", getub(buf2, 3)); + gpsd_report(session->context->debug, LOG_PROG, + "EverMore command %02X ACK\n", getub(buf2, 3)); return ONLINE_SET; default: - gpsd_report(LOG_WARN, + gpsd_report(session->context->debug, LOG_WARN, "unknown EverMore packet EID 0x%02x, length %zd\n", buf2[0], datalen); return 0; @@ -456,7 +461,8 @@ static bool evermore_protocol(struct gps_device_t *session, int protocol) (char)0x00, /* 3: reserved */ }; /*@ -charint */ - gpsd_report(LOG_PROG, "evermore_protocol(%d)\n", protocol); + gpsd_report(session->context->debug, LOG_PROG, + "evermore_protocol(%d)\n", protocol); /*@i1@*/ tmp8 = (protocol != 0) ? 1 : 0; /* NMEA : binary */ evrm_protocol_config[1] = tmp8; @@ -486,7 +492,8 @@ static bool evermore_nmea_config(struct gps_device_t *session, int mode) 0, 0, 0, 0, 0, 0, /* 10-15: reserved */ }; /*@ -charint */ - gpsd_report(LOG_PROG, "evermore_nmea_config(%d)\n", mode); + gpsd_report(session->context->debug, LOG_PROG, + "evermore_nmea_config(%d)\n", mode); /*@i1@*/ tmp8 = (mode == 1) ? 5 : 1; /* NMEA GPGSV, gpsd */ evrm_nmeaout_config[6] = tmp8; /* GPGSV, 1s or 5s */ @@ -499,7 +506,7 @@ static bool evermore_nmea_config(struct gps_device_t *session, int mode) static void evermore_mode(struct gps_device_t *session, int mode) { - gpsd_report(LOG_PROG, "evermore_mode(%d), %d\n", mode, + gpsd_report(session->context->debug, LOG_PROG, "evermore_mode(%d), %d\n", mode, session->back_to_nmea ? 1 : 0); if (mode == MODE_NMEA) { /* NMEA */ @@ -544,7 +551,8 @@ static bool evermore_speed(struct gps_device_t *session, speed_t speed, char parity, int stopbits) { /*@ -type @*/ - gpsd_report(LOG_PROG, "evermore_speed(%u%c%d)\n", speed, parity, + gpsd_report(session->context->debug, LOG_PROG, + "evermore_speed(%u%c%d)\n", speed, parity, stopbits); /* parity and stopbit switching aren't available on this chip */ if (parity != session->gpsdata.dev.parity @@ -586,7 +594,7 @@ static bool evermore_rate_switcher(struct gps_device_t *session, double rate) { /*@ +charint @*/ if (rate < 1 || rate > 10) { - gpsd_report(LOG_ERROR, "valid rate range is 1-10.\n"); + gpsd_report(session->context->debug, LOG_ERROR, "valid rate range is 1-10.\n"); return false; } else { unsigned char evrm_rate_config[] = { |