summaryrefslogtreecommitdiff
path: root/packet.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2005-07-06 22:33:52 +0000
committerEric S. Raymond <esr@thyrsus.com>2005-07-06 22:33:52 +0000
commitb95edc23ffe2cded771724596707db9b24fd0507 (patch)
tree4a62df2dabc5321c4cc1be7d920a2efd1228a79a /packet.c
parent51adb0b1c66988b5c99f11736fda6e049d946188 (diff)
downloadgpsd-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.c121
1 files changed, 7 insertions, 114 deletions
diff --git a/packet.c b/packet.c
index a2f6219f..1c6d6593 100644
--- a/packet.c
+++ b/packet.c
@@ -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 */
}
}