diff options
author | Reinhard Arlt <reinhard.arlt@t-online.de> | 2013-11-05 00:56:02 +0100 |
---|---|---|
committer | Reinhard Arlt <reinhard.arlt@t-online.de> | 2013-11-05 00:56:02 +0100 |
commit | 0b62b868ad0c049fcc47cbaf5c00d02d924380c1 (patch) | |
tree | 207f003260bf8dd26e6f17cf2c01f5b4994d6e20 /driver_nmea2000.c | |
parent | b93fe05c02e0becfce5c313be3bec083a6244402 (diff) | |
download | gpsd-0b62b868ad0c049fcc47cbaf5c00d02d924380c1.tar.gz |
Honor split24 flag in ais msg24 part a.
Diffstat (limited to 'driver_nmea2000.c')
-rw-r--r-- | driver_nmea2000.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/driver_nmea2000.c b/driver_nmea2000.c index 374c1270..cb65b0ee 100644 --- a/driver_nmea2000.c +++ b/driver_nmea2000.c @@ -796,19 +796,31 @@ static gps_mask_t hnd_129809(unsigned char *bu, int len, PGN *pgn, struct gps_de "NMEA2000: AIS message 24A from %09u stashed.\n", ais->mmsi); - saveptr->mmsi = ais->mmsi; + if (session->gpsdata.policy.split24 == true) { + for (l=0;l<AIS_SHIPNAME_MAXLEN;l++) { + ais->type24.shipname[l] = (char) bu[ 5+l]; + } + ais->type24.shipname[AIS_SHIPNAME_MAXLEN] = (char) 0; + } else { + saveptr->mmsi = ais->mmsi; - for (l=0;l<AIS_SHIPNAME_MAXLEN;l++) { - saveptr->shipname[l] = (char) bu[ 5+l]; - } - saveptr->shipname[AIS_SHIPNAME_MAXLEN] = (char) 0; + for (l=0;l<AIS_SHIPNAME_MAXLEN;l++) { + saveptr->shipname[l] = (char) bu[ 5+l]; + } + saveptr->shipname[AIS_SHIPNAME_MAXLEN] = (char) 0; - index += 1; - index %= MAX_TYPE24_INTERLEAVE; - session->driver.aivdm.context[0].type24_queue.index = index; + index += 1; + index %= MAX_TYPE24_INTERLEAVE; + session->driver.aivdm.context[0].type24_queue.index = index; + } decode_ais_channel_info(bu, len, 200, session); - return(0); + if (session->gpsdata.policy.split24 == true) { + ais->type24.part = part_a; + return(ONLINE_SET | AIS_SET); + } else { + return(0); + } } return(0); } |