From 3e912352f6838e50dacb970d901eb7533d8f91bf Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Wed, 26 Nov 2025 15:48:45 +0000 Subject: [PATCH] USRP: Call setBuddySharedPtr even if open fails. Fix one of the bugs in #2552 --- plugins/samplesink/usrpoutput/usrpoutput.cpp | 7 +++++-- plugins/samplesource/usrpinput/usrpinput.cpp | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/plugins/samplesink/usrpoutput/usrpoutput.cpp b/plugins/samplesink/usrpoutput/usrpoutput.cpp index 9fe77db39..acf2d8ce0 100644 --- a/plugins/samplesink/usrpoutput/usrpoutput.cpp +++ b/plugins/samplesink/usrpoutput/usrpoutput.cpp @@ -100,6 +100,8 @@ void USRPOutput::destroy() bool USRPOutput::openDevice() { + bool ret = true; + int requestedChannel = m_deviceAPI->getDeviceItemIndex(); // look for Tx buddies and get reference to common parameters @@ -198,14 +200,15 @@ bool USRPOutput::openDevice() if (!m_deviceShared.m_deviceParams->open(deviceStr, false)) { qCritical("USRPOutput::openDevice: failed to open device"); - return false; + // We need to set setBuddySharedPtr below even if open fails + ret = false; } m_deviceShared.m_channel = requestedChannel; // acknowledge the requested channel } m_deviceAPI->setBuddySharedPtr(&m_deviceShared); // propagate common parameters to API - return true; + return ret; } void USRPOutput::suspendRxBuddies() diff --git a/plugins/samplesource/usrpinput/usrpinput.cpp b/plugins/samplesource/usrpinput/usrpinput.cpp index acc408d82..508cf5071 100644 --- a/plugins/samplesource/usrpinput/usrpinput.cpp +++ b/plugins/samplesource/usrpinput/usrpinput.cpp @@ -104,6 +104,8 @@ void USRPInput::destroy() bool USRPInput::openDevice() { + bool ret = true; + // B210 supports up to 50MSa/s, so a fairly large FIFO is probably a good idea // Should it be bigger still? if (!m_sampleFifo.setSize(2000000)) @@ -228,14 +230,15 @@ bool USRPInput::openDevice() if (!m_deviceShared.m_deviceParams->open(deviceStr, false)) { qCritical("USRPInput::openDevice: failed to open device"); - return false; + // We need to set setBuddySharedPtr below even if open fails + ret = false; } m_deviceShared.m_channel = requestedChannel; // acknowledge the requested channel } m_deviceAPI->setBuddySharedPtr(&m_deviceShared); // propagate common parameters to API - return true; + return ret; } void USRPInput::suspendRxBuddies()