From f3cb1d76c086c10012e24fcbbfbd370eea7098d1 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 22 Apr 2021 23:05:07 +0100 Subject: [PATCH] Repair a long standing defect with per band Tune & Tx power levels --- Modulator/Modulator.hpp | 6 +++--- widgets/mainwindow.cpp | 40 ++++++++++++++++++++++------------------ widgets/mainwindow.h | 1 + 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Modulator/Modulator.hpp b/Modulator/Modulator.hpp index c25074efe..bb2d86526 100644 --- a/Modulator/Modulator.hpp +++ b/Modulator/Modulator.hpp @@ -66,7 +66,7 @@ private: double m_dphi; double m_amp; double m_nsps; - double volatile m_frequency; + double m_frequency; double m_frequency0; double m_snr; double m_fac; @@ -80,9 +80,9 @@ private: qint16 m_ramp; unsigned m_frameRate; - ModulatorState volatile m_state; + ModulatorState m_state; - bool volatile m_tuning; + bool m_tuning; bool m_addNoise; bool m_bFastMode; diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 54c31949e..86a85449e 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -825,7 +825,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, connect(&logQSOTimer, &QTimer::timeout, this, &MainWindow::on_logQSOButton_clicked); tuneButtonTimer.setSingleShot(true); - connect(&tuneButtonTimer, &QTimer::timeout, this, &MainWindow::on_stopTxButton_clicked); + connect(&tuneButtonTimer, &QTimer::timeout, this, &MainWindow::end_tuning); tuneATU_Timer.setSingleShot(true); connect(&tuneATU_Timer, &QTimer::timeout, this, &MainWindow::stopTuneATU); @@ -6935,14 +6935,14 @@ void MainWindow::on_bandComboBox_activated (int index) void MainWindow::band_changed (Frequency f) { // Set the attenuation value if options are checked - QString curBand = ui->bandComboBox->currentText(); if (m_config.pwrBandTxMemory() && !m_tune) { - if (m_pwrBandTxMemory.contains(curBand)) { - ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); - } - else { - m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); - } + auto const&curBand = ui->bandComboBox->currentText(); + if (m_pwrBandTxMemory.contains(curBand)) { + ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); + } + else { + m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); + } } if (m_bandEdited) { @@ -7012,9 +7012,9 @@ void MainWindow::on_tuneButton_clicked (bool checked) static bool lastChecked = false; if (lastChecked == checked) return; lastChecked = checked; - QString curBand = ui->bandComboBox->currentText(); if (checked && m_tune==false) { // we're starting tuning so remember Tx and change pwr to Tune value if (m_config.pwrBandTuneMemory ()) { + auto const& curBand = ui->bandComboBox->currentText(); m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); // remember our Tx pwr m_PwrBandSetOK = false; if (m_pwrBandTuneMemory.contains(curBand)) { @@ -7023,15 +7023,6 @@ void MainWindow::on_tuneButton_clicked (bool checked) m_PwrBandSetOK = true; } } - else { // we're turning off so remember our Tune pwr setting and reset to Tx pwr - if (m_config.pwrBandTuneMemory() || m_config.pwrBandTxMemory()) { - stopTx(); - m_pwrBandTuneMemory[curBand] = ui->outAttenuation->value(); // remember our Tune pwr - m_PwrBandSetOK = false; - ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); // set to Tx pwr - m_PwrBandSetOK = true; - } - } if (m_tune) { tuneButtonTimer.start(250); } else { @@ -7043,6 +7034,19 @@ void MainWindow::on_tuneButton_clicked (bool checked) Q_EMIT tune (checked); } +void MainWindow::end_tuning () +{ + on_stopTxButton_clicked (); + // we're turning off so remember our Tune pwr setting and reset to Tx pwr + if (m_config.pwrBandTuneMemory() || m_config.pwrBandTxMemory()) { + auto const& curBand = ui->bandComboBox->currentText(); + m_pwrBandTuneMemory[curBand] = ui->outAttenuation->value(); // remember our Tune pwr + m_PwrBandSetOK = false; + ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); // set to Tx pwr + m_PwrBandSetOK = true; + } +} + void MainWindow::stop_tuning () { on_tuneButton_clicked(false); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 61bb98ce1..cdd67da70 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -254,6 +254,7 @@ private slots: void on_actionShort_list_of_add_on_prefixes_and_suffixes_triggered(); void band_changed (Frequency); void monitor (bool); + void end_tuning (); void stop_tuning (); void stopTuneATU(); void auto_tx_mode(bool);