From 87a60ff22001ebf99cebe3abf09740545f075030 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 24 Sep 2017 02:08:08 +0200 Subject: [PATCH] RTLSDR tranverter mode interim state (1) --- plugins/samplesource/rtlsdr/rtlsdrgui.cpp | 18 ++++++++--------- plugins/samplesource/rtlsdr/rtlsdrgui.h | 3 +-- plugins/samplesource/rtlsdr/rtlsdrgui.ui | 9 +++++++++ sdrbase/gui/transverterbutton.cpp | 24 ++++++++++------------- sdrbase/gui/transverterbutton.h | 10 ++++++---- sdrbase/gui/transverterdialog.cpp | 11 +++++++---- sdrbase/gui/transverterdialog.h | 5 +++-- sdrbase/gui/transverterdialog.ui | 24 +++++++++++++++++++++-- 8 files changed, 67 insertions(+), 37 deletions(-) diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp index 7979bd40d..b0f13f0c7 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.cpp +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.cpp @@ -179,12 +179,15 @@ void RTLSDRGui::updateSampleRateAndFrequency() void RTLSDRGui::updateFrequencyLimits() { // values in kHz - qint64 minLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMin : RTLSDRInput::frequencyHighRangeMin) + m_settings.m_transverterDeltaFrequency/1000; - qint64 maxLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMax : RTLSDRInput::frequencyHighRangeMax) + m_settings.m_transverterDeltaFrequency/1000; + qint64 deltaFrequency = m_settings.m_transverterMode ? m_settings.m_transverterDeltaFrequency/1000 : 0; + qint64 minLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMin : RTLSDRInput::frequencyHighRangeMin) + deltaFrequency; + qint64 maxLimit = (m_settings.m_noModMode ? RTLSDRInput::frequencyLowRangeMax : RTLSDRInput::frequencyHighRangeMax) + deltaFrequency; minLimit = minLimit < 0 ? 0 : minLimit > 9999999 ? 9999999 : minLimit; maxLimit = maxLimit < 0 ? 0 : maxLimit > 9999999 ? 9999999 : maxLimit; + qDebug("RTLSDRGui::updateFrequencyLimits: delta: %lld min: %lld max: %lld", deltaFrequency, minLimit, maxLimit); + ui->centerFrequency->setValueRange(7, minLimit, maxLimit); } @@ -299,10 +302,6 @@ void RTLSDRGui::on_gain_valueChanged(int value) sendSettings(); } -void RTLSDRGui::on_sampleRate_currentIndexChanged(int index __attribute__((unused))) -{ -} - void RTLSDRGui::on_startStop_toggled(bool checked) { if (checked) @@ -332,10 +331,11 @@ void RTLSDRGui::on_record_toggled(bool checked) m_sampleSource->getInputMessageQueue()->push(message); } -void RTLSDRGui::on_transverter_toggled(bool checked) +void RTLSDRGui::on_transverter_clicked() { - m_settings.m_transverterMode = checked; - m_settings.m_transverterDeltaFrequency = checked ? ui->transverter->getDeltaFrequency() : 0; + m_settings.m_transverterMode = ui->transverter->getDeltaFrequencyAcive(); + m_settings.m_transverterDeltaFrequency = ui->transverter->getDeltaFrequency(); + qDebug("RTLSDRGui::on_transverter_clicked: %lld Hz %s", m_settings.m_transverterDeltaFrequency, m_settings.m_transverterMode ? "on" : "off"); updateFrequencyLimits(); m_settings.m_centerFrequency = ui->centerFrequency->getValueNew()*1000; sendSettings(); diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.h b/plugins/samplesource/rtlsdr/rtlsdrgui.h index d3f4da031..6d4004b34 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.h +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.h @@ -82,12 +82,11 @@ private slots: void on_fcPos_currentIndexChanged(int index); void on_ppm_valueChanged(int value); void on_gain_valueChanged(int value); - void on_sampleRate_currentIndexChanged(int index); void on_checkBox_stateChanged(int state); void on_agc_stateChanged(int state); void on_startStop_toggled(bool checked); void on_record_toggled(bool checked); - void on_transverter_toggled(bool checked); + void on_transverter_clicked(); void updateHardware(); void updateStatus(); }; diff --git a/plugins/samplesource/rtlsdr/rtlsdrgui.ui b/plugins/samplesource/rtlsdr/rtlsdrgui.ui index b8937a0d6..a6126a86f 100644 --- a/plugins/samplesource/rtlsdr/rtlsdrgui.ui +++ b/plugins/samplesource/rtlsdr/rtlsdrgui.ui @@ -300,12 +300,21 @@ + + + 24 + 24 + + Transverter frequency translation toggle X + + false + diff --git a/sdrbase/gui/transverterbutton.cpp b/sdrbase/gui/transverterbutton.cpp index eede250c8..e605d95c8 100644 --- a/sdrbase/gui/transverterbutton.cpp +++ b/sdrbase/gui/transverterbutton.cpp @@ -22,22 +22,18 @@ #include "transverterbutton.h" TransverterButton::TransverterButton(QWidget* parent) : - ButtonSwitch(parent), - m_deltaFrequency(0) + QPushButton(parent), + m_deltaFrequency(0), + m_deltaFrequencyActive(false) { - connect(this, SIGNAL(toggled(bool)), this, SLOT(onToggled(bool))); + connect(this, SIGNAL(clicked(bool)), this, SLOT(onClicked(bool))); } -void TransverterButton::onToggled(bool checked) +void TransverterButton::onClicked() { - if (checked) { - TransverterDialog transverterDialog(&m_deltaFrequency, this); - transverterDialog.exec(); - setToolTip(tr("Transverter frequency translation toggle. Delta frequency %1 MHz").arg(m_deltaFrequency/1000000.0)); - } -} - -void TransverterButton::doToggle(bool checked) -{ - onToggled(checked); + TransverterDialog transverterDialog(m_deltaFrequency, m_deltaFrequencyActive, this); + transverterDialog.exec(); + setToolTip(tr("Transverter frequency translation dialog. Delta frequency %1 MHz %2") + .arg(m_deltaFrequency/1000000.0) + .arg(m_deltaFrequencyActive ? "enabled" : "disabled")); } diff --git a/sdrbase/gui/transverterbutton.h b/sdrbase/gui/transverterbutton.h index d6a490064..d738f9f3d 100644 --- a/sdrbase/gui/transverterbutton.h +++ b/sdrbase/gui/transverterbutton.h @@ -21,22 +21,24 @@ #ifndef SDRBASE_GUI_TRANSVERTERBUTTON_H_ #define SDRBASE_GUI_TRANSVERTERBUTTON_H_ -#include "buttonswitch.h" +#include -class TransverterButton : public ButtonSwitch { +class TransverterButton : public QPushButton { Q_OBJECT public: TransverterButton(QWidget* parent = 0); - void doToggle(bool checked); qint64 getDeltaFrequency() const { return m_deltaFrequency; } void setDeltaFrequency(qint64 deltaFrequency) { m_deltaFrequency = deltaFrequency; } + bool getDeltaFrequencyAcive() const { return m_deltaFrequencyActive; } + void setDeltaFrequencyActive(bool active) { m_deltaFrequencyActive = active; } private slots: - void onToggled(bool checked); + void onClicked(); private: qint64 m_deltaFrequency; + bool m_deltaFrequencyActive; }; diff --git a/sdrbase/gui/transverterdialog.cpp b/sdrbase/gui/transverterdialog.cpp index ed049f659..d75e33a2f 100644 --- a/sdrbase/gui/transverterdialog.cpp +++ b/sdrbase/gui/transverterdialog.cpp @@ -23,16 +23,18 @@ #include "ui_transverterdialog.h" -TransverterDialog::TransverterDialog(qint64 *deltaFrequency, QWidget* parent) : +TransverterDialog::TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, QWidget* parent) : QDialog(parent), ui(new Ui::TransverterDialog), - m_deltaFrequency(deltaFrequency) + m_deltaFrequency(deltaFrequency), + m_deltaFrequencyActive(deltaFrequencyActive) { ui->setupUi(this); ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 10, -9999999999L, 9999999999L); - ui->deltaFrequency->setValue(*m_deltaFrequency); + ui->deltaFrequency->setValue(m_deltaFrequency); + ui->deltaFrequencyActive->setChecked(m_deltaFrequencyActive); } TransverterDialog::~TransverterDialog() @@ -42,6 +44,7 @@ TransverterDialog::~TransverterDialog() void TransverterDialog::accept() { - *m_deltaFrequency = ui->deltaFrequency->getValueNew(); + m_deltaFrequency = ui->deltaFrequency->getValueNew(); + m_deltaFrequencyActive = ui->deltaFrequencyActive->isChecked(); QDialog::accept(); } diff --git a/sdrbase/gui/transverterdialog.h b/sdrbase/gui/transverterdialog.h index 58edcc063..581617482 100644 --- a/sdrbase/gui/transverterdialog.h +++ b/sdrbase/gui/transverterdialog.h @@ -31,12 +31,13 @@ class TransverterDialog : public QDialog { Q_OBJECT public: - explicit TransverterDialog(qint64 *deltaFrequency, QWidget* parent = 0); + explicit TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, QWidget* parent = 0); ~TransverterDialog(); private: Ui::TransverterDialog* ui; - qint64 *m_deltaFrequency; + qint64& m_deltaFrequency; + bool& m_deltaFrequencyActive; private slots: void accept(); diff --git a/sdrbase/gui/transverterdialog.ui b/sdrbase/gui/transverterdialog.ui index 8b3522215..c657b3994 100644 --- a/sdrbase/gui/transverterdialog.ui +++ b/sdrbase/gui/transverterdialog.ui @@ -60,7 +60,6 @@ Transverter delta frequency (Hz) - deltaFrequencyUnits @@ -83,6 +82,20 @@ + + + + Enable or disable frequency translation + + + + + + + :/checkmark.png:/checkmark.png + + + @@ -106,11 +119,18 @@
gui/valuedialz.h
1 + + ButtonSwitch + QToolButton +
gui/buttonswitch.h
+
buttonBox - + + + buttonBox