summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2015-02-08 17:22:26 -0500
committerEric S. Raymond <esr@thyrsus.com>2015-02-08 17:22:26 -0500
commit0fa3a3821a26c10c98da703568c31a09ab74712e (patch)
tree715af92d55094f7c7c1c92d98815dda01b06695c /packet.c
parent2a8969b376a185126b5cce97e538d0872313eaf3 (diff)
downloadgpsd-0fa3a3821a26c10c98da703568c31a09ab74712e.tar.gz
Improved instrumentation. All regression tests pass.
Diffstat (limited to 'packet.c')
-rw-r--r--packet.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/packet.c b/packet.c
index 6ec430de..d5fd1ae5 100644
--- a/packet.c
+++ b/packet.c
@@ -121,6 +121,10 @@ enum
#include "packet_states.h"
};
+static char *state_table[] = {
+#include "packet_names.h"
+};
+
#define SOH (unsigned char)0x01
#define DLE (unsigned char)0x10
#define STX (unsigned char)0x02
@@ -192,9 +196,15 @@ static void character_pushback(struct gps_lexer_t *lexer, unsigned int newstate)
/*@+modobserver@*/
--lexer->char_counter;
lexer->state = newstate;
- gpsd_report(&lexer->errout, LOG_RAW + 2,
- "%08ld: character pushed back, state set to %d\n",
- lexer->char_counter, lexer->state);
+ if (lexer->errout.debug >= LOG_RAW + 2)
+ {
+ unsigned int c = *lexer->inbufptr;
+ gpsd_report(&lexer->errout, LOG_RAW + 2,
+ "%08ld: character '%c' [%02x] pushed back, state set to %s\n",
+ lexer->char_counter,
+ (isprint(c) ? c : '.'), c,
+ state_table[lexer->state]);
+ }
}
static void nextstate(struct gps_lexer_t *lexer, unsigned char c)
@@ -1475,9 +1485,6 @@ void packet_parse(struct gps_lexer_t *lexer)
/*@ -modobserver @*/
unsigned char c = *lexer->inbufptr++;
/*@ +modobserver @*/
- char *state_table[] = {
-#include "packet_names.h"
- };
nextstate(lexer, c);
gpsd_report(&lexer->errout, LOG_RAW + 2,
"%08ld: character '%c' [%02x], new state: %s\n",