summaryrefslogtreecommitdiff
path: root/packet_states.h
blob: 4c3a3208486f41642dd03dad789ce92e0dce5b27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
/* edit packet_states.h to add new packet types. */
   GROUND_STATE,	/* we don't know what packet type to expect */

   COMMENT_BODY,	/* pound comment for a test load */
   COMMENT_RECOGNIZED,	/* comment recognized */

#ifdef NMEA0183_ENABLE
   NMEA_DOLLAR,		/* we've seen first character of NMEA leader */
   NMEA_BANG,		/* we've seen first character of an AIS message '!' */
   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_PASHR_A,	/* grind through recognizing $PASHR */
   NMEA_PASHR_S,	/* grind through recognizing $PASHR */
   NMEA_PASHR_H,	/* grind through recognizing $PASHR */
   NMEA_BINARY_BODY,	/* Ashtech-style binary packet body, skip until \r\n */
   NMEA_BINARY_CR,	/* \r on end of Ashtech-style binary packet */
   NMEA_BINARY_NL,	/* \n on end of Ashtech-style binary packet */
   NMEA_CR,	   	/* seen terminating \r of NMEA packet */
   NMEA_RECOGNIZED,	/* saw trailing \n of NMEA packet */

   SIRF_ACK_LEAD_1,	/* seen A of possible SiRF Ack */
   SIRF_ACK_LEAD_2,	/* seen c of possible SiRF Ack */
   AIS_LEAD_1,		/* seen initial A of possible AIS message */
   AIS_LEAD_2,		/* seen second I/B/N/X of possible AIS message */
   AIS_LEAD_ALT1,	/* seen initial B of possible AIS message */
   AIS_LEAD_ALT2,	/* seen second S of possible AIS message */
   AIS_LEAD_ALT3,	/* seen initial S of possible AIS message */
   AIS_LEAD_ALT4,	/* seen second A of possible AIS message */

   SEATALK_LEAD_1,	/* SeaTalk/Garmin packet leader 'I' */
   WEATHER_LEAD_1,	/* Weather instrument packet leader 'W' */
   HEADCOMP_LEAD_1,	/* Heading/compass packet leader 'H' */
   TURN_LEAD_1,		/* Turn indicator packet leader 'T' */
   ECDIS_LEAD_1,	/* ECDIS packet leader 'E' */
   SOUNDER_LEAD_1,	/* Depth sounder packet leader 'S' */
   TRANSDUCER_LEAD_1,	/* Generic transducer packet leader 'Y' */
   BEIDOU_LEAD_1,	/* Beidou leader */
   QZSS_LEAD_1,		/* Quasi-Zenith Satellite System leader */
#endif /* NMEA0183_ENABLE */

   DLE_LEADER,		/* we've seen the TSIP/EverMore leader (DLE) */

#ifdef TRIPMATE_ENABLE
   ASTRAL_1,		/* ASTRAL leader A */
   ASTRAL_2,	 	/* ASTRAL leader S */
   ASTRAL_3,		/* ASTRAL leader T */
   ASTRAL_4,		/* ASTRAL leader R */
   ASTRAL_5,		/* ASTRAL leader A */
#endif /* TRIPMATE_ENABLE */

#ifdef EARTHMATE_ENABLE
   EARTHA_1,		/* EARTHA leader E */
   EARTHA_2,		/* EARTHA leader A */
   EARTHA_3,		/* EARTHA leader R */
   EARTHA_4,		/* EARTHA leader T */
   EARTHA_5,		/* EARTHA leader H */
#endif /* EARTHMATE_ENABLE */

#if defined(SIRF_ENABLE) || defined(SKYTRAQ_ENABLE)
   SIRF_LEADER_1,	/* seen first character of SiRF/Skytraq leader <0x0A> */
#endif /* SIRF_ENABLE || SKYTRAQ_ENABLE */
#ifdef SIRF_ENABLE
   SIRF_LEADER_2,	/* seen second character of SiRF leader */
   SIRF_LENGTH_1,	/* seen first byte of SiRF length */
   SIRF_PAYLOAD,	/* we're in a SiRF payload part */
   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 /* SIRF_ENABLE */

