add rockprog interface

This commit is contained in:
Jakob Ketterl 2019-12-31 16:20:36 +01:00
parent 9aa6f72152
commit 406d06fef2
2 changed files with 36 additions and 1 deletions

View File

@ -125,6 +125,11 @@ class SdrSource(ABC):
if self.monitor:
return
try:
self.preStart()
except Exception:
logger.exception("Exception during preStart()")
cmd = self.getCommand()
cmd = [c for c in cmd if c is not None]
@ -176,7 +181,16 @@ class SdrSource(ABC):
self.setState(SdrSource.STATE_FAILED if self.failed else SdrSource.STATE_RUNNING)
def preStart(self):
"""
override this method in subclasses if there's anything to be done before starting up the actual SDR
"""
pass
def postStart(self):
"""
override this method in subclasses if there's things to do after the actual SDR has started up
"""
pass
def isAvailable(self):

View File

@ -1,5 +1,10 @@
from owrx.command import Option
from .direct import DirectSource
from subprocess import Popen
import logging
logger = logging.getLogger(__name__)
class FifiSdrSource(DirectSource):
@ -13,4 +18,20 @@ class FifiSdrSource(DirectSource):
return super().getEventNames() + ["device"]
def getFormatConversion(self):
return ["csdr convert_s16_f", "csdr gain_ff 30"]
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)