22 lines
842 B
Python
22 lines
842 B
Python
|
from csdr.chain import Chain
|
||
|
from csdr.chain.selector import Selector
|
||
|
from csdr.chain.demodulator import BaseDemodulatorChain, SecondaryDemodulator, FixedAudioRateChain
|
||
|
|
||
|
|
||
|
class ServiceDemodulatorChain(Chain):
|
||
|
def __init__(self, demod: BaseDemodulatorChain, secondaryDemod: SecondaryDemodulator, sampleRate: int, shiftRate: float):
|
||
|
# TODO magic number... check if this edge case even exsists and change the api if possible
|
||
|
rate = secondaryDemod.getFixedAudioRate() if isinstance(secondaryDemod, FixedAudioRateChain) else 1200
|
||
|
|
||
|
self.selector = Selector(sampleRate, rate, shiftRate)
|
||
|
|
||
|
workers = [
|
||
|
self.selector,
|
||
|
demod,
|
||
|
secondaryDemod
|
||
|
]
|
||
|
super().__init__(workers)
|
||
|
|
||
|
def setBandPass(self, lowCut, highCut):
|
||
|
self.selector.setBandpass(lowCut, highCut)
|