Switching to jketterl's RTTY decoder.
This commit is contained in:
parent
c366bd3bed
commit
fac634ca8b
|
|
@ -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):
|
||||
|
|
|
|||
30
owrx/dsp.py
30
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()
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue