#pragma once #include "SDRThread.h" #include class SDRPostThread { public: rtlsdr_dev_t *dev; SDRPostThread(); ~SDRPostThread(); int enumerate_rtl(); void bindDemodulator(DemodulatorInstance *demod) { demodulators.push_back(demod); } void removeDemodulator(DemodulatorInstance *demod) { if (!demod) { return; } std::vector::iterator i; i = std::find(demodulators.begin(), demodulators.end(), demod); if (i != demodulators.end()) { demodulators.erase(i); } } void threadMain(); void setIQDataInQueue(SDRThreadIQDataQueue* iqDataQueue) { iqDataInQueue = iqDataQueue; } void setIQDataOutQueue(SDRThreadIQDataQueue* iqDataQueue) { iqDataOutQueue = iqDataQueue; } void setIQVisualQueue(SDRThreadIQDataQueue *iqVisQueue) { iqVisualQueue = iqVisQueue; } void terminate(); protected: uint32_t sample_rate; std::atomic iqDataOutQueue; std::atomic iqDataInQueue; std::atomic iqVisualQueue; std::vector demodulators; std::atomic terminated; iirfilt_crcf dcFilter; };