#ifdef SKYTRAQ_ENABLE
   /* <0xA0,0xA1><Len><Message ID><Message Body><csum><0x0D,0x0A> */
   /* Len is two bytes, is the length of Message ID and Message Body */
   /* Skytraq leader 1 same as SIRF_LEADER_1 */
   SKY_LEADER_2,	/* saw leader 2 <0xA1> */
   SKY_LENGTH_1,	/* saw first byte of packet length */
   SKY_LENGTH_2,	/* saw second byte of packet length */
   SKY_PAYLOAD,		/* we're in a Skytraq payload */
   SKY_DELIVERED,	/* saw last byte of Skytraq payload */
   SKY_CSUM,		/* saw Skytraq checksum */
   SKY_TRAILER_1,	/* saw first byte of Skytraq trailer <0x0D> */
   SKY_RECOGNIZED,	/* found end of the Skytraq packet */
#endif /* SKYTRAQ_ENABLE */

#ifdef ZODIAC_ENABLE
   ZODIAC_EXPECTED,	/* expecting Zodiac packet */
   ZODIAC_LEADER_1,	/* saw leading 0xff */
   ZODIAC_LEADER_2,	/* saw leading 0x81 */
   ZODIAC_ID_1, 	/* saw first byte of ID */
   ZODIAC_ID_2, 	/* saw second byte of ID */
   ZODIAC_LENGTH_1,	/* saw first byte of Zodiac packet length */
   ZODIAC_LENGTH_2,	/* saw second byte of Zodiac packet length */
   ZODIAC_FLAGS_1, 	/* saw first byte of FLAGS */
   ZODIAC_FLAGS_2, 	/* saw second byte of FLAGS */
   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 */

#if defined(TNT_ENABLE) || defined(GARMINTXT_ENABLE) || defined(ONCORE_ENABLE)
   AT1_LEADER,		/* saw True North status leader '@' */
			/* Garmin Simple Text starts with @ leader */
			/* Oncore starts with @ leader */
   GTXT_RECOGNIZED,     /* */
#endif

#ifdef EVERMORE_ENABLE
   EVERMORE_LEADER_1,	/* a DLE after having seen EverMore data */
   EVERMORE_LEADER_2,	/* seen opening STX of EverMore packet */
   EVERMORE_PAYLOAD,	/* in payload part of EverMore packet */
   EVERMORE_PAYLOAD_DLE,/* DLE in payload part of EverMore packet */
   EVERMORE_RECOGNIZED,	/* found end of EverMore packet */
#endif /* EVERMORE_ENABLE */

#ifdef ITRAX_ENABLE
   ITALK_LEADER_1,	/* saw leading < of iTalk packet */
   ITALK_LEADER_2,	/* saw leading ! of iTalk packet */
   ITALK_LENGTH,	/* saw packet length */
   ITALK_PAYLOAD,	/* in payload part of iTalk Packet */
   ITALK_DELIVERED,	/* seen end of payload */
   ITALK_TRAILER,	/* saw iTalk trailer byte */
   ITALK_RECOGNIZED,	/* found end of the iTalk packet */
#endif /* ITRAX_ENABLE */

#ifdef NAVCOM_ENABLE
   NAVCOM_EXPECTED,	/* expecting Navcom NCT packet */
   NAVCOM_LEADER_1,	/* saw leading 0x02 */
   NAVCOM_LEADER_2,	/* saw leading 0x99 */
   NAVCOM_LEADER_3,	/* saw leading 0x66 */
   NAVCOM_ID,   	/* saw message ID */
   NAVCOM_LENGTH_1,	/* saw first byte of Navcom packet length */
   NAVCOM_LENGTH_2,	/* saw second byte of Navcom packet length */
   NAVCOM_PAYLOAD,	/* we're in a Navcom payload */
   NAVCOM_CSUM, 	/* saw checksum */
   NAVCOM_RECOGNIZED,	/* found end of the Navcom packet */
#endif /* NAVCOM_ENABLE */

#ifdef UBLOX_ENABLE
   UBX_LEADER_1,        /* first constant leader byte found */
   UBX_LEADER_2,        /* second constant leader byte found */
   UBX_CLASS_ID,        /* classid read */
   UBX_MESSAGE_ID,      /* message id read */
   UBX_LENGTH_1,        /* first length byte read (le) */
   UBX_LENGTH_2,        /* second length byte read (le) */
   UBX_PAYLOAD,         /* payload eating */
   UBX_CHECKSUM_A,      /* checksum A byte (tcp checksum) */
   UBX_RECOGNIZED,      /* this is also UBX_CHECKSUM_B */
#endif

