diff options
-rw-r--r-- | gpsctl.c | 1 | ||||
-rw-r--r-- | gpsd.c | 2 | ||||
-rw-r--r-- | gpsd.h-tail | 2 | ||||
-rw-r--r-- | gpsdecode.c | 1 | ||||
-rw-r--r-- | gpspacket.c | 2 | ||||
-rw-r--r-- | hex.c | 19 | ||||
-rw-r--r-- | libgpsd_core.c | 1 | ||||
-rw-r--r-- | packet.c | 34 | ||||
-rw-r--r-- | test_packet.c | 2 |
9 files changed, 21 insertions, 43 deletions
@@ -312,7 +312,6 @@ int main(int argc, char **argv) break; case 'D': /* set debugging level */ debuglevel = atoi(optarg); - gpsd_hexdump_level = debuglevel; #ifdef CLIENTDEBUG_ENABLE gps_enable_debug(debuglevel, stderr); #endif /* CLIENTDEBUG_ENABLE */ @@ -1761,13 +1761,11 @@ int main(int argc, char *argv[]) (void)setlocale(LC_NUMERIC, "C"); context.debug = 0; - gpsd_hexdump_level = 0; gps_context_init(&context); while ((option = getopt(argc, argv, "F:D:S:bGhlNnP:V")) != -1) { switch (option) { case 'D': context.debug = (int)strtol(optarg, 0, 0); - gpsd_hexdump_level = context.debug; #ifdef CLIENTDEBUG_ENABLE gps_enable_debug(context.debug, stderr); #endif /* CLIENTDEBUG_ENABLE */ diff --git a/gpsd.h-tail b/gpsd.h-tail index 084c25d6..16d92d93 100644 --- a/gpsd.h-tail +++ b/gpsd.h-tail @@ -124,6 +124,7 @@ struct gps_packet_t { unsigned long char_counter; /* count characters processed */ unsigned long retry_counter; /* count sniff retries */ unsigned counter; /* packets since last driver switch */ + int debug; /* lexer debug level */ /* * ISGPS200 decoding context. * @@ -668,7 +669,6 @@ extern gps_mask_t gpsd_interpret_subframe(struct gps_device_t *, unsigned int, uint32_t[]); extern gps_mask_t gpsd_interpret_subframe_raw(struct gps_device_t *, unsigned int, uint32_t[]); -extern int gpsd_hexdump_level; extern /*@ observer @*/ char *gpsd_hexdump(/*@null@*/const void *, size_t); extern /*@ observer @*/ char *gpsd_hexdump_wrapper(/*@null@*/const void *, size_t, int); extern int gpsd_hexpack(/*@in@*/const char *, /*@out@*/char *, size_t); diff --git a/gpsdecode.c b/gpsdecode.c index 13f66eb5..b1634392 100644 --- a/gpsdecode.c +++ b/gpsdecode.c @@ -514,7 +514,6 @@ int main(int argc, char **argv) case 'D': verbose = atoi(optarg); - gpsd_hexdump_level = verbose; #if defined(CLIENTDEBUG_ENABLE) && defined(SOCKET_EXPORT_ENABLE) json_enable_debug(verbose - 2, stderr); #endif diff --git a/gpspacket.c b/gpspacket.c index 427af487..ab0038d8 100644 --- a/gpspacket.c +++ b/gpspacket.c @@ -20,8 +20,6 @@ void gpsd_report(int errlevel, const char *fmt, ... ) PyObject *args; va_list ap; - gpsd_hexdump_level = errlevel; - if (!report_callback) /* no callback defined, exit early */ return; @@ -6,25 +6,6 @@ #include "gpsd.h" -int gpsd_hexdump_level = -1; -/* - * A wrapper around gpsd_hexdump to prevent wasting cpu time by hexdumping - * buffers and copying strings that will never be printed. only messages at - * level "N" and lower will be printed. By way of example, without any -D - * options, gpsd probably won't ever call the real gpsd_hexdump. At -D2, - * LOG_PROG (and higher) won't get to call the real gpsd_hexdump. For high - * speed, chatty protocols, this can save a lot of CPU. - */ -char *gpsd_hexdump_wrapper(const void *binbuf, size_t binbuflen, - int msg_debug_level) -{ -#ifndef SQUELCH_ENABLE - if (msg_debug_level <= gpsd_hexdump_level) - return gpsd_hexdump(binbuf, binbuflen); -#endif /* SQUELCH_ENABLE */ - return ""; -} - char /*@ observer @*/ *gpsd_hexdump(const void *binbuf, size_t binbuflen) { static char hexbuf[MAX_PACKET_LENGTH * 2 + 1]; diff --git a/libgpsd_core.c b/libgpsd_core.c index 10f2489c..442e8d37 100644 --- a/libgpsd_core.c +++ b/libgpsd_core.c @@ -185,6 +185,7 @@ void gpsd_clear(struct gps_device_t *session) session->driver.sirf.satcounter = 0; #endif /* SIRF_ENABLE */ packet_init(&session->packet); + session->packet.debug = session->context->debug; // session->gpsdata.online = 0; session->gpsdata.fix.mode = MODE_NOT_SEEN; session->gpsdata.status = STATUS_NO_FIX; @@ -1295,10 +1295,10 @@ static void packet_accept(struct gps_packet_t *lexer, int packet_type) lexer->outbuflen = packetlen; lexer->outbuffer[packetlen] = '\0'; lexer->type = packet_type; - gpsd_report(LOG_RAW+1, "Packet type %d accepted %zu = %s\n", + if (lexer->debug >= LOG_RAW+1) + gpsd_report(LOG_RAW+1, "Packet type %d accepted %zu = %s\n", packet_type, packetlen, - gpsd_hexdump_wrapper(lexer->outbuffer, lexer->outbuflen, - LOG_RAW+1)); + gpsd_hexdump(lexer->outbuffer, lexer->outbuflen)); } else { gpsd_report(LOG_ERROR, "Rejected too long packet type %d len %zu\n", packet_type, packetlen); @@ -1312,11 +1312,11 @@ static void packet_discard(struct gps_packet_t *lexer) size_t remaining = lexer->inbuflen - discard; lexer->inbufptr = memmove(lexer->inbuffer, lexer->inbufptr, remaining); lexer->inbuflen = remaining; - gpsd_report(LOG_RAW + 1, - "Packet discard of %zu, chars remaining is %zu = %s\n", - discard, remaining, - gpsd_hexdump_wrapper(lexer->inbuffer, lexer->inbuflen, - LOG_RAW + 1)); + if (lexer->debug >= LOG_RAW+1) + gpsd_report(LOG_RAW + 1, + "Packet discard of %zu, chars remaining is %zu = %s\n", + discard, remaining, + gpsd_hexdump(lexer->inbuffer, lexer->inbuflen)); } static void character_discard(struct gps_packet_t *lexer) @@ -1324,10 +1324,10 @@ static void character_discard(struct gps_packet_t *lexer) { memmove(lexer->inbuffer, lexer->inbuffer + 1, (size_t)-- lexer->inbuflen); lexer->inbufptr = lexer->inbuffer; - gpsd_report(LOG_RAW + 1, "Character discarded, buffer %zu chars = %s\n", - lexer->inbuflen, - gpsd_hexdump_wrapper(lexer->inbuffer, lexer->inbuflen, - LOG_RAW + 1)); + if (lexer->debug >= LOG_RAW+1) + gpsd_report(LOG_RAW + 1, "Character discarded, buffer %zu chars = %s\n", + lexer->inbuflen, + gpsd_hexdump(lexer->inbuffer, lexer->inbuflen)); } /* get 0-origin big-endian words relative to start of packet buffer */ @@ -1939,11 +1939,11 @@ ssize_t packet_get(int fd, struct gps_packet_t *lexer) return -1; } } else { - gpsd_report(LOG_RAW + 1, - "Read %zd chars to buffer offset %zd (total %zd): %s\n", - recvd, lexer->inbuflen, lexer->inbuflen + recvd, - gpsd_hexdump_wrapper(lexer->inbufptr, (size_t) recvd, - LOG_RAW + 1)); + if (lexer->debug >= LOG_RAW+1) + gpsd_report(LOG_RAW + 1, + "Read %zd chars to buffer offset %zd (total %zd): %s\n", + recvd, lexer->inbuflen, lexer->inbuflen + recvd, + gpsd_hexdump(lexer->inbufptr, (size_t) recvd)); lexer->inbuflen += recvd; } gpsd_report(LOG_SPIN, "packet_get() fd %d -> %zd (%d)\n", diff --git a/test_packet.c b/test_packet.c index e403ad30..ad0a61e4 100644 --- a/test_packet.c +++ b/test_packet.c @@ -276,6 +276,7 @@ static int packet_test(struct map *mp) int failure = 0; packet_init(&packet); + packet.debug = verbose; /*@i@*/ memcpy(packet.inbufptr = packet.inbuffer, mp->test, mp->testlen); packet.inbuflen = mp->testlen; /*@ -compdef -uniondef -usedef -formatcode @*/ @@ -303,6 +304,7 @@ static void runon_test(struct map *mp) ssize_t st; packet_init(&packet); + packet.debug = verbose; /*@i@*/ memcpy(packet.inbufptr = packet.inbuffer, mp->test, mp->testlen); packet.inbuflen = mp->testlen; /*@ -compdef -uniondef -usedef -formatcode @*/ |