diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2010-02-01 05:04:10 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2010-02-01 05:04:10 +0000 |
commit | 3c50613200e58814ac843ae4d5ca9ef4dbfbd631 (patch) | |
tree | 22406517100ad786d2d690bdc95b687038df5236 | |
parent | 2ded269072c45d8867d61f76a99b03eda6c6c740 (diff) | |
download | gpsd-3c50613200e58814ac843ae4d5ca9ef4dbfbd631.tar.gz |
Make the decoders use the pad fields as seems to be intended.
-rwxr-xr-x | devtools/ais.py | 3 | ||||
-rw-r--r-- | driver_aivdm.c | 2 | ||||
-rw-r--r-- | test/sample.aivdm | 2 | ||||
-rw-r--r-- | test/sample.aivdm.chk | 2 |
4 files changed, 5 insertions, 4 deletions
diff --git a/devtools/ais.py b/devtools/ais.py index 20f8a8aa..10bf8811 100755 --- a/devtools/ais.py +++ b/devtools/ais.py @@ -755,7 +755,7 @@ class BitVector: self.bitlen = length def from_sixbit(self, data, pad=0): "Initialize bit vector from AIVDM-style six-bit armoring." - self.bits.extend([0] * (len(data) + pad)) + self.bits.extend([0] * len(data)) for ch in data: ch = ord(ch) - 48 if ch > 40: @@ -764,6 +764,7 @@ class BitVector: if (ch >> i) & 0x01: self.bits[self.bitlen/8] |= (1 << (7 - self.bitlen % 8)) self.bitlen += 1 + self.bitlen -= pad def ubits(self, start, width): "Extract a (zero-origin) bitfield from the buffer as an unsigned int." fld = 0 diff --git a/driver_aivdm.c b/driver_aivdm.c index 10522b78..ad8e906f 100644 --- a/driver_aivdm.c +++ b/driver_aivdm.c @@ -134,7 +134,7 @@ bool aivdm_decode(const char *buf, size_t buflen, /*@ +shiftnegative @*/ } if (isdigit(pad)) - ais_context->bitlen += (pad - '0'); /* ASCII assumption */ + ais_context->bitlen -= (pad - '0'); /* ASCII assumption */ /*@ -charint @*/ /* time to pass buffered-up data to where it's actually processed? */ diff --git a/test/sample.aivdm b/test/sample.aivdm index 970587dd..092c6ce7 100644 --- a/test/sample.aivdm +++ b/test/sample.aivdm @@ -151,7 +151,7 @@ # RetransmitFlag: False # Spare: 0 # ApplicationID: 42827 -# Data: 50:3acbc463dffc4 +# Data: 48:eb2f118f7ff1 # # Type 7: # From Kurt Schwehr diff --git a/test/sample.aivdm.chk b/test/sample.aivdm.chk index 9054cc50..60470d4e 100644 --- a/test/sample.aivdm.chk +++ b/test/sample.aivdm.chk @@ -4,7 +4,7 @@ 3,0,563808000,5,0,0,1,-45796520,22146000,2520,352,35,0x0,0,0x0
4,0,003669702,2007:05:14T19:57:39Z,1,-45811417,22130260,7,0,0x105df
5,0,351759000,9134270,0,3FOF8,EVER DIADEM,70,225,70,1,31,1,05-15T14:00Z,122,NEW YORK,0
-6,1,150834090,3,313240222,0,42827,52:eb2f118f7ff100
+6,1,150834090,3,313240222,0,42827,48:eb2f118f7ff1
7,1,655901842,158483613,321823389,836359488,0
7,2,537411077,43101326,717096664,76161024,0
8,0,366999712,23480,256:3a53dbb7be4a773137f87d7b0445f040dea05d93f593783194ae9b9d9dbe05fb
|