diff options
Diffstat (limited to 'driver_aivdm.c')
-rw-r--r-- | driver_aivdm.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/driver_aivdm.c b/driver_aivdm.c index 91b94cc0..c2824026 100644 --- a/driver_aivdm.c +++ b/driver_aivdm.c @@ -240,7 +240,7 @@ bool aivdm_decode(const char *buf, size_t buflen, ais->type1.raim = UBITS(148, 1)!=0; ais->type1.radio = UBITS(149, 20); gpsd_report(LOG_INF, - "Nav=%d TURN=%d SPEED=%d Q=%d Lon=%d Lat=%d COURSE=%d TH=%d Sec=%d\n", + "Nav=%d TURN=%d SOG=%d Q=%d Lon=%d Lat=%d COG=%d TH=%d Sec=%d\n", ais->type1.status, ais->type1.turn, ais->type1.speed, @@ -462,7 +462,7 @@ bool aivdm_decode(const char *buf, size_t buflen, ais->type9.raim = UBITS(147, 1)!=0; ais->type9.radio = UBITS(148, 19); gpsd_report(LOG_INF, - "Alt=%d SPEED=%d Q=%d Lon=%d Lat=%d COURSE=%d Sec=%d\n", + "Alt=%d SOG=%d Q=%d Lon=%d Lat=%d COG=%d Sec=%d\n", ais->type9.alt, ais->type9.speed, (uint)ais->type9.accuracy, @@ -883,6 +883,24 @@ bool aivdm_decode(const char *buf, size_t buflen, ais->type26.app_id, ais->type26.bitcount); break; + case 27: /* Long Range AIS Broadcast message */ + ais->type27.accuracy = (bool)UBITS(38, 1); + ais->type27.raim = UBITS(39, 1)!=0; + ais->type27.status = UBITS(40, 4); + ais->type27.lon = SBITS(44, 18); + ais->type27.lat = SBITS(62, 17); + ais->type27.speed = UBITS(79, 6); + ais->type27.course = UBITS(85, 9); + ais->type27.gnss = (bool)UBITS(94, 1); + gpsd_report(LOG_INF, + "Nav=%d SOG=%d Q=%d Lon=%d Lat=%d COG=%d\n", + ais->type27.status, + ais->type27.speed, + (uint)ais->type27.accuracy, + ais->type27.lon, + ais->type27.lat, + ais->type27.course); + break; default: gpsd_report(LOG_INF, "\n"); gpsd_report(LOG_ERROR, "Unparsed AIVDM message type %d.\n",ais->type); |