diff options
author | Eric S. Raymond <esr@thyrsus.com> | 2010-05-09 21:44:02 -0400 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 2010-05-09 21:44:02 -0400 |
commit | f238d407388b87470e25cb348465c2a6c34babbd (patch) | |
tree | 555f90dbc97af530759a7a44243a6573f57d8d24 /devtools/ais.py | |
parent | b63bc0a1528c8f9b0d58383825792583f1c16306 (diff) | |
download | gpsd-f238d407388b87470e25cb348465c2a6c34babbd.tar.gz |
Maintain separate payloads for A and B channels.
Diffstat (limited to 'devtools/ais.py')
-rwxr-xr-x | devtools/ais.py | 9 |
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: |