From a3407c71aa03b1d04c9eacd1d21e068994132898 Mon Sep 17 00:00:00 2001 From: Jakob Ketterl Date: Tue, 29 Aug 2023 00:02:44 +0200 Subject: [PATCH] move the detection of deleted properties to where the events are wired --- csdr/chain/selector.py | 9 ++------- owrx/dsp.py | 16 +++++++++++----- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/csdr/chain/selector.py b/csdr/chain/selector.py index 8009f6b..e4b1be2 100644 --- a/csdr/chain/selector.py +++ b/csdr/chain/selector.py @@ -1,7 +1,6 @@ from csdr.chain import Chain from pycsdr.modules import Shift, FirDecimate, Bandpass, Squelch, FractionalDecimator, Writer from pycsdr.types import Format -from owrx.property import PropertyDeleted import math @@ -134,15 +133,11 @@ class Selector(Chain): scaled = [x / self.outputRate for x in self.bandpassCutoffs] self.bandpass.setBandpass(*scaled) - def setLowCut(self, lowCut: float) -> None: - if lowCut is PropertyDeleted: - lowCut = None + def setLowCut(self, lowCut: float | None) -> None: self.bandpassCutoffs[0] = lowCut self.setBandpass(*self.bandpassCutoffs) - def setHighCut(self, highCut: float) -> None: - if highCut is PropertyDeleted: - highCut = None + def setHighCut(self, highCut: float | None) -> None: self.bandpassCutoffs[1] = highCut self.setBandpass(*self.bandpassCutoffs) diff --git a/owrx/dsp.py b/owrx/dsp.py index 641d948..bca9e20 100644 --- a/owrx/dsp.py +++ b/owrx/dsp.py @@ -1,5 +1,5 @@ from owrx.source import SdrSourceEventClient, SdrSourceState, SdrClientClass -from owrx.property import PropertyStack, PropertyLayer, PropertyValidator +from owrx.property import PropertyStack, PropertyLayer, PropertyValidator, PropertyDeleted, PropertyDeletion from owrx.property.validators import OrValidator, RegexValidator, BoolValidator from owrx.modes import Modes, DigitalMode from csdr.chain import Chain @@ -220,10 +220,10 @@ class ClientDemodulatorChain(Chain): else: self.selector.setSquelchLevel(self.squelchLevel) - def setLowCut(self, lowCut): + def setLowCut(self, lowCut: float | None): self.selector.setLowCut(lowCut) - def setHighCut(self, highCut): + def setHighCut(self, highCut: float | None): self.selector.setHighCut(highCut) def setBandpass(self, lowCut, highCut): @@ -485,8 +485,8 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient) self.props.wireProperty("offset_freq", self.chain.setFrequencyOffset), self.props.wireProperty("center_freq", self.chain.setCenterFrequency), self.props.wireProperty("squelch_level", self.chain.setSquelchLevel), - self.props.wireProperty("low_cut", self.chain.setLowCut), - self.props.wireProperty("high_cut", self.chain.setHighCut), + self.props.wireProperty("low_cut", self.setLowCut), + self.props.wireProperty("high_cut", self.setHighCut), self.props.wireProperty("mod", self.setDemodulator), self.props.wireProperty("dmr_filter", self.chain.setSlotFilter), self.props.wireProperty("wfm_deemphasis_tau", self.chain.setWfmDeemphasisTau), @@ -648,6 +648,12 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient) self.chain.setSecondaryFftWriter(buffer) self.wireOutput("secondary_fft", buffer) + def setLowCut(self, lowCut: float | PropertyDeletion): + self.chain.setLowCut(None if lowCut is PropertyDeleted else lowCut) + + def setHighCut(self, highCut: float | PropertyDeletion): + self.chain.setHighCut(None if highCut is PropertyDeleted else highCut) + def start(self): if self.sdrSource.isAvailable(): self.chain.setReader(self.sdrSource.getBuffer().getReader())