#ifdef SUPERSTAR2_ENABLE
   SUPERSTAR2_LEADER,	/* leading SOH */
   SUPERSTAR2_ID1,	/* message type */
   SUPERSTAR2_ID2,	/* message type xor 0xff */
   SUPERSTAR2_PAYLOAD,	/* length of the actual packet data */
   SUPERSTAR2_CKSUM1,
   SUPERSTAR2_CKSUM2,
   SUPERSTAR2_RECOGNIZED,
#endif

#ifdef ONCORE_ENABLE
   ONCORE_AT2,		/* second @ */
   ONCORE_ID1,		/* first character of command type */
   ONCORE_PAYLOAD,	/* payload eating */
   ONCORE_CHECKSUM,	/* checksum byte */
   ONCORE_CR,		/* closing CR */
   ONCORE_RECOGNIZED,	/* closing LF */
#endif

#ifdef GEOSTAR_ENABLE
   GEOSTAR_LEADER_1,        /* first constant leader byte found */
   GEOSTAR_LEADER_2,        /* second constant leader byte found */
   GEOSTAR_LEADER_3,        /* third constant leader byte found */
   GEOSTAR_LEADER_4,        /* forth constant leader byte found */
   GEOSTAR_MESSAGE_ID_1,    /* first message id read */
   GEOSTAR_MESSAGE_ID_2,    /* second message id read */
   GEOSTAR_LENGTH_1,        /* first length byte read */
   GEOSTAR_LENGTH_2,        /* second length byte read */
   GEOSTAR_PAYLOAD,         /* payload eating */
   GEOSTAR_CHECKSUM_A,      /* checksum A byte (xor checksum) */
   GEOSTAR_CHECKSUM_B,      /* checksum B byte (xor checksum) */
   GEOSTAR_CHECKSUM_C,      /* checksum C byte (xor checksum) */
   GEOSTAR_RECOGNIZED,      /* this is also GEOSTAR_CHECKSUM_D */
#endif

#ifdef GREIS_ENABLE
   GREIS_EXPECTED,          /* expecting GREIS packet */
   GREIS_REPLY_1,           /* saw first byte of a reply */
   GREIS_REPLY_2,           /* saw second byte of a reply */
   GREIS_ID_1,              /* saw first byte of ID */
   GREIS_ID_2,              /* saw second byte of ID */
   GREIS_LENGTH_1,          /* saw first length byte */
   GREIS_LENGTH_2,          /* saw second length byte */
   GREIS_PAYLOAD,           /* we're in a GREIS payload */
   GREIS_RECOGNIZED,        /* found end of the GREIS packet */
#endif

/*
 * Packet formats without checksums start here.  We list them last so
 * that if a format with a conflicting structure *and* a checksum can
 * be recognized, that will be preferred.
 */

#if defined(TSIP_ENABLE) || defined(GARMIN_ENABLE)
   TSIP_LEADER,		/* a DLE after having seen TSIP data */
   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 */
   GARMIN_RECOGNIZED,	/* found end of Garmin packet */
#endif /* TSIP_ENABLE GARMIN_ENABLE */

#ifdef RTCM104V2_ENABLE
   RTCM2_SYNC_STATE,	/* we have sync lock */
   RTCM2_SKIP_STATE,	/* we have sync lock, but this character is bad */
   RTCM2_RECOGNIZED,	/* we have an RTCM packet */
#endif /* RTCM104V2_ENABLE */

#ifdef RTCM104V3_ENABLE
   RTCM3_LEADER_1,      /* constant leader byte found */
   RTCM3_LEADER_2,      /* second leader byte found (high 6 bits zero) */
   RTCM3_PAYLOAD,       /* gathering payload */
   RTCM3_RECOGNIZED,    /* RTCM3 packet recognized */
#endif

#ifdef PASSTHROUGH_ENABLE
   JSON_LEADER,         /* JSON leading { found */
   JSON_STRINGLITERAL,  /* start of JSON string literal seen */
   JSON_STRING_SOLIDUS, /* backslash in string */
   JSON_END_ATTRIBUTE,  /* end of JSON attribute */
   JSON_EXPECT_VALUE,   /* just after colon */
   JSON_END_VALUE,      /* end of JSON value */
   JSON_NUMBER,         /* inside a JSON numeric literal */
   JSON_SPECIAL,        /* inside a JSON special literal (true,false,null) */
   JSON_RECOGNIZED,     /* JSON packet recognized */
#endif

#ifdef STASH_ENABLE
   STASH_RECOGNIZED,    /* stashable prefix recognized */
#endif

/* end of packet_states.h */