From 54cba15e471f848584cdf9ce3fb0f0876d32171e Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 22 Apr 2021 14:14:23 +0100 Subject: [PATCH 1/3] Generate a tune up tone when WSPR band hopping for Tx periods Previously a tune up tone was not generated if the first period on a new band was going to be a Tx period, this is no longer so and thus allows low (or high) power tune tones as set up by the user. Note that tune up tones are still not sent for bands flagged as Rx Only in the band hopping schedule, this is to protect active aerials and avoid unintended transmissions on unlicensed bands. --- WSPR/WSPRBandHopping.cpp | 1 - WSPR/WSPRBandHopping.hpp | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/WSPR/WSPRBandHopping.cpp b/WSPR/WSPRBandHopping.cpp index cf7cc2f94..c5652f525 100644 --- a/WSPR/WSPRBandHopping.cpp +++ b/WSPR/WSPRBandHopping.cpp @@ -473,7 +473,6 @@ auto WSPRBandHopping::next_hop (bool tx_enabled) -> Hop , frequencies_index >= 0 // new band && tx_enabled // transmit is allowed - && !tx_next // not going to Tx anyway && m_->bands_[4].testBit (band_index) // tune up required && !m_->bands_[5].testBit (band_index) // not an Rx only band diff --git a/WSPR/WSPRBandHopping.hpp b/WSPR/WSPRBandHopping.hpp index 7ee62ba16..9af27b5f3 100644 --- a/WSPR/WSPRBandHopping.hpp +++ b/WSPR/WSPRBandHopping.hpp @@ -24,7 +24,8 @@ class QWidget; // // Along with selecting bands a flag indicating that a short tune up // signal is required for specified bands before they are used for -// receive. +// transmit or receive, unless they are flagged as Rx Only (intended +// to protect Rx active aerials and non-licensed bands). // // Provides a Qt property that holds the Tx percentage which is used // to generate a semi-randomized schedule of period to transmit. This From f3cb1d76c086c10012e24fcbbfbd370eea7098d1 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 22 Apr 2021 23:05:07 +0100 Subject: [PATCH 2/3] 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); From 7455ec02c3aabac610062f936c5052ee944201cf Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 25 Apr 2021 11:41:59 +0100 Subject: [PATCH 3/3] Repair User Guide issue, tnx to Sandro, IW3RAB --- doc/user_guide/en/decoder_notes.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user_guide/en/decoder_notes.adoc b/doc/user_guide/en/decoder_notes.adoc index 3da3a8cab..3780828c9 100644 --- a/doc/user_guide/en/decoder_notes.adoc +++ b/doc/user_guide/en/decoder_notes.adoc @@ -112,7 +112,7 @@ summarized in the following Table: |=========================================== |Mode |Mode character|Sync character|End of line information |FST4 | ` | | ?   aP -|FT4 | ~ | | ?   aP +|FT4 | + | | ?   aP |FT8 | ~ | | ?   aP |JT4 | $ | *, # | f, fN, dCN |JT9 | @ | |