diff --git a/csdr/chain/sstv.py b/csdr/chain/sstv.py index 2f62dd1c..66964610 100644 --- a/csdr/chain/sstv.py +++ b/csdr/chain/sstv.py @@ -1,5 +1,5 @@ from owrx.sstv import SstvParser -from csdr.chain.demodulator import SecondaryDemodulator, FixedAudioRateChain +from csdr.chain.demodulator import ServiceDemodulator from pycsdr.modules import FmDemod, Buffer from pycsdr.types import Format from csdrsstv.modules import SstvDecoder @@ -7,7 +7,7 @@ from owrx.feature import FeatureDetector from typing import Optional -class Sstv(SecondaryDemodulator, FixedAudioRateChain): +class Sstv(ServiceDemodulator): def __init__(self): self.imageBuffer = Buffer(Format.CHAR) super().__init__([ diff --git a/owrx/modes.py b/owrx/modes.py index 30af0511..b9aaab9c 100644 --- a/owrx/modes.py +++ b/owrx/modes.py @@ -140,7 +140,14 @@ class Modes(object): DigitalMode("rtty170", "RTTY 45/170", underlying=["usb", "lsb"]), DigitalMode("rtty450", "RTTY 50N/450", underlying=["lsb", "usb"]), DigitalMode("rtty85", "RTTY 50N/85", underlying=["lsb", "usb"]), - DigitalMode("sstv", "SSTV", underlying=["usb", "lsb"], bandpass=Bandpass(1100, 2400)), + DigitalMode( + "sstv", + "SSTV", + underlying=["usb", "lsb"], + bandpass=Bandpass(1100, 2400), + requirements=["sstv"], + service=True + ), WsjtMode("ft8", "FT8"), WsjtMode("ft4", "FT4"), WsjtMode("jt65", "JT65"), diff --git a/owrx/service/__init__.py b/owrx/service/__init__.py index d78b03e3..460f937b 100644 --- a/owrx/service/__init__.py +++ b/owrx/service/__init__.py @@ -327,6 +327,9 @@ class ServiceHandler(SdrSourceEventClient): elif mod == "ism": from csdr.chain.rtl433 import Rtl433 return Rtl433() + elif mod == "sstv": + from csdr.chain.sstv import Sstv + return Sstv() raise ValueError("unsupported service modulation: {}".format(mod))