diff --git a/devices/limesdr/devicelimesdrshared.h b/devices/limesdr/devicelimesdrshared.h index 23050c269..4dc40c5f0 100644 --- a/devices/limesdr/devicelimesdrshared.h +++ b/devices/limesdr/devicelimesdrshared.h @@ -28,11 +28,13 @@ struct DeviceLimeSDRShared DeviceLimeSDRParams *m_deviceParams; //!< unique hardware device parameters std::size_t m_channel; //!< logical device channel number (-1 if none) void *m_thread; //!< anonymous pointer that will hold the thread address if started else 0 + int m_ncoFrequency; DeviceLimeSDRShared() : m_deviceParams(0), m_channel(-1), - m_thread(0) + m_thread(0), + m_ncoFrequency(0) {} ~DeviceLimeSDRShared() diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index 9ac0f31e3..da27237c4 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -669,6 +669,7 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc { doCalibration = true; forwardChangeOwnDSP = true; + m_deviceShared.m_ncoFrequency = m_settings.m_ncoEnable ? m_settings.m_ncoFrequency : 0; // for buddies qDebug("LimeSDRInput::applySettings: %sd and set NCO to %d Hz", m_settings.m_ncoEnable ? "enable" : "disable", m_settings.m_ncoFrequency); @@ -814,7 +815,9 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc // send to source buddies for (; itSource != sourceBuddies.end(); ++itSource) { - DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency); + DeviceLimeSDRShared *buddySharedPtr = (DeviceLimeSDRShared *) (*itSource)->getBuddySharedPtr(); + int buddyNCOFreq = buddySharedPtr->m_ncoFrequency; + DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency + buddyNCOFreq); (*itSource)->getDeviceInputMessageQueue()->push(notif); MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create( m_settings.m_centerFrequency, @@ -843,7 +846,7 @@ bool LimeSDRInput::applySettings(const LimeSDRInputSettings& settings, bool forc qDebug("LimeSDRInput::applySettings: forward change to Rx buddies"); const std::vector& sourceBuddies = m_deviceAPI->getSourceBuddies(); - std::vector::const_iterator it = sourceBuddies.begin(); + std::vector::const_iterator itSource = sourceBuddies.begin(); int sampleRate = m_settings.m_devSampleRate/(1<getDeviceInputMessageQueue()->push(notif); // send to source buddies - for (; it != sourceBuddies.end(); ++it) + for (; itSource != sourceBuddies.end(); ++itSource) { - DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency); - (*it)->getDeviceInputMessageQueue()->push(notif); + DeviceLimeSDRShared *buddySharedPtr = (DeviceLimeSDRShared *) (*itSource)->getBuddySharedPtr(); + int buddyNCOFreq = buddySharedPtr->m_ncoFrequency; + DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, m_settings.m_centerFrequency + buddyNCOFreq); + (*itSource)->getDeviceInputMessageQueue()->push(notif); MsgReportLimeSDRToGUI *report = MsgReportLimeSDRToGUI::create( m_settings.m_centerFrequency, m_settings.m_devSampleRate, m_settings.m_log2HardDecim); - (*it)->getDeviceOutputMessageQueue()->push(report); + (*itSource)->getDeviceOutputMessageQueue()->push(report); } } else if (forwardChangeOwnDSP)