diff options
-rw-r--r-- | packet.c | 8 | ||||
-rw-r--r-- | packet_states.h | 1 |
2 files changed, 8 insertions, 1 deletions
@@ -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 */ |