From afe4984bb17a7a72764b84d7b959dc0431d0a130 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sun, 9 Oct 2011 07:59:31 -0400 Subject: Ensure that enabling timing won't break object file compatibility. --- gps.h | 5 ----- gps_json.h | 4 ++-- gpsd.c | 4 ++-- gpsd.h-tail | 4 ++++ gpsd_json.c | 12 +++++++----- gpsdecode.c | 2 +- libgpsd_core.c | 8 ++++---- 7 files changed, 20 insertions(+), 19 deletions(-) diff --git a/gps.h b/gps.h index 84f88b95..1717a1e9 100644 --- a/gps.h +++ b/gps.h @@ -1689,11 +1689,6 @@ struct gps_data_t { /* should be moved to privdata sometday */ char tag[MAXTAGLEN+1]; /* tag of last sentence processed */ -#ifdef TIMING_ENABLE - timestamp_t sor; /* timestamp start of this reporting cycle */ - unsigned long chars; /* characters in the cycle */ -#endif /* TIMING_ENABLE */ - /* pack things never reported together to reduce structure size */ #define UNION_SET (RTCM2_SET|RTCM3_SET|SUBFRAME_SET|AIS_SET|ATTITUDE_SET|VERSION_SET|DEVICELIST_SET|LOGMESSAGE_SET|ERROR_SET|GST_SET|VERSION_SET) union { diff --git a/gps_json.h b/gps_json.h index e3419928..91306097 100644 --- a/gps_json.h +++ b/gps_json.h @@ -13,10 +13,10 @@ #ifdef __cplusplus extern "C" { #endif -void json_data_report(gps_mask_t, struct gps_data_t *, struct policy_t *, +void json_data_report(gps_mask_t, struct gps_device_t *, struct policy_t *, /*@out@*/char *, size_t); char *json_stringify(/*@out@*/char *, size_t, /*@in@*/const char *); -void json_tpv_dump(const struct gps_data_t *, +void json_tpv_dump(const struct gps_device_t *, const struct policy_t *, /*@out@*/char *, size_t); void json_noise_dump(const struct gps_data_t *, /*@out@*/char *, size_t); void json_sky_dump(const struct gps_data_t *, /*@out@*/char *, size_t); diff --git a/gpsd.c b/gpsd.c index fdcf622e..5ed59173 100644 --- a/gpsd.c +++ b/gpsd.c @@ -1227,7 +1227,7 @@ static void handle_request(struct subscriber_t *sub, for (devp = devices; devp < devices + MAXDEVICES; devp++) { if (allocated_device(devp) && subscribed(sub, devp)) { if ((devp->observed & GPS_TYPEMASK) != 0) { - json_tpv_dump(&devp->gpsdata, &sub->policy, + json_tpv_dump(devp, &sub->policy, reply + strlen(reply), replylen - strlen(reply)); rstrip(reply); @@ -1629,7 +1629,7 @@ static void consume_packets(struct gps_device_t *device) char buf[GPS_JSON_RESPONSE_MAX * 4]; json_data_report(changed, - &device->gpsdata, &sub->policy, + device, &sub->policy, buf, sizeof(buf)); if (buf[0] != '\0') (void)throttled_write(sub, buf, strlen(buf)); diff --git a/gpsd.h-tail b/gpsd.h-tail index 309e34d9..acff12f4 100644 --- a/gpsd.h-tail +++ b/gpsd.h-tail @@ -399,6 +399,10 @@ struct gps_device_t { timestamp_t releasetime; bool zerokill; timestamp_t reawake; +#ifdef TIMING_ENABLE + timestamp_t sor; /* timestamp start of this reporting cycle */ + unsigned long chars; /* characters in the cycle */ +#endif /* TIMING_ENABLE */ #ifdef NTPSHM_ENABLE int shmindex; timestamp_t last_fixtime; /* so updates happen once */ diff --git a/gpsd_json.c b/gpsd_json.c index f3311d06..e89012a6 100644 --- a/gpsd_json.c +++ b/gpsd_json.c @@ -120,11 +120,12 @@ void json_version_dump( /*@out@*/ char *reply, size_t replylen) #endif /* TIMING_ENABLE */ -void json_tpv_dump(const struct gps_data_t *gpsdata, +void json_tpv_dump(const struct gps_device_t *session, const struct policy_t *policy CONDITIONALLY_UNUSED, /*@out@*/ char *reply, size_t replylen) { char tbuf[JSON_DATE_MAX+1]; + const struct gps_data_t *gpsdata = &session->gpsdata; #ifdef TIMING_ENABLE timestamp_t rtime = timestamp(); #endif /* TIMING_ENABLE */ @@ -215,8 +216,8 @@ void json_tpv_dump(const struct gps_data_t *gpsdata, (void)snprintf(reply + strlen(reply), replylen - strlen(reply), "\"sor\":%f,\"chars\":%lu,\"sats\":%2d,\"rtime\":%f,", - gpsdata->sor, - gpsdata->chars, + session->sor, + session->chars, gpsdata->satellites_used, rtime); #endif /* TIMING_ENABLE */ @@ -2935,15 +2936,16 @@ void json_att_dump(const struct gps_data_t *gpsdata, #endif /* COMPASS_ENABLE */ void json_data_report(gps_mask_t changed, - struct gps_data_t *datap, + struct gps_device_t *session, struct policy_t *policy, /*@out@*/char *buf, size_t buflen) /* report a session state in JSON */ { + struct gps_data_t *datap = &session->gpsdata; buf[0] = '\0'; if ((changed & REPORT_IS) != 0) { - json_tpv_dump(datap, policy, buf+strlen(buf), buflen-strlen(buf)); + json_tpv_dump(session, policy, buf+strlen(buf), buflen-strlen(buf)); } if ((changed & GST_SET) != 0) { diff --git a/gpsdecode.c b/gpsdecode.c index 7649518b..7027cc6c 100644 --- a/gpsdecode.c +++ b/gpsdecode.c @@ -427,7 +427,7 @@ static void decode(FILE *fpin, FILE*fpout) #ifdef SOCKET_EXPORT_ENABLE else json_data_report(changed, - &session.gpsdata, &policy, + &session, &policy, buf, sizeof(buf)); #endif /* SOCKET_EXPORT_ENABLE */ (void)fputs(buf, fpout); diff --git a/libgpsd_core.c b/libgpsd_core.c index 4fe943af..88b37854 100644 --- a/libgpsd_core.c +++ b/libgpsd_core.c @@ -144,8 +144,8 @@ void gpsd_init(struct gps_device_t *session, struct gps_context_t *context, session->mag_var = NAN; session->gpsdata.dev.cycle = session->gpsdata.dev.mincycle = 1; #ifdef TIMING_ENABLE - session->gpsdata.sor = 0.0; - session->gpsdata.chars = 0; + session->sor = 0.0; + session->chars = 0; #endif /* TIMING_ENABLE */ /* tty-level initialization */ @@ -866,7 +866,7 @@ gps_mask_t gpsd_poll(struct gps_device_t *session) gpsd_report(LOG_WARN, "cycle-start detector failed.\n"); else if (gap > quiet_time) { gpsd_report(LOG_PROG, "transmission pause of %f\n", gap); - session->gpsdata.sor = now; + session->sor = now; session->packet.start_char = session->packet.char_counter; } } @@ -1005,7 +1005,7 @@ gps_mask_t gpsd_poll(struct gps_device_t *session) #ifdef TIMING_ENABLE /* are we going to generate a report? if so, count characters */ if ((received & REPORT_IS) != 0) { - session->gpsdata.chars = session->packet.char_counter - session->packet.start_char; + session->chars = session->packet.char_counter - session->packet.start_char; } #endif /* TIMING_ENABLE */ -- cgit v1.2.1