diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2015-02-08 17:22:26 -0500 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2015-02-08 17:22:26 -0500 |
commit | 0fa3a3821a26c10c98da703568c31a09ab74712e (patch) | |
tree | 715af92d55094f7c7c1c92d98815dda01b06695c /packet.c | |
parent | 2a8969b376a185126b5cce97e538d0872313eaf3 (diff) | |
download | gpsd-0fa3a3821a26c10c98da703568c31a09ab74712e.tar.gz |
Improved instrumentation. All regression tests pass.
Diffstat (limited to 'packet.c')
-rw-r--r-- | packet.c | 19 |
1 files changed, 13 insertions, 6 deletions
@@ -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", |