add soapyremote source
This commit is contained in:
parent
46c3e5077d
commit
c92929a32d
@ -1,3 +1,6 @@
|
||||
**unreleased**
|
||||
- Support for SoapyRemote
|
||||
|
||||
**2020-02-08**
|
||||
- Compression, resampling and filtering in the frontend have been rewritten in javascript, sdr.js has been removed
|
||||
- Decoding of Pocsag modulation is now possible
|
||||
|
@ -30,6 +30,7 @@ class FeatureDetector(object):
|
||||
"lime_sdr": ["soapy_connector", "soapy_lime_sdr"],
|
||||
"fifi_sdr": ["alsa"],
|
||||
"pluto_sdr": ["soapy_connector", "soapy_pluto_sdr"],
|
||||
"soapy_remote": ["soapy_connector", "soapy_remote"],
|
||||
# optional features and their requirements
|
||||
"digital_voice_digiham": ["digiham", "sox"],
|
||||
"digital_voice_dsd": ["dsd", "sox", "digiham"],
|
||||
@ -290,6 +291,14 @@ class FeatureDetector(object):
|
||||
"""
|
||||
return self._has_soapy_driver("PlutoSDR")
|
||||
|
||||
def has_soapy_remote(self):
|
||||
"""
|
||||
The SoapyRemote allows the usage of remote SDR devices using the SoapySDRServer.
|
||||
|
||||
You can get the code and find additional information [here](https://github.com/pothosware/SoapyRemote/wiki).
|
||||
"""
|
||||
return self._has_soapy_driver("remote")
|
||||
|
||||
def has_dsd(self):
|
||||
"""
|
||||
The digital voice modes NXDN and D-Star can be decoded by the dsd project. Please note that you need the version
|
||||
|
@ -41,18 +41,21 @@ class SoapyConnectorSource(ConnectorSource, metaclass=ABCMeta):
|
||||
|
||||
return ",".join([encodeComponent(c) for c in dobj])
|
||||
|
||||
"""
|
||||
this method always attempts to inject a driver= part into the soapysdr query, depending on what connector was used.
|
||||
this prevents the soapy_connector from using the wrong device in scenarios where there's no same-type sdrs.
|
||||
"""
|
||||
def buildSoapyDeviceParameters(self, parsed, values):
|
||||
"""
|
||||
this method always attempts to inject a driver= part into the soapysdr query, depending on what connector was used.
|
||||
this prevents the soapy_connector from using the wrong device in scenarios where there's no same-type sdrs.
|
||||
"""
|
||||
parsed = [v for v in parsed if "driver" not in v]
|
||||
parsed += [{"driver": self.getDriver()}]
|
||||
return parsed
|
||||
|
||||
def getCommandValues(self):
|
||||
values = super().getCommandValues()
|
||||
if "device" in values and values["device"] is not None:
|
||||
parsed = self.parseDeviceString(values["device"])
|
||||
parsed = [v for v in parsed if "driver" not in v]
|
||||
parsed += [{"driver": self.getDriver()}]
|
||||
values["device"] = self.encodeDeviceString(parsed)
|
||||
else:
|
||||
values["device"] = "driver={0}".format(self.getDriver())
|
||||
parsed = []
|
||||
modified = self.buildSoapyDeviceParameters(parsed, values)
|
||||
values["device"] = self.encodeDeviceString(modified)
|
||||
return values
|
||||
|
17
owrx/source/soapy_remote.py
Normal file
17
owrx/source/soapy_remote.py
Normal file
@ -0,0 +1,17 @@
|
||||
from .soapy import SoapyConnectorSource
|
||||
|
||||
|
||||
class SoapyRemoteSource(SoapyConnectorSource):
|
||||
def getEventNames(self):
|
||||
return super().getEventNames() + ["remote", "remote_driver"]
|
||||
|
||||
def getDriver(self):
|
||||
return "remote"
|
||||
|
||||
def buildSoapyDeviceParameters(self, parsed, values):
|
||||
params = super().buildSoapyDeviceParameters(parsed, values)
|
||||
params = [v for v in params if not "remote" in params]
|
||||
params += [{"remote": values["remote"]}]
|
||||
if "remote_driver" in values and values["remote_driver"] is not None:
|
||||
params += [{"remote:driver": values["remote_driver"]}]
|
||||
return params
|
Loading…
Reference in New Issue
Block a user