disable PPM input for devices that don't support it

This commit is contained in:
Jakob Ketterl 2022-06-09 20:25:29 +02:00
parent fe7f2317de
commit 35ad4712bb
7 changed files with 39 additions and 2 deletions

View File

@ -514,6 +514,14 @@ class SdrDeviceDescription(object):
""" """
return None return None
def supportsPpm(self):
"""
can be overridden if the device does not support configuring PPM correction
:return: bool
"""
return True
def getDeviceInputs(self) -> List[Input]: def getDeviceInputs(self) -> List[Input]:
keys = self.getDeviceMandatoryKeys() + self.getDeviceOptionalKeys() keys = self.getDeviceMandatoryKeys() + self.getDeviceOptionalKeys()
return [TextInput("name", "Device name", validator=RequiredValidator())] + [ return [TextInput("name", "Device name", validator=RequiredValidator())] + [
@ -568,8 +576,7 @@ class SdrDeviceDescription(object):
return ["name", "enabled"] return ["name", "enabled"]
def getDeviceOptionalKeys(self): def getDeviceOptionalKeys(self):
return [ keys = [
"ppm",
"always-on", "always-on",
"services", "services",
"rf_gain", "rf_gain",
@ -577,6 +584,9 @@ class SdrDeviceDescription(object):
"waterfall_levels", "waterfall_levels",
"scheduler", "scheduler",
] ]
if self.supportsPpm():
keys += ["ppm"]
return keys
def getProfileMandatoryKeys(self): def getProfileMandatoryKeys(self):
return ["name", "center_freq", "samp_rate", "start_freq", "start_mod"] return ["name", "center_freq", "samp_rate", "start_freq", "start_mod"]

View File

@ -23,6 +23,12 @@ class AirspyDeviceDescription(SoapyConnectorDeviceDescription):
def getName(self): def getName(self):
return "Airspy R2 or Mini" return "Airspy R2 or Mini"
def supportsPpm(self):
# not supported by the device API
# frequency calibration can be done with separate tools and will be persisted on the device.
# see discussion here: https://groups.io/g/openwebrx/topic/79360293
return False
def getInputs(self) -> List[Input]: def getInputs(self) -> List[Input]:
return super().getInputs() + [ return super().getInputs() + [
BiasTeeInput(), BiasTeeInput(),

View File

@ -9,3 +9,7 @@ class AirspyhfSource(SoapyConnectorSource):
class AirspyhfDeviceDescription(SoapyConnectorDeviceDescription): class AirspyhfDeviceDescription(SoapyConnectorDeviceDescription):
def getName(self): def getName(self):
return "Airspy HF+ or Discovery" return "Airspy HF+ or Discovery"
def supportsPpm(self):
# not currently supported by the SoapySDR module.
return False

View File

@ -45,3 +45,7 @@ class FifiSdrSource(DirectSource):
class FifiSdrDeviceDescription(DirectSourceDeviceDescription): class FifiSdrDeviceDescription(DirectSourceDeviceDescription):
def getName(self): def getName(self):
return "FiFi SDR" return "FiFi SDR"
def supportsPpm(self):
# not currently mapped, and it's unclear how this should be sent to the device
return False

View File

@ -18,6 +18,11 @@ class HackrfDeviceDescription(SoapyConnectorDeviceDescription):
def getName(self): def getName(self):
return "HackRF" return "HackRF"
def supportsPpm(self):
# not implemented by the SoapySDR module.
# see discussion here: https://groups.io/g/openwebrx/topic/78339109
return False
def getInputs(self) -> List[Input]: def getInputs(self) -> List[Input]:
return super().getInputs() + [BiasTeeInput()] return super().getInputs() + [BiasTeeInput()]

View File

@ -53,6 +53,10 @@ class PerseussdrDeviceDescription(DirectSourceDeviceDescription):
def getName(self): def getName(self):
return "Perseus SDR" return "Perseus SDR"
def supportsPpm(self):
# not currently mapped, and not available as an option to "perseustest"
return False
def getInputs(self) -> List[Input]: def getInputs(self) -> List[Input]:
return super().getInputs() + [ return super().getInputs() + [
DropdownInput("attenuator", "Attenuator", options=AttenuatorOptions), DropdownInput("attenuator", "Attenuator", options=AttenuatorOptions),

View File

@ -40,6 +40,10 @@ class RundsDeviceDescription(ConnectorDeviceDescription):
def getName(self): def getName(self):
return "R&S device using EB200 or Ammos protocol" return "R&S device using EB200 or Ammos protocol"
def supportsPpm(self):
# currently not implemented in the connector
return False
def getInputs(self) -> List[Input]: def getInputs(self) -> List[Input]:
return super().getInputs() + [ return super().getInputs() + [
RemoteInput(), RemoteInput(),