mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-24 11:12:27 -04:00
BladerRF2 input support. Global gain handling
This commit is contained in:
parent
5ad52a4a1b
commit
81ad05cb64
@ -39,6 +39,7 @@
|
|||||||
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgConfigureBladeRF2, Message)
|
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgConfigureBladeRF2, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgFileRecord, Message)
|
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgFileRecord, Message)
|
||||||
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgStartStop, Message)
|
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgStartStop, Message)
|
||||||
|
MESSAGE_CLASS_DEFINITION(BladeRF2Input::MsgReportGainRange, Message)
|
||||||
|
|
||||||
BladeRF2Input::BladeRF2Input(DeviceSourceAPI *deviceAPI) :
|
BladeRF2Input::BladeRF2Input(DeviceSourceAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
@ -688,7 +689,6 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
bool forwardChangeTxBuddies = false;
|
bool forwardChangeTxBuddies = false;
|
||||||
|
|
||||||
struct bladerf *dev = m_deviceShared.m_dev->getDev();
|
struct bladerf *dev = m_deviceShared.m_dev->getDev();
|
||||||
qDebug() << "BladeRF2Input::applySettings: m_dev: " << dev;
|
|
||||||
|
|
||||||
if ((m_settings.m_dcBlock != settings.m_dcBlock) ||
|
if ((m_settings.m_dcBlock != settings.m_dcBlock) ||
|
||||||
(m_settings.m_iqCorrection != settings.m_iqCorrection) || force)
|
(m_settings.m_iqCorrection != settings.m_iqCorrection) || force)
|
||||||
@ -785,8 +785,18 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
qWarning("BladeRF2Input::applySettings: bladerf_set_frequency(%lld) failed: %s",
|
qWarning("BladeRF2Input::applySettings: bladerf_set_frequency(%lld) failed: %s",
|
||||||
settings.m_centerFrequency, bladerf_strerror(status));
|
settings.m_centerFrequency, bladerf_strerror(status));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
qDebug("BladeRF2Input::applySettings: bladerf_set_frequency(%lld)", settings.m_centerFrequency);
|
qDebug("BladeRF2Input::applySettings: bladerf_set_frequency(%lld)", settings.m_centerFrequency);
|
||||||
|
|
||||||
|
if (getMessageQueueToGUI())
|
||||||
|
{
|
||||||
|
int min, max, step;
|
||||||
|
getGlobalGainRange(min, max, step);
|
||||||
|
MsgReportGainRange *msg = MsgReportGainRange::create(min, max, step);
|
||||||
|
getMessageQueueToGUI()->push(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -803,6 +813,7 @@ bool BladeRF2Input::applySettings(const BladeRF2InputSettings& settings, bool fo
|
|||||||
|
|
||||||
if (dev)
|
if (dev)
|
||||||
{
|
{
|
||||||
|
// qDebug("BladeRF2Input::applySettings: channel: %d gain: %d", m_deviceShared.m_channel, settings.m_globalGain);
|
||||||
int status = bladerf_set_gain(dev, BLADERF_CHANNEL_RX(m_deviceShared.m_channel), settings.m_globalGain);
|
int status = bladerf_set_gain(dev, BLADERF_CHANNEL_RX(m_deviceShared.m_channel), settings.m_globalGain);
|
||||||
|
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
|
@ -94,6 +94,31 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MsgReportGainRange : public Message {
|
||||||
|
MESSAGE_CLASS_DECLARATION
|
||||||
|
|
||||||
|
public:
|
||||||
|
int getMin() const { return m_min; }
|
||||||
|
int getMax() const { return m_max; }
|
||||||
|
int getStep() const { return m_step; }
|
||||||
|
|
||||||
|
static MsgReportGainRange* create(int min, int max, int step) {
|
||||||
|
return new MsgReportGainRange(min, max, step);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int m_min;
|
||||||
|
int m_max;
|
||||||
|
int m_step;
|
||||||
|
|
||||||
|
MsgReportGainRange(int min, int max, int step) :
|
||||||
|
Message(),
|
||||||
|
m_min(min),
|
||||||
|
m_max(max),
|
||||||
|
m_step(step)
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
BladeRF2Input(DeviceSourceAPI *deviceAPI);
|
BladeRF2Input(DeviceSourceAPI *deviceAPI);
|
||||||
virtual ~BladeRF2Input();
|
virtual ~BladeRF2Input();
|
||||||
virtual void destroy();
|
virtual void destroy();
|
||||||
|
@ -62,11 +62,21 @@ BladeRF2InputGui::BladeRF2InputGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
|||||||
|
|
||||||
if (m_gainModes)
|
if (m_gainModes)
|
||||||
{
|
{
|
||||||
|
ui->gainMode->blockSignals(true);
|
||||||
|
|
||||||
for (int i = 0; i < m_nbGainModes; i++) {
|
for (int i = 0; i < m_nbGainModes; i++) {
|
||||||
ui->gainMode->addItem(tr("%1").arg(m_gainModes[i].name));
|
ui->gainMode->addItem(tr("%1").arg(m_gainModes[i].name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ui->gainMode->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_sampleSource->getGlobalGainRange(min, max, step);
|
||||||
|
ui->gain->setMinimum(min);
|
||||||
|
ui->gain->setMaximum(max);
|
||||||
|
ui->gain->setPageStep(step);
|
||||||
|
ui->gain->setSingleStep(step);
|
||||||
|
|
||||||
connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware()));
|
connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware()));
|
||||||
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
||||||
m_statusTimer.start(500);
|
m_statusTimer.start(500);
|
||||||
@ -143,8 +153,25 @@ bool BladeRF2InputGui::handleMessage(const Message& message)
|
|||||||
const BladeRF2Input::MsgConfigureBladeRF2& cfg = (BladeRF2Input::MsgConfigureBladeRF2&) message;
|
const BladeRF2Input::MsgConfigureBladeRF2& cfg = (BladeRF2Input::MsgConfigureBladeRF2&) message;
|
||||||
m_settings = cfg.getSettings();
|
m_settings = cfg.getSettings();
|
||||||
blockApplySettings(true);
|
blockApplySettings(true);
|
||||||
|
int min, max, step;
|
||||||
|
m_sampleSource->getGlobalGainRange(min, max, step);
|
||||||
|
ui->gain->setMinimum(min);
|
||||||
|
ui->gain->setMaximum(max);
|
||||||
|
ui->gain->setPageStep(step);
|
||||||
|
ui->gain->setSingleStep(step);
|
||||||
displaySettings();
|
displaySettings();
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (BladeRF2Input::MsgReportGainRange::match(message))
|
||||||
|
{
|
||||||
|
const BladeRF2Input::MsgReportGainRange& cfg = (BladeRF2Input::MsgReportGainRange&) message;
|
||||||
|
ui->gain->setMinimum(cfg.getMin());
|
||||||
|
ui->gain->setMaximum(cfg.getMax());
|
||||||
|
ui->gain->setSingleStep(cfg.getStep());
|
||||||
|
ui->gain->setPageStep(cfg.getStep());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (BladeRF2Input::MsgStartStop::match(message))
|
else if (BladeRF2Input::MsgStartStop::match(message))
|
||||||
@ -211,6 +238,7 @@ void BladeRF2InputGui::displaySettings()
|
|||||||
ui->decim->setCurrentIndex(m_settings.m_log2Decim);
|
ui->decim->setCurrentIndex(m_settings.m_log2Decim);
|
||||||
ui->fcPos->setCurrentIndex((int) m_settings.m_fcPos);
|
ui->fcPos->setCurrentIndex((int) m_settings.m_fcPos);
|
||||||
|
|
||||||
|
ui->gainText->setText(tr("%1").arg(m_settings.m_globalGain));
|
||||||
ui->gain->setValue(m_settings.m_globalGain);
|
ui->gain->setValue(m_settings.m_globalGain);
|
||||||
|
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
@ -274,6 +302,22 @@ void BladeRF2InputGui::on_fcPos_currentIndexChanged(int index)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BladeRF2InputGui::on_gainMode_currentIndexChanged(int index)
|
||||||
|
{
|
||||||
|
if (index < m_nbGainModes)
|
||||||
|
{
|
||||||
|
m_settings.m_gainMode = m_gainModes[index].mode;
|
||||||
|
sendSettings();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void BladeRF2InputGui::on_gain_valueChanged(int value)
|
||||||
|
{
|
||||||
|
ui->gainText->setText(tr("%1").arg(value));
|
||||||
|
m_settings.m_globalGain = value;
|
||||||
|
sendSettings();
|
||||||
|
}
|
||||||
|
|
||||||
void BladeRF2InputGui::on_startStop_toggled(bool checked)
|
void BladeRF2InputGui::on_startStop_toggled(bool checked)
|
||||||
{
|
{
|
||||||
if (m_doApplySettings)
|
if (m_doApplySettings)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user