add rockprog interface
This commit is contained in:
parent
9aa6f72152
commit
406d06fef2
@ -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):
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user