summaryrefslogtreecommitdiff
path: root/driver_evermore.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_evermore.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_evermore.c')
-rw-r--r--driver_evermore.c38
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[] = {