js8 service

This commit is contained in:
Jakob Ketterl 2020-04-14 21:27:50 +02:00
parent 899445d586
commit 99b4a25de7

View File

@ -5,10 +5,12 @@ from owrx.bands import Bandplan
from csdr.csdr import dsp, output from csdr.csdr import dsp, output
from owrx.wsjt import WsjtParser from owrx.wsjt import WsjtParser
from owrx.aprs import AprsParser from owrx.aprs import AprsParser
from owrx.js8 import Js8Parser
from owrx.config import Config from owrx.config import Config
from owrx.source.resampler import Resampler from owrx.source.resampler import Resampler
from owrx.feature import FeatureDetector from owrx.feature import FeatureDetector
from owrx.property import PropertyLayer from owrx.property import PropertyLayer
from js8py import Js8Frame
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from .schedule import ServiceScheduler from .schedule import ServiceScheduler
from functools import reduce from functools import reduce
@ -50,6 +52,14 @@ class AprsServiceOutput(ServiceOutput):
return t == "packet_demod" return t == "packet_demod"
class Js8ServiceOutput(ServiceOutput):
def getParser(self):
return Js8Parser(Js8Handler())
def supports_type(self, t):
return t == "js8_demod"
class ServiceDetector(object): class ServiceDetector(object):
requirements = { requirements = {
"ft8": ["wsjt-x"], "ft8": ["wsjt-x"],
@ -58,6 +68,7 @@ class ServiceDetector(object):
"jt9": ["wsjt-x"], "jt9": ["wsjt-x"],
"wspr": ["wsjt-x"], "wspr": ["wsjt-x"],
"packet": ["packet"], "packet": ["packet"],
"js8": ["js8call"],
} }
@staticmethod @staticmethod
@ -258,6 +269,8 @@ class ServiceHandler(object):
# TODO selecting outputs will need some more intelligence here # TODO selecting outputs will need some more intelligence here
if mode == "packet": if mode == "packet":
output = AprsServiceOutput(frequency) output = AprsServiceOutput(frequency)
elif mode == "js8":
output = Js8ServiceOutput(frequency)
else: else:
output = WsjtServiceOutput(frequency) output = WsjtServiceOutput(frequency)
d = dsp(output) d = dsp(output)
@ -293,6 +306,11 @@ class AprsHandler(object):
pass pass
class Js8Handler(object):
def write_js8_message(self, frame: Js8Frame, freq: int):
pass
class Services(object): class Services(object):
handlers = [] handlers = []