diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2005-07-06 22:33:52 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2005-07-06 22:33:52 +0000 |
commit | b95edc23ffe2cded771724596707db9b24fd0507 (patch) | |
tree | 4a62df2dabc5321c4cc1be7d920a2efd1228a79a /packet.c | |
parent | 51adb0b1c66988b5c99f11736fda6e049d946188 (diff) | |
download | gpsd-b95edc23ffe2cded771724596707db9b24fd0507.tar.gz |
Back out Evermore packet parsing.
This change turns out to have broken a regression test. I'll
reintroduce the change in pieces and figure out what went wrong.
Diffstat (limited to 'packet.c')
-rw-r--r-- | packet.c | 121 |
1 files changed, 7 insertions, 114 deletions
@@ -89,8 +89,6 @@ enum { NMEA_CR, /* seen terminating \r of NMEA packet */ NMEA_RECOGNIZED, /* saw trailing \n of NMEA packet */ - DLE_LEADER, /* we've seen the TSIP/Evermore leader (DLE) */ - SEATALK_LEAD_1, /* SeaTalk/Garmin packet leader 'I' */ #ifdef TRIPMATE_ENABLE @@ -109,7 +107,6 @@ enum { EARTHA_5, /* EARTHA leader H */ #endif /* EARTHMATE_ENABLE */ -#ifdef SIRFII_ENABLE SIRF_LEADER_1, /* we've seen first character of SiRF leader */ SIRF_LEADER_2, /* seen second character of SiRF leader */ SIRF_ACK_LEAD_1, /* seen A of possible SiRF Ack */ @@ -119,16 +116,12 @@ enum { SIRF_DELIVERED, /* saw last byte of SiRF payload/checksum */ SIRF_TRAILER_1, /* saw first byte of SiRF trailer */ SIRF_RECOGNIZED, /* saw second byte of SiRF trailer */ -#endif /* SIRFII_ENABLE */ -#ifdef TSIP_ENABLE - TSIP_LEADER, /* a DLE after having seen TSIP data */ + TSIP_LEADER, /* we've seen the TSIP leader (DLE) */ TSIP_PAYLOAD, /* we're in TSIP payload */ TSIP_DLE, /* we've seen a DLE in TSIP payload */ TSIP_RECOGNIZED, /* found end of the TSIP packet */ -#endif /* TSIP_ENABLE */ -#ifdef ZODIAC_ENABLE ZODIAC_EXPECTED, /* expecting Zodiac packet */ ZODIAC_LEADER_1, /* saw leading 0xff */ ZODIAC_LEADER_2, /* saw leading 0x81 */ @@ -141,19 +134,6 @@ enum { ZODIAC_HSUM_1, /* saw first byte of Header sum */ ZODIAC_PAYLOAD, /* we're in a Zodiac payload */ ZODIAC_RECOGNIZED, /* found end of the Zodiac packet */ -#endif /* ZODIAC_ENABLE */ - -#ifdef EVERMORE_ENABLE - EVERMORE_LEADER_1, /* a DLE after having seen Evermore data */ - EVERMORE_LEADER_2, /* seen opening STX of Evermore packet */ - EVERMORE_LENGTH, /* seen 1-byte packet length */ - EVERMORE_HEADER_DLE, /* 1-byte packet length was DLE */ - EVERMORE_PAYLOAD, /* in payload part of Evermore packet */ - EVERMORE_DELIVERED, /* got to end of payload, looking for checksum */ - EVERMORE_CHECKSUM_DLE, /* in payload part of Evermore packet */ - EVERMORE_TRAILER_1, /* looking for first byte of Evermore trailer */ - EVERMORE_RECOGNIZED, /* found end of Evermore packet */ -#endif /* EVERMORE_ENABLE */ }; static void nexstate(struct gps_device_t *session, unsigned char c) @@ -168,10 +148,10 @@ static void nexstate(struct gps_device_t *session, unsigned char c) else if (c == 0xa0) session->packet_state = SIRF_LEADER_1; #endif /* SIRFII_ENABLE */ -#if defined(TSIP_ENABLE) || defined(EVERMORE_ENABLE) +#ifdef TSIP_ENABLE else if (c == 0x10) - session->packet_state = DLE_LEADER; -#endif /* defined(TSIP_ENABLE) || defined(EVERMORE_ENABLE) */ + session->packet_state = TSIP_LEADER; +#endif /* TSIP_ENABLE */ #ifdef TRIPMATE_ENABLE else if (c == 'A') session->packet_state = ASTRAL_1; @@ -350,27 +330,12 @@ static void nexstate(struct gps_device_t *session, unsigned char c) session->packet_state = GROUND_STATE; break; #endif /* SIRFII_ENABLE */ -#if defined(TSIP_ENABLE) || defined(EVERMORE_ENABLE) - case DLE_LEADER: -#ifdef EVERMORE_ENABLE - if (c == 0x02) - session->packet_state = EVERMORE_LEADER_2; - else -#endif /* EVERMORE_ENABLE */ -#ifdef TSIP_ENABLE - if (c >= 0x13) - session->packet_state = TSIP_PAYLOAD; - else -#endif /* TSIP_ENABLE */ - session->packet_state = GROUND_STATE; - break; -#endif /* defined(TSIP_ENABLE) || defined(EVERMORE_ENABLE) */ #ifdef TSIP_ENABLE case TSIP_LEADER: - if (c >= 0x13) - session->packet_state = TSIP_PAYLOAD; - else + if (c < 0x13) session->packet_state = GROUND_STATE; + else + session->packet_state = TSIP_PAYLOAD; break; case TSIP_PAYLOAD: if (c == 0x10) @@ -465,55 +430,6 @@ static void nexstate(struct gps_device_t *session, unsigned char c) session->packet_state = ZODIAC_RECOGNIZED; break; #endif /* ZODIAC_ENABLE */ -#ifdef EVERMORE_ENABLE - case EVERMORE_LEADER_1: - if (c == 0x02) - session->packet_state = EVERMORE_LEADER_2; - else - session->packet_state = GROUND_STATE; - break; - case EVERMORE_LEADER_2: - session->packet_length = (size_t)c; - if (c == 0x10) - session->packet_state = EVERMORE_HEADER_DLE; - else - session->packet_state = EVERMORE_PAYLOAD; - break; - case EVERMORE_HEADER_DLE: - if (c == 0x10) - session->packet_state = EVERMORE_LENGTH; - else - session->packet_state = GROUND_STATE; - break; - case EVERMORE_PAYLOAD: - if (--session->packet_length == 0) - session->packet_state = EVERMORE_DELIVERED; - break; - case EVERMORE_DELIVERED: - if (c == 0x10) - session->packet_state = EVERMORE_CHECKSUM_DLE; - else - session->packet_state = EVERMORE_TRAILER_1; - break; - case EVERMORE_CHECKSUM_DLE: - if (c == 0x10) - session->packet_state = EVERMORE_TRAILER_1; - else - session->packet_state = GROUND_STATE; - break; - case EVERMORE_TRAILER_1: - if (c == 0x03) - session->packet_state = EVERMORE_RECOGNIZED; - else - session->packet_state = GROUND_STATE; - break; - case EVERMORE_RECOGNIZED: - if (c == 0x10) - session->packet_state = EVERMORE_LEADER_1; - else - session->packet_state = GROUND_STATE; - break; -#endif /* EVERMORE_ENABLE */ } /*@ -charint */ } @@ -644,7 +560,6 @@ ssize_t packet_get(struct gps_device_t *session) packet_accept(session, NMEA_PACKET); session->packet_state = GROUND_STATE; packet_discard(session); -#ifdef SIRFII_ENABLED } else if (session->packet_state == SIRF_RECOGNIZED) { unsigned char *trailer = session->inbufptr-4; unsigned int checksum = (unsigned)((trailer[0] << 8) | trailer[1]); @@ -656,7 +571,6 @@ ssize_t packet_get(struct gps_device_t *session) packet_accept(session, SIRF_PACKET); session->packet_state = GROUND_STATE; packet_discard(session); -#endif /* SIRFII_ENABLED */ #ifdef TSIP_ENABLE } else if (session->packet_state == TSIP_RECOGNIZED) { if ((session->inbufptr - session->inbuffer) >= 4) @@ -683,27 +597,6 @@ ssize_t packet_get(struct gps_device_t *session) packet_discard(session); #undef getword #endif /* ZODIAC_ENABLE */ -#ifdef EVERMORE_ENABLED - } else if (session->packet_state == EVERMORE_RECOGNIZED) { - unsigned char *trailer = session->inbufptr-2; - unsigned int checksum; - unsigned int n, crc = 0; - bool dle_in_leader = session->inbuffer[2] == 0x10; - if (*trailer == 0x10) - checkum = *--trailer; - else - checkum = *trailer; - for (n = 3 + dle_in_leader ? 1 : 0; - n < (unsigned)(trailer - session->inbuffer); - n++) - crc += (int)session->inbuffer[n]; - crc %= 256; - if (checksum == crc) - packet_accept(session, EVERMORE_PACKET); - else - session->packet_state = GROUND_STATE; - packet_discard(session); -#endif /* EVERMORE_ENABLED */ } } |