abstract chain features; use local imports to avoid hard dependencies

This commit is contained in:
Jakob Ketterl
2021-09-20 16:14:23 +02:00
parent b2e15c559e
commit 81ed1a9ebb
5 changed files with 40 additions and 18 deletions

View File

@ -12,8 +12,6 @@ from owrx.service.chain import ServiceDemodulatorChain
from owrx.modes import Modes, DigitalMode
from typing import Union
from csdr.chain.demodulator import BaseDemodulatorChain, SecondaryDemodulator, DialFrequencyReceiver
from csdr.chain.analog import NFm, Ssb
from csdr.chain.digimodes import AudioChopperDemodulator, PacketDemodulator
from pycsdr.modules import Buffer
import logging
@ -274,8 +272,10 @@ class ServiceHandler(SdrSourceEventClient):
return demod
# TODO: move this to Modes
if demod == "nfm":
from csdr.chain.analog import NFm
return NFm(48000)
elif demod in ["usb", "lsb", "cw"]:
from csdr.chain.analog import Ssb
return Ssb()
# TODO move this elsewhere
@ -284,10 +284,13 @@ class ServiceHandler(SdrSourceEventClient):
return mod
# TODO add remaining modes
if mod in ["ft8", "wspr", "jt65", "jt9", "ft4", "fst4", "fst4w", "q65"]:
from csdr.chain.digimodes import AudioChopperDemodulator
return AudioChopperDemodulator(mod, WsjtParser())
elif mod == "js8":
from csdr.chain.digimodes import AudioChopperDemodulator
return AudioChopperDemodulator(mod, Js8Parser())
elif mod == "packet":
from csdr.chain.digimodes import PacketDemodulator
return PacketDemodulator(service=True)
return None