2014-11-29 13:58:20 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "SDRThread.h"
|
2014-12-10 21:22:13 -05:00
|
|
|
#include <algorithm>
|
2014-11-29 13:58:20 -05:00
|
|
|
|
|
|
|
class SDRPostThread {
|
|
|
|
public:
|
|
|
|
SDRPostThread();
|
|
|
|
~SDRPostThread();
|
|
|
|
|
2014-12-11 19:07:21 -05:00
|
|
|
void bindDemodulator(DemodulatorInstance *demod);
|
|
|
|
void removeDemodulator(DemodulatorInstance *demod);
|
2014-12-10 21:22:13 -05:00
|
|
|
|
2014-12-11 19:07:21 -05:00
|
|
|
void setIQDataInQueue(SDRThreadIQDataQueue* iqDataQueue);
|
2014-12-26 16:15:35 -05:00
|
|
|
void setIQDataOutQueue(DemodulatorThreadInputQueue* iqDataQueue);
|
|
|
|
void setIQVisualQueue(DemodulatorThreadInputQueue* iqVisQueue);
|
2014-12-10 21:22:13 -05:00
|
|
|
|
2014-12-28 05:13:46 -05:00
|
|
|
void setNumVisSamples(int num_vis_samples_in);
|
|
|
|
int getNumVisSamples();
|
2015-05-31 22:13:14 -04:00
|
|
|
|
|
|
|
void setSwapIQ(bool swapIQ);
|
|
|
|
bool getSwapIQ();
|
|
|
|
|
2014-11-29 13:58:20 -05:00
|
|
|
void threadMain();
|
|
|
|
void terminate();
|
|
|
|
|
2014-12-11 19:07:21 -05:00
|
|
|
protected:
|
2014-12-23 01:59:03 -05:00
|
|
|
std::atomic<SDRThreadIQDataQueue *> iqDataInQueue;
|
2014-12-26 16:15:35 -05:00
|
|
|
std::atomic<DemodulatorThreadInputQueue *> iqDataOutQueue;
|
|
|
|
std::atomic<DemodulatorThreadInputQueue *> iqVisualQueue;
|
2015-05-31 12:05:45 -04:00
|
|
|
|
|
|
|
std::mutex busy_demod;
|
2014-11-29 13:58:20 -05:00
|
|
|
std::vector<DemodulatorInstance *> demodulators;
|
|
|
|
std::atomic<bool> terminated;
|
|
|
|
iirfilt_crcf dcFilter;
|
2014-12-28 05:13:46 -05:00
|
|
|
int num_vis_samples;
|
2015-05-31 22:13:14 -04:00
|
|
|
std::atomic<bool> swapIQ;
|
|
|
|
|
2015-02-03 12:42:44 -05:00
|
|
|
private:
|
|
|
|
std::vector<liquid_float_complex> _lut;
|
2015-05-31 22:13:14 -04:00
|
|
|
std::vector<liquid_float_complex> _lut_swap;
|
2014-11-29 13:58:20 -05:00
|
|
|
};
|