mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-29 03:09:14 -05:00
Finalized the new source/sink GUI messaging scheme
This commit is contained in:
parent
2af1f56fea
commit
512900d98c
@ -62,7 +62,7 @@ BladerfOutputGui::BladerfOutputGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
|
|||||||
char recFileNameCStr[30];
|
char recFileNameCStr[30];
|
||||||
sprintf(recFileNameCStr, "test_%d.sdriq", m_deviceAPI->getDeviceUID());
|
sprintf(recFileNameCStr, "test_%d.sdriq", m_deviceAPI->getDeviceUID());
|
||||||
|
|
||||||
connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
BladerfOutputGui::~BladerfOutputGui()
|
BladerfOutputGui::~BladerfOutputGui()
|
||||||
@ -134,24 +134,31 @@ bool BladerfOutputGui::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BladerfOutputGui::handleDSPMessages()
|
void BladerfOutputGui::handleInputMessages()
|
||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
|
|
||||||
while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0)
|
while ((message = m_inputMessageQueue.pop()) != 0)
|
||||||
{
|
{
|
||||||
qDebug("BladerfOutputGui::handleDSPMessages: message: %s", message->getIdentifier());
|
qDebug("BladerfOutputGui::handleInputMessages: message: %s", message->getIdentifier());
|
||||||
|
|
||||||
if (DSPSignalNotification::match(*message))
|
if (DSPSignalNotification::match(*message))
|
||||||
{
|
{
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
m_sampleRate = notif->getSampleRate();
|
m_sampleRate = notif->getSampleRate();
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
m_deviceCenterFrequency = notif->getCenterFrequency();
|
||||||
qDebug("BladerfOutputGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
qDebug("BladerfOutputGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (handleMessage(*message))
|
||||||
|
{
|
||||||
|
delete message;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ private:
|
|||||||
void updateSampleRateAndFrequency();
|
void updateSampleRateAndFrequency();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleDSPMessages();
|
void handleInputMessages();
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_sampleRate_changed(quint64 value);
|
void on_sampleRate_changed(quint64 value);
|
||||||
void on_bandwidth_currentIndexChanged(int index);
|
void on_bandwidth_currentIndexChanged(int index);
|
||||||
|
@ -66,9 +66,7 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
|
|||||||
displaySettings();
|
displaySettings();
|
||||||
|
|
||||||
m_deviceSampleSink = (FileSinkOutput*) m_deviceAPI->getSampleSink();
|
m_deviceSampleSink = (FileSinkOutput*) m_deviceAPI->getSampleSink();
|
||||||
connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
|
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
|
||||||
|
|
||||||
connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FileSinkGui::~FileSinkGui()
|
FileSinkGui::~FileSinkGui()
|
||||||
@ -147,40 +145,32 @@ bool FileSinkGui::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSinkGui::handleDSPMessages()
|
void FileSinkGui::handleInputMessages()
|
||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
|
|
||||||
while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0)
|
while ((message = m_inputMessageQueue.pop()) != 0)
|
||||||
{
|
{
|
||||||
qDebug("FileSinkGui::handleDSPMessages: message: %s", message->getIdentifier());
|
qDebug("FileSinkGui::handleInputMessages: message: %s", message->getIdentifier());
|
||||||
|
|
||||||
if (DSPSignalNotification::match(*message))
|
if (DSPSignalNotification::match(*message))
|
||||||
{
|
{
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
qDebug("FileSinkGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
qDebug("FileSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
m_sampleRate = notif->getSampleRate();
|
m_sampleRate = notif->getSampleRate();
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
m_deviceCenterFrequency = notif->getCenterFrequency();
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
}
|
|
||||||
|
|
||||||
void FileSinkGui::handleSinkMessages()
|
|
||||||
{
|
|
||||||
Message* message;
|
|
||||||
|
|
||||||
while ((message = m_deviceSampleSink->getOutputMessageQueueToGUI()->pop()) != 0)
|
|
||||||
{
|
{
|
||||||
//qDebug("FileSourceGui::handleSourceMessages: message: %s", message->getIdentifier());
|
|
||||||
|
|
||||||
if (handleMessage(*message))
|
if (handleMessage(*message))
|
||||||
{
|
{
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileSinkGui::updateSampleRateAndFrequency()
|
void FileSinkGui::updateSampleRateAndFrequency()
|
||||||
|
@ -80,8 +80,7 @@ private:
|
|||||||
void updateSampleRateAndFrequency();
|
void updateSampleRateAndFrequency();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleDSPMessages();
|
void handleInputMessages();
|
||||||
void handleSinkMessages();
|
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_sampleRate_changed(quint64 value);
|
void on_sampleRate_changed(quint64 value);
|
||||||
void on_startStop_toggled(bool checked);
|
void on_startStop_toggled(bool checked);
|
||||||
|
@ -56,7 +56,7 @@ HackRFOutputGui::HackRFOutputGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
|
|||||||
displaySettings();
|
displaySettings();
|
||||||
displayBandwidths();
|
displayBandwidths();
|
||||||
|
|
||||||
connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
HackRFOutputGui::~HackRFOutputGui()
|
HackRFOutputGui::~HackRFOutputGui()
|
||||||
@ -131,20 +131,20 @@ bool HackRFOutputGui::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HackRFOutputGui::handleDSPMessages()
|
void HackRFOutputGui::handleInputMessages()
|
||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
|
|
||||||
while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0)
|
while ((message = m_inputMessageQueue.pop()) != 0)
|
||||||
{
|
{
|
||||||
qDebug("HackRFOutputGui::handleDSPMessages: message: %s", message->getIdentifier());
|
qDebug("HackRFOutputGui::handleInputMessages: message: %s", message->getIdentifier());
|
||||||
|
|
||||||
if (DSPSignalNotification::match(*message))
|
if (DSPSignalNotification::match(*message))
|
||||||
{
|
{
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
m_sampleRate = notif->getSampleRate();
|
m_sampleRate = notif->getSampleRate();
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
m_deviceCenterFrequency = notif->getCenterFrequency();
|
||||||
qDebug("HackRFOutputGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
qDebug("HackRFOutputGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
@ -156,6 +156,13 @@ void HackRFOutputGui::handleDSPMessages()
|
|||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (handleMessage(*message))
|
||||||
|
{
|
||||||
|
delete message;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ private:
|
|||||||
void updateSampleRateAndFrequency();
|
void updateSampleRateAndFrequency();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleDSPMessages();
|
void handleInputMessages();
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_sampleRate_changed(quint64 value);
|
void on_sampleRate_changed(quint64 value);
|
||||||
void on_LOppm_valueChanged(int value);
|
void on_LOppm_valueChanged(int value);
|
||||||
|
@ -427,6 +427,8 @@ bool LimeSDROutput::handleMessage(const Message& message)
|
|||||||
lms_stream_status_t status;
|
lms_stream_status_t status;
|
||||||
|
|
||||||
if (m_streamId.handle && (LMS_GetStreamStatus(&m_streamId, &status) == 0))
|
if (m_streamId.handle && (LMS_GetStreamStatus(&m_streamId, &status) == 0))
|
||||||
|
{
|
||||||
|
if (m_deviceAPI->getSampleSinkGUIMessageQueue())
|
||||||
{
|
{
|
||||||
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
||||||
true, // Success
|
true, // Success
|
||||||
@ -439,9 +441,12 @@ bool LimeSDROutput::handleMessage(const Message& message)
|
|||||||
status.sampleRate,
|
status.sampleRate,
|
||||||
status.linkRate,
|
status.linkRate,
|
||||||
status.timestamp);
|
status.timestamp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
m_deviceAPI->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_deviceAPI->getSampleSinkGUIMessageQueue())
|
||||||
{
|
{
|
||||||
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
||||||
false, // Success
|
false, // Success
|
||||||
@ -454,7 +459,8 @@ bool LimeSDROutput::handleMessage(const Message& message)
|
|||||||
0, // status.sampleRate,
|
0, // status.sampleRate,
|
||||||
0, // status.linkRate,
|
0, // status.linkRate,
|
||||||
0); // status.timestamp);
|
0); // status.timestamp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
m_deviceAPI->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -473,17 +479,22 @@ bool LimeSDROutput::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send to oneself
|
// send to oneself
|
||||||
|
if (getMessageQueueToGUI()) {
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
getMessageQueueToGUI()->push(report);
|
||||||
|
}
|
||||||
|
|
||||||
// send to source buddies
|
// send to source buddies
|
||||||
const std::vector<DeviceSourceAPI*>& sourceBuddies = m_deviceAPI->getSourceBuddies();
|
const std::vector<DeviceSourceAPI*>& sourceBuddies = m_deviceAPI->getSourceBuddies();
|
||||||
std::vector<DeviceSourceAPI*>::const_iterator itSource = sourceBuddies.begin();
|
std::vector<DeviceSourceAPI*>::const_iterator itSource = sourceBuddies.begin();
|
||||||
|
|
||||||
for (; itSource != sourceBuddies.end(); ++itSource)
|
for (; itSource != sourceBuddies.end(); ++itSource)
|
||||||
|
{
|
||||||
|
if ((*itSource)->getSampleSourceGUIMessageQueue())
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
(*itSource)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send to sink buddies
|
// send to sink buddies
|
||||||
@ -491,9 +502,12 @@ bool LimeSDROutput::handleMessage(const Message& message)
|
|||||||
std::vector<DeviceSinkAPI*>::const_iterator itSink = sinkBuddies.begin();
|
std::vector<DeviceSinkAPI*>::const_iterator itSink = sinkBuddies.begin();
|
||||||
|
|
||||||
for (; itSink != sinkBuddies.end(); ++itSink)
|
for (; itSink != sinkBuddies.end(); ++itSink)
|
||||||
|
{
|
||||||
|
if ((*itSink)->getSampleSinkGUIMessageQueue())
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
(*itSink)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -903,11 +917,15 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo
|
|||||||
m_settings.m_devSampleRate/(1<<buddyLog2SoftInterp),
|
m_settings.m_devSampleRate/(1<<buddyLog2SoftInterp),
|
||||||
m_settings.m_centerFrequency + buddyNCOFreq); // do not change center frequency
|
m_settings.m_centerFrequency + buddyNCOFreq); // do not change center frequency
|
||||||
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSink)->getSampleSinkGUIMessageQueue())
|
||||||
|
{
|
||||||
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
||||||
m_settings.m_centerFrequency,
|
m_settings.m_centerFrequency,
|
||||||
m_settings.m_devSampleRate,
|
m_settings.m_devSampleRate,
|
||||||
m_settings.m_log2HardInterp);
|
m_settings.m_log2HardInterp);
|
||||||
(*itSink)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send to source buddies
|
// send to source buddies
|
||||||
@ -924,8 +942,12 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo
|
|||||||
m_settings.m_devSampleRate/(1<<buddyLog2SoftDecim),
|
m_settings.m_devSampleRate/(1<<buddyLog2SoftDecim),
|
||||||
buddyCenterFreq + buddyNCOFreq);
|
buddyCenterFreq + buddyNCOFreq);
|
||||||
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSource)->getSampleSourceGUIMessageQueue())
|
||||||
|
{
|
||||||
DeviceLimeSDRShared::MsgCrossReportToGUI *report = DeviceLimeSDRShared::MsgCrossReportToGUI::create(m_settings.m_devSampleRate);
|
DeviceLimeSDRShared::MsgCrossReportToGUI *report = DeviceLimeSDRShared::MsgCrossReportToGUI::create(m_settings.m_devSampleRate);
|
||||||
(*itSource)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (forwardChangeTxDSP)
|
else if (forwardChangeTxDSP)
|
||||||
@ -950,11 +972,15 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo
|
|||||||
int buddyNCOFreq = buddySharedPtr->m_ncoFrequency;
|
int buddyNCOFreq = buddySharedPtr->m_ncoFrequency;
|
||||||
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, buddyCenterFreq + buddyNCOFreq); // do not change center frequency
|
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, buddyCenterFreq + buddyNCOFreq); // do not change center frequency
|
||||||
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSink)->getSampleSinkGUIMessageQueue())
|
||||||
|
{
|
||||||
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
||||||
m_settings.m_centerFrequency,
|
m_settings.m_centerFrequency,
|
||||||
m_settings.m_devSampleRate,
|
m_settings.m_devSampleRate,
|
||||||
m_settings.m_log2HardInterp);
|
m_settings.m_log2HardInterp);
|
||||||
(*itSink)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (forwardChangeOwnDSP)
|
else if (forwardChangeOwnDSP)
|
||||||
|
@ -75,7 +75,7 @@ LimeSDROutputGUI::LimeSDROutputGUI(DeviceSinkAPI *deviceAPI, QWidget* parent) :
|
|||||||
char recFileNameCStr[30];
|
char recFileNameCStr[30];
|
||||||
sprintf(recFileNameCStr, "test_%d.sdriq", m_deviceAPI->getDeviceUID());
|
sprintf(recFileNameCStr, "test_%d.sdriq", m_deviceAPI->getDeviceUID());
|
||||||
|
|
||||||
connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleMessagesToGUI()), Qt::QueuedConnection);
|
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
LimeSDROutputGUI::~LimeSDROutputGUI()
|
LimeSDROutputGUI::~LimeSDROutputGUI()
|
||||||
@ -137,100 +137,110 @@ bool LimeSDROutputGUI::deserialize(const QByteArray& data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LimeSDROutputGUI::handleMessage(const Message& message __attribute__((unused))) // TODO: does not seem to be really useful in any of the source (+sink?) plugins
|
bool LimeSDROutputGUI::handleMessage(const Message& message)
|
||||||
{
|
{
|
||||||
return false;
|
if (LimeSDROutput::MsgReportLimeSDRToGUI::match(message))
|
||||||
}
|
|
||||||
|
|
||||||
void LimeSDROutputGUI::handleMessagesToGUI()
|
|
||||||
{
|
|
||||||
Message* message;
|
|
||||||
|
|
||||||
while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0)
|
|
||||||
{
|
{
|
||||||
if (DSPSignalNotification::match(*message))
|
qDebug("LimeSDROutputGUI::handleMessagesToGUI: message: %s", message.getIdentifier());
|
||||||
{
|
LimeSDROutput::MsgReportLimeSDRToGUI& report = (LimeSDROutput::MsgReportLimeSDRToGUI&) message;
|
||||||
qDebug("LimeSDROutputGUI::handleMessagesToGUI: message: %s", message->getIdentifier());
|
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
|
||||||
m_sampleRate = notif->getSampleRate();
|
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
|
||||||
qDebug("LimeSDROutputGUI::handleMessagesToGUI: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency());
|
|
||||||
updateSampleRateAndFrequency();
|
|
||||||
|
|
||||||
delete message;
|
m_settings.m_centerFrequency = report.getCenterFrequency();
|
||||||
}
|
m_settings.m_devSampleRate = report.getSampleRate();
|
||||||
else if (LimeSDROutput::MsgReportLimeSDRToGUI::match(*message))
|
m_settings.m_log2HardInterp = report.getLog2HardInterp();
|
||||||
{
|
|
||||||
qDebug("LimeSDROutputGUI::handleMessagesToGUI: message: %s", message->getIdentifier());
|
|
||||||
LimeSDROutput::MsgReportLimeSDRToGUI *report = (LimeSDROutput::MsgReportLimeSDRToGUI *) message;
|
|
||||||
|
|
||||||
m_settings.m_centerFrequency = report->getCenterFrequency();
|
|
||||||
m_settings.m_devSampleRate = report->getSampleRate();
|
|
||||||
m_settings.m_log2HardInterp = report->getLog2HardInterp();
|
|
||||||
|
|
||||||
blockApplySettings(true);
|
blockApplySettings(true);
|
||||||
displaySettings();
|
displaySettings();
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
|
|
||||||
LimeSDROutput::MsgSetReferenceConfig* conf = LimeSDROutput::MsgSetReferenceConfig::create(m_settings);
|
LimeSDROutput::MsgSetReferenceConfig* conf = LimeSDROutput::MsgSetReferenceConfig::create(m_settings);
|
||||||
m_sampleSink->getInputMessageQueue()->push(conf);
|
m_sampleSink->getInputMessageQueue()->push(conf); // TODO: remove from here should be done device to device
|
||||||
|
|
||||||
delete message;
|
return true;
|
||||||
}
|
}
|
||||||
else if (DeviceLimeSDRShared::MsgCrossReportToGUI::match(*message))
|
else if (DeviceLimeSDRShared::MsgCrossReportToGUI::match(message))
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgCrossReportToGUI *report = (DeviceLimeSDRShared::MsgCrossReportToGUI *) message;
|
DeviceLimeSDRShared::MsgCrossReportToGUI& report = (DeviceLimeSDRShared::MsgCrossReportToGUI&) message;
|
||||||
m_settings.m_devSampleRate = report->getSampleRate();
|
m_settings.m_devSampleRate = report.getSampleRate();
|
||||||
|
|
||||||
blockApplySettings(true);
|
blockApplySettings(true);
|
||||||
displaySettings();
|
displaySettings();
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
|
|
||||||
LimeSDROutput::MsgSetReferenceConfig* conf = LimeSDROutput::MsgSetReferenceConfig::create(m_settings);
|
LimeSDROutput::MsgSetReferenceConfig* conf = LimeSDROutput::MsgSetReferenceConfig::create(m_settings);
|
||||||
m_sampleSink->getInputMessageQueue()->push(conf);
|
m_sampleSink->getInputMessageQueue()->push(conf); // TODO: remove from here should be done device to device
|
||||||
|
|
||||||
delete message;
|
return true;
|
||||||
}
|
}
|
||||||
else if (LimeSDROutput::MsgReportStreamInfo::match(*message))
|
else if (LimeSDROutput::MsgReportStreamInfo::match(message))
|
||||||
{
|
{
|
||||||
LimeSDROutput::MsgReportStreamInfo *report = (LimeSDROutput::MsgReportStreamInfo *) message;
|
LimeSDROutput::MsgReportStreamInfo& report = (LimeSDROutput::MsgReportStreamInfo&) message;
|
||||||
|
|
||||||
if (report->getSuccess())
|
if (report.getSuccess())
|
||||||
{
|
{
|
||||||
ui->streamStatusLabel->setStyleSheet("QLabel { background-color : green; }");
|
ui->streamStatusLabel->setStyleSheet("QLabel { background-color : green; }");
|
||||||
ui->streamLinkRateText->setText(tr("%1 MB/s").arg(QString::number(report->getLinkRate() / 1000000.0f, 'f', 3)));
|
ui->streamLinkRateText->setText(tr("%1 MB/s").arg(QString::number(report.getLinkRate() / 1000000.0f, 'f', 3)));
|
||||||
|
|
||||||
if (report->getUnderrun() > 0) {
|
if (report.getUnderrun() > 0) {
|
||||||
ui->underrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
ui->underrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
} else {
|
} else {
|
||||||
ui->underrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
ui->underrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (report->getOverrun() > 0) {
|
if (report.getOverrun() > 0) {
|
||||||
ui->overrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
ui->overrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
} else {
|
} else {
|
||||||
ui->overrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
ui->overrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (report->getDroppedPackets() > 0) {
|
if (report.getDroppedPackets() > 0) {
|
||||||
ui->droppedLabel->setStyleSheet("QLabel { background-color : red; }");
|
ui->droppedLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
} else {
|
} else {
|
||||||
ui->droppedLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
ui->droppedLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->fifoBar->setMaximum(report->getFifoSize());
|
ui->fifoBar->setMaximum(report.getFifoSize());
|
||||||
ui->fifoBar->setValue(report->getFifoFilledCount());
|
ui->fifoBar->setValue(report.getFifoFilledCount());
|
||||||
ui->fifoBar->setToolTip(tr("FIFO fill %1/%2 samples").arg(QString::number(report->getFifoFilledCount())).arg(QString::number(report->getFifoSize())));
|
ui->fifoBar->setToolTip(tr("FIFO fill %1/%2 samples").arg(QString::number(report.getFifoFilledCount())).arg(QString::number(report.getFifoSize())));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->streamStatusLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
ui->streamStatusLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (DeviceLimeSDRShared::MsgReportDeviceInfo::match(*message))
|
else if (DeviceLimeSDRShared::MsgReportDeviceInfo::match(message))
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = (DeviceLimeSDRShared::MsgReportDeviceInfo *) message;
|
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
|
||||||
ui->temperatureText->setText(tr("%1C").arg(QString::number(report->getTemperature(), 'f', 0)));
|
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0)));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LimeSDROutputGUI::handleInputMessages()
|
||||||
|
{
|
||||||
|
Message* message;
|
||||||
|
|
||||||
|
while ((message = m_inputMessageQueue.pop()) != 0)
|
||||||
|
{
|
||||||
|
if (DSPSignalNotification::match(*message))
|
||||||
|
{
|
||||||
|
qDebug("LimeSDROutputGUI::handleInputMessages: message: %s", message->getIdentifier());
|
||||||
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
|
m_sampleRate = notif->getSampleRate();
|
||||||
|
m_deviceCenterFrequency = notif->getCenterFrequency();
|
||||||
|
qDebug("LimeSDROutputGUI::handleInputMessages: DSPSignalNotification: SampleRate: %d, CenterFrequency: %llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
|
delete message;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (handleMessage(*message)) {
|
||||||
|
delete message;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,8 +76,7 @@ private:
|
|||||||
void blockApplySettings(bool block);
|
void blockApplySettings(bool block);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleMessagesToGUI();
|
void handleInputMessages();
|
||||||
|
|
||||||
void on_startStop_toggled(bool checked);
|
void on_startStop_toggled(bool checked);
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_ncoFrequency_changed(quint64 value);
|
void on_ncoFrequency_changed(quint64 value);
|
||||||
|
@ -84,9 +84,8 @@ SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) :
|
|||||||
m_statusTimer.start(500);
|
m_statusTimer.start(500);
|
||||||
|
|
||||||
m_deviceSampleSink = (SDRdaemonSinkOutput*) m_deviceAPI->getSampleSink();
|
m_deviceSampleSink = (SDRdaemonSinkOutput*) m_deviceAPI->getSampleSink();
|
||||||
connect(m_deviceSampleSink->getOutputMessageQueueToGUI(), SIGNAL(messageEnqueued()), this, SLOT(handleSinkMessages()));
|
|
||||||
|
|
||||||
connect(m_deviceAPI->getDeviceEngineOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
|
||||||
|
|
||||||
m_time.start();
|
m_time.start();
|
||||||
displayEventCounts();
|
displayEventCounts();
|
||||||
@ -183,40 +182,31 @@ bool SDRdaemonSinkGui::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDRdaemonSinkGui::handleDSPMessages()
|
void SDRdaemonSinkGui::handleInputMessages()
|
||||||
{
|
{
|
||||||
Message* message;
|
Message* message;
|
||||||
|
|
||||||
while ((message = m_deviceAPI->getDeviceEngineOutputMessageQueue()->pop()) != 0)
|
while ((message = m_inputMessageQueue.pop()) != 0)
|
||||||
{
|
{
|
||||||
qDebug("SDRdaemonSinkGui::handleDSPMessages: message: %s", message->getIdentifier());
|
qDebug("SDRdaemonSinkGui::handleInputMessages: message: %s", message->getIdentifier());
|
||||||
|
|
||||||
if (DSPSignalNotification::match(*message))
|
if (DSPSignalNotification::match(*message))
|
||||||
{
|
{
|
||||||
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
DSPSignalNotification* notif = (DSPSignalNotification*) message;
|
||||||
qDebug("SDRdaemonSinkGui::handleDSPMessages: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
qDebug("SDRdaemonSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
|
||||||
m_sampleRate = notif->getSampleRate();
|
m_sampleRate = notif->getSampleRate();
|
||||||
m_deviceCenterFrequency = notif->getCenterFrequency();
|
m_deviceCenterFrequency = notif->getCenterFrequency();
|
||||||
updateSampleRateAndFrequency();
|
updateSampleRateAndFrequency();
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
}
|
|
||||||
|
|
||||||
void SDRdaemonSinkGui::handleSinkMessages()
|
|
||||||
{
|
|
||||||
Message* message;
|
|
||||||
|
|
||||||
while ((message = m_deviceSampleSink->getOutputMessageQueueToGUI()->pop()) != 0)
|
|
||||||
{
|
|
||||||
//qDebug("FileSourceGui::handleSourceMessages: message: %s", message->getIdentifier());
|
|
||||||
|
|
||||||
if (handleMessage(*message))
|
|
||||||
{
|
{
|
||||||
|
if (handleMessage(*message)) {
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDRdaemonSinkGui::updateSampleRateAndFrequency()
|
void SDRdaemonSinkGui::updateSampleRateAndFrequency()
|
||||||
|
@ -96,8 +96,7 @@ private:
|
|||||||
void displayEventTimer();
|
void displayEventTimer();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void handleDSPMessages();
|
void handleInputMessages();
|
||||||
void handleSinkMessages();
|
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_sampleRate_changed(quint64 value);
|
void on_sampleRate_changed(quint64 value);
|
||||||
void on_interp_currentIndexChanged(int index);
|
void on_interp_currentIndexChanged(int index);
|
||||||
|
@ -312,8 +312,13 @@ bool HackRFInput::applySettings(const HackRFInputSettings& settings, bool force)
|
|||||||
if (m_settings.m_linkTxFrequency && (m_deviceAPI->getSinkBuddies().size() > 0))
|
if (m_settings.m_linkTxFrequency && (m_deviceAPI->getSinkBuddies().size() > 0))
|
||||||
{
|
{
|
||||||
DeviceSinkAPI *buddy = m_deviceAPI->getSinkBuddies()[0];
|
DeviceSinkAPI *buddy = m_deviceAPI->getSinkBuddies()[0];
|
||||||
|
|
||||||
|
if (buddy->getSampleSinkGUIMessageQueue())
|
||||||
|
{
|
||||||
DeviceHackRFShared::MsgConfigureFrequencyDelta *deltaMsg = DeviceHackRFShared::MsgConfigureFrequencyDelta::create(settings.m_centerFrequency - m_settings.m_centerFrequency);
|
DeviceHackRFShared::MsgConfigureFrequencyDelta *deltaMsg = DeviceHackRFShared::MsgConfigureFrequencyDelta::create(settings.m_centerFrequency - m_settings.m_centerFrequency);
|
||||||
buddy->getDeviceEngineOutputMessageQueue()->push(deltaMsg);
|
buddy->getSampleSinkGUIMessageQueue()->push(deltaMsg);
|
||||||
|
}
|
||||||
|
// TODO: send to buddy sample sink
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,6 +425,8 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
lms_stream_status_t status;
|
lms_stream_status_t status;
|
||||||
|
|
||||||
if (m_streamId.handle && (LMS_GetStreamStatus(&m_streamId, &status) == 0))
|
if (m_streamId.handle && (LMS_GetStreamStatus(&m_streamId, &status) == 0))
|
||||||
|
{
|
||||||
|
if (m_deviceAPI->getSampleSourceGUIMessageQueue())
|
||||||
{
|
{
|
||||||
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
||||||
true, // Success
|
true, // Success
|
||||||
@ -437,9 +439,12 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
status.sampleRate,
|
status.sampleRate,
|
||||||
status.linkRate,
|
status.linkRate,
|
||||||
status.timestamp);
|
status.timestamp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (m_deviceAPI->getSampleSourceGUIMessageQueue())
|
||||||
{
|
{
|
||||||
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
MsgReportStreamInfo *report = MsgReportStreamInfo::create(
|
||||||
false, // Success
|
false, // Success
|
||||||
@ -452,7 +457,8 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
0, // status.sampleRate,
|
0, // status.sampleRate,
|
||||||
0, // status.linkRate,
|
0, // status.linkRate,
|
||||||
0); // status.timestamp);
|
0); // status.timestamp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -471,17 +477,22 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send to oneself
|
// send to oneself
|
||||||
|
if (m_deviceAPI->getSampleSourceGUIMessageQueue()) {
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
m_deviceAPI->getDeviceEngineOutputMessageQueue()->push(report);
|
m_deviceAPI->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
|
|
||||||
// send to source buddies
|
// send to source buddies
|
||||||
const std::vector<DeviceSourceAPI*>& sourceBuddies = m_deviceAPI->getSourceBuddies();
|
const std::vector<DeviceSourceAPI*>& sourceBuddies = m_deviceAPI->getSourceBuddies();
|
||||||
std::vector<DeviceSourceAPI*>::const_iterator itSource = sourceBuddies.begin();
|
std::vector<DeviceSourceAPI*>::const_iterator itSource = sourceBuddies.begin();
|
||||||
|
|
||||||
for (; itSource != sourceBuddies.end(); ++itSource)
|
for (; itSource != sourceBuddies.end(); ++itSource)
|
||||||
|
{
|
||||||
|
if ((*itSource)->getSampleSourceGUIMessageQueue())
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
(*itSource)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send to sink buddies
|
// send to sink buddies
|
||||||
@ -489,9 +500,12 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
std::vector<DeviceSinkAPI*>::const_iterator itSink = sinkBuddies.begin();
|
std::vector<DeviceSinkAPI*>::const_iterator itSink = sinkBuddies.begin();
|
||||||
|
|
||||||
for (; itSink != sinkBuddies.end(); ++itSink)
|
for (; itSink != sinkBuddies.end(); ++itSink)
|
||||||
|
{
|
||||||
|
if ((*itSink)->getSampleSinkGUIMessageQueue())
|
||||||
{
|
{
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp);
|
||||||
(*itSink)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1065,11 +1079,15 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc
|
|||||||
m_settings.m_devSampleRate/(1<<buddyLog2Decim),
|
m_settings.m_devSampleRate/(1<<buddyLog2Decim),
|
||||||
m_settings.m_centerFrequency + buddyNCOFreq);
|
m_settings.m_centerFrequency + buddyNCOFreq);
|
||||||
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSource)->getSampleSourceGUIMessageQueue())
|
||||||
|
{
|
||||||
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
||||||
m_settings.m_centerFrequency,
|
m_settings.m_centerFrequency,
|
||||||
m_settings.m_devSampleRate,
|
m_settings.m_devSampleRate,
|
||||||
m_settings.m_log2HardDecim);
|
m_settings.m_log2HardDecim);
|
||||||
(*itSource)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// send to sink buddies
|
// send to sink buddies
|
||||||
@ -1086,8 +1104,12 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc
|
|||||||
m_settings.m_devSampleRate/(1<<buddyLog2Interp),
|
m_settings.m_devSampleRate/(1<<buddyLog2Interp),
|
||||||
buddyCenterFreq + buddyNCOFreq); // do not change center frequency
|
buddyCenterFreq + buddyNCOFreq); // do not change center frequency
|
||||||
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSink)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSink)->getSampleSinkGUIMessageQueue())
|
||||||
|
{
|
||||||
DeviceLimeSDRShared::MsgCrossReportToGUI *report = DeviceLimeSDRShared::MsgCrossReportToGUI::create(m_settings.m_devSampleRate);
|
DeviceLimeSDRShared::MsgCrossReportToGUI *report = DeviceLimeSDRShared::MsgCrossReportToGUI::create(m_settings.m_devSampleRate);
|
||||||
(*itSink)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSink)->getSampleSinkGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (forwardChangeRxDSP)
|
else if (forwardChangeRxDSP)
|
||||||
@ -1111,11 +1133,15 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc
|
|||||||
int buddyNCOFreq = buddySharedPtr->m_ncoFrequency;
|
int buddyNCOFreq = buddySharedPtr->m_ncoFrequency;
|
||||||
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency + buddyNCOFreq);
|
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency + buddyNCOFreq);
|
||||||
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
(*itSource)->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
|
if ((*itSource)->getSampleSourceGUIMessageQueue())
|
||||||
|
{
|
||||||
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create(
|
||||||
m_settings.m_centerFrequency,
|
m_settings.m_centerFrequency,
|
||||||
m_settings.m_devSampleRate,
|
m_settings.m_devSampleRate,
|
||||||
m_settings.m_log2HardDecim);
|
m_settings.m_log2HardDecim);
|
||||||
(*itSource)->getDeviceEngineOutputMessageQueue()->push(report);
|
(*itSource)->getSampleSourceGUIMessageQueue()->push(report);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (forwardChangeOwnDSP)
|
else if (forwardChangeOwnDSP)
|
||||||
|
@ -137,8 +137,84 @@ bool LimeSDRInputGUI::deserialize(const QByteArray& data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LimeSDRInputGUI::handleMessage(const Message& message __attribute__((unused))) // TODO: does not seem to be really useful in any of the source (+sink?) plugins
|
bool LimeSDRInputGUI::handleMessage(const Message& message)
|
||||||
{
|
{
|
||||||
|
if (LimeSDRInput::MsgReportLimeSDRToGUI::match(message))
|
||||||
|
{
|
||||||
|
LimeSDRInput::MsgReportLimeSDRToGUI& report = (LimeSDRInput::MsgReportLimeSDRToGUI&) message;
|
||||||
|
|
||||||
|
m_settings.m_centerFrequency = report.getCenterFrequency();
|
||||||
|
m_settings.m_devSampleRate = report.getSampleRate();
|
||||||
|
m_settings.m_log2HardDecim = report.getLog2HardDecim();
|
||||||
|
|
||||||
|
blockApplySettings(true);
|
||||||
|
displaySettings();
|
||||||
|
blockApplySettings(false);
|
||||||
|
|
||||||
|
LimeSDRInput::MsgSetReferenceConfig* conf = LimeSDRInput::MsgSetReferenceConfig::create(m_settings);
|
||||||
|
m_sampleSource->getInputMessageQueue()->push(conf); // TODO: remove from here should be done device to device
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (DeviceLimeSDRShared::MsgCrossReportToGUI::match(message))
|
||||||
|
{
|
||||||
|
DeviceLimeSDRShared::MsgCrossReportToGUI& report = (DeviceLimeSDRShared::MsgCrossReportToGUI&) message;
|
||||||
|
m_settings.m_devSampleRate = report.getSampleRate(); // TODO: remove from here should be done device to device
|
||||||
|
|
||||||
|
blockApplySettings(true);
|
||||||
|
displaySettings();
|
||||||
|
blockApplySettings(false);
|
||||||
|
|
||||||
|
LimeSDRInput::MsgSetReferenceConfig* conf = LimeSDRInput::MsgSetReferenceConfig::create(m_settings);
|
||||||
|
m_sampleSource->getInputMessageQueue()->push(conf);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (LimeSDRInput::MsgReportStreamInfo::match(message))
|
||||||
|
{
|
||||||
|
LimeSDRInput::MsgReportStreamInfo& report = (LimeSDRInput::MsgReportStreamInfo&) message;
|
||||||
|
|
||||||
|
if (report.getSuccess())
|
||||||
|
{
|
||||||
|
ui->streamStatusLabel->setStyleSheet("QLabel { background-color : green; }");
|
||||||
|
ui->streamLinkRateText->setText(tr("%1 MB/s").arg(QString::number(report.getLinkRate() / 1000000.0f, 'f', 3)));
|
||||||
|
|
||||||
|
if (report.getUnderrun() > 0) {
|
||||||
|
ui->underrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
|
} else {
|
||||||
|
ui->underrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (report.getOverrun() > 0) {
|
||||||
|
ui->overrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
|
} else {
|
||||||
|
ui->overrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (report.getDroppedPackets() > 0) {
|
||||||
|
ui->droppedLabel->setStyleSheet("QLabel { background-color : red; }");
|
||||||
|
} else {
|
||||||
|
ui->droppedLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
|
}
|
||||||
|
|
||||||
|
ui->fifoBar->setMaximum(report.getFifoSize());
|
||||||
|
ui->fifoBar->setValue(report.getFifoFilledCount());
|
||||||
|
ui->fifoBar->setToolTip(tr("FIFO fill %1/%2 samples").arg(QString::number(report.getFifoFilledCount())).arg(QString::number(report.getFifoSize())));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->streamStatusLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (DeviceLimeSDRShared::MsgReportDeviceInfo::match(message))
|
||||||
|
{
|
||||||
|
DeviceLimeSDRShared::MsgReportDeviceInfo& report = (DeviceLimeSDRShared::MsgReportDeviceInfo&) message;
|
||||||
|
ui->temperatureText->setText(tr("%1C").arg(QString::number(report.getTemperature(), 'f', 0)));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,78 +236,12 @@ void LimeSDRInputGUI::handleInputMessages()
|
|||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
else if (LimeSDRInput::MsgReportLimeSDRToGUI::match(*message))
|
|
||||||
{
|
|
||||||
LimeSDRInput::MsgReportLimeSDRToGUI *report = (LimeSDRInput::MsgReportLimeSDRToGUI *) message;
|
|
||||||
|
|
||||||
m_settings.m_centerFrequency = report->getCenterFrequency();
|
|
||||||
m_settings.m_devSampleRate = report->getSampleRate();
|
|
||||||
m_settings.m_log2HardDecim = report->getLog2HardDecim();
|
|
||||||
|
|
||||||
blockApplySettings(true);
|
|
||||||
displaySettings();
|
|
||||||
blockApplySettings(false);
|
|
||||||
|
|
||||||
LimeSDRInput::MsgSetReferenceConfig* conf = LimeSDRInput::MsgSetReferenceConfig::create(m_settings);
|
|
||||||
m_sampleSource->getInputMessageQueue()->push(conf); // TODO: remove from here should be done device to device
|
|
||||||
|
|
||||||
delete message;
|
|
||||||
}
|
|
||||||
else if (DeviceLimeSDRShared::MsgCrossReportToGUI::match(*message))
|
|
||||||
{
|
|
||||||
DeviceLimeSDRShared::MsgCrossReportToGUI *report = (DeviceLimeSDRShared::MsgCrossReportToGUI *) message;
|
|
||||||
m_settings.m_devSampleRate = report->getSampleRate();
|
|
||||||
|
|
||||||
blockApplySettings(true);
|
|
||||||
displaySettings();
|
|
||||||
blockApplySettings(false);
|
|
||||||
|
|
||||||
LimeSDRInput::MsgSetReferenceConfig* conf = LimeSDRInput::MsgSetReferenceConfig::create(m_settings);
|
|
||||||
m_sampleSource->getInputMessageQueue()->push(conf);
|
|
||||||
|
|
||||||
delete message;
|
|
||||||
}
|
|
||||||
else if (LimeSDRInput::MsgReportStreamInfo::match(*message))
|
|
||||||
{
|
|
||||||
LimeSDRInput::MsgReportStreamInfo *report = (LimeSDRInput::MsgReportStreamInfo *) message;
|
|
||||||
|
|
||||||
if (report->getSuccess())
|
|
||||||
{
|
|
||||||
ui->streamStatusLabel->setStyleSheet("QLabel { background-color : green; }");
|
|
||||||
ui->streamLinkRateText->setText(tr("%1 MB/s").arg(QString::number(report->getLinkRate() / 1000000.0f, 'f', 3)));
|
|
||||||
|
|
||||||
if (report->getUnderrun() > 0) {
|
|
||||||
ui->underrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
|
||||||
} else {
|
|
||||||
ui->underrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (report->getOverrun() > 0) {
|
|
||||||
ui->overrunLabel->setStyleSheet("QLabel { background-color : red; }");
|
|
||||||
} else {
|
|
||||||
ui->overrunLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (report->getDroppedPackets() > 0) {
|
|
||||||
ui->droppedLabel->setStyleSheet("QLabel { background-color : red; }");
|
|
||||||
} else {
|
|
||||||
ui->droppedLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->fifoBar->setMaximum(report->getFifoSize());
|
|
||||||
ui->fifoBar->setValue(report->getFifoFilledCount());
|
|
||||||
ui->fifoBar->setToolTip(tr("FIFO fill %1/%2 samples").arg(QString::number(report->getFifoFilledCount())).arg(QString::number(report->getFifoSize())));
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ui->streamStatusLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
|
if (handleMessage(*message)) {
|
||||||
|
delete message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (DeviceLimeSDRShared::MsgReportDeviceInfo::match(*message))
|
|
||||||
{
|
|
||||||
DeviceLimeSDRShared::MsgReportDeviceInfo *report = (DeviceLimeSDRShared::MsgReportDeviceInfo *) message;
|
|
||||||
ui->temperatureText->setText(tr("%1C").arg(QString::number(report->getTemperature(), 'f', 0)));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <plugin/plugininstanceui.h>
|
#include <plugin/plugininstanceui.h>
|
||||||
#include "device/devicesinkapi.h"
|
#include "device/devicesinkapi.h"
|
||||||
#include "device/devicesourceapi.h"
|
#include "device/devicesourceapi.h"
|
||||||
|
#include "dsp/devicesamplesink.h"
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
#include "plugin/plugininterface.h"
|
#include "plugin/plugininterface.h"
|
||||||
#include "gui/glspectrum.h"
|
#include "gui/glspectrum.h"
|
||||||
@ -127,9 +128,14 @@ MessageQueue *DeviceSinkAPI::getDeviceEngineInputMessageQueue()
|
|||||||
return m_deviceSinkEngine->getInputMessageQueue();
|
return m_deviceSinkEngine->getInputMessageQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageQueue *DeviceSinkAPI::getDeviceEngineOutputMessageQueue()
|
MessageQueue *DeviceSinkAPI::getSampleSinkInputMessageQueue()
|
||||||
{
|
{
|
||||||
return m_deviceSinkEngine->getOutputMessageQueue();
|
return getSampleSink()->getInputMessageQueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageQueue *DeviceSinkAPI::getSampleSinkGUIMessageQueue()
|
||||||
|
{
|
||||||
|
return getSampleSink()->getMessageQueueToGUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
GLSpectrum *DeviceSinkAPI::getSpectrum()
|
GLSpectrum *DeviceSinkAPI::getSpectrum()
|
||||||
|
@ -59,7 +59,8 @@ public:
|
|||||||
QString errorMessage(); //!< Return the current device engine error message
|
QString errorMessage(); //!< Return the current device engine error message
|
||||||
uint getDeviceUID() const; //!< Return the current device engine unique ID
|
uint getDeviceUID() const; //!< Return the current device engine unique ID
|
||||||
MessageQueue *getDeviceEngineInputMessageQueue();
|
MessageQueue *getDeviceEngineInputMessageQueue();
|
||||||
MessageQueue *getDeviceEngineOutputMessageQueue();
|
MessageQueue *getSampleSinkInputMessageQueue();
|
||||||
|
MessageQueue *getSampleSinkGUIMessageQueue();
|
||||||
// device related stuff
|
// device related stuff
|
||||||
GLSpectrum *getSpectrum(); //!< Direct spectrum getter
|
GLSpectrum *getSpectrum(); //!< Direct spectrum getter
|
||||||
void addChannelMarker(ChannelMarker* channelMarker); //!< Add channel marker to spectrum
|
void addChannelMarker(ChannelMarker* channelMarker); //!< Add channel marker to spectrum
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <plugin/plugininstanceui.h>
|
#include <plugin/plugininstanceui.h>
|
||||||
#include "device/devicesourceapi.h"
|
#include "device/devicesourceapi.h"
|
||||||
#include "device/devicesinkapi.h"
|
#include "device/devicesinkapi.h"
|
||||||
|
#include "dsp/devicesamplesource.h"
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
#include "plugin/plugininterface.h"
|
#include "plugin/plugininterface.h"
|
||||||
#include "gui/glspectrum.h"
|
#include "gui/glspectrum.h"
|
||||||
@ -113,11 +114,17 @@ MessageQueue *DeviceSourceAPI::getDeviceEngineInputMessageQueue()
|
|||||||
return m_deviceSourceEngine->getInputMessageQueue();
|
return m_deviceSourceEngine->getInputMessageQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
MessageQueue *DeviceSourceAPI::getDeviceEngineOutputMessageQueue()
|
MessageQueue *DeviceSourceAPI::getSampleSourceInputMessageQueue()
|
||||||
{
|
{
|
||||||
return m_deviceSourceEngine->getOutputMessageQueue();
|
return getSampleSource()->getInputMessageQueue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageQueue *DeviceSourceAPI::getSampleSourceGUIMessageQueue()
|
||||||
|
{
|
||||||
|
return getSampleSource()->getMessageQueueToGUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DeviceSourceAPI::configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection)
|
void DeviceSourceAPI::configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection)
|
||||||
{
|
{
|
||||||
m_deviceSourceEngine->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection);
|
m_deviceSourceEngine->configureCorrections(dcOffsetCorrection, iqImbalanceCorrection);
|
||||||
|
@ -58,7 +58,8 @@ public:
|
|||||||
QString errorMessage(); //!< Return the current device engine error message
|
QString errorMessage(); //!< Return the current device engine error message
|
||||||
uint getDeviceUID() const; //!< Return the current device engine unique ID
|
uint getDeviceUID() const; //!< Return the current device engine unique ID
|
||||||
MessageQueue *getDeviceEngineInputMessageQueue();
|
MessageQueue *getDeviceEngineInputMessageQueue();
|
||||||
MessageQueue *getDeviceEngineOutputMessageQueue();
|
MessageQueue *getSampleSourceInputMessageQueue();
|
||||||
|
MessageQueue *getSampleSourceGUIMessageQueue();
|
||||||
void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection); //!< Configure current device engine DSP corrections
|
void configureCorrections(bool dcOffsetCorrection, bool iqImbalanceCorrection); //!< Configure current device engine DSP corrections
|
||||||
|
|
||||||
// device related stuff
|
// device related stuff
|
||||||
|
@ -414,9 +414,11 @@ DSPDeviceSinkEngine::State DSPDeviceSinkEngine::gotoInit()
|
|||||||
m_spectrumSink->handleMessage(notif);
|
m_spectrumSink->handleMessage(notif);
|
||||||
|
|
||||||
// pass data to listeners
|
// pass data to listeners
|
||||||
|
if (m_deviceSampleSink->getMessageQueueToGUI())
|
||||||
|
{
|
||||||
DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy for the output queue
|
DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy for the output queue
|
||||||
m_outputMessageQueue.push(rep);
|
m_deviceSampleSink->getMessageQueueToGUI()->push(rep);
|
||||||
|
}
|
||||||
|
|
||||||
return StReady;
|
return StReady;
|
||||||
}
|
}
|
||||||
@ -663,9 +665,11 @@ void DSPDeviceSinkEngine::handleInputMessages()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// forward changes to listeners on DSP output queue
|
// forward changes to listeners on DSP output queue
|
||||||
|
if (m_deviceSampleSink->getMessageQueueToGUI())
|
||||||
|
{
|
||||||
DSPSignalNotification* rep = new DSPSignalNotification(*notif); // make a copy for the output queue
|
DSPSignalNotification* rep = new DSPSignalNotification(*notif); // make a copy for the output queue
|
||||||
m_outputMessageQueue.push(rep);
|
m_deviceSampleSink->getMessageQueueToGUI()->push(rep);
|
||||||
|
}
|
||||||
|
|
||||||
delete message;
|
delete message;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,6 @@ public:
|
|||||||
uint32_t getUID() const { return m_uid; }
|
uint32_t getUID() const { return m_uid; }
|
||||||
|
|
||||||
MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; }
|
MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; }
|
||||||
MessageQueue* getOutputMessageQueue() { return &m_outputMessageQueue; }
|
|
||||||
|
|
||||||
void start(); //!< This thread start
|
void start(); //!< This thread start
|
||||||
void stop(); //!< This thread stop
|
void stop(); //!< This thread stop
|
||||||
@ -87,7 +86,6 @@ private:
|
|||||||
uint32_t m_uid; //!< unique ID
|
uint32_t m_uid; //!< unique ID
|
||||||
|
|
||||||
MessageQueue m_inputMessageQueue; //<! Input message queue. Post here.
|
MessageQueue m_inputMessageQueue; //<! Input message queue. Post here.
|
||||||
MessageQueue m_outputMessageQueue; //<! Output message queue. Listen here.
|
|
||||||
SyncMessenger m_syncMessenger; //!< Used to process messages synchronously with the thread
|
SyncMessenger m_syncMessenger; //!< Used to process messages synchronously with the thread
|
||||||
|
|
||||||
State m_state;
|
State m_state;
|
||||||
|
@ -414,9 +414,11 @@ DSPDeviceSourceEngine::State DSPDeviceSourceEngine::gotoInit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// pass data to listeners
|
// pass data to listeners
|
||||||
|
if (m_deviceSampleSource->getMessageQueueToGUI())
|
||||||
|
{
|
||||||
DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy for the output queue
|
DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy for the output queue
|
||||||
m_outputMessageQueue.push(rep);
|
m_deviceSampleSource->getMessageQueueToGUI()->push(rep);
|
||||||
|
}
|
||||||
|
|
||||||
return StReady;
|
return StReady;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,6 @@ public:
|
|||||||
uint getUID() const { return m_uid; }
|
uint getUID() const { return m_uid; }
|
||||||
|
|
||||||
MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; }
|
MessageQueue* getInputMessageQueue() { return &m_inputMessageQueue; }
|
||||||
MessageQueue* getOutputMessageQueue() { return &m_outputMessageQueue; }
|
|
||||||
|
|
||||||
void start(); //!< This thread start
|
void start(); //!< This thread start
|
||||||
void stop(); //!< This thread stop
|
void stop(); //!< This thread stop
|
||||||
@ -80,7 +79,6 @@ private:
|
|||||||
uint m_uid; //!< unique ID
|
uint m_uid; //!< unique ID
|
||||||
|
|
||||||
MessageQueue m_inputMessageQueue; //<! Input message queue. Post here.
|
MessageQueue m_inputMessageQueue; //<! Input message queue. Post here.
|
||||||
MessageQueue m_outputMessageQueue; //<! Output message queue. Listen here.
|
|
||||||
SyncMessenger m_syncMessenger; //!< Used to process messages synchronously with the thread
|
SyncMessenger m_syncMessenger; //!< Used to process messages synchronously with the thread
|
||||||
|
|
||||||
State m_state;
|
State m_state;
|
||||||
|
@ -344,6 +344,7 @@ void MainWindow::removeLastDevice()
|
|||||||
|
|
||||||
// deletes old UI and output object
|
// deletes old UI and output object
|
||||||
m_deviceUIs.back()->m_deviceSinkAPI->freeChannels();
|
m_deviceUIs.back()->m_deviceSinkAPI->freeChannels();
|
||||||
|
m_deviceUIs.back()->m_deviceSinkAPI->getSampleSink()->setMessageQueueToGUI(0); // have sink stop sending messages to the GUI
|
||||||
m_deviceUIs.back()->m_deviceSinkAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI(
|
m_deviceUIs.back()->m_deviceSinkAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI(
|
||||||
m_deviceUIs.back()->m_deviceSinkAPI->getSampleSinkPluginInstanceGUI());
|
m_deviceUIs.back()->m_deviceSinkAPI->getSampleSinkPluginInstanceGUI());
|
||||||
m_deviceUIs.back()->m_deviceSinkAPI->resetSampleSinkId();
|
m_deviceUIs.back()->m_deviceSinkAPI->resetSampleSinkId();
|
||||||
@ -922,6 +923,7 @@ void MainWindow::on_sampleSink_confirmClicked(bool checked __attribute__((unused
|
|||||||
deviceUI->m_deviceSinkAPI->stopGeneration();
|
deviceUI->m_deviceSinkAPI->stopGeneration();
|
||||||
|
|
||||||
// deletes old UI and output object
|
// deletes old UI and output object
|
||||||
|
deviceUI->m_deviceSinkAPI->getSampleSink()->setMessageQueueToGUI(0); // have sink stop sending messages to the GUI
|
||||||
deviceUI->m_deviceSinkAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI(
|
deviceUI->m_deviceSinkAPI->getPluginInterface()->deleteSampleSourcePluginInstanceGUI(
|
||||||
deviceUI->m_deviceSinkAPI->getSampleSinkPluginInstanceGUI());
|
deviceUI->m_deviceSinkAPI->getSampleSinkPluginInstanceGUI());
|
||||||
deviceUI->m_deviceSinkAPI->resetSampleSinkId();
|
deviceUI->m_deviceSinkAPI->resetSampleSinkId();
|
||||||
|
Loading…
Reference in New Issue
Block a user