mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2026-08-14 15:33:41 -04:00
Demodulator garbage collection
This commit is contained in:
@@ -4,13 +4,38 @@
|
||||
#include "CubicSDR.h"
|
||||
|
||||
SDRPostThread::SDRPostThread() :
|
||||
iqDataInQueue(NULL), iqDataOutQueue(NULL), iqVisualQueue(NULL), terminated(false) {
|
||||
dev = NULL;
|
||||
sample_rate = SRATE;
|
||||
iqDataInQueue(NULL), iqDataOutQueue(NULL), iqVisualQueue(NULL), terminated(false), dcFilter(NULL), sample_rate(SRATE) {
|
||||
}
|
||||
|
||||
SDRPostThread::~SDRPostThread() {
|
||||
rtlsdr_close(dev);
|
||||
}
|
||||
|
||||
void SDRPostThread::bindDemodulator(DemodulatorInstance *demod) {
|
||||
demodulators.push_back(demod);
|
||||
}
|
||||
|
||||
void SDRPostThread::removeDemodulator(DemodulatorInstance *demod) {
|
||||
if (!demod) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<DemodulatorInstance *>::iterator i;
|
||||
|
||||
i = std::find(demodulators.begin(), demodulators.end(), demod);
|
||||
|
||||
if (i != demodulators.end()) {
|
||||
demodulators.erase(i);
|
||||
}
|
||||
}
|
||||
|
||||
void SDRPostThread::setIQDataInQueue(SDRThreadIQDataQueue* iqDataQueue) {
|
||||
iqDataInQueue = iqDataQueue;
|
||||
}
|
||||
void SDRPostThread::setIQDataOutQueue(SDRThreadIQDataQueue* iqDataQueue) {
|
||||
iqDataOutQueue = iqDataQueue;
|
||||
}
|
||||
void SDRPostThread::setIQVisualQueue(SDRThreadIQDataQueue *iqVisQueue) {
|
||||
iqVisualQueue = iqVisQueue;
|
||||
}
|
||||
|
||||
void SDRPostThread::threadMain() {
|
||||
|
||||
+7
-33
@@ -5,47 +5,21 @@
|
||||
|
||||
class SDRPostThread {
|
||||
public:
|
||||
rtlsdr_dev_t *dev;
|
||||
|
||||
SDRPostThread();
|
||||
~SDRPostThread();
|
||||
|
||||
int enumerate_rtl();
|
||||
void bindDemodulator(DemodulatorInstance *demod);
|
||||
void removeDemodulator(DemodulatorInstance *demod);
|
||||
|
||||
void bindDemodulator(DemodulatorInstance *demod) {
|
||||
demodulators.push_back(demod);
|
||||
}
|
||||
|
||||
void removeDemodulator(DemodulatorInstance *demod) {
|
||||
if (!demod) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<DemodulatorInstance *>::iterator i;
|
||||
|
||||
i = std::find(demodulators.begin(), demodulators.end(), demod);
|
||||
|
||||
if (i != demodulators.end()) {
|
||||
demodulators.erase(i);
|
||||
}
|
||||
}
|
||||
void setIQDataInQueue(SDRThreadIQDataQueue* iqDataQueue);
|
||||
void setIQDataOutQueue(SDRThreadIQDataQueue* iqDataQueue);
|
||||
void setIQVisualQueue(SDRThreadIQDataQueue *iqVisQueue);
|
||||
|
||||
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;
|
||||
protected:
|
||||
uint32_t sample_rate;
|
||||
|
||||
std::atomic<SDRThreadIQDataQueue*> iqDataOutQueue;
|
||||
std::atomic<SDRThreadIQDataQueue*> iqDataInQueue;
|
||||
|
||||
Reference in New Issue
Block a user