2017-01-02 21:07:43 -05:00
|
|
|
// Copyright (c) Charles J. Cliffe
|
|
|
|
// SPDX-License-Identifier: GPL-2.0+
|
|
|
|
|
2015-09-07 20:46:03 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "VisualProcessor.h"
|
|
|
|
#include "DemodDefs.h"
|
|
|
|
#include <cmath>
|
2015-09-30 23:45:06 -04:00
|
|
|
#include <cstring>
|
2017-02-04 04:32:35 -05:00
|
|
|
#include <atomic>
|
2015-09-07 20:46:03 -04:00
|
|
|
|
|
|
|
class FFTDataDistributor : public VisualProcessor<DemodulatorThreadIQData, DemodulatorThreadIQData> {
|
|
|
|
public:
|
|
|
|
FFTDataDistributor();
|
2017-02-04 04:32:35 -05:00
|
|
|
void setFFTSize(unsigned int size);
|
2016-02-04 18:05:33 -05:00
|
|
|
void setLinesPerSecond(unsigned int lines);
|
|
|
|
unsigned int getLinesPerSecond();
|
2015-09-07 20:46:03 -04:00
|
|
|
|
|
|
|
protected:
|
2017-02-04 04:32:35 -05:00
|
|
|
virtual void process();
|
2015-09-07 20:46:03 -04:00
|
|
|
|
|
|
|
DemodulatorThreadIQData inputBuffer, tempBuffer;
|
|
|
|
ReBuffer<DemodulatorThreadIQData> outputBuffers;
|
2017-02-04 04:32:35 -05:00
|
|
|
std::atomic<unsigned int> fftSize;
|
|
|
|
|
2016-02-04 18:05:33 -05:00
|
|
|
unsigned int linesPerSecond;
|
2015-09-07 20:46:03 -04:00
|
|
|
double lineRateAccum;
|
2017-01-28 08:57:27 -05:00
|
|
|
size_t bufferMax = 0;
|
|
|
|
size_t bufferOffset = 0;
|
|
|
|
size_t bufferedItems = 0;
|
2015-09-07 20:46:03 -04:00
|
|
|
};
|