added file player source

See “file_player” in config. Requires updated csdr with —bigendian
option to convert_s16_f and iq_swap_ff. Also requires xzcat to be
installed.

Sample files in new samples/ subdirectory. If larger sample file is too
big for distro remove it and reconfigure to use smaller one (which will
wrap around more quickly).
This commit is contained in:
jks-prv
2020-06-11 14:06:41 +12:00
parent eb45ae5015
commit 5cf8614b57
6 changed files with 36 additions and 0 deletions

View File

@ -12,6 +12,7 @@ class CommandMapper(object):
args = [a for a in args if a != ""]
options = " ".join(args)
command = "{0} {1}".format(self.base, options)
command = command.format(p=values)
if self.static is not None:
command += " " + self.static
return command

View File

@ -30,6 +30,7 @@ class FeatureDetector(object):
"airspyhf": ["soapy_connector", "soapy_airspyhf"],
"lime_sdr": ["soapy_connector", "soapy_lime_sdr"],
"fifi_sdr": ["alsa", "rockprog"],
"file_player": ["xzcat"],
"pluto_sdr": ["soapy_connector", "soapy_pluto_sdr"],
"soapy_remote": ["soapy_connector", "soapy_remote"],
"uhd": ["soapy_connector", "soapy_uhd"],
@ -392,3 +393,11 @@ class FeatureDetector(object):
You can find instructions and downloads [here](https://o28.sischa.net/fifisdr/trac/wiki/De%3Arockprog).
"""
return self.command_is_runnable("rockprog")
def has_xzcat(self):
"""
The "xzcat" executable is required to use the file player. It needs to be installed separately.
Install it from a system package manager, e.g. "sudo apt-get install xz-utils".
"""
return self.command_is_runnable("xzcat")

View File

@ -0,0 +1,9 @@
from .direct import DirectSource
class FilePlayerSource(DirectSource):
def getCommandMapper(self):
cmd = "(while true; do xzcat {p[file]}; done) | csdr flowcontrol $(csdr ={p[samp_rate]}*{p[bytes_per_sample]}*1.05) 20 | {p[format_conversion]}"
return super().getCommandMapper().setBase(cmd)
def getEventNames(self):
return super().getEventNames() + ["file", "bytes_per_sample", "format_conversion"]