From 932048dba0252cb89870e94bf4b871099fc06c5a Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 13 Jan 2019 23:33:31 +0100 Subject: [PATCH] SoapySDR: added try/catch blocks around calls to SoapySDR interface methods where missing --- .../soapysdroutput/soapysdroutput.cpp | 24 +++++++++++++++---- .../soapysdrinput/soapysdrinput.cpp | 24 +++++++++++++++---- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp index a40dcc6cd..ece0e6b32 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp @@ -720,10 +720,17 @@ void SoapySDROutput::updateGains(SoapySDR::Device *dev, int requestedChannel, So return; } - settings.m_globalGain = round(dev->getGain(SOAPY_SDR_TX, requestedChannel)); + try + { + settings.m_globalGain = round(dev->getGain(SOAPY_SDR_TX, requestedChannel)); - for (const auto &name : settings.m_individualGains.keys()) { - settings.m_individualGains[name] = dev->getGain(SOAPY_SDR_TX, requestedChannel, name.toStdString()); + for (const auto &name : settings.m_individualGains.keys()) { + settings.m_individualGains[name] = dev->getGain(SOAPY_SDR_TX, requestedChannel, name.toStdString()); + } + } + catch (const std::exception &ex) + { + qCritical("SoapySDROutput::updateGains: caught exception: %s", ex.what()); } } @@ -733,8 +740,15 @@ void SoapySDROutput::updateTunableElements(SoapySDR::Device *dev, int requestedC return; } - for (const auto &name : settings.m_tunableElements.keys()) { - settings.m_tunableElements[name] = dev->getFrequency(SOAPY_SDR_TX, requestedChannel, name.toStdString()); + try + { + for (const auto &name : settings.m_tunableElements.keys()) { + settings.m_tunableElements[name] = dev->getFrequency(SOAPY_SDR_TX, requestedChannel, name.toStdString()); + } + } + catch (const std::exception &ex) + { + qCritical("SoapySDROutput::updateTunableElements: caught exception: %s", ex.what()); } } diff --git a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp index 9cc8294b7..66058fd9a 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp @@ -749,10 +749,17 @@ void SoapySDRInput::updateGains(SoapySDR::Device *dev, int requestedChannel, Soa return; } - settings.m_globalGain = round(dev->getGain(SOAPY_SDR_RX, requestedChannel)); + try + { + settings.m_globalGain = round(dev->getGain(SOAPY_SDR_RX, requestedChannel)); - for (const auto &name : settings.m_individualGains.keys()) { - settings.m_individualGains[name] = dev->getGain(SOAPY_SDR_RX, requestedChannel, name.toStdString()); + for (const auto &name : settings.m_individualGains.keys()) { + settings.m_individualGains[name] = dev->getGain(SOAPY_SDR_RX, requestedChannel, name.toStdString()); + } + } + catch (const std::exception &ex) + { + qCritical("SoapySDRInput::updateGains: caught exception: %s", ex.what()); } } @@ -762,8 +769,15 @@ void SoapySDRInput::updateTunableElements(SoapySDR::Device *dev, int requestedCh return; } - for (const auto &name : settings.m_tunableElements.keys()) { - settings.m_tunableElements[name] = dev->getFrequency(SOAPY_SDR_RX, requestedChannel, name.toStdString()); + try + { + for (const auto &name : settings.m_tunableElements.keys()) { + settings.m_tunableElements[name] = dev->getFrequency(SOAPY_SDR_RX, requestedChannel, name.toStdString()); + } + } + catch (const std::exception &ex) + { + qCritical("SoapySDRInput::updateTunableElements: caught exception: %s", ex.what()); } }