summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packet.c8
-rw-r--r--packet_states.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/packet.c b/packet.c
index 8bbd4fd7..961c627c 100644
--- a/packet.c
+++ b/packet.c
@@ -178,7 +178,7 @@ static void nextstate(struct gps_packet_t *lexer,
if (c == 'G')
lexer->state = NMEA_PUB_LEAD;
else if (c == 'P') /* vendor sentence */
- lexer->state = NMEA_LEADER_END;
+ lexer->state = NMEA_VENDOR_LEAD;
else if (c =='I') /* Seatalk */
lexer->state = SEATALK_LEAD_1;
else if (c =='A') /* SiRF Ack */
@@ -192,6 +192,12 @@ static void nextstate(struct gps_packet_t *lexer,
else
lexer->state = GROUND_STATE;
break;
+ case NMEA_VENDOR_LEAD:
+ if (isalpha(c))
+ lexer->state = NMEA_LEADER_END;
+ else
+ lexer->state = GROUND_STATE;
+ break;
#ifdef TNT_ENABLE
case TNT_LEADER:
lexer->state = NMEA_LEADER_END;
diff --git a/packet_states.h b/packet_states.h
index a0615f18..696360af 100644
--- a/packet_states.h
+++ b/packet_states.h
@@ -7,6 +7,7 @@
#ifdef NMEA_ENABLE
NMEA_DOLLAR, /* we've seen first character of NMEA leader */
NMEA_PUB_LEAD, /* seen second character of NMEA G leader */
+ NMEA_VENDOR_LEAD, /* seen second character of NMEA P leader */
NMEA_LEADER_END, /* seen end char of NMEA leader, in body */
NMEA_CR, /* seen terminating \r of NMEA packet */
NMEA_RECOGNIZED, /* saw trailing \n of NMEA packet */