improve address:port validation, add DropdownInput for rx_mode
This commit is contained in:
parent
ccd42d0f9a
commit
e71d38b15a
|
|
@ -1,9 +1,8 @@
|
||||||
|
import re
|
||||||
from owrx.source.soapy import SoapyConnectorSource, SoapyConnectorDeviceDescription
|
from owrx.source.soapy import SoapyConnectorSource, SoapyConnectorDeviceDescription
|
||||||
from owrx.form.input import Input, CheckboxInput, NumberInput
|
from owrx.form.input import Input, CheckboxInput, DropdownInput, Option
|
||||||
from owrx.form.input.device import TextInput
|
from owrx.form.input.device import TextInput
|
||||||
from owrx.form.input.validator import RangeValidator
|
from owrx.form.input.validator import Validator, ValidationError
|
||||||
from owrx.form.input.converter import OptionalConverter
|
|
||||||
from owrx.form.input.validator import RequiredValidator
|
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -11,14 +10,20 @@ AFEDRI_DEVICE_KEYS = ["rx_mode"]
|
||||||
AFEDRI_PROFILE_KEYS = ["r820t_lna_agc", "r820t_mixer_agc"]
|
AFEDRI_PROFILE_KEYS = ["r820t_lna_agc", "r820t_mixer_agc"]
|
||||||
|
|
||||||
|
|
||||||
|
class IPv4AndPortValidator(Validator):
|
||||||
|
def validate(self, key, value) -> None:
|
||||||
|
m = re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}$", value)
|
||||||
|
if not m:
|
||||||
|
raise ValidationError(key, "Wrong format. IPv4:Port expected")
|
||||||
|
|
||||||
|
|
||||||
class AfedriAddressPortInput(TextInput):
|
class AfedriAddressPortInput(TextInput):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
"afedri_adress_port",
|
"afedri_adress_port",
|
||||||
"Afedri IP and Port",
|
"Afedri IP and Port",
|
||||||
infotext="Afedri IP and port to connect to. Format = IP:Port",
|
infotext="Afedri IP and port to connect to. Format = IPv4:Port",
|
||||||
converter=OptionalConverter(),
|
validator=IPv4AndPortValidator(),
|
||||||
validator=RequiredValidator(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -71,12 +76,17 @@ class AfedriDeviceDescription(SoapyConnectorDeviceDescription):
|
||||||
"r820t_mixer_agc",
|
"r820t_mixer_agc",
|
||||||
"Enable R820T Mixer AGC",
|
"Enable R820T Mixer AGC",
|
||||||
),
|
),
|
||||||
NumberInput(
|
DropdownInput(
|
||||||
"rx_mode",
|
"rx_mode",
|
||||||
"RX Mode (Single/Dual/Quad Channel)",
|
"Switch the device to a specific RX mode at start",
|
||||||
infotext="Number in range [0,5]. Switch the device to a specific RX mode. <br />"
|
options=[
|
||||||
+ "(0-Single 1-DualDiversity 2-Dual 3-DiversityInternal 4-QuadDiversity 5-Quad)",
|
Option("0", "Single"),
|
||||||
validator=RangeValidator(0, 5),
|
Option("1", "DualDiversity"),
|
||||||
|
Option("2", "Dual"),
|
||||||
|
Option("3", "DiversityInternal"),
|
||||||
|
Option("4", "QuadDiversity"),
|
||||||
|
Option("5", "Quad"),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue