Merge pull request #235 from jancona/hpsdr_config

Set proper config options for HPSDR connector
This commit is contained in:
Jakob Ketterl 2021-05-12 21:13:37 +02:00 committed by GitHub
commit 4b969fa3b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 2 deletions

View File

@ -109,8 +109,8 @@ class TextInput(Input):
class NumberInput(Input): class NumberInput(Input):
def __init__(self, id, label, infotext=None, append="", converter: Converter = None): def __init__(self, id, label, infotext=None, append="", converter: Converter = None, validator: Validator = None):
super().__init__(id, label, infotext, converter=converter) super().__init__(id, label, infotext, converter=converter, validator=validator)
self.step = None self.step = None
self.append = append self.append = append

View File

@ -12,3 +12,15 @@ class RequiredValidator(Validator):
def validate(self, key, value): def validate(self, key, value):
if value is None or value == "": if value is None or value == "":
raise ValidationError(key, "Field is required") raise ValidationError(key, "Field is required")
class RangeValidator(Validator):
def __init__(self, minValue, maxValue):
self.minValue = minValue
self.maxValue = maxValue
def validate(self, key, value):
if value is None or value == "":
return # Ignore empty values
n = float(value)
if n < self.minValue or n > self.maxValue:
raise ValidationError(key, 'Value must be between %s and %s'%(self.minValue, self.maxValue))

View File

@ -1,5 +1,9 @@
from owrx.source.connector import ConnectorSource, ConnectorDeviceDescription from owrx.source.connector import ConnectorSource, ConnectorDeviceDescription
from owrx.command import Option from owrx.command import Option
from owrx.form.error import ValidationError
from owrx.form.input import Input, NumberInput, TextInput
from owrx.form.input.validator import RangeValidator
from typing import List
# In order to use an HPSDR radio, you must install hpsdrconnector from https://github.com/jancona/hpsdrconnector # In order to use an HPSDR radio, you must install hpsdrconnector from https://github.com/jancona/hpsdrconnector
# These are the command line options available: # These are the command line options available:
@ -34,7 +38,25 @@ class HpsdrSource(ConnectorSource):
) )
) )
class RemoteInput(TextInput):
def __init__(self):
super().__init__(
"remote", "Remote IP", infotext="Remote IP address to connect to."
)
class HpsdrDeviceDescription(ConnectorDeviceDescription): class HpsdrDeviceDescription(ConnectorDeviceDescription):
def getName(self): def getName(self):
return "HPSDR devices (Hermes / Hermes Lite 2 / Red Pitaya)" return "HPSDR devices (Hermes / Hermes Lite 2 / Red Pitaya)"
def getInputs(self) -> List[Input]:
return super().getInputs() + [
RemoteInput(),
NumberInput("rf_gain", "LNA Gain", "LNA gain between 0 (-12dB) and 60 (48dB)", validator=RangeValidator(0, 60)),
]
def getDeviceOptionalKeys(self):
return list(filter(lambda x : x not in ["rtltcp_compat", "iqswap"], super().getDeviceOptionalKeys())) + ["remote"]
def getProfileOptionalKeys(self):
return list(filter(lambda x : x != "iqswap", super().getProfileOptionalKeys()))