diff --git a/csdr/chain/digimodes.py b/csdr/chain/digimodes.py index bfe6fb0a..87cc6be6 100644 --- a/csdr/chain/digimodes.py +++ b/csdr/chain/digimodes.py @@ -3,7 +3,7 @@ from csdr.module.msk144 import Msk144Module, ParserAdapter 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, JKRttyDecoder, BaudotDecoder, Lowpass, RttyDecoder, CwDecoder, SstvDecoder, FaxDecoder, Shift +from pycsdr.modules import Convert, FmDemod, Agc, TimingRecovery, DBPskDecoder, VaricodeDecoder, RttyDecoder, BaudotDecoder, Lowpass, MFRttyDecoder, CwDecoder, SstvDecoder, FaxDecoder, Shift from pycsdr.types import Format from owrx.aprs.direwolf import DirewolfModule from owrx.sstv import SstvParser @@ -88,7 +88,7 @@ class PskDemodulator(SecondaryDemodulator, SecondarySelectorChain): self.replace(1, TimingRecovery(Format.COMPLEX_FLOAT, secondary_samples_per_bits, 0.5, 2)) -class JKRttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): +class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): def __init__(self, baudRate, bandWidth, invert=False): self.baudRate = baudRate self.bandWidth = bandWidth @@ -103,7 +103,7 @@ class JKRttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): FmDemod(), Lowpass(Format.FLOAT, cutoff), TimingRecovery(Format.FLOAT, secondary_samples_per_bit, loop_gain, 10), - JKRttyDecoder(invert), + RttyDecoder(invert), BaudotDecoder(), ] super().__init__(workers) @@ -145,7 +145,7 @@ class CwDemodulator(SecondaryDemodulator, SecondarySelectorChain): self.replace(2, CwDecoder(sampleRate, self.offset, int(self.baudRate))) -class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): +class MFRttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): def __init__(self, targetWidth: float, baudRate: float, reverse: bool): self.sampleRate = 12000 self.offset = 550 @@ -155,7 +155,7 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): workers = [ Shift((self.targetWidth/2 + self.offset) / self.sampleRate), Agc(Format.COMPLEX_FLOAT), - RttyDecoder(self.sampleRate, self.offset, int(self.targetWidth), self.baudRate, self.reverse), + MFRttyDecoder(self.sampleRate, self.offset, int(self.targetWidth), self.baudRate, self.reverse), ] super().__init__(workers) @@ -167,7 +167,7 @@ class RttyDemodulator(SecondaryDemodulator, SecondarySelectorChain): return self.sampleRate = sampleRate self.replace(0, Shift((self.targetWidth/2 + self.offset) / sampleRate)) - self.replace(2, RttyDecoder(sampleRate, self.offset, int(self.targetWidth), self.baudRate, self.reverse)) + self.replace(2, MFRttyDecoder(sampleRate, self.offset, int(self.targetWidth), self.baudRate, self.reverse)) class SstvDemodulator(ServiceDemodulator, DialFrequencyReceiver): diff --git a/owrx/dsp.py b/owrx/dsp.py index c91e5f41..5317bdcb 100644 --- a/owrx/dsp.py +++ b/owrx/dsp.py @@ -651,24 +651,24 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient) elif mod == "bpsk63": from csdr.chain.digimodes import PskDemodulator return PskDemodulator(62.5) - elif mod == "jkrtty170": - from csdr.chain.digimodes import JKRttyDemodulator - return JKRttyDemodulator(45.45, 170) - elif mod == "jkrtty450": - from csdr.chain.digimodes import JKRttyDemodulator - return JKRttyDemodulator(50, 450, invert=True) - elif mod == "jkrtty85": - from csdr.chain.digimodes import JKRttyDemodulator - return JKRttyDemodulator(50, 85, invert=True) + elif mod == "rtty170": + from csdr.chain.digimodes import RttyDemodulator + return RttyDemodulator(45.45, 170) + elif mod == "rtty450": + from csdr.chain.digimodes import RttyDemodulator + return RttyDemodulator(50, 450, invert=True) + elif mod == "rtty85": + from csdr.chain.digimodes import RttyDemodulator + return RttyDemodulator(50, 85, invert=True) elif mod == "cwdecoder": from csdr.chain.digimodes import CwDemodulator return CwDemodulator(75.0) - elif mod == "rtty170": - from csdr.chain.digimodes import RttyDemodulator - return RttyDemodulator(170.0, 45.45, reverse = False) - elif mod == "rtty450": - from csdr.chain.digimodes import RttyDemodulator - return RttyDemodulator(450.0, 50.0, reverse = True) + elif mod == "mfrtty170": + from csdr.chain.digimodes import MFRttyDemodulator + return MFRttyDemodulator(170.0, 45.45, reverse = False) + elif mod == "mfrtty450": + from csdr.chain.digimodes import MFRttyDemodulator + return MFRttyDemodulator(450.0, 50.0, reverse = True) elif mod == "sstv": from csdr.chain.digimodes import SstvDemodulator return SstvDemodulator() diff --git a/owrx/modes.py b/owrx/modes.py index 5e7ae133..39254090 100644 --- a/owrx/modes.py +++ b/owrx/modes.py @@ -134,10 +134,9 @@ class Modes(object): AnalogMode("drm", "DRM", bandpass=Bandpass(-5000, 5000), requirements=["drm"], squelch=False), DigitalMode("bpsk31", "BPSK31", underlying=["usb"]), DigitalMode("bpsk63", "BPSK63", underlying=["usb"]), -# Testing jketterl's RTTY decoder - DigitalMode("jkrtty170", "RTTY-170 / 45", underlying=["usb", "lsb"]), - DigitalMode("jkrtty450", "RTTY-450 / 50N", underlying=["usb", "lsb"]), - DigitalMode("jkrtty85", "RTTY-85 / 50N", underlying=["usb", "lsb"]), + DigitalMode("rtty170", "RTTY-170 (45)", underlying=["usb", "lsb"]), + DigitalMode("rtty450", "RTTY-450 (50N)", underlying=["usb", "lsb"]), + DigitalMode("rtty85", "RTTY-85 (50N)", underlying=["usb", "lsb"]), WsjtMode("ft8", "FT8"), WsjtMode("ft4", "FT4"), WsjtMode("jt65", "JT65"), @@ -185,9 +184,10 @@ class Modes(object): service=True, squelch=False, ), - DigitalMode("cwdecoder", "CWDecoder", underlying=["usb"]), - DigitalMode("rtty170", "RTTY-170", underlying=["usb"]), - DigitalMode("rtty450", "RTTY-450", underlying=["usb"]), + DigitalMode("cwdecoder", "CW Decoder", underlying=["usb"]), +# Replaced by Jakob's RTTY decoder + DigitalMode("mfrtty170", "RTTY-170", underlying=["usb"]), + DigitalMode("mfrtty450", "RTTY-450", underlying=["usb"]), DigitalMode( "sstv", "SSTV",