diff --git a/csdr/chain/digimodes.py b/csdr/chain/digimodes.py index 22143ce3..32ea6e87 100644 --- a/csdr/chain/digimodes.py +++ b/csdr/chain/digimodes.py @@ -2,7 +2,7 @@ from csdr.chain.demodulator import ServiceDemodulator, SecondaryDemodulator, Dia from owrx.audio.chopper import AudioChopper, AudioChopperParser from owrx.aprs.kiss import KissDeframer from owrx.aprs import Ax25Parser, AprsParser -from pycsdr.modules import Convert, FmDemod, Agc, TimingRecovery, DBPskDecoder, VaricodeDecoder, CwDecoder, RttyDecoder +from pycsdr.modules import Convert, FmDemod, Agc, TimingRecovery, DBPskDecoder, VaricodeDecoder, CwDecoder, RttyDecoder, Shift from pycsdr.types import Format from owrx.aprs.module import DirewolfModule from digiham.modules import FskDemodulator, PocsagDecoder @@ -108,7 +108,7 @@ class CwDemodulator(SecondaryDemodulator, SecondarySelectorChain): if sampleRate == self.sampleRate: return self.sampleRate = sampleRate - self.replace(2, CwDecoder(sampleRate, 0, int(self.baudRate))) + self.replace(1, CwDecoder(sampleRate, 0, int(self.baudRate))) class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): @@ -118,7 +118,8 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): self.baudRate = baudRate self.reverse = reverse workers = [ - Agc(Format.FLOAT), + Shift(self.getBandwidth() / 2.0 / self.sampleRate), + Agc(Format.COMPLEX_FLOAT), RttyDecoder(self.sampleRate, 50, int(self.targetWidth), self.baudRate, self.reverse), ] super().__init__(workers) @@ -130,5 +131,5 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): if sampleRate == self.sampleRate: return self.sampleRate = sampleRate + self.replace(0, Shift(self.getBandwidth() / 2.0 / sampleRate)) self.replace(2, RttyDecoder(sampleRate, 50, int(self.targetWidth), self.baudRate, self.reverse)) -