1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-08-14 15:33:34 -04:00

Device plugins: make setMessageQueueToGUI pure virtual so that child classes must have to deal with this

This commit is contained in:
f4exb
2017-12-24 19:58:26 +01:00
parent b127182062
commit 1987bbac77
25 changed files with 54 additions and 72 deletions
@@ -54,7 +54,8 @@ SDRdaemonSourceInput::SDRdaemonSourceInput(DeviceSourceAPI *deviceAPI) :
m_autoCorrBuffer(false)
{
m_sampleFifo.setSize(96000 * 4);
m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, &m_inputMessageQueue, m_deviceAPI);
//m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, &m_inputMessageQueue, m_deviceAPI);
m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, m_deviceAPI);
m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer);
char recFileNameCStr[30];
@@ -91,6 +92,12 @@ void SDRdaemonSourceInput::stop()
getInputMessageQueue()->push(command);
}
void SDRdaemonSourceInput::setMessageQueueToGUI(MessageQueue *queue)
{
m_guiMessageQueue = queue;
m_SDRdaemonUDPHandler->setMessageQueueToGUI(queue);
}
const QString& SDRdaemonSourceInput::getDeviceDescription() const
{
return m_deviceDescription;
@@ -224,13 +231,6 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message)
}
}
void SDRdaemonSourceInput::setMessageQueueToGUI(MessageQueue *queue)
{
qDebug("SDRdaemonSourceInput::setMessageQueueToGUI: %p", queue);
DeviceSampleSource::setMessageQueueToGUI(queue);
m_SDRdaemonUDPHandler->setMessageQueueToGUI(queue);
}
int SDRdaemonSourceInput::webapiRunGet(
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage __attribute__((unused)))
@@ -329,6 +329,7 @@ public:
virtual bool start();
virtual void stop();
virtual void setMessageQueueToGUI(MessageQueue *queue);
virtual const QString& getDeviceDescription() const;
virtual int getSampleRate() const;
virtual quint64 getCenterFrequency() const;
@@ -337,8 +338,6 @@ public:
virtual bool handleMessage(const Message& message);
virtual void setMessageQueueToGUI(MessageQueue *queue);
virtual int webapiRunGet(
SWGSDRangel::SWGDeviceState& response,
QString& errorMessage);
@@ -26,7 +26,7 @@
#include "sdrdaemonsourceinput.h"
#include "sdrdaemonsourceudphandler.h"
SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *devieAPI) :
SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo, DeviceSourceAPI *devieAPI) :
m_deviceAPI(devieAPI),
m_sdrDaemonBuffer(m_rateDivider),
m_dataSocket(0),
@@ -41,7 +41,7 @@ SDRdaemonSourceUDPHandler::SDRdaemonSourceUDPHandler(SampleSinkFifo *sampleFifo,
m_centerFrequency(0),
m_tv_sec(0),
m_tv_usec(0),
m_outputMessageQueueToGUI(outputMessageQueueToGUI),
m_outputMessageQueueToGUI(0),
m_tickCount(0),
m_samplesCount(0),
m_timer(0),
@@ -244,22 +244,25 @@ void SDRdaemonSourceUDPHandler::tick()
framesDecodingStatus = 2;
}
SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::create(
m_tv_sec,
m_tv_usec,
m_sdrDaemonBuffer.getBufferLengthInSecs(),
m_sdrDaemonBuffer.getBufferGauge(),
framesDecodingStatus,
minNbBlocks == nbOriginalBlocks + nbFECblocks,
minNbBlocks,
minNbOriginalBlocks,
m_sdrDaemonBuffer.getMaxNbRecovery(),
m_sdrDaemonBuffer.getAvgNbBlocks(),
m_sdrDaemonBuffer.getAvgOriginalBlocks(),
m_sdrDaemonBuffer.getAvgNbRecovery(),
nbOriginalBlocks,
nbFECblocks);
if (m_outputMessageQueueToGUI)
{
SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming *report = SDRdaemonSourceInput::MsgReportSDRdaemonSourceStreamTiming::create(
m_tv_sec,
m_tv_usec,
m_sdrDaemonBuffer.getBufferLengthInSecs(),
m_sdrDaemonBuffer.getBufferGauge(),
framesDecodingStatus,
minNbBlocks == nbOriginalBlocks + nbFECblocks,
minNbBlocks,
minNbOriginalBlocks,
m_sdrDaemonBuffer.getMaxNbRecovery(),
m_sdrDaemonBuffer.getAvgNbBlocks(),
m_sdrDaemonBuffer.getAvgOriginalBlocks(),
m_sdrDaemonBuffer.getAvgNbRecovery(),
nbOriginalBlocks,
nbFECblocks);
m_outputMessageQueueToGUI->push(report);
m_outputMessageQueueToGUI->push(report);
}
}
}
@@ -36,7 +36,7 @@ class SDRdaemonSourceUDPHandler : public QObject
{
Q_OBJECT
public:
SDRdaemonSourceUDPHandler(SampleSinkFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *deviceAPI);
SDRdaemonSourceUDPHandler(SampleSinkFifo* sampleFifo, DeviceSourceAPI *deviceAPI);
~SDRdaemonSourceUDPHandler();
void setMessageQueueToGUI(MessageQueue *queue) { m_outputMessageQueueToGUI = queue; }
void connectTimer(const QTimer* timer);