From 8a72372b285dc989e4ced529913a6f30758681de Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 10 Nov 2018 07:17:55 +0100 Subject: [PATCH] SoapySDR support: fixed display settings --- .../soapysdroutput/soapysdroutput.cpp | 5 +++-- .../soapysdroutput/soapysdroutputgui.cpp | 22 +++++++++++++------ .../soapysdrinput/soapysdrinput.cpp | 5 +++-- .../soapysdrinput/soapysdrinputgui.cpp | 22 +++++++++++++------ 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp index d3642adc4..698da7065 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp @@ -846,7 +846,7 @@ bool SoapySDROutput::applySettings(const SoapySDROutputSettings& settings, bool { auto nvalue = settings.m_tunableElements.find(oname); - if (nvalue != settings.m_tunableElements.end() && (m_settings.m_tunableElements[oname] != *nvalue)) + if (nvalue != settings.m_tunableElements.end() && ((m_settings.m_tunableElements[oname] != *nvalue) || force)) { if (dev != 0) { @@ -1034,7 +1034,8 @@ bool SoapySDROutput::applySettings(const SoapySDROutputSettings& settings, bool << " m_log2Interp: " << m_settings.m_log2Interp << " m_devSampleRate: " << m_settings.m_devSampleRate << " m_bandwidth: " << m_settings.m_bandwidth - << " m_globalGain: " << m_settings.m_globalGain; + << " m_globalGain: " << m_settings.m_globalGain + << " force: " << force; return true; } diff --git a/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp b/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp index dbee2b4d4..7dc84b694 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp @@ -426,7 +426,7 @@ void SoapySDROutputGui::handleInputMessages() void SoapySDROutputGui::sampleRateChanged(double sampleRate) { - m_settings.m_devSampleRate = sampleRate; + m_settings.m_devSampleRate = round(sampleRate); sendSettings(); } @@ -439,7 +439,7 @@ void SoapySDROutputGui::antennasChanged() void SoapySDROutputGui::bandwidthChanged(double bandwidth) { - m_settings.m_bandwidth = bandwidth; + m_settings.m_bandwidth = round(bandwidth); sendSettings(); } @@ -558,14 +558,20 @@ void SoapySDROutputGui::displaySettings() if (m_antennas) { m_antennas->setValue(m_settings.m_antenna.toStdString()); } - if (m_sampleRateGUI) { + if (m_sampleRateGUI) + { m_sampleRateGUI->setValue(m_settings.m_devSampleRate); + m_settings.m_devSampleRate = m_sampleRateGUI->getCurrentValue(); } - if (m_bandwidthGUI) { + if (m_bandwidthGUI) + { m_bandwidthGUI->setValue(m_settings.m_bandwidth); + m_settings.m_bandwidth = m_bandwidthGUI->getCurrentValue(); } - if (m_gainSliderGUI) { + if (m_gainSliderGUI) + { m_gainSliderGUI->setValue(m_settings.m_globalGain); + m_settings.m_globalGain = m_gainSliderGUI->getCurrentValue(); } if (m_autoGain) { m_autoGain->setChecked(m_settings.m_autoGain); @@ -599,10 +605,12 @@ void SoapySDROutputGui::displayIndividualGainsControlSettings() { for (const auto &it : m_individualGainsGUIs) { - QMap::const_iterator elIt = m_settings.m_individualGains.find(it->getName()); + QMap::iterator elIt = m_settings.m_individualGains.find(it->getName()); - if (elIt != m_settings.m_individualGains.end()) { + if (elIt != m_settings.m_individualGains.end()) + { it->setValue(*elIt); + *elIt = it->getValue(); } } } diff --git a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp index 198c9d822..9357854b9 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp @@ -892,7 +892,7 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo { auto nvalue = settings.m_tunableElements.find(oname); - if (nvalue != settings.m_tunableElements.end() && (m_settings.m_tunableElements[oname] != *nvalue)) + if (nvalue != settings.m_tunableElements.end() && ((m_settings.m_tunableElements[oname] != *nvalue) ||force)) { if (dev != 0) { @@ -1085,7 +1085,8 @@ bool SoapySDRInput::applySettings(const SoapySDRInputSettings& settings, bool fo << " m_softIQCorrection: " << m_settings.m_softIQCorrection << " m_antenna: " << m_settings.m_antenna << " m_bandwidth: " << m_settings.m_bandwidth - << " m_globalGain: " << m_settings.m_globalGain; + << " m_globalGain: " << m_settings.m_globalGain + << " force: " << force; return true; } diff --git a/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp b/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp index b8c387d76..da4a0dfb4 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp @@ -436,13 +436,13 @@ void SoapySDRInputGui::antennasChanged() void SoapySDRInputGui::sampleRateChanged(double sampleRate) { - m_settings.m_devSampleRate = sampleRate; + m_settings.m_devSampleRate = round(sampleRate); sendSettings(); } void SoapySDRInputGui::bandwidthChanged(double bandwidth) { - m_settings.m_bandwidth = bandwidth; + m_settings.m_bandwidth = round(bandwidth); sendSettings(); } @@ -600,14 +600,20 @@ void SoapySDRInputGui::displaySettings() qDebug("SoapySDRInputGui::displaySettings: m_antenna: %s", m_settings.m_antenna.toStdString().c_str()); m_antennas->setValue(m_settings.m_antenna.toStdString()); } - if (m_sampleRateGUI) { + if (m_sampleRateGUI) + { m_sampleRateGUI->setValue(m_settings.m_devSampleRate); + m_settings.m_devSampleRate = m_sampleRateGUI->getCurrentValue(); } - if (m_bandwidthGUI) { + if (m_bandwidthGUI) + { m_bandwidthGUI->setValue(m_settings.m_bandwidth); + m_settings.m_bandwidth = m_bandwidthGUI->getCurrentValue(); } - if (m_gainSliderGUI) { + if (m_gainSliderGUI) + { m_gainSliderGUI->setValue(m_settings.m_globalGain); + m_settings.m_globalGain = m_gainSliderGUI->getCurrentValue(); } if (m_autoGain) { m_autoGain->setChecked(m_settings.m_autoGain); @@ -645,10 +651,12 @@ void SoapySDRInputGui::displayIndividualGainsControlSettings() { for (const auto &it : m_individualGainsGUIs) { - QMap::const_iterator elIt = m_settings.m_individualGains.find(it->getName()); + QMap::iterator elIt = m_settings.m_individualGains.find(it->getName()); - if (elIt != m_settings.m_individualGains.end()) { + if (elIt != m_settings.m_individualGains.end()) + { it->setValue(*elIt); + *elIt = it->getValue(); } } }