summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-09-07 12:39:03 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-09-07 12:39:03 +0000
commitee82a051738c9670624cc3428c36092c29428f30 (patch)
tree7b66ba3745b4f20b9f6c8d2696e6e6f5a8bad40a
parentc7d120dbf5668cd00650b2fe2661e9cf9601c8c7 (diff)
downloadgpsd-ee82a051738c9670624cc3428c36092c29428f30.tar.gz
Reversed earlier change of MMSI to a string.
-rw-r--r--gpsd_json.c4
-rw-r--r--test/stable/ait250.log.chk80
-rw-r--r--test/synthetic-rtcm2.json2
3 files changed, 43 insertions, 43 deletions
diff --git a/gpsd_json.c b/gpsd_json.c
index 5cbcd2a8..f79e9ba2 100644
--- a/gpsd_json.c
+++ b/gpsd_json.c
@@ -393,7 +393,7 @@ void rtcm2_json_dump(struct rtcm2_t *rtcm, /*@out@*/char buf[], size_t buflen)
case 4:
if (rtcm->reference.valid) {
(void)snprintf(buf + strlen(buf), buflen - strlen(buf),
- "\"system\":\"%s\",\"sense\":%1d,\"datum\":%s,\"dx\":%.1f,\"dy\":%.1f,\"dz\":%.1f,",
+ "\"system\":\"%s\",\"sense\":%1d,\"datum\":\"%s\",\"dx\":%.1f,\"dy\":%.1f,\"dz\":%.1f,",
rtcm->reference.system >= NITEMS(navsysnames)
? "UNKNOWN"
: navsysnames[rtcm->reference.system],
@@ -652,7 +652,7 @@ void aivdm_json_dump(struct ais_t *ais, bool scaled, char *buf, size_t buflen)
(void)snprintf(buf, buflen,
"{\"class\":\"AIS\",\"type\":%u,\"repeat\":%u,"
- "\"mmsi\":\"%09u\",",
+ "\"mmsi\":%09u,",
ais->type, ais->repeat, ais->mmsi);
#define JSON_BOOL(x) ((x)?"true":"false")
diff --git a/test/stable/ait250.log.chk b/test/stable/ait250.log.chk
index fc046f5a..9380a0d0 100644
--- a/test/stable/ait250.log.chk
+++ b/test/stable/ait250.log.chk
@@ -1,35 +1,35 @@
$GPRMC,194907.00,A,5241.99815,N,00517.56525,E,0.005,,010809,,,A*7B
{"class":"TPV","tag":"RMC","time":1249156147.000,"ept":0.005,"lat":52.699969167,"lon":5.292754167,"track":0.0000,"speed":0.003,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063aj7RNpl03wSUwP06,0*43
-{"class":"AIS","type":1,"repeat":0,"mmsi":"258774000","status":0,"turn":12,"speed":124,"accuracy":false,"lon":2656698,"lat":31492809,"course":3030,"heading":310,"second":3,"maneuver":0,"raim":false,"radio":426224}
+{"class":"AIS","type":1,"repeat":0,"mmsi":258774000,"status":0,"turn":12,"speed":124,"accuracy":false,"lon":2656698,"lat":31492809,"course":3030,"heading":310,"second":3,"maneuver":0,"raim":false,"radio":426224}
$GPGBS,194907.00,3.0,1.9,4.2,,,,*4E
{"class":"TPV","tag":"GBS","time":1249156147.000,"ept":0.005,"lat":52.699969167,"lon":5.292754167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
$GPRMC,194908.00,A,5241.99805,N,00517.56503,E,0.003,,010809,,,A*77
!AIVDO,1,1,,,B3aC3LP00063ai7RNph03wT5wP06,0*23
-{"class":"AIS","type":3,"repeat":0,"mmsi":"257646000","status":5,"turn":0,"speed":0,"accuracy":false,"lon":2866000,"lat":31440700,"course":2710,"heading":348,"second":8,"maneuver":0,"raim":false,"radio":0}
+{"class":"AIS","type":3,"repeat":0,"mmsi":257646000,"status":5,"turn":0,"speed":0,"accuracy":false,"lon":2866000,"lat":31440700,"course":2710,"heading":348,"second":8,"maneuver":0,"raim":false,"radio":0}
$GPGBS,194908.00,3.0,1.9,4.2,,,,*41
{"class":"TPV","tag":"GBS","time":1249156148.000,"ept":0.005,"lat":52.699967500,"lon":5.292750500,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.002,"mode":2}
$GPRMC,194909.00,A,5241.99792,N,00517.56477,E,0.004,,010809,,,A*72
!AIVDO,1,1,,,B3aC3LP00063agWRNpd03wTUwP06,0*21
$GPGBS,194909.00,3.0,1.9,4.2,,,,*40
{"class":"TPV","tag":"GBS","time":1249156149.000,"ept":0.005,"lat":52.699965333,"lon":5.292746167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.002,"mode":2}
-{"class":"AIS","type":18,"repeat":0,"mmsi":"244050308","reserved":0,"speed":0,"accuracy":false,"lon":3166299,"lat":31614913,"course":0,"heading":511,"second":9,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"245618000","status":0,"turn":0,"speed":0,"accuracy":false,"lon":2757910,"lat":31482660,"course":3550,"heading":96,"second":8,"maneuver":0,"raim":false,"radio":4564}
+{"class":"AIS","type":18,"repeat":0,"mmsi":244050308,"reserved":0,"speed":0,"accuracy":false,"lon":3166299,"lat":31614913,"course":0,"heading":511,"second":9,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
+{"class":"AIS","type":1,"repeat":0,"mmsi":245618000,"status":0,"turn":0,"speed":0,"accuracy":false,"lon":2757910,"lat":31482660,"course":3550,"heading":96,"second":8,"maneuver":0,"raim":false,"radio":4564}
$GPRMC,194910.00,A,5241.99782,N,00517.56453,E,0.006,,010809,,,A*7F
!AIVDO,1,1,,,B3aC3LP00063afWRNp`03wU5wP06,0*45
-{"class":"AIS","type":20,"repeat":0,"mmsi":"002442024","offset1":285,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
+{"class":"AIS","type":20,"repeat":0,"mmsi":002442024,"offset1":285,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
$GPGBS,194910.00,3.0,1.9,4.2,,,,*48
{"class":"TPV","tag":"GBS","time":1249156150.000,"ept":0.005,"lat":52.699963667,"lon":5.292742167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"211315540","status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":266648}
+{"class":"AIS","type":1,"repeat":0,"mmsi":211315540,"status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":266648}
$GPRMC,194911.00,A,5241.99772,N,00517.56430,E,0.020,229.98,010809,,,A*66
-{"class":"AIS","type":4,"repeat":0,"mmsi":"002442024","timestamp":"0000-00-00T24:60:60Z","accuracy":true,"lon":3059000,"lat":31586500,"epfd":7,"raim":false,"radio":229796}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"305235000","status":5,"turn":5,"speed":99,"accuracy":true,"lon":2845500,"lat":31458600,"course":2810,"heading":282,"second":11,"maneuver":0,"raim":false,"radio":66386}
+{"class":"AIS","type":4,"repeat":0,"mmsi":002442024,"timestamp":"0000-00-00T24:60:60Z","accuracy":true,"lon":3059000,"lat":31586500,"epfd":7,"raim":false,"radio":229796}
+{"class":"AIS","type":1,"repeat":0,"mmsi":305235000,"status":5,"turn":5,"speed":99,"accuracy":true,"lon":2845500,"lat":31458600,"course":2810,"heading":282,"second":11,"maneuver":0,"raim":false,"radio":66386}
!AIVDO,1,1,,,B3aC3LP00063aeWRNpV?gwUUwP06,0*4B
$GPGBS,194911.00,3.0,1.9,4.2,,,,*49
{"class":"TPV","tag":"GBS","time":1249156151.000,"ept":0.005,"lat":52.699962000,"lon":5.292738333,"epx":1.900,"epy":3.000,"epv":4.200,"track":229.9800,"speed":0.010,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246123000","status":0,"turn":0,"speed":1,"accuracy":false,"lon":3361350,"lat":31594860,"course":1014,"heading":127,"second":12,"maneuver":0,"raim":false,"radio":4518}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246123000,"status":0,"turn":0,"speed":1,"accuracy":false,"lon":3361350,"lat":31594860,"course":1014,"heading":127,"second":12,"maneuver":0,"raim":false,"radio":4518}
$GPRMC,194912.00,A,5241.99761,N,00517.56408,E,0.012,,010809,,,A*7B
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246087000","status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179192,"lat":31621356,"course":434,"heading":511,"second":11,"maneuver":0,"raim":false,"radio":66468}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246087000,"status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179192,"lat":31621356,"course":434,"heading":511,"second":11,"maneuver":0,"raim":false,"radio":66468}
!AIVDO,1,1,,,B3aC3LP00063ad7RNpP03wV5wP06,0*14
$GPGBS,194912.00,3.0,1.9,4.2,,,,*4A
{"class":"TPV","tag":"GBS","time":1249156152.000,"ept":0.005,"lat":52.699960167,"lon":5.292734667,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.006,"mode":2}
@@ -41,17 +41,17 @@ $GPRMC,194914.00,A,5241.99742,N,00517.56388,E,0.005,,010809,,,A*75
!AIVDO,1,1,,,B3aC3LP00063ac7RNpH03wW5wP06,0*0A
$GPGBS,194914.00,3.0,1.9,4.2,,,,*4C
{"class":"TPV","tag":"GBS","time":1249156154.000,"ept":0.005,"lat":52.699957000,"lon":5.292731333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244630024","status":5,"turn":-128,"speed":67,"accuracy":false,"lon":3263383,"lat":31521811,"course":281,"heading":511,"second":13,"maneuver":1,"raim":false,"radio":98328}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244630024,"status":5,"turn":-128,"speed":67,"accuracy":false,"lon":3263383,"lat":31521811,"course":281,"heading":511,"second":13,"maneuver":1,"raim":false,"radio":98328}
$GPRMC,194915.00,A,5241.99733,N,00517.56384,E,0.013,,010809,,,A*79
!AIVDO,1,1,,,B3aC3LP00063ac7RNpD03wWUwP06,0*66
$GPGBS,194915.00,3.0,1.9,4.2,,,,*4D
{"class":"TPV","tag":"GBS","time":1249156155.000,"ept":0.005,"lat":52.699955500,"lon":5.292730667,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.007,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244010517","status":15,"turn":-128,"speed":99,"accuracy":false,"lon":3123912,"lat":31465329,"course":600,"heading":511,"second":14,"maneuver":0,"raim":false,"radio":4546}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244010517,"status":15,"turn":-128,"speed":99,"accuracy":false,"lon":3123912,"lat":31465329,"course":600,"heading":511,"second":14,"maneuver":0,"raim":false,"radio":4546}
$GPRMC,194916.00,A,5241.99726,N,00517.56385,E,0.007,,010809,,,A*7A
!AIVDO,1,1,,,B3aC3LP00063ac7RNp@03w`5wP06,0*35
$GPGBS,194916.00,3.0,1.9,4.2,,,,*4E
{"class":"TPV","tag":"GBS","time":1249156156.000,"ept":0.005,"lat":52.699954333,"lon":5.292730833,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.004,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"000000004","status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":319968}
+{"class":"AIS","type":1,"repeat":0,"mmsi":000000004,"status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":319968}
$GPRMC,194917.00,A,5241.99721,N,00517.56389,E,0.003,,010809,,,A*74
!AIVDO,1,1,,,B3aC3LP00063ac7RNp@03w`UwP06,0*55
$GPGBS,194917.00,3.0,1.9,4.2,,,,*4F
@@ -60,28 +60,28 @@ $GPRMC,194918.00,A,5241.99715,N,00517.56394,E,0.004,,010809,,,A*77
!AIVDO,1,1,,,B3aC3LP00063acWRNp<03wa5wP06,0*28
$GPGBS,194918.00,3.0,1.9,4.2,,,,*40
{"class":"TPV","tag":"GBS","time":1249156158.000,"ept":0.005,"lat":52.699952500,"lon":5.292732333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.002,"mode":2}
-{"class":"AIS","type":5,"repeat":0,"mmsi":"305235000","imo":9155406,"ais_version":0,"callsign":"V2DJ7","shipname":"MEDUM","shiptype":70,"to_bow":88,"to_stern":12,"to_port":10,"to_starboard":6,"epfd":1,"eta":"07-31T18:00Z","draught":63,"destination":"AMSTERDAM","dte":0}
+{"class":"AIS","type":5,"repeat":0,"mmsi":305235000,"imo":9155406,"ais_version":0,"callsign":"V2DJ7","shipname":"MEDUM","shiptype":70,"to_bow":88,"to_stern":12,"to_port":10,"to_starboard":6,"epfd":1,"eta":"07-31T18:00Z","draught":63,"destination":"AMSTERDAM","dte":0}
$GPRMC,194919.00,A,5241.99711,N,00517.56399,E,0.004,,010809,,,A*7F
!AIVDO,1,1,,,B3aC3LP00063acWRNp<03waUwP06,0*48
$GPGBS,194919.00,3.0,1.9,4.2,,,,*41
{"class":"TPV","tag":"GBS","time":1249156159.000,"ept":0.005,"lat":52.699951833,"lon":5.292733167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.002,"mode":2}
$GPRMC,194920.00,A,5241.99711,N,00517.56409,E,0.005,,010809,,,A*7A
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244041000","status":0,"turn":-128,"speed":40,"accuracy":false,"lon":2771893,"lat":31479485,"course":1108,"heading":511,"second":19,"maneuver":0,"raim":false,"radio":52616}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244041000,"status":0,"turn":-128,"speed":40,"accuracy":false,"lon":2771893,"lat":31479485,"course":1108,"heading":511,"second":19,"maneuver":0,"raim":false,"radio":52616}
!AIVDO,1,1,,,B3aC3LP00063ad7RNp<03wb5wP06,0*4C
-{"class":"AIS","type":1,"repeat":0,"mmsi":"220546000","status":0,"turn":0,"speed":118,"accuracy":false,"lon":2675475,"lat":31485573,"course":2793,"heading":281,"second":21,"maneuver":0,"raim":false,"radio":4554}
+{"class":"AIS","type":1,"repeat":0,"mmsi":220546000,"status":0,"turn":0,"speed":118,"accuracy":false,"lon":2675475,"lat":31485573,"course":2793,"heading":281,"second":21,"maneuver":0,"raim":false,"radio":4554}
$GPGBS,194920.00,3.0,1.9,4.2,,,,*4B
{"class":"TPV","tag":"GBS","time":1249156160.000,"ept":0.005,"lat":52.699951833,"lon":5.292734833,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
$GPRMC,194921.00,A,5241.99708,N,00517.56417,E,0.007,,010809,,,A*7E
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246123000","status":0,"turn":0,"speed":1,"accuracy":false,"lon":3361340,"lat":31594860,"course":1014,"heading":127,"second":22,"maneuver":0,"raim":false,"radio":198220}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246123000,"status":0,"turn":0,"speed":1,"accuracy":false,"lon":3361340,"lat":31594860,"course":1014,"heading":127,"second":22,"maneuver":0,"raim":false,"radio":198220}
!AIVDO,1,1,,,B3aC3LP00063adWRNp803wbUwP06,0*48
$GPGBS,194921.00,3.0,1.9,4.2,,,,*4A
{"class":"TPV","tag":"GBS","time":1249156161.000,"ept":0.005,"lat":52.699951333,"lon":5.292736167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.004,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246087000","status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179193,"lat":31621357,"course":1477,"heading":511,"second":20,"maneuver":0,"raim":false,"radio":4616}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246087000,"status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179193,"lat":31621357,"course":1477,"heading":511,"second":20,"maneuver":0,"raim":false,"radio":4616}
$GPRMC,194922.00,A,5241.99705,N,00517.56418,E,0.003,,010809,,,A*7B
!AIVDO,1,1,,,B3aC3LP00063adWRNp803wc5wP06,0*29
$GPGBS,194922.00,3.0,1.9,4.2,,,,*49
{"class":"TPV","tag":"GBS","time":1249156162.000,"ept":0.005,"lat":52.699950833,"lon":5.292736333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.002,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"247254200","status":1,"turn":0,"speed":1023,"accuracy":true,"lon":2582900,"lat":31510200,"course":3600,"heading":68,"second":21,"maneuver":0,"raim":false,"radio":164038}
+{"class":"AIS","type":1,"repeat":0,"mmsi":247254200,"status":1,"turn":0,"speed":1023,"accuracy":true,"lon":2582900,"lat":31510200,"course":3600,"heading":68,"second":21,"maneuver":0,"raim":false,"radio":164038}
$GPRMC,194923.00,A,5241.99704,N,00517.56423,E,0.007,,010809,,,A*77
$GPGBS,194923.00,3.0,1.9,4.2,,,,*48
{"class":"TPV","tag":"GBS","time":1249156163.000,"ept":0.005,"lat":52.699950667,"lon":5.292737167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.004,"mode":2}
@@ -90,13 +90,13 @@ $GPRMC,194924.00,A,5241.99705,N,00517.56425,E,0.006,,010809,,,A*76
$GPGBS,194924.00,3.0,1.9,4.2,,,,*4F
{"class":"TPV","tag":"GBS","time":1249156164.000,"ept":0.005,"lat":52.699950833,"lon":5.292737500,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ae7RNp803wd5wP06,0*4F
-{"class":"AIS","type":1,"repeat":0,"mmsi":"000000004","status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":266636}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244630024","status":5,"turn":-128,"speed":67,"accuracy":false,"lon":3263528,"lat":31521978,"course":277,"heading":511,"second":23,"maneuver":1,"raim":false,"radio":52616}
+{"class":"AIS","type":1,"repeat":0,"mmsi":000000004,"status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":266636}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244630024,"status":5,"turn":-128,"speed":67,"accuracy":false,"lon":3263528,"lat":31521978,"course":277,"heading":511,"second":23,"maneuver":1,"raim":false,"radio":52616}
$GPRMC,194925.00,A,5241.99714,N,00517.56429,E,0.002,,010809,,,A*7F
$GPGBS,194925.00,3.0,1.9,4.2,,,,*4E
{"class":"TPV","tag":"GBS","time":1249156165.000,"ept":0.005,"lat":52.699952333,"lon":5.292738167,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.001,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ae7RNp<03wdUwP06,0*2B
-{"class":"AIS","type":20,"repeat":0,"mmsi":"002442024","offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
+{"class":"AIS","type":20,"repeat":0,"mmsi":002442024,"offset1":1385,"number1":2,"timeout1":7,"increment1":1125,"offset2":0,"number2":0,"timeout2":0,"increment2":0,"offset3":0,"number3":0,"timeout3":0,"increment3":0,"offset4":0,"number4":0,"timeout4":0,"increment4":0}
$GPRMC,194926.00,A,5241.99718,N,00517.56440,E,0.010,,010809,,,A*7C
$GPGBS,194926.00,3.0,1.9,4.2,,,,*4D
{"class":"TPV","tag":"GBS","time":1249156166.000,"ept":0.005,"lat":52.699953000,"lon":5.292740000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.005,"mode":2}
@@ -105,34 +105,34 @@ $GPRMC,194927.00,A,5241.99723,N,00517.56454,E,0.009,,010809,,,A*78
$GPGBS,194927.00,3.0,1.9,4.2,,,,*4C
{"class":"TPV","tag":"GBS","time":1249156167.000,"ept":0.005,"lat":52.699953833,"lon":5.292742333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.005,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063afWRNp@03weUsP06,0*31
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244190000","status":0,"turn":-128,"speed":40,"accuracy":false,"lon":2770688,"lat":31479700,"course":1116,"heading":511,"second":26,"maneuver":0,"raim":false,"radio":133166}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244190000,"status":0,"turn":-128,"speed":40,"accuracy":false,"lon":2770688,"lat":31479700,"course":1116,"heading":511,"second":26,"maneuver":0,"raim":false,"radio":133166}
$GPRMC,194928.00,A,5241.99730,N,00517.56469,E,0.005,,010809,,,A*77
$GPGBS,194928.00,3.0,1.9,4.2,,,,*43
{"class":"TPV","tag":"GBS","time":1249156168.000,"ept":0.005,"lat":52.699955000,"lon":5.292744833,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ag7RNpD03wf5sP06,0*37
-{"class":"AIS","type":1,"repeat":0,"mmsi":"000000004","status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":266630}
+{"class":"AIS","type":1,"repeat":0,"mmsi":000000004,"status":15,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":60,"maneuver":0,"raim":false,"radio":266630}
$GPRMC,194929.00,A,5241.99738,N,00517.56482,E,0.002,,010809,,,A*7C
$GPGBS,194929.00,3.0,1.9,4.2,,,,*42
{"class":"TPV","tag":"GBS","time":1249156169.000,"ept":0.005,"lat":52.699956333,"lon":5.292747000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.001,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ah7RNpD03wfUsP06,0*58
-{"class":"AIS","type":1,"repeat":0,"mmsi":"211315540","status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":307520}
+{"class":"AIS","type":1,"repeat":0,"mmsi":211315540,"status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":307520}
$GPRMC,194930.00,A,5241.99745,N,00517.56492,E,0.006,,010809,,,A*7B
$GPGBS,194930.00,3.0,1.9,4.2,,,,*4A
{"class":"TPV","tag":"GBS","time":1249156170.000,"ept":0.005,"lat":52.699957500,"lon":5.292748667,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.003,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ahWRNpH03wg5sP06,0*55
-{"class":"AIS","type":4,"repeat":0,"mmsi":"002442024","timestamp":"0000-00-00T24:60:60Z","accuracy":true,"lon":3059000,"lat":31586500,"epfd":7,"raim":false,"radio":230546}
+{"class":"AIS","type":4,"repeat":0,"mmsi":002442024,"timestamp":"0000-00-00T24:60:60Z","accuracy":true,"lon":3059000,"lat":31586500,"epfd":7,"raim":false,"radio":230546}
$GPRMC,194931.00,A,5241.99750,N,00517.56500,E,0.002,,010809,,,A*70
$GPGBS,194931.00,3.0,1.9,4.2,,,,*4B
{"class":"TPV","tag":"GBS","time":1249156171.000,"ept":0.005,"lat":52.699958333,"lon":5.292750000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.001,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246087000","status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179201,"lat":31621361,"course":3123,"heading":511,"second":30,"maneuver":0,"raim":false,"radio":98330}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246123000","status":0,"turn":0,"speed":0,"accuracy":false,"lon":3361370,"lat":31594870,"course":1014,"heading":127,"second":32,"maneuver":0,"raim":false,"radio":52616}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246087000,"status":0,"turn":-128,"speed":0,"accuracy":false,"lon":3179201,"lat":31621361,"course":3123,"heading":511,"second":30,"maneuver":0,"raim":false,"radio":98330}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246123000,"status":0,"turn":0,"speed":0,"accuracy":false,"lon":3361370,"lat":31594870,"course":1014,"heading":127,"second":32,"maneuver":0,"raim":false,"radio":52616}
!AIVDO,1,1,,,B3aC3LP00063ai7RNpL03wgUsP06,0*50
$GPRMC,194932.00,A,5241.99756,N,00517.56508,E,0.002,,010809,,,A*7D
-{"class":"AIS","type":3,"repeat":0,"mmsi":"244469000","status":0,"turn":-127,"speed":47,"accuracy":false,"lon":2749080,"lat":31480490,"course":3100,"heading":286,"second":31,"maneuver":0,"raim":false,"radio":8034}
+{"class":"AIS","type":3,"repeat":0,"mmsi":244469000,"status":0,"turn":-127,"speed":47,"accuracy":false,"lon":2749080,"lat":31480490,"course":3100,"heading":286,"second":31,"maneuver":0,"raim":false,"radio":8034}
$GPGBS,194932.00,3.0,1.9,4.2,,,,*48
{"class":"TPV","tag":"GBS","time":1249156172.000,"ept":0.005,"lat":52.699959333,"lon":5.292751333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.001,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063ai7RNpL03wh5sP06,0*3F
-{"class":"AIS","type":1,"repeat":0,"mmsi":"246538000","status":0,"turn":0,"speed":94,"accuracy":false,"lon":2861662,"lat":31452488,"course":1629,"heading":199,"second":33,"maneuver":0,"raim":true,"radio":164204}
+{"class":"AIS","type":1,"repeat":0,"mmsi":246538000,"status":0,"turn":0,"speed":94,"accuracy":false,"lon":2861662,"lat":31452488,"course":1629,"heading":199,"second":33,"maneuver":0,"raim":true,"radio":164204}
$GPRMC,194933.00,A,5241.99761,N,00517.56512,E,0.011,,010809,,,A*71
$GPGBS,194933.00,3.0,1.9,4.2,,,,*49
{"class":"TPV","tag":"GBS","time":1249156173.000,"ept":0.005,"lat":52.699960167,"lon":5.292752000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.006,"mode":2}
@@ -141,18 +141,18 @@ $GPRMC,194934.00,A,5241.99768,N,00517.56512,E,0.015,,010809,,,A*7B
$GPGBS,194934.00,3.0,1.9,4.2,,,,*4E
{"class":"TPV","tag":"GBS","time":1249156174.000,"ept":0.005,"lat":52.699961333,"lon":5.292752000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.008,"mode":2}
!AIVDO,1,1,,,B3aC3LP00063aiWRNpP03wi5sP06,0*42
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244630024","status":5,"turn":-128,"speed":69,"accuracy":false,"lon":3263674,"lat":31522145,"course":279,"heading":511,"second":33,"maneuver":1,"raim":false,"radio":98328}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244630024,"status":5,"turn":-128,"speed":69,"accuracy":false,"lon":3263674,"lat":31522145,"course":279,"heading":511,"second":33,"maneuver":1,"raim":false,"radio":98328}
$GPRMC,194935.00,A,5241.99779,N,00517.56509,E,0.002,,010809,,,A*76
-{"class":"AIS","type":18,"repeat":0,"mmsi":"244210513","reserved":0,"speed":0,"accuracy":false,"lon":3180851,"lat":31622521,"course":2450,"heading":511,"second":35,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
+{"class":"AIS","type":18,"repeat":0,"mmsi":244210513,"reserved":0,"speed":0,"accuracy":false,"lon":3180851,"lat":31622521,"course":2450,"heading":511,"second":35,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
$GPGBS,194935.00,3.0,1.9,4.2,,,,*4F
{"class":"TPV","tag":"GBS","time":1249156175.000,"ept":0.005,"lat":52.699963167,"lon":5.292751500,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.001,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244430000","status":3,"turn":-127,"speed":9,"accuracy":true,"lon":2748530,"lat":31479730,"course":760,"heading":249,"second":36,"maneuver":0,"raim":false,"radio":4528}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244430000,"status":3,"turn":-127,"speed":9,"accuracy":true,"lon":2748530,"lat":31479730,"course":760,"heading":249,"second":36,"maneuver":0,"raim":false,"radio":4528}
!AIVDO,1,1,,,B3aC3LP00063ai7RNpT03wiUsP06,0*46
$GPRMC,194936.00,A,5241.99789,N,00517.56508,E,0.014,,010809,,,A*7C
-{"class":"AIS","type":3,"repeat":0,"mmsi":"244469000","status":0,"turn":-127,"speed":47,"accuracy":false,"lon":2748990,"lat":31480510,"course":3080,"heading":284,"second":33,"maneuver":0,"raim":false,"radio":0}
+{"class":"AIS","type":3,"repeat":0,"mmsi":244469000,"status":0,"turn":-127,"speed":47,"accuracy":false,"lon":2748990,"lat":31480510,"course":3080,"heading":284,"second":33,"maneuver":0,"raim":false,"radio":0}
$GPGBS,194936.00,3.0,1.9,4.2,,,,*4C
{"class":"TPV","tag":"GBS","time":1249156176.000,"ept":0.005,"lat":52.699964833,"lon":5.292751333,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.007,"mode":2}
-{"class":"AIS","type":24,"repeat":0,"mmsi":"244050308","shipname":"TYPHOON","shiptype":37,"vendorid":"TRUEHDG","callsign":"PI6700","to_bow":10,"to_stern":3,"to_port":2,"to_starboard":2}
+{"class":"AIS","type":24,"repeat":0,"mmsi":244050308,"shipname":"TYPHOON","shiptype":37,"vendorid":"TRUEHDG","callsign":"PI6700","to_bow":10,"to_stern":3,"to_port":2,"to_starboard":2}
!AIVDO,1,1,,,B3aC3LP00063ai7RNp`03wj5sP06,0*11
$GPRMC,194937.00,A,5241.99795,N,00517.56519,E,0.008,,010809,,,A*7D
$GPGBS,194937.00,3.0,1.9,4.2,,,,*4D
@@ -161,14 +161,14 @@ $GPGBS,194937.00,3.0,1.9,4.2,,,,*4D
$GPRMC,194938.00,A,5241.99803,N,00517.56530,E,0.010,,010809,,,A*70
$GPGBS,194938.00,3.0,1.9,4.2,,,,*42
{"class":"TPV","tag":"GBS","time":1249156178.000,"ept":0.005,"lat":52.699967167,"lon":5.292755000,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.005,"mode":2}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"244190000","status":0,"turn":-128,"speed":41,"accuracy":false,"lon":2770876,"lat":31479657,"course":1116,"heading":511,"second":37,"maneuver":0,"raim":false,"radio":134006}
+{"class":"AIS","type":1,"repeat":0,"mmsi":244190000,"status":0,"turn":-128,"speed":41,"accuracy":false,"lon":2770876,"lat":31479657,"course":1116,"heading":511,"second":37,"maneuver":0,"raim":false,"radio":134006}
!AIVDO,1,1,,,B3aC3LP00063ajWRNph03wk5sP06,0*7B
$GPRMC,194939.00,A,5241.99809,N,00517.56539,E,0.009,,010809,,,A*7A
-{"class":"AIS","type":18,"repeat":0,"mmsi":"244210820","reserved":0,"speed":0,"accuracy":false,"lon":3159133,"lat":31648064,"course":2154,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
-{"class":"AIS","type":18,"repeat":0,"mmsi":"244100276","reserved":0,"speed":0,"accuracy":false,"lon":3179598,"lat":31622374,"course":0,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
+{"class":"AIS","type":18,"repeat":0,"mmsi":244210820,"reserved":0,"speed":0,"accuracy":false,"lon":3159133,"lat":31648064,"course":2154,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
+{"class":"AIS","type":18,"repeat":0,"mmsi":244100276,"reserved":0,"speed":0,"accuracy":false,"lon":3179598,"lat":31622374,"course":0,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
$GPGBS,194939.00,3.0,1.9,4.2,,,,*43
{"class":"TPV","tag":"GBS","time":1249156179.000,"ept":0.005,"lat":52.699968167,"lon":5.292756500,"epx":1.900,"epy":3.000,"epv":4.200,"track":0.0000,"speed":0.005,"mode":2}
-{"class":"AIS","type":18,"repeat":0,"mmsi":"244050308","reserved":0,"speed":0,"accuracy":false,"lon":3166294,"lat":31614913,"course":0,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
-{"class":"AIS","type":1,"repeat":0,"mmsi":"211315540","status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":426000}
+{"class":"AIS","type":18,"repeat":0,"mmsi":244050308,"reserved":0,"speed":0,"accuracy":false,"lon":3166294,"lat":31614913,"course":0,"heading":511,"second":39,"regional":0,"cs":true,"display":false,"dsc":true,"band":true,"msg22":true,"raim":true,"radio":917510}
+{"class":"AIS","type":1,"repeat":0,"mmsi":211315540,"status":7,"turn":-128,"speed":1023,"accuracy":false,"lon":108600000,"lat":54600000,"course":3600,"heading":511,"second":63,"maneuver":0,"raim":false,"radio":426000}
!AIVDO,1,1,,,B3aC3LP00063ajWRNph03wkUsP06,0*1B
$GPRMC,194940.00,A,5241.99812,N,00517.56549,E,0.005,,010809,,,A*75
diff --git a/test/synthetic-rtcm2.json b/test/synthetic-rtcm2.json
index 195d8712..3b042d70 100644
--- a/test/synthetic-rtcm2.json
+++ b/test/synthetic-rtcm2.json
@@ -2,7 +2,7 @@
# the library decoder. gpsdecode -e -j of this file should duplicate it.
# No messages 1 and 9 as those are generated by our binary sample
{"class":"RTCM2","type":3,"station_id":268,"zcount":250.8,"seqnum":1,"length":5,"station_health":0,"x":222.18,"y":333.30,"z":444.36}
-{"class":"RTCM2","type":4,"station_id":268,"zcount":252.6,"seqnum":3,"length":4,"station_health":0,"system":"GPS","sense":1,"datum":WGS84","dx":25.6,"dy":30.1,"dz":32.7}
+{"class":"RTCM2","type":4,"station_id":268,"zcount":252.6,"seqnum":3,"length":4,"station_health":0,"system":"GPS","sense":1,"datum":"WGS84","dx":25.6,"dy":30.1,"dz":32.7}
{"class":"RTCM2","type":5,"station_id":268,"zcount":253.8,"seqnum":4,"length":4,"station_health":0,"satellites":[{"ident":29,"iodl":false,"health":0,"snr":53,"health_en":false,"new_data":true,"los_warning":false,"tou":0},{"ident":12,"iodl":false,"health":0,"snr":26,"health_en":false,"new_data":false,"los_warning":true,"tou":0},{"ident":3,"iodl":false,"health":0,"snr":50,"health_en":false,"new_data":true,"los_warning":false,"tou":0},{"ident":15,"iodl":false,"health":0,"snr":41,"health_en":false,"new_data":false,"los_warning":true,"tou":0}]}
{"class":"RTCM2","type":6,"station_id":268,"zcount":255.0,"seqnum":5,"length":0,"station_health":0}
{"class":"RTCM2","type":7,"station_id":268,"zcount":256.8,"seqnum":6,"length":12,"station_health":0,"satellites":[{"lat":38.8379,"lon":-121.3532,"range":250,"frequency":313.2,"health":0,"station_id":764,"bitrate":200},{"lat":39.4229,"lon":-121.6059,"range":402,"frequency":317.2,"health":0,"station_id":878,"bitrate":100},{"lat":37.1789,"lon":-122.3804,"range":333,"frequency":291.3,"health":0,"station_id":883,"bitrate":100},{"lat":40.4337,"lon":-124.4020,"range":333,"frequency":290.1,"health":0,"station_id":885,"bitrate":100}]}