mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-09-29 00:26:47 -04:00
b89d606af3
- Requires up-to-date SoapySDR 0.4.x and re-built modules
58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#if USE_RTL_SDR
|
|
#include "SDRThread.h"
|
|
#else
|
|
#include "SoapySDRThread.h"
|
|
#endif
|
|
#include <algorithm>
|
|
|
|
class SDRPostThread : public IOThread {
|
|
public:
|
|
SDRPostThread();
|
|
~SDRPostThread();
|
|
|
|
void bindDemodulator(DemodulatorInstance *demod);
|
|
void removeDemodulator(DemodulatorInstance *demod);
|
|
|
|
void run();
|
|
void terminate();
|
|
|
|
void setIQVisualRange(long long frequency, int bandwidth);
|
|
|
|
protected:
|
|
SDRThreadIQDataQueue *iqDataInQueue;
|
|
DemodulatorThreadInputQueue *iqDataOutQueue;
|
|
DemodulatorThreadInputQueue *iqVisualQueue;
|
|
DemodulatorThreadInputQueue *iqActiveDemodVisualQueue;
|
|
|
|
std::mutex busy_demod;
|
|
std::vector<DemodulatorInstance *> demodulators;
|
|
|
|
private:
|
|
void initPFBChannelizer();
|
|
void updateActiveDemodulators();
|
|
void updateChannels();
|
|
int getChannelAt(long long frequency);
|
|
|
|
ReBuffer<DemodulatorThreadIQData> buffers;
|
|
std::vector<liquid_float_complex> fpData;
|
|
std::vector<liquid_float_complex> dataOut;
|
|
std::vector<long long> chanCenters;
|
|
long long chanBw;
|
|
|
|
int nRunDemods;
|
|
std::vector<DemodulatorInstance *> runDemods;
|
|
std::vector<int> demodChannel;
|
|
std::vector<int> demodChannelActive;
|
|
|
|
ReBuffer<DemodulatorThreadIQData> visualDataBuffers;
|
|
atomic_bool doRefresh;
|
|
atomic_llong visFrequency;
|
|
atomic_int visBandwidth;
|
|
int numChannels, sampleRate;
|
|
long long frequency;
|
|
firpfbch_crcf channelizer;
|
|
iirfilt_crcf dcFilter;
|
|
};
|