Added profile-specific transceiver rig control setting.

This commit is contained in:
Marat Fayzullin 2025-01-01 21:30:55 -05:00
parent c6ab38641c
commit 284a283d34
3 changed files with 27 additions and 7 deletions

View File

@ -471,6 +471,7 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient)
"wfm_deemphasis_tau",
"wfm_rds_rbds",
"digital_voice_codecserver",
"rig_enabled",
),
)

View File

@ -310,6 +310,8 @@ class RigControl():
}
def __init__(self, props: PropertyStack):
pm = Config.get()
self.enabled = pm["rig_enabled"]
self.rigctl = None
self.thread = None
self.mod = None
@ -318,10 +320,13 @@ class RigControl():
self.subscriptions = [
props.wireProperty("offset_freq", self.setFrequencyOffset),
props.wireProperty("center_freq", self.setCenterFrequency),
props.wireProperty("rig_enabled", self.setRigEnabled),
props.wireProperty("mod", self.setDemodulator),
]
super().__init__()
self.rigStart()
# Start RigControl if enabled
if self.enabled:
self.enabled = self.rigStart()
def stop(self):
for sub in self.subscriptions:
@ -331,17 +336,26 @@ class RigControl():
def setFrequencyOffset(self, offset: int) -> None:
if self.fCenter is not None and offset != self.fOffset:
if self.rigFrequency(self.fCenter + offset):
self.fOffset = offset
self.rigFrequency(self.fCenter + offset)
self.fOffset = offset
def setCenterFrequency(self, center: int) -> None:
self.fCenter = center
self.fOffset = 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
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)
def rigTX(self, active: bool) -> bool:
return self.rigCommand("T {0}".format(1 if active else 0))
@ -366,10 +380,10 @@ class RigControl():
if not FeatureDetector().is_available("rigcontrol"):
return False
# Must have rig control enabled
pm = Config.get()
if not pm["rig_enabled"]:
if not self.enabled:
return False
# Compose Rigctl command
pm = Config.get()
address = pm["rig_address"]
cmd = [
"rigctl", "-m", str(pm["rig_model"]), "-r", pm["rig_device"]

View File

@ -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]],
converter=IntConverter(),
),
CheckboxInput(
"rig_enabled",
"Enable sending changes to a standalone transceiver",
),
NumberInput(
"eibi_bookmarks_range",
"Shortwave bookmarks range",
@ -798,7 +802,8 @@ class SdrDeviceDescription(object):
"waterfall_levels",
"waterfall_auto_level_default_mode",
"eibi_bookmarks_range",
"repeater_range"
"repeater_range",
"rig_enabled",
]
def getDeviceSection(self):