diff options
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | gpsd.xml | 9 | ||||
-rw-r--r-- | packet.c | 9 | ||||
-rw-r--r-- | packet_states.h | 1 |
4 files changed, 17 insertions, 4 deletions
@@ -1,6 +1,8 @@ * Thu Sep 1 2011 Eric S. Raymond <esr@snark.thyrsus.com> - 3.2~dev In the build recipe, (1) set pkgconfigdir properly for 64-bit Fedora systems, (2) clean up various derived files including *.pyc on scons -c. + The packet sniffer now accepts NMEA packets with the ECDIS packet + leader 'EC'. * Sun Aug 28 2011 Eric S. Raymond <esr@snark.thyrsus.com> - 3.1 The Irene release, rocking you like a hurricane and brought to you @@ -855,10 +855,11 @@ sentences: RMC, GGA, GLL, GSA, GSV, VTG, ZDA. It recognizes these with either the normal GP talker-ID prefix, or with the GN prefix used by GLONASS, or with the II prefix emitted by Seahawk Autohelm marine navigation systems, or with the IN prefix emitted by some Garmin -units. It recognizes some vendor extensions: the PGRME emitted by some -Garmin GPS models, the OHPR emitted by Oceanserver digital compasses, -the PTNTHTM emitted by True North digital compasses, and the PASHR -sentences emitted by some Ashtech GPSes.</para> +units, or with the EC prefix emitted by ECDIS units. It recognizes +some vendor extensions: the PGRME emitted by some Garmin GPS models, +the OHPR emitted by Oceanserver digital compasses, the PTNTHTM emitted +by True North digital compasses, and the PASHR sentences emitted by +some Ashtech GPSes.</para> <para>Note that <application>gpsd</application> JSON returns pure decimal degrees, not the hybrid degree/minute format described in the NMEA @@ -91,6 +91,7 @@ PERMISSIONS * GN -- Mixed GPS and GLONASS data, according to IEIC 61162-1 * II -- Integrated Instrumentation (Raytheon's SeaTalk system). * IN -- Integrated Navigation (Garmin uses this). + * EC -- Electronic Chart Display & Information System (ECDIS) * */ @@ -319,6 +320,8 @@ static void nextstate(struct gps_packet_t *lexer, unsigned char c) lexer->state = SEATALK_LEAD_1; else if (c == 'A') /* SiRF Ack */ lexer->state = SIRF_ACK_LEAD_1; + else if (c == 'E') /* ECDIS */ + lexer->state = ECDIS_LEAD_1; #ifdef OCEANSERVER_ENABLE else if (c == 'C') lexer->state = NMEA_LEADER_END; @@ -489,6 +492,12 @@ static void nextstate(struct gps_packet_t *lexer, unsigned char c) else lexer->state = GROUND_STATE; break; + case ECDIS_LEAD_1: + if (c == 'C') /* ECDIS leader accepted */ + lexer->state = NMEA_LEADER_END; + else + lexer->state = GROUND_STATE; + break; #ifdef TRIPMATE_ENABLE case ASTRAL_1: if (c == 'S') { diff --git a/packet_states.h b/packet_states.h index 07adaeda..800fb4e1 100644 --- a/packet_states.h +++ b/packet_states.h @@ -25,6 +25,7 @@ AIS_LEAD_2, /* seen I of possible marine AIS message */ SEATALK_LEAD_1, /* SeaTalk/Garmin packet leader 'I' */ + ECDIS_LEAD_1, /* ECDIS packet leader 'E' */ #endif /* NMEA_ENABLE */ DLE_LEADER, /* we've seen the TSIP/EverMore leader (DLE) */ |