move the detection of deleted properties to where the events are wired

This commit is contained in:
Jakob Ketterl 2023-08-29 00:02:44 +02:00
parent e109149b92
commit a3407c71aa
2 changed files with 13 additions and 12 deletions

View File

@ -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)

View File

@ -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())