From bcb8a2315c8ded2ea0abb8a02ec6920b10ae5939 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Mon, 13 Apr 2020 16:35:31 +0200 Subject: [PATCH] use new library for js8 decoding --- owrx/js8.py | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/owrx/js8.py b/owrx/js8.py index 2042ad8..ac0916d 100644 --- a/owrx/js8.py +++ b/owrx/js8.py @@ -1,6 +1,8 @@ from .wsjt import WsjtChopper from .parser import Parser import re +from js8py import Js8 +from js8py.frames import Js8FrameDirected, Js8FrameData, Js8FrameDataCompressed import logging @@ -22,11 +24,24 @@ class Js8Parser(Parser): decoderRegex = re.compile(" ?") def parse(self, raw): - freq, raw_msg = raw - self.setDialFrequency(freq) - msg = raw_msg.decode().rstrip() - if Js8Parser.decoderRegex.match(msg): - return - if msg.startswith(" EOF on input file"): - return - logger.debug(msg) + try: + freq, raw_msg = raw + self.setDialFrequency(freq) + msg = raw_msg.decode().rstrip() + if Js8Parser.decoderRegex.match(msg): + return + if msg.startswith(" EOF on input file"): + return + + logger.debug(msg) + + frame = Js8().parse_message(msg) + if frame is None: + logger.warning("message could not be parsed") + elif isinstance(frame, Js8FrameDirected): + logger.debug("directed frame from: {0} to: {1}".format(frame.callsign_from, frame.callsign_to)) + elif isinstance(frame, Js8FrameData) or isinstance(frame, Js8FrameDataCompressed): + logger.debug("message frame: {0}".format(frame.message)) + + except Exception: + logger.exception("error while parsing js8 message")