Added profile-specific transceiver rig control setting.
This commit is contained in:
parent
c6ab38641c
commit
284a283d34
|
|
@ -471,6 +471,7 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient)
|
||||||
"wfm_deemphasis_tau",
|
"wfm_deemphasis_tau",
|
||||||
"wfm_rds_rbds",
|
"wfm_rds_rbds",
|
||||||
"digital_voice_codecserver",
|
"digital_voice_codecserver",
|
||||||
|
"rig_enabled",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -310,6 +310,8 @@ class RigControl():
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, props: PropertyStack):
|
def __init__(self, props: PropertyStack):
|
||||||
|
pm = Config.get()
|
||||||
|
self.enabled = pm["rig_enabled"]
|
||||||
self.rigctl = None
|
self.rigctl = None
|
||||||
self.thread = None
|
self.thread = None
|
||||||
self.mod = None
|
self.mod = None
|
||||||
|
|
@ -318,10 +320,13 @@ class RigControl():
|
||||||
self.subscriptions = [
|
self.subscriptions = [
|
||||||
props.wireProperty("offset_freq", self.setFrequencyOffset),
|
props.wireProperty("offset_freq", self.setFrequencyOffset),
|
||||||
props.wireProperty("center_freq", self.setCenterFrequency),
|
props.wireProperty("center_freq", self.setCenterFrequency),
|
||||||
|
props.wireProperty("rig_enabled", self.setRigEnabled),
|
||||||
props.wireProperty("mod", self.setDemodulator),
|
props.wireProperty("mod", self.setDemodulator),
|
||||||
]
|
]
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.rigStart()
|
# Start RigControl if enabled
|
||||||
|
if self.enabled:
|
||||||
|
self.enabled = self.rigStart()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
for sub in self.subscriptions:
|
for sub in self.subscriptions:
|
||||||
|
|
@ -331,17 +336,26 @@ class RigControl():
|
||||||
|
|
||||||
def setFrequencyOffset(self, offset: int) -> None:
|
def setFrequencyOffset(self, offset: int) -> None:
|
||||||
if self.fCenter is not None and offset != self.fOffset:
|
if self.fCenter is not None and offset != self.fOffset:
|
||||||
if self.rigFrequency(self.fCenter + offset):
|
self.rigFrequency(self.fCenter + offset)
|
||||||
self.fOffset = offset
|
self.fOffset = offset
|
||||||
|
|
||||||
def setCenterFrequency(self, center: int) -> None:
|
def setCenterFrequency(self, center: int) -> None:
|
||||||
self.fCenter = center
|
self.fCenter = center
|
||||||
self.fOffset = None
|
self.fOffset = None
|
||||||
|
|
||||||
def setDemodulator(self, mod: str) -> None:
|
def setDemodulator(self, mod: str) -> None:
|
||||||
if mod != self.mod and self.rigModulation(mod):
|
if mod != self.mod:
|
||||||
|
self.rigModulation(mod)
|
||||||
self.mod = mod
|
self.mod = mod
|
||||||
|
|
||||||
|
def setRigEnabled(self, enabled: bool) -> None:
|
||||||
|
if enabled != self.enabled:
|
||||||
|
self.enabled = enabled
|
||||||
|
if enabled:
|
||||||
|
self.enabled = self.rigStart()
|
||||||
|
else:
|
||||||
|
self.rigStop()
|
||||||
|
|
||||||
# Press or release rig's PTT (i.e. transmit)
|
# Press or release rig's PTT (i.e. transmit)
|
||||||
def rigTX(self, active: bool) -> bool:
|
def rigTX(self, active: bool) -> bool:
|
||||||
return self.rigCommand("T {0}".format(1 if active else 0))
|
return self.rigCommand("T {0}".format(1 if active else 0))
|
||||||
|
|
@ -366,10 +380,10 @@ class RigControl():
|
||||||
if not FeatureDetector().is_available("rigcontrol"):
|
if not FeatureDetector().is_available("rigcontrol"):
|
||||||
return False
|
return False
|
||||||
# Must have rig control enabled
|
# Must have rig control enabled
|
||||||
pm = Config.get()
|
if not self.enabled:
|
||||||
if not pm["rig_enabled"]:
|
|
||||||
return False
|
return False
|
||||||
# Compose Rigctl command
|
# Compose Rigctl command
|
||||||
|
pm = Config.get()
|
||||||
address = pm["rig_address"]
|
address = pm["rig_address"]
|
||||||
cmd = [
|
cmd = [
|
||||||
"rigctl", "-m", str(pm["rig_model"]), "-r", pm["rig_device"]
|
"rigctl", "-m", str(pm["rig_model"]), "-r", pm["rig_device"]
|
||||||
|
|
|
||||||
|
|
@ -745,6 +745,10 @@ class SdrDeviceDescription(object):
|
||||||
options=[Option(str(i), "{} Hz".format(i)) for i in [1, 10, 20, 50, 100, 500, 1000, 2500, 3000, 5000, 6000, 6250, 8330, 9000, 10000, 12000, 12500, 25000, 50000]],
|
options=[Option(str(i), "{} Hz".format(i)) for i in [1, 10, 20, 50, 100, 500, 1000, 2500, 3000, 5000, 6000, 6250, 8330, 9000, 10000, 12000, 12500, 25000, 50000]],
|
||||||
converter=IntConverter(),
|
converter=IntConverter(),
|
||||||
),
|
),
|
||||||
|
CheckboxInput(
|
||||||
|
"rig_enabled",
|
||||||
|
"Enable sending changes to a standalone transceiver",
|
||||||
|
),
|
||||||
NumberInput(
|
NumberInput(
|
||||||
"eibi_bookmarks_range",
|
"eibi_bookmarks_range",
|
||||||
"Shortwave bookmarks range",
|
"Shortwave bookmarks range",
|
||||||
|
|
@ -798,7 +802,8 @@ class SdrDeviceDescription(object):
|
||||||
"waterfall_levels",
|
"waterfall_levels",
|
||||||
"waterfall_auto_level_default_mode",
|
"waterfall_auto_level_default_mode",
|
||||||
"eibi_bookmarks_range",
|
"eibi_bookmarks_range",
|
||||||
"repeater_range"
|
"repeater_range",
|
||||||
|
"rig_enabled",
|
||||||
]
|
]
|
||||||
|
|
||||||
def getDeviceSection(self):
|
def getDeviceSection(self):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue