refactor sources to be more flexible
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
from . import SdrSource
|
||||
from owrx.socket import getAvailablePort
|
||||
import socket
|
||||
from owrx.command import CommandMapper, Flag, Option
|
||||
|
||||
import logging
|
||||
|
||||
@ -12,16 +13,22 @@ class ConnectorSource(SdrSource):
|
||||
super().__init__(id, props, port)
|
||||
self.controlSocket = None
|
||||
self.controlPort = getAvailablePort()
|
||||
self.getCommandMapper().setMappings({
|
||||
"samp_rate": Option("-s"),
|
||||
"tuner_freq": Option("-f"),
|
||||
"port": Option("-p"),
|
||||
"controlPort": Option("-c"),
|
||||
"device": Option("-d"),
|
||||
"iqswap": Flag("-i"),
|
||||
"rtltcp_compat": Flag("-r"),
|
||||
"ppm": Option("-p"),
|
||||
"rf_gain": Option("-g")
|
||||
})
|
||||
|
||||
def getEventNames(self):
|
||||
return [
|
||||
"samp_rate",
|
||||
"center_freq",
|
||||
"ppm",
|
||||
"rf_gain",
|
||||
return super().getEventNames() + [
|
||||
"device",
|
||||
"iqswap",
|
||||
"lfo_offset",
|
||||
"rtltcp_compat",
|
||||
]
|
||||
|
||||
@ -29,21 +36,18 @@ class ConnectorSource(SdrSource):
|
||||
logger.debug("sending property change over control socket: {0} changed to {1}".format(prop, value))
|
||||
self.controlSocket.sendall("{prop}:{value}\n".format(prop=prop, value=value).encode())
|
||||
|
||||
def wireEvents(self):
|
||||
def reconfigure(prop, value):
|
||||
if self.monitor is None:
|
||||
return
|
||||
if (
|
||||
(prop == "center_freq" or prop == "lfo_offset")
|
||||
and "lfo_offset" in self.rtlProps
|
||||
and self.rtlProps["lfo_offset"] is not None
|
||||
):
|
||||
freq = self.rtlProps["center_freq"] + self.rtlProps["lfo_offset"]
|
||||
self.sendControlMessage("center_freq", freq)
|
||||
else:
|
||||
self.sendControlMessage(prop, value)
|
||||
|
||||
self.rtlProps.wire(reconfigure)
|
||||
def onPropertyChange(self, prop, value):
|
||||
if self.monitor is None:
|
||||
return
|
||||
if (
|
||||
(prop == "center_freq" or prop == "lfo_offset")
|
||||
and "lfo_offset" in self.rtlProps
|
||||
and self.rtlProps["lfo_offset"] is not None
|
||||
):
|
||||
freq = self.rtlProps["center_freq"] + self.rtlProps["lfo_offset"]
|
||||
self.sendControlMessage("center_freq", freq)
|
||||
else:
|
||||
self.sendControlMessage(prop, value)
|
||||
|
||||
def postStart(self):
|
||||
logger.debug("opening control socket...")
|
||||
@ -56,8 +60,11 @@ class ConnectorSource(SdrSource):
|
||||
self.controlSocket.close()
|
||||
self.controlSocket = None
|
||||
|
||||
def getFormatConversion(self):
|
||||
return None
|
||||
def getControlPort(self):
|
||||
return self.controlPort
|
||||
|
||||
def useNmux(self):
|
||||
return False
|
||||
def getCommandValues(self):
|
||||
values = super().getCommandValues()
|
||||
values["port"] = self.getPort()
|
||||
values["controlPort"] = self.getControlPort()
|
||||
return values
|
||||
|
Reference in New Issue
Block a user