diff --git a/plugins/samplesource/airspy/airspygui.cpp b/plugins/samplesource/airspy/airspygui.cpp index 705e67926..81b38db59 100644 --- a/plugins/samplesource/airspy/airspygui.cpp +++ b/plugins/samplesource/airspy/airspygui.cpp @@ -52,8 +52,7 @@ AirspyGui::AirspyGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : m_rates = ((AirspyInput*) m_sampleSource)->getSampleRates(); displaySampleRates(); - connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } AirspyGui::~AirspyGui() @@ -128,42 +127,34 @@ bool AirspyGui::handleMessage(const Message& message __attribute__((unused))) // } } -void AirspyGui::handleDSPMessages() +void AirspyGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("AirspyGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("AirspyGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("AirspyGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("AirspyGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } -void AirspyGui::handleSourceMessages() -{ - Message* message; - - while ((message = m_sampleSource->getOutputMessageQueueToGUI()->pop()) != 0) - { - qDebug("AirspyGui::HandleSourceMessages: message: %s", message->getIdentifier()); - - if (handleMessage(*message)) - { - delete message; - } - } -} - void AirspyGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_sampleRate); diff --git a/plugins/samplesource/airspy/airspygui.h b/plugins/samplesource/airspy/airspygui.h index 475ea652b..145caca75 100644 --- a/plugins/samplesource/airspy/airspygui.h +++ b/plugins/samplesource/airspy/airspygui.h @@ -74,7 +74,6 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); void on_centerFrequency_changed(quint64 value); void on_LOppm_valueChanged(int value); void on_dcOffset_toggled(bool checked); @@ -92,7 +91,7 @@ private slots: void on_record_toggled(bool checked); void updateHardware(); void updateStatus(); - void handleSourceMessages(); + void handleInputMessages(); }; #endif // INCLUDE_AIRSPYGUI_H diff --git a/plugins/samplesource/bladerfinput/bladerfinputgui.cpp b/plugins/samplesource/bladerfinput/bladerfinputgui.cpp index b252a20d8..a753326a6 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputgui.cpp +++ b/plugins/samplesource/bladerfinput/bladerfinputgui.cpp @@ -59,7 +59,7 @@ BladerfInputGui::BladerfInputGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } BladerfInputGui::~BladerfInputGui() @@ -123,20 +123,20 @@ bool BladerfInputGui::handleMessage(const Message& message __attribute__((unused return false; } -void BladerfInputGui::handleDSPMessages() +void BladerfInputGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("BladerfGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("BladerfGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("BladerfGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("BladerfGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; diff --git a/plugins/samplesource/bladerfinput/bladerfinputgui.h b/plugins/samplesource/bladerfinput/bladerfinputgui.h index 686516bf6..234e29197 100644 --- a/plugins/samplesource/bladerfinput/bladerfinputgui.h +++ b/plugins/samplesource/bladerfinput/bladerfinputgui.h @@ -70,7 +70,7 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); + void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_sampleRate_changed(quint64 value); void on_dcOffset_toggled(bool checked); diff --git a/plugins/samplesource/fcdpro/fcdprogui.cpp b/plugins/samplesource/fcdpro/fcdprogui.cpp index 101857a44..0ffb02b08 100644 --- a/plugins/samplesource/fcdpro/fcdprogui.cpp +++ b/plugins/samplesource/fcdpro/fcdprogui.cpp @@ -142,7 +142,7 @@ FCDProGui::FCDProGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } FCDProGui::~FCDProGui() @@ -209,20 +209,20 @@ bool FCDProGui::handleMessage(const Message& message __attribute__((unused))) return false; } -void FCDProGui::handleDSPMessages() +void FCDProGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("FCDProGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("FCDProGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("FCDProGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("FCDProGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; diff --git a/plugins/samplesource/fcdpro/fcdprogui.h b/plugins/samplesource/fcdpro/fcdprogui.h index fa371b5e6..8d93580f3 100644 --- a/plugins/samplesource/fcdpro/fcdprogui.h +++ b/plugins/samplesource/fcdpro/fcdprogui.h @@ -70,7 +70,7 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); + void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_ppm_valueChanged(int value); void on_dcOffset_toggled(bool checked); diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp index cc1495186..1d2c56798 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.cpp +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.cpp @@ -60,7 +60,7 @@ FCDProPlusGui::FCDProPlusGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } FCDProPlusGui::~FCDProPlusGui() @@ -127,20 +127,20 @@ bool FCDProPlusGui::handleMessage(const Message& message __attribute__((unused)) return false; } -void FCDProPlusGui::handleDSPMessages() +void FCDProPlusGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("RTLSDRGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("RTLSDRGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("RTLSDRGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("RTLSDRGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; diff --git a/plugins/samplesource/fcdproplus/fcdproplusgui.h b/plugins/samplesource/fcdproplus/fcdproplusgui.h index 2a6d68b20..8628df0af 100644 --- a/plugins/samplesource/fcdproplus/fcdproplusgui.h +++ b/plugins/samplesource/fcdproplus/fcdproplusgui.h @@ -69,7 +69,7 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); + void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_dcOffset_toggled(bool checked); void on_iqImbalance_toggled(bool checked); diff --git a/plugins/samplesource/filesource/filesourcegui.cpp b/plugins/samplesource/filesource/filesourcegui.cpp index 1ff550c25..712a63b66 100644 --- a/plugins/samplesource/filesource/filesourcegui.cpp +++ b/plugins/samplesource/filesource/filesourcegui.cpp @@ -67,9 +67,8 @@ FileSourceGui::FileSourceGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : ui->playLoop->setEnabled(false); m_sampleSource = m_deviceAPI->getSampleSource(); - connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } FileSourceGui::~FileSourceGui() @@ -128,24 +127,31 @@ bool FileSourceGui::deserialize(const QByteArray& data) } } -void FileSourceGui::handleDSPMessages() +void FileSourceGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("FileSourceGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("FileSourceGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_deviceSampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("FileSourceGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("FileSourceGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } @@ -178,21 +184,6 @@ bool FileSourceGui::handleMessage(const Message& message) } } -void FileSourceGui::handleSourceMessages() -{ - Message* message; - - while ((message = m_sampleSource->getOutputMessageQueueToGUI()->pop()) != 0) - { - //qDebug("FileSourceGui::handleSourceMessages: message: %s", message->getIdentifier()); - - if (handleMessage(*message)) - { - delete message; - } - } -} - void FileSourceGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_deviceSampleRate); diff --git a/plugins/samplesource/filesource/filesourcegui.h b/plugins/samplesource/filesource/filesourcegui.h index 4f8aaf414..5b706ecd8 100644 --- a/plugins/samplesource/filesource/filesourcegui.h +++ b/plugins/samplesource/filesource/filesourcegui.h @@ -82,8 +82,7 @@ private: void updateWithStreamTime(); private slots: - void handleDSPMessages(); - void handleSourceMessages(); + void handleInputMessages(); void on_startStop_toggled(bool checked); void on_playLoop_toggled(bool checked); void on_play_toggled(bool checked); diff --git a/plugins/samplesource/filesource/filesourceinput.cpp b/plugins/samplesource/filesource/filesourceinput.cpp index 41ba249a9..a5738d48f 100644 --- a/plugins/samplesource/filesource/filesourceinput.cpp +++ b/plugins/samplesource/filesource/filesourceinput.cpp @@ -128,7 +128,10 @@ void FileSourceInput::openFileStream() m_centerFrequency, m_startingTimeStamp, m_recordLength); // file stream data - getOutputMessageQueueToGUI()->push(report); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(report); + } } void FileSourceInput::seekFileStream(int seekPercentage) @@ -178,7 +181,10 @@ bool FileSourceInput::start() qDebug("FileSourceInput::startInput: started"); MsgReportFileSourceAcquisition *report = MsgReportFileSourceAcquisition::create(true); // acquisition on - getOutputMessageQueueToGUI()->push(report); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(report); + } return true; } @@ -198,7 +204,10 @@ void FileSourceInput::stop() m_deviceDescription.clear(); MsgReportFileSourceAcquisition *report = MsgReportFileSourceAcquisition::create(false); // acquisition off - getOutputMessageQueueToGUI()->push(report); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(report); + } } const QString& FileSourceInput::getDeviceDescription() const @@ -268,7 +277,10 @@ bool FileSourceInput::handleMessage(const Message& message) if (m_fileSourceThread != 0) { report = MsgReportFileSourceStreamTiming::create(m_fileSourceThread->getSamplesCount()); - getOutputMessageQueueToGUI()->push(report); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(report); + } } return true; diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp index d02988959..f417219a1 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.cpp +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.cpp @@ -56,7 +56,7 @@ HackRFInputGui::HackRFInputGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); displayBandwidths(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); sendSettings(); } @@ -134,24 +134,31 @@ bool HackRFInputGui::handleMessage(const Message& message) } } -void HackRFInputGui::handleDSPMessages() +void HackRFInputGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("HackRFGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("HackRFGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("HackRFGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("HackRFGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } diff --git a/plugins/samplesource/hackrfinput/hackrfinputgui.h b/plugins/samplesource/hackrfinput/hackrfinputgui.h index 08f9e5cc7..6370ee2e7 100644 --- a/plugins/samplesource/hackrfinput/hackrfinputgui.h +++ b/plugins/samplesource/hackrfinput/hackrfinputgui.h @@ -80,7 +80,7 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); + void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_sampleRate_changed(quint64 value); void on_LOppm_valueChanged(int value); diff --git a/plugins/samplesource/limesdrinput/limesdrinputgui.cpp b/plugins/samplesource/limesdrinput/limesdrinputgui.cpp index f56c7e4a1..35b08d705 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputgui.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputgui.cpp @@ -75,7 +75,7 @@ LimeSDRInputGUI::LimeSDRInputGUI(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleMessagesToGUI()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } LimeSDRInputGUI::~LimeSDRInputGUI() @@ -142,26 +142,26 @@ bool LimeSDRInputGUI::handleMessage(const Message& message __attribute__((unused return false; } -void LimeSDRInputGUI::handleMessagesToGUI() +void LimeSDRInputGUI::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { + qDebug("LimeSDRInputGUI::handleInputMessages: message: %s", message->getIdentifier()); + if (DSPSignalNotification::match(*message)) { - qDebug("LimeSDRInputGUI::handleMessagesToGUI: message: %s", message->getIdentifier()); DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("LimeSDRInputGUI::handleMessagesToGUI: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("LimeSDRInputGUI::handleInputMessages: DSPSignalNotification: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; } else if (LimeSDRInput::MsgReportLimeSDRToGUI::match(*message)) { - qDebug("LimeSDRInputGUI::handleMessagesToGUI: message: %s", message->getIdentifier()); LimeSDRInput::MsgReportLimeSDRToGUI *report = (LimeSDRInput::MsgReportLimeSDRToGUI *) message; m_settings.m_centerFrequency = report->getCenterFrequency(); @@ -173,7 +173,7 @@ void LimeSDRInputGUI::handleMessagesToGUI() blockApplySettings(false); LimeSDRInput::MsgSetReferenceConfig* conf = LimeSDRInput::MsgSetReferenceConfig::create(m_settings); - m_sampleSource->getInputMessageQueue()->push(conf); + m_sampleSource->getInputMessageQueue()->push(conf); // TODO: remove from here should be done device to device delete message; } diff --git a/plugins/samplesource/limesdrinput/limesdrinputgui.h b/plugins/samplesource/limesdrinput/limesdrinputgui.h index 0277e11e7..c950bd751 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputgui.h +++ b/plugins/samplesource/limesdrinput/limesdrinputgui.h @@ -75,8 +75,7 @@ private: void blockApplySettings(bool block); private slots: - void handleMessagesToGUI(); - + void handleInputMessages(); void on_startStop_toggled(bool checked); void on_record_toggled(bool checked); void on_centerFrequency_changed(quint64 value); diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputgui.cpp b/plugins/samplesource/plutosdrinput/plutosdrinputgui.cpp index 4415a5b8c..809e042f8 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputgui.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinputgui.cpp @@ -66,7 +66,7 @@ PlutoSDRInputGui::PlutoSDRInputGui(DeviceSourceAPI *deviceAPI, QWidget* parent) connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); m_statusTimer.start(500); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } PlutoSDRInputGui::~PlutoSDRInputGui() @@ -385,24 +385,32 @@ void PlutoSDRInputGui::setSampleRateLimits() ui->sampleRate->setValue(m_settings.m_devSampleRate); } -void PlutoSDRInputGui::handleDSPMessages() +void PlutoSDRInputGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { + qDebug("LimeSDRInputGUI::handleInputMessages: message: %s", message->getIdentifier()); + if (DSPSignalNotification::match(*message)) { - qDebug("LimeSDRInputGUI::handleMessagesToGUI: message: %s", message->getIdentifier()); DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("LimeSDRInputGUI::handleMessagesToGUI: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("LimeSDRInputGUI::handleInputMessages: DSPSignalNotification: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); setFIRBWLimits(); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputgui.h b/plugins/samplesource/plutosdrinput/plutosdrinputgui.h index dd865e398..20c62ac04 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputgui.h +++ b/plugins/samplesource/plutosdrinput/plutosdrinputgui.h @@ -93,7 +93,7 @@ private slots: void on_antenna_currentIndexChanged(int index); void updateHardware(); void updateStatus(); - void handleDSPMessages(); + void handleInputMessages(); }; #endif /* PLUGINS_SAMPLESOURCE_PLUTOSDRINPUT_PLUTOSDRINPUTGUI_H_ */ diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 449dd9328..fd06f4887 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -51,8 +51,7 @@ RTLSDRGui::RTLSDRGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); - connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); queryDeviceReport(); // will reply with MsgReportRTLSDR to report gain list } @@ -144,42 +143,34 @@ bool RTLSDRGui::handleMessage(const Message& message) } } -void RTLSDRGui::handleDSPMessages() +void RTLSDRGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("RTLSDRGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("RTLSDRGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_sampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("RTLSDRGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("RTLSDRGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } -void RTLSDRGui::handleSourceMessages() -{ - Message* message; - - while ((message = m_sampleSource->getOutputMessageQueueToGUI()->pop()) != 0) - { - qDebug("RTLSDRGui::HandleSourceMessages: message: %s", message->getIdentifier()); - - if (handleMessage(*message)) - { - delete message; - } - } -} - void RTLSDRGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_sampleRate); diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h index 62aea490c..5575a31df 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.h +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h @@ -72,7 +72,7 @@ private: void updateSampleRateAndFrequency(); private slots: - void handleDSPMessages(); + void handleInputMessages(); void on_centerFrequency_changed(quint64 value); void on_sampleRate_changed(quint64 value); void on_lowSampleRate_toggled(bool checked); @@ -89,7 +89,6 @@ private slots: void on_record_toggled(bool checked); void updateHardware(); void updateStatus(); - void handleSourceMessages(); }; #endif // INCLUDE_RTLSDRGUI_H diff --git a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp index 76d61af94..e1feecf62 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrinput.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrinput.cpp @@ -256,7 +256,10 @@ bool RTLSDRInput::handleMessage(const Message& message) qDebug() << "RTLSDRInput::handleMessage: MsgQueryRTLSDR"; MsgReportRTLSDR *message = MsgReportRTLSDR::create(m_gains); - getOutputMessageQueueToGUI()->push(message); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(message); + } return true; } diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp index 608d4b022..34eb57b7b 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.cpp @@ -103,11 +103,10 @@ SDRdaemonSourceGui::SDRdaemonSourceGui(DeviceSourceAPI *deviceAPI, QWidget* pare connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware())); m_sampleSource = (SDRdaemonSourceInput*) m_deviceAPI->getSampleSource(); - connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); displaySettings(); - connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); m_eventsTime.start(); displayEventCounts(); @@ -253,44 +252,36 @@ bool SDRdaemonSourceGui::handleMessage(const Message& message) } } -void SDRdaemonSourceGui::handleDSPMessages() +void SDRdaemonSourceGui::handleInputMessages() { Message* message; - while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0) + while ((message = m_inputMessageQueue.pop()) != 0) { - qDebug("SDRdaemonGui::handleDSPMessages: message: %s", message->getIdentifier()); + qDebug("SDRdaemonGui::handleInputMessages: message: %s", message->getIdentifier()); if (DSPSignalNotification::match(*message)) { DSPSignalNotification* notif = (DSPSignalNotification*) message; m_deviceSampleRate = notif->getSampleRate(); m_deviceCenterFrequency = notif->getCenterFrequency(); - qDebug("SDRdaemonGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); + qDebug("SDRdaemonGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency()); updateSampleRateAndFrequency(); DSPSignalNotification *fwd = new DSPSignalNotification(*notif); m_sampleSource->getInputMessageQueue()->push(fwd); delete message; } + else + { + if (handleMessage(*message)) + { + delete message; + } + } } } -void SDRdaemonSourceGui::handleSourceMessages() -{ - Message* message; - - while ((message = m_sampleSource->getOutputMessageQueueToGUI()->pop()) != 0) - { - //qDebug("SDRdaemonGui::handleSourceMessages: message: %s", message->getIdentifier()); - - if (handleMessage(*message)) - { - delete message; - } - } -} - void SDRdaemonSourceGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_deviceSampleRate); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h index 3f5fae5cd..44cbaf9c4 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourcegui.h @@ -124,8 +124,7 @@ private: void displayEventTimer(); private slots: - void handleDSPMessages(); - void handleSourceMessages(); + void handleInputMessages(); void on_applyButton_clicked(bool checked); void on_dcOffset_toggled(bool checked); void on_iqImbalance_toggled(bool checked); diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp index 2b88f86fe..3f725d439 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.cpp @@ -52,7 +52,7 @@ SDRdaemonSourceInput::SDRdaemonSourceInput(DeviceSourceAPI *deviceAPI) : m_autoCorrBuffer(false) { m_sampleFifo.setSize(96000 * 4); - m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, getOutputMessageQueueToGUI(), m_deviceAPI); + m_SDRdaemonUDPHandler = new SDRdaemonSourceUDPHandler(&m_sampleFifo, getMessageQueueToGUI(), m_deviceAPI); m_SDRdaemonUDPHandler->connectTimer(&m_masterTimer); char recFileNameCStr[30]; @@ -181,3 +181,9 @@ bool SDRdaemonSourceInput::handleMessage(const Message& message) } } +void SDRdaemonSourceInput::setMessageQueueToGUI(MessageQueue *queue) +{ + DeviceSampleSource::setMessageQueueToGUI(queue); + m_SDRdaemonUDPHandler->setMessageQueueToGUI(queue); +} + diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h index 91de78fc8..e74f9fb1f 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceinput.h @@ -318,6 +318,8 @@ public: virtual bool handleMessage(const Message& message); + void setMessageQueueToGUI(MessageQueue *queue); + private: DeviceSourceAPI *m_deviceAPI; QMutex m_mutex; diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp index 2e3e8e8fb..f84f280c2 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.cpp @@ -179,7 +179,10 @@ void SDRdaemonSourceUDPHandler::processData() m_centerFrequency * 1000, // Frequency in Hz for the GUI m_tv_sec, m_tv_usec); - m_outputMessageQueueToGUI->push(report); + + if (m_outputMessageQueueToGUI) { + m_outputMessageQueueToGUI->push(report); + } } } @@ -258,6 +261,9 @@ void SDRdaemonSourceUDPHandler::tick() m_sdrDaemonBuffer.getAvgNbRecovery(), nbOriginalBlocks, nbFECblocks); - m_outputMessageQueueToGUI->push(report); + + if (m_outputMessageQueueToGUI) { + m_outputMessageQueueToGUI->push(report); + } } } diff --git a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h index 3513841c9..47cf5689f 100644 --- a/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h +++ b/plugins/samplesource/sdrdaemonsource/sdrdaemonsourceudphandler.h @@ -38,6 +38,7 @@ class SDRdaemonSourceUDPHandler : public QObject public: SDRdaemonSourceUDPHandler(SampleSinkFifo* sampleFifo, MessageQueue *outputMessageQueueToGUI, DeviceSourceAPI *deviceAPI); ~SDRdaemonSourceUDPHandler(); + void setMessageQueueToGUI(MessageQueue *queue) { m_outputMessageQueueToGUI = queue; } void connectTimer(const QTimer* timer); void start(); void stop(); diff --git a/plugins/samplesource/sdrplay/sdrplaygui.cpp b/plugins/samplesource/sdrplay/sdrplaygui.cpp index 926f0dd8d..11365daf3 100644 --- a/plugins/samplesource/sdrplay/sdrplaygui.cpp +++ b/plugins/samplesource/sdrplay/sdrplaygui.cpp @@ -69,9 +69,7 @@ SDRPlayGui::SDRPlayGui(DeviceSourceAPI *deviceAPI, QWidget* parent) : displaySettings(); -// connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); -// connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); - connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); + connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection); } SDRPlayGui::~SDRPlayGui() diff --git a/plugins/samplesource/sdrplay/sdrplayinput.cpp b/plugins/samplesource/sdrplay/sdrplayinput.cpp index a63965147..9e1224d36 100644 --- a/plugins/samplesource/sdrplay/sdrplayinput.cpp +++ b/plugins/samplesource/sdrplay/sdrplayinput.cpp @@ -319,7 +319,9 @@ bool SDRPlayInput::applySettings(const SDRPlaySettings& settings, bool forwardCh mirisdr_get_tuner_gain(m_dev) ); - getOutputMessageQueueToGUI()->push(message); + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(message); + } } } } @@ -418,7 +420,10 @@ bool SDRPlayInput::applySettings(const SDRPlaySettings& settings, bool forwardCh mirisdr_get_baseband_gain(m_dev), mirisdr_get_tuner_gain(m_dev) ); - getOutputMessageQueueToGUI()->push(message); + + if (getMessageQueueToGUI()) { + getMessageQueueToGUI()->push(message); + } } } diff --git a/sdrbase/dsp/devicesamplesource.h b/sdrbase/dsp/devicesamplesource.h index 15d29c900..dc04b98b3 100644 --- a/sdrbase/dsp/devicesamplesource.h +++ b/sdrbase/dsp/devicesamplesource.h @@ -44,7 +44,7 @@ public: MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; } MessageQueue *getMessageQueueToGUI() { return m_guiMessageQueue; } - MessageQueue *getOutputMessageQueueToGUI() { return &m_outputMessageQueueToGUI; } // TODO: remove + //MessageQueue *getOutputMessageQueueToGUI() { return &m_outputMessageQueueToGUI; } // TODO: remove SampleSinkFifo* getSampleFifo() { return &m_sampleFifo; } protected slots: diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index 128f61fbc..f552562e4 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -306,6 +306,7 @@ void MainWindow::removeLastDevice() // deletes old UI and input object m_deviceUIs.back()->m_deviceSourceAPI->freeChannels(); // destroys the channel instances + m_deviceUIs.back()->m_deviceSourceAPI->getSampleSource()->setMessageQueueToGUI(0); // have source stop sending messages to the GUI m_deviceUIs.back()->m_deviceSourceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI( m_deviceUIs.back()->m_deviceSourceAPI->getSampleSourcePluginInstanceGUI()); m_deviceUIs.back()->m_deviceSourceAPI->resetSampleSourceId(); @@ -844,6 +845,7 @@ void MainWindow::on_sampleSource_confirmClicked(bool checked __attribute__((unus deviceUI->m_deviceSourceAPI->stopAcquisition(); // deletes old UI and input object + deviceUI->m_deviceSourceAPI->getSampleSource()->setMessageQueueToGUI(0); // have source stop sending messages to the GUI deviceUI->m_deviceSourceAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI(deviceUI->m_deviceSourceAPI->getSampleSourcePluginInstanceGUI()); deviceUI->m_deviceSourceAPI->resetSampleSourceId(); deviceUI->m_deviceSourceAPI->clearBuddiesLists(); // clear old API buddies lists