add msk144demodulator chain
This commit is contained in:
parent
252edb7a5a
commit
f58023f3e5
@ -1,4 +1,5 @@
|
|||||||
from csdr.chain.demodulator import ServiceDemodulator, SecondaryDemodulator, DialFrequencyReceiver, SecondarySelectorChain
|
from csdr.chain.demodulator import ServiceDemodulator, SecondaryDemodulator, DialFrequencyReceiver, SecondarySelectorChain
|
||||||
|
from csdr.module.msk144 import Msk144Module
|
||||||
from owrx.audio.chopper import AudioChopper, AudioChopperParser
|
from owrx.audio.chopper import AudioChopper, AudioChopperParser
|
||||||
from owrx.aprs.kiss import KissDeframer
|
from owrx.aprs.kiss import KissDeframer
|
||||||
from owrx.aprs import Ax25Parser, AprsParser
|
from owrx.aprs import Ax25Parser, AprsParser
|
||||||
@ -20,6 +21,18 @@ class AudioChopperDemodulator(ServiceDemodulator, DialFrequencyReceiver):
|
|||||||
self.chopper.setDialFrequency(frequency)
|
self.chopper.setDialFrequency(frequency)
|
||||||
|
|
||||||
|
|
||||||
|
class Msk144Demodulator(ServiceDemodulator):
|
||||||
|
def __init__(self):
|
||||||
|
workers = [
|
||||||
|
Convert(Format.FLOAT, Format.SHORT),
|
||||||
|
Msk144Module(),
|
||||||
|
]
|
||||||
|
super().__init__(workers)
|
||||||
|
|
||||||
|
def getFixedAudioRate(self) -> int:
|
||||||
|
return 12000
|
||||||
|
|
||||||
|
|
||||||
class PacketDemodulator(ServiceDemodulator, DialFrequencyReceiver):
|
class PacketDemodulator(ServiceDemodulator, DialFrequencyReceiver):
|
||||||
def __init__(self, service: bool = False):
|
def __init__(self, service: bool = False):
|
||||||
self.parser = AprsParser()
|
self.parser = AprsParser()
|
||||||
|
13
csdr/module/msk144.py
Normal file
13
csdr/module/msk144.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from pycsdr.types import Format
|
||||||
|
from csdr.module import PopenModule
|
||||||
|
|
||||||
|
|
||||||
|
class Msk144Module(PopenModule):
|
||||||
|
def getCommand(self):
|
||||||
|
return ["msk144decoder"]
|
||||||
|
|
||||||
|
def getInputFormat(self) -> Format:
|
||||||
|
return Format.SHORT
|
||||||
|
|
||||||
|
def getOutputFormat(self) -> Format:
|
||||||
|
return Format.CHAR
|
@ -581,6 +581,9 @@ class DspManager(SdrSourceEventClient, ClientDemodulatorSecondaryDspEventClient)
|
|||||||
from csdr.chain.digimodes import AudioChopperDemodulator
|
from csdr.chain.digimodes import AudioChopperDemodulator
|
||||||
from owrx.wsjt import WsjtParser
|
from owrx.wsjt import WsjtParser
|
||||||
return AudioChopperDemodulator(mod, WsjtParser())
|
return AudioChopperDemodulator(mod, WsjtParser())
|
||||||
|
elif mod == "msk144":
|
||||||
|
from csdr.chain.digimodes import Msk144Demodulator
|
||||||
|
return Msk144Demodulator()
|
||||||
elif mod == "js8":
|
elif mod == "js8":
|
||||||
from csdr.chain.digimodes import AudioChopperDemodulator
|
from csdr.chain.digimodes import AudioChopperDemodulator
|
||||||
from owrx.js8 import Js8Parser
|
from owrx.js8 import Js8Parser
|
||||||
|
@ -120,6 +120,7 @@ class Modes(object):
|
|||||||
WsjtMode("fst4", "FST4", requirements=["wsjt-x-2-3"]),
|
WsjtMode("fst4", "FST4", requirements=["wsjt-x-2-3"]),
|
||||||
WsjtMode("fst4w", "FST4W", bandpass=Bandpass(1350, 1650), requirements=["wsjt-x-2-3"]),
|
WsjtMode("fst4w", "FST4W", bandpass=Bandpass(1350, 1650), requirements=["wsjt-x-2-3"]),
|
||||||
WsjtMode("q65", "Q65", requirements=["wsjt-x-2-4"]),
|
WsjtMode("q65", "Q65", requirements=["wsjt-x-2-4"]),
|
||||||
|
DigitalMode("msk144", "MSK144", requirements=["msk144"], underlying=["usb"], service=True),
|
||||||
Js8Mode("js8", "JS8Call"),
|
Js8Mode("js8", "JS8Call"),
|
||||||
DigitalMode(
|
DigitalMode(
|
||||||
"packet",
|
"packet",
|
||||||
|
Loading…
Reference in New Issue
Block a user