improve squelch handling
squelch is now included in the URL hash some modes now have the squelch visually disabled, refs #65
This commit is contained in:
@ -353,7 +353,8 @@ class OpenWebRxReceiverClient(Client):
|
||||
"modulation": m.modulation,
|
||||
"name": m.name,
|
||||
"type": "digimode" if isinstance(m, DigitalMode) else "analog",
|
||||
"requirements": m.requirements
|
||||
"requirements": m.requirements,
|
||||
"squelch": m.squelch,
|
||||
}
|
||||
if m.bandpass is not None:
|
||||
res["bandpass"] = {
|
||||
|
@ -9,18 +9,17 @@ class Bandpass(object):
|
||||
|
||||
|
||||
class Mode(object):
|
||||
def __init__(self, modulation, name, bandpass: Bandpass = None, requirements=None, service=False):
|
||||
def __init__(self, modulation, name, bandpass: Bandpass = None, requirements=None, service=False, squelch=True):
|
||||
self.modulation = modulation
|
||||
self.name = name
|
||||
self.requirements = requirements if requirements is not None else []
|
||||
self.service = service
|
||||
self.bandpass = bandpass
|
||||
self.squelch = squelch
|
||||
|
||||
def is_available(self):
|
||||
fd = FeatureDetector()
|
||||
return reduce(
|
||||
lambda a, b: a and b, [fd.is_available(r) for r in self.requirements], True
|
||||
)
|
||||
return reduce(lambda a, b: a and b, [fd.is_available(r) for r in self.requirements], True)
|
||||
|
||||
def is_service(self):
|
||||
return self.service
|
||||
@ -31,8 +30,10 @@ class AnalogMode(Mode):
|
||||
|
||||
|
||||
class DigitalMode(Mode):
|
||||
def __init__(self, modulation, name, underlying, bandpass: Bandpass = None, requirements=None, service=False):
|
||||
super().__init__(modulation, name, bandpass, requirements, service)
|
||||
def __init__(
|
||||
self, modulation, name, underlying, bandpass: Bandpass = None, requirements=None, service=False, squelch=True
|
||||
):
|
||||
super().__init__(modulation, name, bandpass, requirements, service, squelch)
|
||||
self.underlying = underlying
|
||||
|
||||
|
||||
@ -43,20 +44,31 @@ class Modes(object):
|
||||
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"]),
|
||||
AnalogMode("dmr", "DMR", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"], squelch=False),
|
||||
AnalogMode("dstar", "DStar", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
||||
AnalogMode("nxdn", "NXDN", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
||||
AnalogMode("ysf", "YSF", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"], squelch=False),
|
||||
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(
|
||||
"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"])
|
||||
DigitalMode(
|
||||
"packet", "Packet", underlying=["nfm", "usb", "lsb"], requirements=["packet"], service=True, squelch=False
|
||||
),
|
||||
DigitalMode(
|
||||
"pocsag",
|
||||
"Pocsag",
|
||||
underlying=["nfm"],
|
||||
bandpass=Bandpass(-6000, 6000),
|
||||
requirements=["pocsag"],
|
||||
squelch=False,
|
||||
),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
@ -75,4 +87,4 @@ class Modes(object):
|
||||
def findByModulation(modulation):
|
||||
modes = [m for m in Modes.getAvailableModes() if m.modulation == modulation]
|
||||
if modes:
|
||||
return modes[0]
|
||||
return modes[0]
|
||||
|
Reference in New Issue
Block a user