add new DMR chain

This commit is contained in:
Jakob Ketterl 2021-08-06 20:02:59 +02:00
parent dd7255a9d2
commit 3ccb4a11d2
2 changed files with 16 additions and 9 deletions

View File

@ -41,7 +41,7 @@ from csdr.chain.demodulator import DemodulatorChain
from csdr.chain.fm import NFm, WFm from csdr.chain.fm import NFm, WFm
from csdr.chain.am import Am from csdr.chain.am import Am
from csdr.chain.ssb import Ssb from csdr.chain.ssb import Ssb
from csdr.chain.digiham import Dstar, Nxdn from csdr.chain.digiham import Dstar, Nxdn, Dmr
from csdr.chain.clientaudio import ClientAudioChain from csdr.chain.clientaudio import ClientAudioChain
import logging import logging
@ -146,6 +146,9 @@ class Dsp(DirewolfConfigSubscriber):
elif which == "nxdn": elif which == "nxdn":
self.pycsdr_chain = DemodulatorChain(self.samp_rate, 48000, 0.0, Nxdn(self.codecserver)) self.pycsdr_chain = DemodulatorChain(self.samp_rate, 48000, 0.0, Nxdn(self.codecserver))
return self.pycsdr_chain return self.pycsdr_chain
elif which == "dmr":
self.pycsdr_chain = DemodulatorChain(self.samp_rate, 48000, 0.0, Dmr(self.codecserver))
return self.pycsdr_chain
chain = ["nc -v 127.0.0.1 {nc_port}"] chain = ["nc -v 127.0.0.1 {nc_port}"]
chain += ["csdr shift_addfast_cc --fifo {shift_pipe}"] chain += ["csdr shift_addfast_cc --fifo {shift_pipe}"]

View File

@ -1,7 +1,7 @@
from csdr.chain import Chain from csdr.chain import Chain
from pycsdr.modules import FmDemod, Agc, Writer from pycsdr.modules import FmDemod, Agc, Writer
from pycsdr.types import Format from pycsdr.types import Format
from digiham.modules import DstarDecoder, DcBlock, FskDemodulator, GfskDemodulator, DigitalVoiceFilter, MbeSynthesizer, NarrowRrcFilter, NxdnDecoder from digiham.modules import DstarDecoder, DcBlock, FskDemodulator, GfskDemodulator, DigitalVoiceFilter, MbeSynthesizer, NarrowRrcFilter, NxdnDecoder, DmrDecoder
from digiham.ambe import Modes from digiham.ambe import Modes
@ -9,6 +9,9 @@ class DigihamChain(Chain):
def __init__(self, codecserver: str = ""): def __init__(self, codecserver: str = ""):
if codecserver is None: if codecserver is None:
codecserver = "" codecserver = ""
agc = Agc(Format.SHORT)
agc.setMaxGain(30)
agc.setInitialGain(3)
workers = [ workers = [
FmDemod(), FmDemod(),
DcBlock(), DcBlock(),
@ -16,7 +19,7 @@ class DigihamChain(Chain):
self.decoder, self.decoder,
MbeSynthesizer(self.mbeMode, codecserver), MbeSynthesizer(self.mbeMode, codecserver),
DigitalVoiceFilter(), DigitalVoiceFilter(),
self.agc agc
] ]
super().__init__(*workers) super().__init__(*workers)
@ -29,9 +32,6 @@ class Dstar(DigihamChain):
self.fskDemodulator = FskDemodulator(samplesPerSymbol=10) self.fskDemodulator = FskDemodulator(samplesPerSymbol=10)
self.decoder = DstarDecoder() self.decoder = DstarDecoder()
self.mbeMode = Modes.DStarMode self.mbeMode = Modes.DStarMode
self.agc = Agc(Format.SHORT)
self.agc.setMaxGain(30)
self.agc.setInitialGain(3)
super().__init__(codecserver) super().__init__(codecserver)
@ -40,7 +40,11 @@ class Nxdn(DigihamChain):
self.fskDemodulator = GfskDemodulator(samplesPerSymbol=20) self.fskDemodulator = GfskDemodulator(samplesPerSymbol=20)
self.decoder = NxdnDecoder() self.decoder = NxdnDecoder()
self.mbeMode = Modes.NxdnMode self.mbeMode = Modes.NxdnMode
self.agc = Agc(Format.SHORT) super().__init__(codecserver)
self.agc.setMaxGain(30)
self.agc.setInitialGain(3) class Dmr(DigihamChain):
def __init__(self, codecserver: str = ""):
self.fskDemodulator = GfskDemodulator(samplesPerSymbol=10)
self.decoder = DmrDecoder()
self.mbeMode = Modes.DmrMode
super().__init__(codecserver) super().__init__(codecserver)