mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-10 10:33:29 -05:00
RTL-SDR: implemented tuner bandwidth control
This commit is contained in:
parent
bb799a9785
commit
6800bc769e
3
debian/changelog
vendored
3
debian/changelog
vendored
@ -1,7 +1,8 @@
|
|||||||
sdrangel (3.11.0-1) unstable; urgency=medium
|
sdrangel (3.11.0-1) unstable; urgency=medium
|
||||||
|
|
||||||
* AirspyHF: support
|
* AirspyHF: support
|
||||||
* RTL-SDR: refactored 8 bit samples shifting during decimation
|
* Refactored 8 bit samples shifting during decimation (RTL-SDR and HackRF Rx)
|
||||||
|
* RTL-SDR: implemented RF filter control (tuner bandwidth)
|
||||||
* GUI: show REST API URL in about dialog
|
* GUI: show REST API URL in about dialog
|
||||||
|
|
||||||
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 13 Jan 2018 12:14:18 +0100
|
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 13 Jan 2018 12:14:18 +0100
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
const PluginDescriptor HackRFInputPlugin::m_pluginDescriptor = {
|
const PluginDescriptor HackRFInputPlugin::m_pluginDescriptor = {
|
||||||
QString("HackRF Input"),
|
QString("HackRF Input"),
|
||||||
QString("3.9.0"),
|
QString("3.11.0"),
|
||||||
QString("(c) Edouard Griffiths, F4EXB"),
|
QString("(c) Edouard Griffiths, F4EXB"),
|
||||||
QString("https://github.com/f4exb/sdrangel"),
|
QString("https://github.com/f4exb/sdrangel"),
|
||||||
true,
|
true,
|
||||||
|
@ -49,6 +49,9 @@ RTLSDRGui::RTLSDRGui(DeviceUISet *deviceUISet, QWidget* parent) :
|
|||||||
ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::GrayGreenYellow));
|
ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::GrayGreenYellow));
|
||||||
ui->sampleRate->setValueRange(7, RTLSDRInput::sampleRateHighRangeMin, RTLSDRInput::sampleRateHighRangeMax);
|
ui->sampleRate->setValueRange(7, RTLSDRInput::sampleRateHighRangeMin, RTLSDRInput::sampleRateHighRangeMax);
|
||||||
|
|
||||||
|
ui->rfBW->setColorMapper(ColorMapper(ColorMapper::GrayYellow));
|
||||||
|
ui->rfBW->setValueRange(4, 350, 8000);
|
||||||
|
|
||||||
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);
|
||||||
@ -247,6 +250,7 @@ void RTLSDRGui::displaySettings()
|
|||||||
updateFrequencyLimits();
|
updateFrequencyLimits();
|
||||||
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
ui->centerFrequency->setValue(m_settings.m_centerFrequency / 1000);
|
||||||
ui->sampleRate->setValue(m_settings.m_devSampleRate);
|
ui->sampleRate->setValue(m_settings.m_devSampleRate);
|
||||||
|
ui->rfBW->setValue(m_settings.m_rfBandwidth / 1000);
|
||||||
ui->dcOffset->setChecked(m_settings.m_dcBlock);
|
ui->dcOffset->setChecked(m_settings.m_dcBlock);
|
||||||
ui->iqImbalance->setChecked(m_settings.m_iqImbalance);
|
ui->iqImbalance->setChecked(m_settings.m_iqImbalance);
|
||||||
ui->ppm->setValue(m_settings.m_loPpmCorrection);
|
ui->ppm->setValue(m_settings.m_loPpmCorrection);
|
||||||
@ -435,6 +439,12 @@ void RTLSDRGui::on_sampleRate_changed(quint64 value)
|
|||||||
sendSettings();
|
sendSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RTLSDRGui::on_rfBW_changed(quint64 value)
|
||||||
|
{
|
||||||
|
m_settings.m_rfBandwidth = value * 1000;
|
||||||
|
sendSettings();
|
||||||
|
}
|
||||||
|
|
||||||
void RTLSDRGui::on_lowSampleRate_toggled(bool checked)
|
void RTLSDRGui::on_lowSampleRate_toggled(bool checked)
|
||||||
{
|
{
|
||||||
if (checked) {
|
if (checked) {
|
||||||
|
@ -78,6 +78,7 @@ private slots:
|
|||||||
void handleInputMessages();
|
void handleInputMessages();
|
||||||
void on_centerFrequency_changed(quint64 value);
|
void on_centerFrequency_changed(quint64 value);
|
||||||
void on_sampleRate_changed(quint64 value);
|
void on_sampleRate_changed(quint64 value);
|
||||||
|
void on_rfBW_changed(quint64 value);
|
||||||
void on_lowSampleRate_toggled(bool checked);
|
void on_lowSampleRate_toggled(bool checked);
|
||||||
void on_dcOffset_toggled(bool checked);
|
void on_dcOffset_toggled(bool checked);
|
||||||
void on_iqImbalance_toggled(bool checked);
|
void on_iqImbalance_toggled(bool checked);
|
||||||
|
@ -471,7 +471,7 @@
|
|||||||
<string>RTLSDR special direct sampling mode (HF Bands)</string>
|
<string>RTLSDR special direct sampling mode (HF Bands)</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>No-mod Direct Sampling</string>
|
<string>No-mod DS</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -488,6 +488,48 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="rfBWabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>RFBW</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="ValueDial" name="rfBW" native="true">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>32</width>
|
||||||
|
<height>16</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<family>DejaVu Sans Mono</family>
|
||||||
|
<pointsize>12</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="cursor">
|
||||||
|
<cursorShape>PointingHandCursor</cursorShape>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>RF filter bandwidth (kHz)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="rfBWUnits">
|
||||||
|
<property name="text">
|
||||||
|
<string>kHz</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
@ -572,7 +614,7 @@
|
|||||||
<item>
|
<item>
|
||||||
<layout class="QHBoxLayout" name="fillerLayout">
|
<layout class="QHBoxLayout" name="fillerLayout">
|
||||||
<item>
|
<item>
|
||||||
<spacer name="filerVerticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
</property>
|
</property>
|
||||||
|
@ -515,6 +515,23 @@ bool RTLSDRInput::applySettings(const RTLSDRSettings& settings, bool force)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((m_settings.m_rfBandwidth != settings.m_rfBandwidth) || force)
|
||||||
|
{
|
||||||
|
m_settings.m_rfBandwidth = settings.m_rfBandwidth;
|
||||||
|
|
||||||
|
if (m_dev != 0)
|
||||||
|
{
|
||||||
|
if (rtlsdr_set_tuner_bandwidth( m_dev, m_settings.m_rfBandwidth) != 0)
|
||||||
|
{
|
||||||
|
qCritical("RTLSDRInput::applySettings: could not set RF bandwidth to %u", m_settings.m_rfBandwidth);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "RTLSDRInput::applySettings: set RF bandwidth to " << m_settings.m_rfBandwidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (forwardChange)
|
if (forwardChange)
|
||||||
{
|
{
|
||||||
int sampleRate = m_settings.m_devSampleRate/(1<<m_settings.m_log2Decim);
|
int sampleRate = m_settings.m_devSampleRate/(1<<m_settings.m_log2Decim);
|
||||||
|
@ -38,6 +38,7 @@ void RTLSDRSettings::resetToDefaults()
|
|||||||
m_noModMode = false;
|
m_noModMode = false;
|
||||||
m_transverterMode = false;
|
m_transverterMode = false;
|
||||||
m_transverterDeltaFrequency = 0;
|
m_transverterDeltaFrequency = 0;
|
||||||
|
m_rfBandwidth = 2500 * 1000; // Hz
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray RTLSDRSettings::serialize() const
|
QByteArray RTLSDRSettings::serialize() const
|
||||||
@ -56,6 +57,7 @@ QByteArray RTLSDRSettings::serialize() const
|
|||||||
s.writeBool(11, m_noModMode);
|
s.writeBool(11, m_noModMode);
|
||||||
s.writeBool(12, m_transverterMode);
|
s.writeBool(12, m_transverterMode);
|
||||||
s.writeS64(13, m_transverterDeltaFrequency);
|
s.writeS64(13, m_transverterDeltaFrequency);
|
||||||
|
s.writeU32(14, m_rfBandwidth);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
@ -87,6 +89,7 @@ bool RTLSDRSettings::deserialize(const QByteArray& data)
|
|||||||
d.readBool(11, &m_noModMode, false);
|
d.readBool(11, &m_noModMode, false);
|
||||||
d.readBool(12, &m_transverterMode, false);
|
d.readBool(12, &m_transverterMode, false);
|
||||||
d.readS64(13, &m_transverterDeltaFrequency, 0);
|
d.readS64(13, &m_transverterDeltaFrequency, 0);
|
||||||
|
d.readU32(4, &m_rfBandwidth, 2500 * 1000);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ struct RTLSDRSettings {
|
|||||||
bool m_noModMode;
|
bool m_noModMode;
|
||||||
bool m_transverterMode;
|
bool m_transverterMode;
|
||||||
qint64 m_transverterDeltaFrequency;
|
qint64 m_transverterDeltaFrequency;
|
||||||
|
quint32 m_rfBandwidth; //!< RF filter bandwidth in Hz
|
||||||
|
|
||||||
RTLSDRSettings();
|
RTLSDRSettings();
|
||||||
void resetToDefaults();
|
void resetToDefaults();
|
||||||
|
Loading…
Reference in New Issue
Block a user