diff --git a/plugins/samplesource/airspyhf/airspyhfgui.cpp b/plugins/samplesource/airspyhf/airspyhfgui.cpp
index ac35c31c0..e1ae7e9c8 100644
--- a/plugins/samplesource/airspyhf/airspyhfgui.cpp
+++ b/plugins/samplesource/airspyhf/airspyhfgui.cpp
@@ -182,8 +182,22 @@ void AirspyHFGui::updateFrequencyLimits()
{
// values in kHz
qint64 deltaFrequency = m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency/1000 : 0;
- qint64 minLimit = AirspyHFInput::loLowLimitFreqHF/1000 + deltaFrequency;
- qint64 maxLimit = AirspyHFInput::loHighLimitFreqHF/1000 + deltaFrequency;
+
+ qint64 minLimit;
+ qint64 maxLimit;
+
+ switch(m_settings.m_bandIndex)
+ {
+ case 1:
+ minLimit = AirspyHFInput::loLowLimitFreqVHF/1000 + deltaFrequency;
+ maxLimit = AirspyHFInput::loHighLimitFreqVHF/1000 + deltaFrequency;
+ break;
+ case 0:
+ default:
+ minLimit = AirspyHFInput::loLowLimitFreqHF/1000 + deltaFrequency;
+ maxLimit = AirspyHFInput::loHighLimitFreqHF/1000 + deltaFrequency;
+ break;
+ }
minLimit = minLimit < 0 ? 0 : minLimit > 9999999 ? 9999999 : minLimit;
maxLimit = maxLimit < 0 ? 0 : maxLimit > 9999999 ? 9999999 : maxLimit;
@@ -331,6 +345,17 @@ void AirspyHFGui::on_transverter_clicked()
sendSettings();
}
+void AirspyHFGui::on_band_currentIndexChanged(int index)
+{
+ if ((index < 0) || (index > 1)) {
+ return;
+ }
+
+ m_settings.m_bandIndex = index;
+ updateFrequencyLimits();
+ sendSettings();
+}
+
void AirspyHFGui::updateHardware()
{
qDebug() << "AirspyHFGui::updateHardware";
diff --git a/plugins/samplesource/airspyhf/airspyhfgui.h b/plugins/samplesource/airspyhf/airspyhfgui.h
index 6c935ddf8..a3842067d 100644
--- a/plugins/samplesource/airspyhf/airspyhfgui.h
+++ b/plugins/samplesource/airspyhf/airspyhfgui.h
@@ -86,6 +86,7 @@ private slots:
void on_startStop_toggled(bool checked);
void on_record_toggled(bool checked);
void on_transverter_clicked();
+ void on_band_currentIndexChanged(int index);
void updateHardware();
void updateStatus();
void handleInputMessages();
diff --git a/plugins/samplesource/airspyhf/airspyhfgui.ui b/plugins/samplesource/airspyhf/airspyhfgui.ui
index 35e2098f8..339f896b8 100644
--- a/plugins/samplesource/airspyhf/airspyhfgui.ui
+++ b/plugins/samplesource/airspyhf/airspyhfgui.ui
@@ -6,7 +6,7 @@
0
0
- 300
+ 320
240
@@ -18,7 +18,7 @@
- 300
+ 320
220
diff --git a/plugins/samplesource/airspyhf/airspyhfinput.cpp b/plugins/samplesource/airspyhf/airspyhfinput.cpp
index 5d1e3c1a8..82059bcd3 100644
--- a/plugins/samplesource/airspyhf/airspyhfinput.cpp
+++ b/plugins/samplesource/airspyhf/airspyhfinput.cpp
@@ -134,7 +134,7 @@ bool AirspyHFInput::openDevice()
delete[] sampleRates;
- airspyhf_set_sampleformat(m_dev, AIRSPYHF_SAMPLE_FORMAT_INT16);
+ airspyhf_set_sample_type(m_dev, AIRSPYHF_SAMPLE_INT16_NDSP_IQ);
return true;
}
@@ -320,6 +320,17 @@ bool AirspyHFInput::handleMessage(const Message& message)
void AirspyHFInput::setDeviceCenterFrequency(quint64 freq_hz)
{
+ switch(m_settings.m_bandIndex)
+ {
+ case 1:
+ freq_hz = freq_hz < loLowLimitFreqVHF ? loLowLimitFreqVHF : freq_hz > loHighLimitFreqVHF ? loHighLimitFreqVHF : freq_hz;
+ break;
+ case 0:
+ default:
+ freq_hz = freq_hz < loLowLimitFreqHF ? loLowLimitFreqHF : freq_hz > loHighLimitFreqHF ? loHighLimitFreqHF : freq_hz;
+ break;
+ }
+
qint64 df = ((qint64)freq_hz * m_settings.m_LOppmTenths) / 10000000LL;
freq_hz += df;
diff --git a/plugins/samplesource/airspyhf/airspyhfsettings.cpp b/plugins/samplesource/airspyhf/airspyhfsettings.cpp
index ea36f62b8..2c68f7089 100644
--- a/plugins/samplesource/airspyhf/airspyhfsettings.cpp
+++ b/plugins/samplesource/airspyhf/airspyhfsettings.cpp
@@ -34,6 +34,7 @@ void AirspyHFSettings::resetToDefaults()
m_iqCorrection = false;
m_transverterMode = false;
m_transverterDeltaFrequency = 0;
+ m_bandIndex = 0;
}
QByteArray AirspyHFSettings::serialize() const
@@ -48,6 +49,7 @@ QByteArray AirspyHFSettings::serialize() const
s.writeBool(6, m_iqCorrection);
s.writeBool(7, m_transverterMode);
s.writeS64(8, m_transverterDeltaFrequency);
+ s.writeU32(9, m_bandIndex);
return s.final();
}
@@ -65,6 +67,7 @@ bool AirspyHFSettings::deserialize(const QByteArray& data)
if (d.getVersion() == 1)
{
int intval;
+ quint32 uintval;
d.readU32(1, &m_devSampleRateIndex, 0);
d.readS32(2, &m_LOppmTenths, 0);
@@ -75,6 +78,8 @@ bool AirspyHFSettings::deserialize(const QByteArray& data)
d.readBool(6, &m_iqCorrection, false);
d.readBool(7, &m_transverterMode, false);
d.readS64(8, &m_transverterDeltaFrequency, 0);
+ d.readU32(9, &uintval, 0);
+ m_bandIndex = uintval > 1 ? 1 : uintval;
return true;
}
diff --git a/plugins/samplesource/airspyhf/airspyhfsettings.h b/plugins/samplesource/airspyhf/airspyhfsettings.h
index 5936c4deb..573e6dd70 100644
--- a/plugins/samplesource/airspyhf/airspyhfsettings.h
+++ b/plugins/samplesource/airspyhf/airspyhfsettings.h
@@ -33,6 +33,7 @@ struct AirspyHFSettings {
bool m_iqCorrection;
bool m_transverterMode;
qint64 m_transverterDeltaFrequency;
+ quint32 m_bandIndex;
AirspyHFSettings();
void resetToDefaults();