summaryrefslogtreecommitdiff
path: root/driver_nmea2000.c
diff options
context:
space:
mode:
authorReinhard Arlt <reinhard.arlt@t-online.de>2013-11-05 00:56:02 +0100
committerReinhard Arlt <reinhard.arlt@t-online.de>2013-11-05 00:56:02 +0100
commit0b62b868ad0c049fcc47cbaf5c00d02d924380c1 (patch)
tree207f003260bf8dd26e6f17cf2c01f5b4994d6e20 /driver_nmea2000.c
parentb93fe05c02e0becfce5c313be3bec083a6244402 (diff)
downloadgpsd-0b62b868ad0c049fcc47cbaf5c00d02d924380c1.tar.gz
Honor split24 flag in ais msg24 part a.
Diffstat (limited to 'driver_nmea2000.c')
-rw-r--r--driver_nmea2000.c30
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);
}