diff --git a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp index 447bb3c58..b861c2348 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutput.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutput.cpp @@ -583,12 +583,13 @@ bool SoapySDROutput::handleMessage(const Message& message) SoapySDROutputSettings settings = m_settings; //bool fromRxBuddy = report.getRxElseTx(); - settings.m_centerFrequency = m_deviceShared.m_device->getFrequency( + double centerFrequency = m_deviceShared.m_device->getFrequency( SOAPY_SDR_TX, requestedChannel, m_deviceShared.m_deviceParams->getTxChannelMainTunableElementName(requestedChannel)); - settings.m_devSampleRate = m_deviceShared.m_device->getSampleRate(SOAPY_SDR_TX, requestedChannel); + settings.m_centerFrequency = round(centerFrequency/1000.0) * 1000; + settings.m_devSampleRate = round(m_deviceShared.m_device->getSampleRate(SOAPY_SDR_TX, requestedChannel)); //SoapySDROutputThread *outputThread = findThread(); diff --git a/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp b/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp index c1b9f09c6..8d8ad295c 100644 --- a/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp +++ b/plugins/samplesink/soapysdroutput/soapysdroutputgui.cpp @@ -168,7 +168,17 @@ bool SoapySDROutputGui::deserialize(const QByteArray& data) bool SoapySDROutputGui::handleMessage(const Message& message) { - if (SoapySDROutput::MsgStartStop::match(message)) + if (SoapySDROutput::MsgConfigureSoapySDROutput::match(message)) + { + const SoapySDROutput::MsgConfigureSoapySDROutput& cfg = (SoapySDROutput::MsgConfigureSoapySDROutput&) message; + m_settings = cfg.getSettings(); + blockApplySettings(true); + displaySettings(); + blockApplySettings(false); + + return true; + } + else if (SoapySDROutput::MsgStartStop::match(message)) { SoapySDROutput::MsgStartStop& notif = (SoapySDROutput::MsgStartStop&) message; blockApplySettings(true); diff --git a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp index 5f57035f5..38adbe497 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinput.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinput.cpp @@ -620,12 +620,13 @@ bool SoapySDRInput::handleMessage(const Message& message __attribute__((unused)) settings.m_fcPos = (SoapySDRInputSettings::fcPos_t) report.getFcPos(); //bool fromRxBuddy = report.getRxElseTx(); - settings.m_centerFrequency = m_deviceShared.m_device->getFrequency( + double centerFrequency = m_deviceShared.m_device->getFrequency( SOAPY_SDR_RX, requestedChannel, m_deviceShared.m_deviceParams->getRxChannelMainTunableElementName(requestedChannel)); - settings.m_devSampleRate = m_deviceShared.m_device->getSampleRate(SOAPY_SDR_RX, requestedChannel); + settings.m_centerFrequency = round(centerFrequency/1000.0) * 1000; + settings.m_devSampleRate = round(m_deviceShared.m_device->getSampleRate(SOAPY_SDR_RX, requestedChannel)); SoapySDRInputThread *inputThread = findThread(); diff --git a/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp b/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp index a2bd94640..e26547931 100644 --- a/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp +++ b/plugins/samplesource/soapysdrinput/soapysdrinputgui.cpp @@ -191,10 +191,19 @@ bool SoapySDRInputGui::deserialize(const QByteArray& data) } } - bool SoapySDRInputGui::handleMessage(const Message& message) { - if (SoapySDRInput::MsgStartStop::match(message)) + if (SoapySDRInput::MsgConfigureSoapySDRInput::match(message)) + { + const SoapySDRInput::MsgConfigureSoapySDRInput& cfg = (SoapySDRInput::MsgConfigureSoapySDRInput&) message; + m_settings = cfg.getSettings(); + blockApplySettings(true); + displaySettings(); + blockApplySettings(false); + + return true; + } + else if (SoapySDRInput::MsgStartStop::match(message)) { SoapySDRInput::MsgStartStop& notif = (SoapySDRInput::MsgStartStop&) message; blockApplySettings(true);