mirror of
https://github.com/jketterl/openwebrx.git
synced 2026-01-21 16:10:21 +01:00
add some generic error handling
This commit is contained in:
parent
1e9b99dd90
commit
6b026e8450
|
|
@ -3,6 +3,10 @@ from pycsdr.types import Format
|
|||
from owrx.aeronautical import AirplaneLocation, AcarsProcessor, IcaoSource
|
||||
from owrx.map import Map, Source
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class HfdlAirplaneLocation(AirplaneLocation):
|
||||
pass
|
||||
|
|
@ -43,23 +47,26 @@ class HFDLMessageParser(AcarsProcessor):
|
|||
def process(self, line):
|
||||
msg = super().process(line)
|
||||
if msg is not None:
|
||||
payload = msg["hfdl"]
|
||||
if "lpdu" in payload:
|
||||
lpdu = payload["lpdu"]
|
||||
icao = lpdu["src"]["ac_info"]["icao"] if "ac_info" in lpdu["src"] else None
|
||||
if lpdu["type"]["id"] in [13, 29]:
|
||||
hfnpdu = lpdu["hfnpdu"]
|
||||
if hfnpdu["type"]["id"] == 209:
|
||||
# performance data
|
||||
self.processPosition(hfnpdu, icao)
|
||||
elif hfnpdu["type"]["id"] == 255:
|
||||
# enveloped data
|
||||
if "acars" in hfnpdu:
|
||||
self.processAcars(hfnpdu["acars"], icao)
|
||||
elif lpdu["type"]["id"] in [79, 143, 191]:
|
||||
if "ac_info" in lpdu:
|
||||
icao = lpdu["ac_info"]["icao"]
|
||||
self.processPosition(lpdu["hfnpdu"], icao)
|
||||
try:
|
||||
payload = msg["hfdl"]
|
||||
if "lpdu" in payload:
|
||||
lpdu = payload["lpdu"]
|
||||
icao = lpdu["src"]["ac_info"]["icao"] if "ac_info" in lpdu["src"] else None
|
||||
if lpdu["type"]["id"] in [13, 29]:
|
||||
hfnpdu = lpdu["hfnpdu"]
|
||||
if hfnpdu["type"]["id"] == 209:
|
||||
# performance data
|
||||
self.processPosition(hfnpdu, icao)
|
||||
elif hfnpdu["type"]["id"] == 255:
|
||||
# enveloped data
|
||||
if "acars" in hfnpdu:
|
||||
self.processAcars(hfnpdu["acars"], icao)
|
||||
elif lpdu["type"]["id"] in [79, 143, 191]:
|
||||
if "ac_info" in lpdu:
|
||||
icao = lpdu["ac_info"]["icao"]
|
||||
self.processPosition(lpdu["hfnpdu"], icao)
|
||||
except Exception:
|
||||
logger.exception("error processing HFDL data")
|
||||
|
||||
return msg
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,10 @@ from owrx.aeronautical import AcarsProcessor
|
|||
from owrx.map import Map
|
||||
from owrx.aeronautical import AirplaneLocation, IcaoSource
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DumpVDL2Module(ExecModule):
|
||||
def __init__(self):
|
||||
|
|
@ -27,27 +31,30 @@ class VDL2MessageParser(AcarsProcessor):
|
|||
def process(self, line):
|
||||
msg = super().process(line)
|
||||
if msg is not None:
|
||||
payload = msg["vdl2"]
|
||||
if "avlc" in payload:
|
||||
avlc = payload["avlc"]
|
||||
src = avlc["src"]["addr"]
|
||||
if avlc["frame_type"] == "I":
|
||||
if "acars" in avlc:
|
||||
self.processAcars(avlc["acars"])
|
||||
elif "x25" in avlc:
|
||||
x25 = avlc["x25"]
|
||||
if "clnp" in x25:
|
||||
clnp = x25["clnp"]
|
||||
if "cotp" in clnp:
|
||||
cotp = clnp["cotp"]
|
||||
if "adsc_v2" in cotp:
|
||||
adsc_v2 = cotp["adsc_v2"]
|
||||
if "adsc_report" in adsc_v2:
|
||||
adsc_report = adsc_v2["adsc_report"]
|
||||
if "periodic_report" in adsc_report["data"]:
|
||||
periodic_report = adsc_report["data"]["periodic_report"]
|
||||
report_data = periodic_report["report_data"]
|
||||
self.processReport(report_data, src)
|
||||
try:
|
||||
payload = msg["vdl2"]
|
||||
if "avlc" in payload:
|
||||
avlc = payload["avlc"]
|
||||
src = avlc["src"]["addr"]
|
||||
if avlc["frame_type"] == "I":
|
||||
if "acars" in avlc:
|
||||
self.processAcars(avlc["acars"])
|
||||
elif "x25" in avlc:
|
||||
x25 = avlc["x25"]
|
||||
if "clnp" in x25:
|
||||
clnp = x25["clnp"]
|
||||
if "cotp" in clnp:
|
||||
cotp = clnp["cotp"]
|
||||
if "adsc_v2" in cotp:
|
||||
adsc_v2 = cotp["adsc_v2"]
|
||||
if "adsc_report" in adsc_v2:
|
||||
adsc_report = adsc_v2["adsc_report"]
|
||||
if "periodic_report" in adsc_report["data"]:
|
||||
periodic_report = adsc_report["data"]["periodic_report"]
|
||||
report_data = periodic_report["report_data"]
|
||||
self.processReport(report_data, src)
|
||||
except Exception:
|
||||
logger.exception("error processing VDL2 data")
|
||||
return msg
|
||||
|
||||
def processReport(self, report, icao):
|
||||
|
|
|
|||
Loading…
Reference in a new issue