diff --git a/csdr/chain/__init__.py b/csdr/chain/__init__.py index 7994c976..21b69c9b 100644 --- a/csdr/chain/__init__.py +++ b/csdr/chain/__init__.py @@ -1,11 +1,11 @@ +from csdr.module import Module from pycsdr.modules import Buffer from typing import Union, Callable -class Chain: +class Chain(Module): def __init__(self, workers): - self.reader = None - self.writer = None + super().__init__() self.clientReader = None self.workers = workers for i in range(1, len(self.workers)): @@ -23,14 +23,14 @@ class Chain: def setReader(self, reader): if self.reader is reader: return - self.reader = reader + super().setReader(reader) if self.workers: self.workers[0].setReader(reader) def setWriter(self, writer): if self.writer is writer: return - self.writer = writer + super().setWriter(writer) if self.workers: self.workers[-1].setWriter(writer) diff --git a/csdr/module.py b/csdr/module.py new file mode 100644 index 00000000..5783cce0 --- /dev/null +++ b/csdr/module.py @@ -0,0 +1,14 @@ +import pycsdr.modules + + +class Module(pycsdr.modules.Module): + def __init__(self): + self.reader = None + self.writer = None + super().__init__() + + def setReader(self, reader: pycsdr.modules.Reader) -> None: + self.reader = reader + + def setWriter(self, writer: pycsdr.modules.Writer) -> None: + self.writer = writer diff --git a/owrx/audio/chopper.py b/owrx/audio/chopper.py index ca74a542..d9b7508a 100644 --- a/owrx/audio/chopper.py +++ b/owrx/audio/chopper.py @@ -4,7 +4,7 @@ import threading from owrx.audio import ProfileSourceSubscriber from owrx.audio.wav import AudioWriter from owrx.audio.queue import QueueJob -from csdr.chain import Chain +from csdr.module import Module import pickle import logging @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) -class AudioChopper(threading.Thread, Chain, ProfileSourceSubscriber): +class AudioChopper(threading.Thread, Module, ProfileSourceSubscriber): # TODO parser typing def __init__(self, mode_str: str, parser): self.parser = parser @@ -25,7 +25,7 @@ class AudioChopper(threading.Thread, Chain, ProfileSourceSubscriber): raise ValueError("Mode {} is not an audio chopper mode".format(mode_str)) self.profile_source = mode.get_profile_source() super().__init__() - Chain.__init__(self, []) + Module.__init__(self) def stop_writers(self): while self.writers: