openwebrx-clone/owrx/pocsag.py

38 lines
1.1 KiB
Python

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()