keep more parameters on the server side

This commit is contained in:
Jakob Ketterl
2020-04-26 18:45:41 +02:00
parent 449b3b3986
commit 26321ab68b
6 changed files with 106 additions and 123 deletions

View File

@ -2,13 +2,19 @@ from owrx.feature import FeatureDetector
from functools import reduce
class Bandpass(object):
def __init__(self, low_cut, high_cut):
self.low_cut = low_cut
self.high_cut = high_cut
class Mode(object):
def __init__(self, modulation, name, requirements=None, service=False, digimode=False):
def __init__(self, modulation, name, bandpass: Bandpass = None, requirements=None, service=False):
self.modulation = modulation
self.name = name
self.digimode = digimode
self.requirements = requirements if requirements is not None else []
self.service = service
self.bandpass = bandpass
def is_available(self):
fd = FeatureDetector()
@ -20,26 +26,37 @@ class Mode(object):
return self.service
class AnalogMode(Mode):
pass
class DigitalMode(Mode):
def __init__(self, modulation, name, underlying, bandpass: Bandpass = None, requirements=None, service=False):
super().__init__(modulation, name, bandpass, requirements, service)
self.underlying = underlying
class Modes(object):
mappings = [
Mode("nfm", "FM"),
Mode("am", "AM"),
Mode("lsb", "LSB"),
Mode("usb", "USB"),
Mode("cw", "CW"),
Mode("dmr", "DMR", requirements=["digital_voice_digiham"]),
Mode("dstar", "DStar", requirements=["digital_voice_dsd"]),
Mode("nxdn", "NXDN", requirements=["digital_voice_dsd"]),
Mode("ysf", "YSF", requirements=["digital_voice_digiham"]),
Mode("bpsk31", "BPSK31", digimode=True),
Mode("bpsk63", "BPSK63", digimode=True),
Mode("ft8", "FT8", requirements=["wsjt-x"], service=True, digimode=True),
Mode("ft4", "FT4", requirements=["wsjt-x"], service=True, digimode=True),
Mode("jt65", "JT65", requirements=["wsjt-x"], service=True, digimode=True),
Mode("jt9", "JT9", requirements=["wsjt-x"], service=True, digimode=True),
Mode("wspr", "WSPR", requirements=["wsjt-x"], service=True, digimode=True),
Mode("packet", "Packet", ["packet"], service=True, digimode=True),
Mode("js8", "JS8Call", requirements=["js8call"], service=True, digimode=True),
AnalogMode("nfm", "FM", bandpass=Bandpass(-4000, 4000)),
AnalogMode("am", "AM", bandpass=Bandpass(-4000, 4000)),
AnalogMode("lsb", "LSB", bandpass=Bandpass(-3000, -300)),
AnalogMode("usb", "USB", bandpass=Bandpass(300, 3000)),
AnalogMode("cw", "CW", bandpass=Bandpass(700, 900)),
AnalogMode("dmr", "DMR", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"]),
AnalogMode("dstar", "DStar", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"]),
AnalogMode("nxdn", "NXDN", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"]),
AnalogMode("ysf", "YSF", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"]),
DigitalMode("bpsk31", "BPSK31", underlying=["usb"]),
DigitalMode("bpsk63", "BPSK63", underlying=["usb"]),
DigitalMode("ft8", "FT8", underlying=["usb"], requirements=["wsjt-x"], service=True),
DigitalMode("ft4", "FT4", underlying=["usb"], requirements=["wsjt-x"], service=True),
DigitalMode("jt65", "JT65", underlying=["usb"], requirements=["wsjt-x"], service=True),
DigitalMode("jt9", "JT9", underlying=["usb"], requirements=["wsjt-x"], service=True),
DigitalMode("wspr", "WSPR", underlying=["usb"], bandpass=Bandpass(1350, 1650), requirements=["wsjt-x"], service=True),
DigitalMode("js8", "JS8Call", underlying=["usb"], requirements=["js8call"], service=True),
DigitalMode("packet", "Packet", underlying=["nfm", "usb", "lsb"], requirements=["packet"], service=True),
DigitalMode("pocsag", "Pocsag", underlying=["nfm"], bandpass=Bandpass(-6000, 6000), requirements=["pocsag"])
]
@staticmethod