From b399cc0dd4675f75d585da61cc350d6dabb83da0 Mon Sep 17 00:00:00 2001 From: f4exb Date: Thu, 12 May 2016 12:29:12 +0200 Subject: [PATCH] Multi device support: Changed aligned FileSource --- .../samplesource/filesource/filesourcegui.cpp | 33 +++++++++++ .../samplesource/filesource/filesourcegui.h | 4 ++ .../samplesource/filesource/filesourcegui.ui | 57 ++++++++++++++----- 3 files changed, 81 insertions(+), 13 deletions(-) diff --git a/plugins/samplesource/filesource/filesourcegui.cpp b/plugins/samplesource/filesource/filesourcegui.cpp index dce8904a9..879c93fd7 100644 --- a/plugins/samplesource/filesource/filesourcegui.cpp +++ b/plugins/samplesource/filesource/filesourcegui.cpp @@ -25,7 +25,10 @@ #include "ui_filesourcegui.h" #include "plugin/pluginapi.h" #include "gui/colormapper.h" +#include "gui/glspectrum.h" #include "dsp/dspengine.h" +#include "dsp/dspcommands.h" + #include "mainwindow.h" #include "filesourcegui.h" @@ -65,6 +68,8 @@ FileSourceGui::FileSourceGui(PluginAPI* pluginAPI, QWidget* parent) : m_sampleSource = new FileSourceInput(m_pluginAPI->getMainWindow()->getMasterTimer()); connect(m_sampleSource->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages())); DSPEngine::instance()->setSource(m_sampleSource); + + connect(m_pluginAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } FileSourceGui::~FileSourceGui() @@ -123,6 +128,27 @@ bool FileSourceGui::deserialize(const QByteArray& data) } } +void FileSourceGui::handleDSPMessages() +{ + Message* message; + + while ((message = m_pluginAPI->getDeviceOutputMessageQueue()->pop()) != 0) + { + qDebug("FileSourceGui::handleDSPMessages: 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()); + updateSampleRateAndFrequency(); + + delete message; + } + } +} + bool FileSourceGui::handleMessage(const Message& message) { if (FileSourceInput::MsgReportFileSourceAcquisition::match(message)) @@ -167,6 +193,13 @@ void FileSourceGui::handleSourceMessages() } } +void FileSourceGui::updateSampleRateAndFrequency() +{ + m_pluginAPI->getSpectrum()->setSampleRate(m_sampleRate); + m_pluginAPI->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency); + ui->deviceRateText->setText(tr("%1k").arg((float)m_sampleRate / 1000)); +} + void FileSourceGui::displaySettings() { } diff --git a/plugins/samplesource/filesource/filesourcegui.h b/plugins/samplesource/filesource/filesourcegui.h index 3f642e513..41098a368 100644 --- a/plugins/samplesource/filesource/filesourcegui.h +++ b/plugins/samplesource/filesource/filesourcegui.h @@ -63,17 +63,21 @@ private: int m_samplesCount; std::size_t m_tickCount; bool m_enableNavTime; + int m_deviceSampleRate; + quint64 m_deviceCenterFrequency; //!< Center frequency in device int m_lastEngineState; void displaySettings(); void displayTime(); void sendSettings(); + void updateSampleRateAndFrequency(); void configureFileName(); void updateWithAcquisition(); void updateWithStreamData(); void updateWithStreamTime(); private slots: + void handleDSPMessages(); void handleSourceMessages(); void on_startStop_toggled(bool checked); void on_playLoop_toggled(bool checked); diff --git a/plugins/samplesource/filesource/filesourcegui.ui b/plugins/samplesource/filesource/filesourcegui.ui index 5f2ae6cdd..023821f02 100644 --- a/plugins/samplesource/filesource/filesourcegui.ui +++ b/plugins/samplesource/filesource/filesourcegui.ui @@ -35,19 +35,50 @@ - - - start/stop acquisition - - - - - - - :/play.png - :/stop.png:/play.png - - + + + + + + + start/stop acquisition + + + + + + + :/play.png + :/stop.png:/play.png + + + + + + + + + + + + 50 + 0 + + + + I/Q sample rate kS/s + + + 00000k + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + +