diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp index bf784f1d0..14bc0cca1 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp @@ -30,6 +30,7 @@ MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgConfigureLimeSDR, Message) MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgGetStreamInfo, Message) +MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgGetDeviceInfo, Message) MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgSetReferenceConfig, Message) MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgReportLimeSDRToGUI, Message) MESSAGE_CLASS_DEFINITION(LimeSDROutput::MsgReportStreamInfo, Message) @@ -429,6 +430,46 @@ bool LimeSDROutput::handleMessage(const Message& message) return true; } + else if (MsgGetDeviceInfo::match(message)) + { + if (m_deviceAPI->isBuddyLeader()) + { + double temp = 0.0; + + if (m_deviceShared.m_deviceParams->getDevice() && (LMS_GetChipTemperature(m_deviceShared.m_deviceParams->getDevice(), 0, &temp) == 0)) + { + qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: temperature: %f", temp); + } + else + { + qDebug("LimeSDROutput::handleMessage: MsgGetDeviceInfo: cannot get temperature"); + } + + // send to oneself + DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); + m_deviceAPI->getDeviceOutputMessageQueue()->push(report); + + // send to source buddies + const std::vector& sourceBuddies = m_deviceAPI->getSourceBuddies(); + std::vector::const_iterator itSource = sourceBuddies.begin(); + + for (; itSource != sourceBuddies.end(); ++itSource) + { + DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); + (*itSource)->getDeviceOutputMessageQueue()->push(report); + } + + // send to sink buddies + const std::vector& sinkBuddies = m_deviceAPI->getSinkBuddies(); + std::vector::const_iterator itSink = sinkBuddies.begin(); + + for (; itSink != sinkBuddies.end(); ++itSink) + { + DeviceLimeSDRShared::MsgReportDeviceInfo *report = DeviceLimeSDRShared::MsgReportDeviceInfo::create(temp); + (*itSink)->getDeviceOutputMessageQueue()->push(report); + } + } + } else { return false; diff --git a/plugins/samplesink/limesdroutput/limesdroutput.h b/plugins/samplesink/limesdroutput/limesdroutput.h index 24befeeb2..81abf835a 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.h +++ b/plugins/samplesink/limesdroutput/limesdroutput.h @@ -86,6 +86,21 @@ public: { } }; + class MsgGetDeviceInfo : public Message { + MESSAGE_CLASS_DECLARATION + + public: + static MsgGetDeviceInfo* create() + { + return new MsgGetDeviceInfo(); + } + + private: + MsgGetDeviceInfo() : + Message() + { } + }; + class MsgReportLimeSDRToGUI : public Message { MESSAGE_CLASS_DECLARATION diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp index d3ba751b1..348eebbce 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp @@ -35,7 +35,8 @@ LimeSDROutputGUI::LimeSDROutputGUI(DeviceSinkAPI *deviceAPI, QWidget* parent) : m_sampleRate(0), m_lastEngineState((DSPDeviceSinkEngine::State)-1), m_doApplySettings(true), - m_statusCounter(0) + m_statusCounter(0), + m_deviceStatusCounter(0) { m_limeSDROutput = new LimeSDROutput(m_deviceAPI); m_sampleSink = (DeviceSampleSink *) m_limeSDROutput; @@ -232,6 +233,11 @@ void LimeSDROutputGUI::handleMessagesToGUI() ui->streamStatusLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }"); } } + else if (DeviceLimeSDRShared::MsgReportDeviceInfo::match(*message)) + { + DeviceLimeSDRShared::MsgReportDeviceInfo *report = (DeviceLimeSDRShared::MsgReportDeviceInfo *) message; + ui->temperatureText->setText(tr("%1C").arg(QString::number(report->getTemperature(), 'f', 0))); + } } } @@ -329,6 +335,17 @@ void LimeSDROutputGUI::updateStatus() m_sampleSink->getInputMessageQueue()->push(message); m_statusCounter = 0; } + + if (m_deviceStatusCounter < 10) + { + m_deviceStatusCounter++; + } + else + { + LimeSDROutput::MsgGetDeviceInfo* message = LimeSDROutput::MsgGetDeviceInfo::create(); + m_sampleSink->getInputMessageQueue()->push(message); + m_deviceStatusCounter = 0; + } } void LimeSDROutputGUI::blockApplySettings(bool block) diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.h b/plugins/samplesink/limesdroutput/limesdroutputgui.h index c3052e065..b5ab08244 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputgui.h +++ b/plugins/samplesink/limesdroutput/limesdroutputgui.h @@ -63,6 +63,7 @@ private: int m_lastEngineState; bool m_doApplySettings; int m_statusCounter; + int m_deviceStatusCounter; void displaySettings(); void setNCODisplay(); diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.ui b/plugins/samplesink/limesdroutput/limesdroutputgui.ui index 924602129..f0255ed9f 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputgui.ui +++ b/plugins/samplesink/limesdroutput/limesdroutputgui.ui @@ -819,6 +819,29 @@ QToolTip{background-color: white; color: black;} + + + + Qt::Vertical + + + + + + + + 24 + 0 + + + + 00C + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + @@ -875,6 +898,34 @@ QToolTip{background-color: white; color: black;} + + + + + + + + + + + + + + + + + + + + + + + + + + + +