mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-23 18:52:28 -04:00
BladerRF2 input support (4)
This commit is contained in:
parent
945d30d91b
commit
df505fcdef
@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
#include "devicebladerf2shared.h"
|
#include "devicebladerf2shared.h"
|
||||||
|
|
||||||
|
MESSAGE_CLASS_DEFINITION(DeviceBladeRF2Shared::MsgReportBuddyChange, Message)
|
||||||
|
|
||||||
DeviceBladeRF2Shared::DeviceBladeRF2Shared() :
|
DeviceBladeRF2Shared::DeviceBladeRF2Shared() :
|
||||||
m_dev(0),
|
m_dev(0),
|
||||||
m_channel(-1),
|
m_channel(-1),
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#ifndef DEVICES_BLADERF2_DEVICEBLADERF2SHARED_H_
|
#ifndef DEVICES_BLADERF2_DEVICEBLADERF2SHARED_H_
|
||||||
#define DEVICES_BLADERF2_DEVICEBLADERF2SHARED_H_
|
#define DEVICES_BLADERF2_DEVICEBLADERF2SHARED_H_
|
||||||
|
|
||||||
|
#include "util/message.h"
|
||||||
#include "devicebladerf2.h"
|
#include "devicebladerf2.h"
|
||||||
|
|
||||||
class SampleSinkFifo;
|
class SampleSinkFifo;
|
||||||
@ -56,6 +57,35 @@ public:
|
|||||||
virtual SampleSourceFifo *getFifo(unsigned int channel) = 0;
|
virtual SampleSourceFifo *getFifo(unsigned int channel) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MsgReportBuddyChange : public Message {
|
||||||
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool getBiasTee() const { return m_biasTee; }
|
||||||
|
bool getRxElseTx() const { return m_rxElseTx; }
|
||||||
|
|
||||||
|
static MsgReportBuddyChange* create(
|
||||||
|
bool biasTee,
|
||||||
|
bool rxElseTx)
|
||||||
|
{
|
||||||
|
return new MsgReportBuddyChange(
|
||||||
|
biasTee,
|
||||||
|
rxElseTx);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_biasTee;
|
||||||
|
bool m_rxElseTx; //!< tells which side initiated the message
|
||||||
|
|
||||||
|
MsgReportBuddyChange(
|
||||||
|
bool biasTee,
|
||||||
|
bool rxElseTx) :
|
||||||
|
Message(),
|
||||||
|
m_biasTee(biasTee),
|
||||||
|
m_rxElseTx(rxElseTx)
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
DeviceBladeRF2Shared();
|
DeviceBladeRF2Shared();
|
||||||
~DeviceBladeRF2Shared();
|
~DeviceBladeRF2Shared();
|
||||||
|
|
||||||
|
@ -431,6 +431,24 @@ bool BladeRF2Input::handleMessage(const Message& message)
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (DeviceBladeRF2Shared::MsgReportBuddyChange::match(message))
|
||||||
|
{
|
||||||
|
DeviceBladeRF2Shared::MsgReportBuddyChange& report = (DeviceBladeRF2Shared::MsgReportBuddyChange&) message;
|
||||||
|
|
||||||
|
if (report.getRxElseTx())
|
||||||
|
{
|
||||||
|
m_settings.m_biasTee = report.getBiasTee();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getMessageQueueToGUI())
|
||||||
|
{
|
||||||
|
DeviceBladeRF2Shared::MsgReportBuddyChange *reportToGUI = DeviceBladeRF2Shared::MsgReportBuddyChange::create(
|
||||||
|
m_settings.m_biasTee, true);
|
||||||
|
getMessageQueueToGUI()->push(reportToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if (MsgFileRecord::match(message))
|
else if (MsgFileRecord::match(message))
|
||||||
{
|
{
|
||||||
MsgFileRecord& conf = (MsgFileRecord&) message;
|
MsgFileRecord& conf = (MsgFileRecord&) message;
|
||||||
@ -480,7 +498,9 @@ bool BladeRF2Input::handleMessage(const Message& message)
|
|||||||
|
|
||||||
bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool force)
|
bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool force)
|
||||||
{
|
{
|
||||||
bool forwardChange = false;
|
bool forwardChangeOwnDSP = false;
|
||||||
|
bool forwardChangeRxDSP = false;
|
||||||
|
bool forwardChangeAllDSP __attribute__((unused)) = false;
|
||||||
|
|
||||||
struct bladerf *dev = m_deviceShared.m_dev->getDev();
|
struct bladerf *dev = m_deviceShared.m_dev->getDev();
|
||||||
qDebug() << "BladeRF2Input::applySettings: m_dev: " << dev;
|
qDebug() << "BladeRF2Input::applySettings: m_dev: " << dev;
|
||||||
@ -493,7 +513,7 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
|
|
||||||
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || force)
|
if ((m_settings.m_devSampleRate != settings.m_devSampleRate) || force)
|
||||||
{
|
{
|
||||||
forwardChange = true;
|
forwardChangeOwnDSP = true;
|
||||||
|
|
||||||
if (dev != 0)
|
if (dev != 0)
|
||||||
{
|
{
|
||||||
@ -542,7 +562,7 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
|
|
||||||
if ((m_settings.m_log2Decim != settings.m_log2Decim) || force)
|
if ((m_settings.m_log2Decim != settings.m_log2Decim) || force)
|
||||||
{
|
{
|
||||||
forwardChange = true;
|
forwardChangeOwnDSP = true;
|
||||||
|
|
||||||
if (m_deviceShared.m_inputThread != 0)
|
if (m_deviceShared.m_inputThread != 0)
|
||||||
{
|
{
|
||||||
@ -563,7 +583,7 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
(DeviceSampleSource::fcPos_t) settings.m_fcPos,
|
||||||
settings.m_devSampleRate);
|
settings.m_devSampleRate);
|
||||||
|
|
||||||
forwardChange = true;
|
forwardChangeOwnDSP = true;
|
||||||
|
|
||||||
if (dev != 0)
|
if (dev != 0)
|
||||||
{
|
{
|
||||||
@ -578,7 +598,43 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (forwardChange)
|
if ((m_settings.m_biasTee != settings.m_biasTee) || force)
|
||||||
|
{
|
||||||
|
m_deviceShared.m_dev->setBiasTeeRx(settings.m_biasTee);
|
||||||
|
forwardChangeRxDSP = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((m_settings.m_globalGain != settings.m_globalGain) || force)
|
||||||
|
{
|
||||||
|
if (dev)
|
||||||
|
{
|
||||||
|
int status = bladerf_set_gain(dev, BLADERF_CHANNEL_RX(m_deviceShared.m_channel), settings.m_globalGain);
|
||||||
|
|
||||||
|
if (status < 0) {
|
||||||
|
qWarning("BladeRF2Input::applySettings: bladerf_set_gain(%d) failed: %s",
|
||||||
|
settings.m_globalGain, bladerf_strerror(status));
|
||||||
|
} else {
|
||||||
|
qDebug("BladeRF2Input::applySettings: bladerf_set_gain(%d)", settings.m_globalGain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((m_settings.m_gainMode != settings.m_gainMode) || force)
|
||||||
|
{
|
||||||
|
if (dev)
|
||||||
|
{
|
||||||
|
int status = bladerf_set_gain_mode(dev, BLADERF_CHANNEL_RX(m_deviceShared.m_channel), (bladerf_gain_mode) settings.m_gainMode);
|
||||||
|
|
||||||
|
if (status < 0) {
|
||||||
|
qWarning("BladeRF2Input::applySettings: bladerf_set_gain_mode(%d) failed: %s",
|
||||||
|
settings.m_gainMode, bladerf_strerror(status));
|
||||||
|
} else {
|
||||||
|
qDebug("BladeRF2Input::applySettings: bladerf_set_gain_mode(%d)", settings.m_gainMode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (forwardChangeOwnDSP)
|
||||||
{
|
{
|
||||||
int sampleRate = settings.m_devSampleRate/(1<<settings.m_log2Decim);
|
int sampleRate = settings.m_devSampleRate/(1<<settings.m_log2Decim);
|
||||||
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, settings.m_centerFrequency);
|
DSPSignalNotification *notif = new DSPSignalNotification(sampleRate, settings.m_centerFrequency);
|
||||||
@ -586,6 +642,20 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forwardChangeRxDSP)
|
||||||
|
{
|
||||||
|
// send to source buddies
|
||||||
|
const std::vector<DeviceSourceAPI*>& sourceBuddies = m_deviceAPI->getSourceBuddies();
|
||||||
|
std::vector<DeviceSourceAPI*>::const_iterator itSource = sourceBuddies.begin();
|
||||||
|
|
||||||
|
for (; itSource != sourceBuddies.end(); ++itSource)
|
||||||
|
{
|
||||||
|
DeviceBladeRF2Shared::MsgReportBuddyChange *report = DeviceBladeRF2Shared::MsgReportBuddyChange::create(
|
||||||
|
settings.m_biasTee, true);
|
||||||
|
(*itSource)->getSampleSourceInputMessageQueue()->push(report);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
|
|
||||||
qDebug() << "BladeRF2Input::applySettings: "
|
qDebug() << "BladeRF2Input::applySettings: "
|
||||||
@ -594,8 +664,11 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
<< " m_log2Decim: " << m_settings.m_log2Decim
|
<< " m_log2Decim: " << m_settings.m_log2Decim
|
||||||
<< " m_fcPos: " << m_settings.m_fcPos
|
<< " m_fcPos: " << m_settings.m_fcPos
|
||||||
<< " m_devSampleRate: " << m_settings.m_devSampleRate
|
<< " m_devSampleRate: " << m_settings.m_devSampleRate
|
||||||
|
<< " m_globalGain: " << m_settings.m_globalGain
|
||||||
|
<< " m_gainMode: " << m_settings.m_gainMode
|
||||||
<< " m_dcBlock: " << m_settings.m_dcBlock
|
<< " m_dcBlock: " << m_settings.m_dcBlock
|
||||||
<< " m_iqCorrection: " << m_settings.m_iqCorrection;
|
<< " m_iqCorrection: " << m_settings.m_iqCorrection
|
||||||
|
<< " m_biasTee: " << m_settings.m_biasTee;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -590,9 +590,12 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
m_settings.m_centerFrequency + ncoShift);
|
m_settings.m_centerFrequency + ncoShift);
|
||||||
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
|
||||||
|
|
||||||
DeviceLimeSDRShared::MsgReportBuddyChange *reportToGUI = DeviceLimeSDRShared::MsgReportBuddyChange::create(
|
if (getMessageQueueToGUI())
|
||||||
m_settings.m_devSampleRate, m_settings.m_log2HardDecim, m_settings.m_centerFrequency, true);
|
{
|
||||||
getMessageQueueToGUI()->push(reportToGUI);
|
DeviceLimeSDRShared::MsgReportBuddyChange *reportToGUI = DeviceLimeSDRShared::MsgReportBuddyChange::create(
|
||||||
|
m_settings.m_devSampleRate, m_settings.m_log2HardDecim, m_settings.m_centerFrequency, true);
|
||||||
|
getMessageQueueToGUI()->push(reportToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -603,9 +606,12 @@ bool LimeSDRInput::handleMessage(const Message& message)
|
|||||||
m_settings.m_extClock = report.getExtClock();
|
m_settings.m_extClock = report.getExtClock();
|
||||||
m_settings.m_extClockFreq = report.getExtClockFeq();
|
m_settings.m_extClockFreq = report.getExtClockFeq();
|
||||||
|
|
||||||
DeviceLimeSDRShared::MsgReportClockSourceChange *reportToGUI = DeviceLimeSDRShared::MsgReportClockSourceChange::create(
|
if (getMessageQueueToGUI())
|
||||||
m_settings.m_extClock, m_settings.m_extClockFreq);
|
{
|
||||||
getMessageQueueToGUI()->push(reportToGUI);
|
DeviceLimeSDRShared::MsgReportClockSourceChange *reportToGUI = DeviceLimeSDRShared::MsgReportClockSourceChange::create(
|
||||||
|
m_settings.m_extClock, m_settings.m_extClockFreq);
|
||||||
|
getMessageQueueToGUI()->push(reportToGUI);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user