From 8cce5bd88989715c1e22a66935ee2d08d707f6b1 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Fri, 1 Oct 2021 00:52:32 +0200 Subject: [PATCH] add metrics for pocsag --- csdr/chain/digimodes.py | 8 ++++++-- owrx/pocsag.py | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/csdr/chain/digimodes.py b/csdr/chain/digimodes.py index 7060b69..8f717e9 100644 --- a/csdr/chain/digimodes.py +++ b/csdr/chain/digimodes.py @@ -45,13 +45,14 @@ class PacketDemodulator(ServiceDemodulator, DialFrequencyReceiver): self.parser.setDialFrequency(frequency) -class PocsagDemodulator(ServiceDemodulator): +class PocsagDemodulator(ServiceDemodulator, DialFrequencyReceiver): def __init__(self): + self.parser = PocsagParser() workers = [ FmDemod(), FskDemodulator(samplesPerSymbol=40, invert=True), PocsagDecoder(), - PocsagParser(), + self.parser, ] super().__init__(workers) @@ -61,6 +62,9 @@ class PocsagDemodulator(ServiceDemodulator): def getFixedAudioRate(self) -> int: return 48000 + def setDialFrequency(self, frequency: int) -> None: + self.parser.setDialFrequency(frequency) + class PskDemodulator(SecondaryDemodulator, SecondarySelectorChain): def __init__(self, baudRate: float): diff --git a/owrx/pocsag.py b/owrx/pocsag.py index 70ad611..096c944 100644 --- a/owrx/pocsag.py +++ b/owrx/pocsag.py @@ -1,15 +1,37 @@ from csdr.module import PickleModule +from owrx.bands import Bandplan +from owrx.metrics import Metrics, CounterMetric import logging logger = logging.getLogger(__name__) class PocsagParser(PickleModule): + def __init__(self): + self.band = None + super().__init__() + def process(self, meta): try: if "address" in meta: meta["address"] = int(meta["address"]) meta["mode"] = "Pocsag" + self.pushDecode() return meta except Exception: logger.exception("Exception while parsing Pocsag message") + + def setDialFrequency(self, freq: int) -> None: + self.band = Bandplan.getSharedInstance().findBand(freq) + + def pushDecode(self): + band = "unknown" + if self.band is not None: + band = self.band.getName() + name = "digiham.decodes.{band}.pocsag".format(band=band) + metrics = Metrics.getSharedInstance() + metric = metrics.getMetric(name) + if metric is None: + metric = CounterMetric() + metrics.addMetric(name, metric) + metric.inc()