openwebrxplus/csdr/module/toolbox.py

64 lines
1.7 KiB
Python

from pycsdr.types import Format
from csdr.module import PopenModule
class Rtl433Module(PopenModule):
def __init__(self, sampleRate: int = 250000, jsonOutput: bool = False):
self.sampleRate = sampleRate
self.jsonOutput = jsonOutput
super().__init__()
def getCommand(self):
return [
"rtl_433", "-r", "cs16:-", "-s", str(self.sampleRate),
"-M", "time:utc", "-F", "json" if self.jsonOutput else "kv",
"-A",
]
def getInputFormat(self) -> Format:
return Format.COMPLEX_SHORT
def getOutputFormat(self) -> Format:
return Format.CHAR
class MultimonModule(PopenModule):
def __init__(self, decoders: list[str]):
self.decoders = decoders
super().__init__()
def getCommand(self):
cmd = ["multimon-ng", "-", "-v0", "-c"]
for x in self.decoders:
cmd += ["-a", x]
return cmd
def getInputFormat(self) -> Format:
return Format.SHORT
def getOutputFormat(self) -> Format:
return Format.CHAR
class DumpHfdlModule(PopenModule):
def __init__(self, sampleRate: int = 12000, jsonOutput: bool = False):
self.sampleRate = sampleRate
self.jsonOutput = jsonOutput
super().__init__()
def getCommand(self):
return [
"dumphfdl", "--iq-file", "-", "--sample-format", "CF32",
"--sample-rate", str(self.sampleRate), "--output",
"decoded:%s:file:path=-" % ("json" if self.jsonOutput else "text"),
"--centerfreq", "0", "0"
]
def getInputFormat(self) -> Format:
return Format.COMPLEX_FLOAT
def getOutputFormat(self) -> Format:
return Format.CHAR