openwebrx-clone/owrx/source/fifi_sdr.py

38 lines
1.1 KiB
Python
Raw Normal View History

2019-12-27 23:26:45 +00:00
from owrx.command import Option
from .direct import DirectSource
2019-12-31 15:20:36 +00:00
from subprocess import Popen
import logging
logger = logging.getLogger(__name__)
2019-12-27 23:26:45 +00:00
class FifiSdrSource(DirectSource):
def __init__(self, id, props):
super().__init__(id, props)
2019-12-28 00:24:07 +00:00
self.getCommandMapper().setBase("arecord").setMappings(
{"device": Option("-D"), "samp_rate": Option("-r")}
).setStatic("-f S16_LE -c2 -")
2019-12-27 23:26:45 +00:00
def getEventNames(self):
2019-12-28 00:24:07 +00:00
return super().getEventNames() + ["device"]
def getFormatConversion(self):
2019-12-31 15:20:36 +00:00
return ["csdr convert_s16_f", "csdr gain_ff 30"]
def sendRockProgFrequency(self, frequency):
process = Popen(["echo", "--vco", "-w", "--", "freq={}".format(frequency / 1E6)])
process.communicate()
rc = process.wait()
if rc != 0:
logger.warning("rockprog failed to set frequency; rc=%i", rc)
def preStart(self):
values = self.getCommandValues()
self.sendRockProgFrequency(values["tuner_freq"])
def onPropertyChange(self, name, value):
if name != "center_freq":
return
self.sendRockProgFrequency(value)