encapsulate fft chain in its own class
This commit is contained in:
16
csdr/chain/__init__.py
Normal file
16
csdr/chain/__init__.py
Normal file
@ -0,0 +1,16 @@
|
||||
class Chain(object):
|
||||
def __init__(self, *workers):
|
||||
self.workers = workers
|
||||
stage = None
|
||||
for w in self.workers:
|
||||
if stage is not None:
|
||||
w.setInput(stage.getBuffer())
|
||||
stage = w
|
||||
self.buffer = stage.getBuffer()
|
||||
|
||||
def stop(self):
|
||||
for w in self.workers:
|
||||
w.stop()
|
||||
|
||||
def getBuffer(self):
|
||||
return self.buffer
|
15
csdr/chain/fft.py
Normal file
15
csdr/chain/fft.py
Normal file
@ -0,0 +1,15 @@
|
||||
from csdr.chain import Chain
|
||||
from pycsdr import SocketClient, Fft, LogAveragePower, FftExchangeSides, CompressFftAdpcm
|
||||
|
||||
|
||||
class FftChain(Chain):
|
||||
def __init__(self, port, fft_size, fft_block_size, fft_averages, fft_compression):
|
||||
workers = [
|
||||
SocketClient(port=port),
|
||||
Fft(size=fft_size, every_n_samples=int(fft_block_size)),
|
||||
LogAveragePower(add_db=-70, fft_size=fft_size, avg_number=fft_averages),
|
||||
FftExchangeSides(fft_size=fft_size),
|
||||
]
|
||||
if fft_compression == "adpcm":
|
||||
workers += [CompressFftAdpcm(fft_size=fft_size)]
|
||||
super().__init__(*workers)
|
Reference in New Issue
Block a user