summaryrefslogtreecommitdiff
path: root/devtools/ais.py
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2010-05-09 21:44:02 -0400
committerEric S. Raymond <esr@thyrsus.com>2010-05-09 21:44:02 -0400
commitf238d407388b87470e25cb348465c2a6c34babbd (patch)
tree555f90dbc97af530759a7a44243a6573f57d8d24 /devtools/ais.py
parentb63bc0a1528c8f9b0d58383825792583f1c16306 (diff)
downloadgpsd-f238d407388b87470e25cb348465c2a6c34babbd.tar.gz
Maintain separate payloads for A and B channels.
Diffstat (limited to 'devtools/ais.py')
-rwxr-xr-xdevtools/ais.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/devtools/ais.py b/devtools/ais.py
index 09a1ddac..c1ca3704 100755
--- a/devtools/ais.py
+++ b/devtools/ais.py
@@ -851,7 +851,7 @@ def aivdm_unpack(lc, data, offset, values, instructions):
def parse_ais_messages(source, scaled=False, skiperr=False, verbose=0):
"Generator code - read forever from source stream, parsing AIS messages."
- payload = ''
+ payloads = {'A':'', 'B':''}
raw = ''
values = {}
well_formed = False
@@ -879,10 +879,11 @@ def parse_ais_messages(source, scaled=False, skiperr=False, verbose=0):
try:
expect = fields[1]
fragment = fields[2]
+ channel = fields[4]
if fragment == '1':
- payload = ''
+ payloads[channel] = ''
well_formed = True
- payload += fields[5]
+ payloads[channel] += fields[5]
try:
# This works because a mangled pad literal means
# a malformed packet that will be caught by the CRC check.
@@ -906,7 +907,7 @@ def parse_ais_messages(source, scaled=False, skiperr=False, verbose=0):
continue
# Render assembled payload to packed bytes
bits = BitVector()
- bits.from_sixbit(payload, pad)
+ bits.from_sixbit(payloads[channel], pad)
values['length'] = bits.bitlen
# Magic recursive unpacking operation
try: