openwebrx-clone/owrx/source/resampler.py

39 lines
1.3 KiB
Python
Raw Permalink Normal View History

2019-12-27 23:26:45 +00:00
from .direct import DirectSource
import logging
logger = logging.getLogger(__name__)
2019-12-27 23:26:45 +00:00
class Resampler(DirectSource):
2020-12-30 16:18:46 +00:00
def onPropertyChange(self, changes):
logger.warning("Resampler is unable to handle property changes: {0}".format(changes))
2019-12-27 23:26:45 +00:00
def __init__(self, props, sdr):
sdrProps = sdr.getProps()
self.shift = (sdrProps["center_freq"] - props["center_freq"]) / sdrProps["samp_rate"]
self.decimation = int(float(sdrProps["samp_rate"]) / props["samp_rate"])
if_samp_rate = sdrProps["samp_rate"] / self.decimation
self.transition_bw = 0.15 * (if_samp_rate / float(sdrProps["samp_rate"]))
props["samp_rate"] = if_samp_rate
self.sdr = sdr
super().__init__(None, props)
2019-12-27 23:26:45 +00:00
def getCommand(self):
return [
"nc -v 127.0.0.1 {nc_port}".format(nc_port=self.sdr.getPort()),
2021-07-01 13:52:30 +00:00
"csdr++ shift {shift}".format(shift=self.shift),
2021-07-02 17:15:10 +00:00
"csdr++ firdecimate {decimation} {ddc_transition_bw} --window hamming".format(
decimation=self.decimation, ddc_transition_bw=self.transition_bw
),
2019-12-28 15:44:45 +00:00
] + self.getNmuxCommand()
def activateProfile(self, profile_id=None):
2019-12-27 23:26:45 +00:00
logger.warning("Resampler does not support setting profiles")
pass
2021-01-13 22:44:00 +00:00
def validateProfiles(self):
# resampler does not support profiles
pass