diff --git a/plugins/samplesource/airspy/airspygui.cpp b/plugins/samplesource/airspy/airspygui.cpp
index d3cd1db63..55c56df41 100644
--- a/plugins/samplesource/airspy/airspygui.cpp
+++ b/plugins/samplesource/airspy/airspygui.cpp
@@ -28,7 +28,7 @@ AirspyGui::AirspyGui(PluginAPI* pluginAPI, QWidget* parent) :
ui(new Ui::AirspyGui),
m_pluginAPI(pluginAPI),
m_settings(),
- m_sampleSource(NULL)
+ m_sampleSource(0)
{
ui->setupUi(this);
ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold));
@@ -156,6 +156,9 @@ void AirspyGui::displaySettings()
ui->vgaText->setText(tr("%1dB").arg(m_settings.m_vgaGain));
ui->vga->setValue(m_settings.m_vgaGain);
+
+ ui->lnaAGC->setChecked(m_settings.m_lnaAGC);
+ ui->mixAGC->setChecked(m_settings.m_mixerAGC);
}
void AirspyGui::displaySampleRates()
@@ -228,6 +231,18 @@ void AirspyGui::on_biasT_stateChanged(int state)
sendSettings();
}
+void AirspyGui::on_lnaAGC_stateChanged(int state)
+{
+ m_settings.m_lnaAGC = (state == Qt::Checked);
+ sendSettings();
+}
+
+void AirspyGui::on_mixAGC_stateChanged(int state)
+{
+ m_settings.m_mixerAGC = (state == Qt::Checked);
+ sendSettings();
+}
+
void AirspyGui::on_decim_valueChanged(int value)
{
if ((value <0) || (value > 6))
diff --git a/plugins/samplesource/airspy/airspygui.h b/plugins/samplesource/airspy/airspygui.h
index 8c55ea56c..ba805f651 100644
--- a/plugins/samplesource/airspy/airspygui.h
+++ b/plugins/samplesource/airspy/airspygui.h
@@ -76,6 +76,8 @@ private slots:
void on_lna_valueChanged(int value);
void on_mix_valueChanged(int value);
void on_vga_valueChanged(int value);
+ void on_lnaAGC_stateChanged(int state);
+ void on_mixAGC_stateChanged(int state);
void updateHardware();
void handleSourceMessages();
};
diff --git a/plugins/samplesource/airspy/airspygui.ui b/plugins/samplesource/airspy/airspygui.ui
index d71ebe894..c7556464e 100644
--- a/plugins/samplesource/airspy/airspygui.ui
+++ b/plugins/samplesource/airspy/airspygui.ui
@@ -338,7 +338,7 @@
- -
+
-
@@ -346,6 +346,9 @@
0
+
+ 1
+
0dB
@@ -354,6 +357,16 @@
+ -
+
+
+ Toggle LNA AGC
+
+
+ AGC
+
+
+
-
@@ -406,6 +419,16 @@
+ -
+
+
+ Toggle mixer AGC
+
+
+ AGC
+
+
+
-
@@ -463,17 +486,17 @@
+
+ ButtonSwitch
+ QToolButton
+
+
ValueDial
QWidget
1
-
- ButtonSwitch
- QToolButton
-
-
diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp
index 2c07fa4f5..d0ad423bf 100644
--- a/plugins/samplesource/airspy/airspyinput.cpp
+++ b/plugins/samplesource/airspy/airspyinput.cpp
@@ -350,6 +350,25 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force)
}
}
+ if ((m_settings.m_lnaAGC != settings.m_lnaAGC) || force)
+ {
+ m_settings.m_lnaAGC = settings.m_lnaAGC;
+
+ if (m_dev != 0)
+ {
+ rc = (airspy_error) airspy_set_lna_agc(m_dev, (m_settings.m_lnaAGC ? 1 : 0));
+ }
+
+ if(rc != AIRSPY_SUCCESS)
+ {
+ qDebug("AirspyInput::applySettings: airspy_set_lna_agc failed: %s", airspy_error_name(rc));
+ }
+ else
+ {
+ qDebug() << "AirspyInput:applySettings: LNA AGC set to " << m_settings.m_lnaAGC;
+ }
+ }
+
if ((m_settings.m_mixerGain != settings.m_mixerGain) || force)
{
m_settings.m_mixerGain = settings.m_mixerGain;
@@ -369,6 +388,25 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force)
}
}
+ if ((m_settings.m_mixerAGC != settings.m_mixerAGC) || force)
+ {
+ m_settings.m_mixerAGC = settings.m_mixerAGC;
+
+ if (m_dev != 0)
+ {
+ rc = (airspy_error) airspy_set_mixer_agc(m_dev, (m_settings.m_mixerAGC ? 1 : 0));
+ }
+
+ if(rc != AIRSPY_SUCCESS)
+ {
+ qDebug("AirspyInput::applySettings: airspy_set_mixer_agc failed: %s", airspy_error_name(rc));
+ }
+ else
+ {
+ qDebug() << "AirspyInput:applySettings: Mixer AGC set to " << m_settings.m_mixerAGC;
+ }
+ }
+
if ((m_settings.m_vgaGain != settings.m_vgaGain) || force)
{
m_settings.m_vgaGain = settings.m_vgaGain;
diff --git a/plugins/samplesource/airspy/airspysettings.cpp b/plugins/samplesource/airspy/airspysettings.cpp
index 67c3dcbed..dca1edc7b 100644
--- a/plugins/samplesource/airspy/airspysettings.cpp
+++ b/plugins/samplesource/airspy/airspysettings.cpp
@@ -31,6 +31,8 @@ void AirspySettings::resetToDefaults()
m_lnaGain = 14;
m_mixerGain = 15;
m_vgaGain = 4;
+ m_lnaAGC = false;
+ m_mixerAGC = false;
m_log2Decim = 0;
m_fcPos = FC_POS_CENTER;
m_biasT = false;
@@ -52,6 +54,8 @@ QByteArray AirspySettings::serialize() const
s.writeBool(8, m_biasT);
s.writeBool(9, m_dcBlock);
s.writeBool(10, m_iqCorrection);
+ s.writeBool(11, m_lnaAGC);
+ s.writeBool(12, m_mixerAGC);
return s.final();
}
@@ -81,6 +85,8 @@ bool AirspySettings::deserialize(const QByteArray& data)
d.readBool(8, &m_biasT, false);
d.readBool(9, &m_dcBlock, false);
d.readBool(10, &m_iqCorrection, false);
+ d.readBool(11, &m_lnaAGC, false);
+ d.readBool(12, &m_mixerAGC, false);
return true;
}
diff --git a/plugins/samplesource/airspy/airspysettings.h b/plugins/samplesource/airspy/airspysettings.h
index 1378d4e74..6cbf16aec 100644
--- a/plugins/samplesource/airspy/airspysettings.h
+++ b/plugins/samplesource/airspy/airspysettings.h
@@ -30,6 +30,8 @@ struct AirspySettings {
quint32 m_lnaGain;
quint32 m_mixerGain;
quint32 m_vgaGain;
+ bool m_lnaAGC;
+ bool m_mixerAGC;
quint32 m_log2Decim;
fcPos_t m_fcPos;
bool m_biasT;