From c1b32990d900a37877e026a9080797af9460ce39 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 30 Jan 2024 02:12:23 +0100 Subject: [PATCH] tap into more modes --- csdr/chain/rtl433.py | 5 ++--- owrx/adsb/modes.py | 2 ++ owrx/aprs/__init__.py | 5 ++++- owrx/hfdl/dumphfdl.py | 2 ++ owrx/ism/rtl433.py | 12 ++++++++++++ owrx/vdl2/dumpvdl2.py | 2 ++ 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/csdr/chain/rtl433.py b/csdr/chain/rtl433.py index a45b50c0..34d4842a 100644 --- a/csdr/chain/rtl433.py +++ b/csdr/chain/rtl433.py @@ -1,5 +1,4 @@ -from csdr.module import JsonParser -from owrx.ism.rtl433 import Rtl433Module +from owrx.ism.rtl433 import Rtl433Module, IsmParser from csdr.chain.demodulator import ServiceDemodulator @@ -11,7 +10,7 @@ class Rtl433(ServiceDemodulator): super().__init__( [ Rtl433Module(), - JsonParser("ISM"), + IsmParser(), ] ) diff --git a/owrx/adsb/modes.py b/owrx/adsb/modes.py index 802f553a..87b566ec 100644 --- a/owrx/adsb/modes.py +++ b/owrx/adsb/modes.py @@ -3,6 +3,7 @@ from math import sqrt, atan2, pi, floor, acos, cos from owrx.map import IncrementalUpdate, Location, Map, Source from owrx.metrics import Metrics, CounterMetric from owrx.aeronautical import AirplaneLocation, IcaoSource +from owrx.reporting import ReportingEngine from datetime import datetime, timedelta from enum import Enum @@ -276,6 +277,7 @@ class ModeSParser(PickleModule): data = {k: message[k] for k in AdsbLocation.mapKeys if k in message} loc = AdsbLocation(data) Map.getSharedInstance().updateLocation(IcaoSource(message['icao']), loc, "ADS-B", None) + ReportingEngine.getSharedInstance().spot(message) return message diff --git a/owrx/aprs/__init__.py b/owrx/aprs/__init__.py index 91b586bf..c07bbde2 100644 --- a/owrx/aprs/__init__.py +++ b/owrx/aprs/__init__.py @@ -1,6 +1,7 @@ from owrx.map import Map, LatLngLocation, Source from owrx.metrics import Metrics, CounterMetric from owrx.bands import Bandplan +from owrx.reporting import ReportingEngine from datetime import datetime, timezone from csdr.module import PickleModule import re @@ -211,8 +212,10 @@ class AprsParser(PickleModule): if self.isDirect(aprsData): self.getMetric("direct").inc() - # the frontend uses this to distinguis hessages from the different parsers + # the frontend uses this to distinguish messages from the different parsers aprsData["mode"] = "APRS" + + ReportingEngine.getSharedInstance().spot(aprsData) return aprsData except Exception: logger.exception("exception while parsing aprs data") diff --git a/owrx/hfdl/dumphfdl.py b/owrx/hfdl/dumphfdl.py index db20ed20..1ec920e9 100644 --- a/owrx/hfdl/dumphfdl.py +++ b/owrx/hfdl/dumphfdl.py @@ -3,6 +3,7 @@ from pycsdr.types import Format from owrx.aeronautical import AirplaneLocation, AcarsProcessor, IcaoSource, FlightSource from owrx.map import Map from owrx.metrics import Metrics, CounterMetric +from owrx.reporting import ReportingEngine from datetime import datetime, timezone, timedelta import logging @@ -62,6 +63,7 @@ class HFDLMessageParser(AcarsProcessor): self.metrics.inc() + ReportingEngine.getSharedInstance().spot(msg) return msg def processPosition(self, hfnpdu, icao=None): diff --git a/owrx/ism/rtl433.py b/owrx/ism/rtl433.py index 3e8e4569..af2e8f02 100644 --- a/owrx/ism/rtl433.py +++ b/owrx/ism/rtl433.py @@ -1,5 +1,7 @@ from pycsdr.modules import ExecModule from pycsdr.types import Format +from csdr.module import JsonParser +from owrx.reporting import ReportingEngine class Rtl433Module(ExecModule): @@ -9,3 +11,13 @@ class Rtl433Module(ExecModule): Format.CHAR, ["rtl_433", "-r", "cf32:-", "-F", "json", "-M", "time:unix", "-C", "si", "-s", "1200000"] ) + + +class IsmParser(JsonParser): + def __init__(self): + super().__init__("ISM") + + def process(self, line): + data = super().process(line) + ReportingEngine.getSharedInstance().spot(data) + return data diff --git a/owrx/vdl2/dumpvdl2.py b/owrx/vdl2/dumpvdl2.py index cea797c0..ab46947f 100644 --- a/owrx/vdl2/dumpvdl2.py +++ b/owrx/vdl2/dumpvdl2.py @@ -4,6 +4,7 @@ from owrx.aeronautical import AcarsProcessor from owrx.map import Map from owrx.aeronautical import AirplaneLocation, IcaoSource from owrx.metrics import Metrics, CounterMetric +from owrx.reporting import ReportingEngine from datetime import datetime, date, time, timezone import logging @@ -66,6 +67,7 @@ class VDL2MessageParser(AcarsProcessor): except Exception: logger.exception("error processing VDL2 data") self.metrics.inc() + ReportingEngine.getSharedInstance().spot(msg) return msg def processReport(self, report, icao):