Merge branch 'release-2.4.0'

This commit is contained in:
Bill Somerville 2021-05-22 01:12:27 +01:00
commit 9bb987834e
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F
21 changed files with 968 additions and 820 deletions

View File

@ -3,8 +3,7 @@
#include <stdexcept>
#include <string>
#include <memory>
#include <locale.h>
#include <locale>
#include <QCoreApplication>
#include <QTextStream>
@ -239,11 +238,9 @@ int main(int argc, char *argv[])
QCoreApplication app {argc, argv};
try
{
::setlocale (LC_NUMERIC, "C"); // ensure number forms are in
// consistent format, do this
// after instantiating
// QApplication so that Qt has
// correct l18n
// ensure number forms are in consistent format, do this after
// instantiating QApplication so that Qt has correct l18n
std::locale::global (std::locale::classic ());
// Override programs executable basename as application name.
app.setApplicationName ("WSJT-X Record Time Signal");

View File

@ -71,7 +71,7 @@ message (STATUS "******************************************************")
include (set_build_type)
# RC 0 or omitted is a development build, GA is a General Availability release build
set_build_type (RC 4)
set_build_type (GA)
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
#

View File

@ -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;

82
NEWS
View File

@ -46,7 +46,7 @@ discovered in the RC3 and v2.3.0 GA releases.
Release: WSJT-X 2.4.0-rc3
Mar 16, 2021
Mar 15, 2021
-------------------------
WSJT-X 2.4.0 Release Candidate 3 adds new Q65 mode functionality and
@ -61,7 +61,7 @@ the RC2 and v2.3.0 GA releases.
- Behavior of "Save decoded" has been corrected.
- Repaied a defect that caused crash when displaying the Wide Graph
- Repaired a defect that caused crash when displaying the Wide Graph
with lower frequency limit set to 0.
- Program no longer terminates a transmission when Settings is
@ -131,7 +131,7 @@ the RC1 release.
Release: WSJT-X 2.3.1
Mar 18, 2021
Mar 26, 2021
---------------------
WSJT-X 2.3.1 General Availability release updates the User Guide to
@ -578,7 +578,7 @@ of course the updated WSJT-X 2.2 User Guide.
Release: WSJT-X 2.2.0-rc3
May 30, 2020
May 29, 2020
-------------------------
WSJT-X 2.2.0-rc3 is the third release candidate for WSJT-X 2.2.0.
@ -801,9 +801,77 @@ We now provide a separate installation package for 64-bit Windows 7
and later, with significant improvements in decoding speed.
Release: WSJT-X 2.0.1
February 25, 2019
---------------------
- New "Call Best" button for FT4 mode to select the best reply to a
CQ call based on neediness.
- Fixed UTC display on FT4 waterfall.
This release is made by invitation only to selected testers to trial
the FT4 mode in semi-realistic contest simulations and to elicit
feedback to guide future development.
*Note* this release is not for general public release and we request
that it is not distributed.
Release: WSJT-X 2.1.0-rc3
April 5, 2019
-------------------------
WSJT-X 2.1.0 third release candidate is an enhancement release to
change the implementation of the new FT4 mode to a synchronous T/R
period of 6 seconds.
This release is made by invitation only to selected testers to trial
the FT4 mode in semi-realistic contest simulations and to elicit
feedback to guide future development.
*Note* this release is not for general public release and we request
that it is not distributed.
Release: WSJT-X 2.1.0-rc2
March 29, 2019
-------------------------
WSJT-X 2.1.0 second release candidate is a bug fix release to repair
some usability issues with FT4 contest mode. The following new
features are also included.
- Better options for QSO flow by clicking Tx# buttons to transmit
- A 64-bit package for Windows 64-bit systems
- Improved FT4 sync detection speed
This release is made by invitation only to selected testers to trial
the FT4 mode in semi-realistic contest simulations and to elicit
feedback to guide future development.
*Note* this release is not for general public release and we request
that it is not distributed.
Release: WSJT-X 2.1.0-rc1
March 25, 2019
-------------------------
WSJT-X 2.1.0 first release candidate is a preview alpha quality
release containing the following new features.
- FT4 mode, a new mode targeted at HF digital contesting
- GMSK modulation for FT4 and FT8
- New waterfall option to select between raw sensitivity or a
filtered signal representation for best visualization of signal
quality
This release is made by invitation only to selected testers to trial
the FT4 mode in semi-realistic contest simulations and to elicit
feedback to guide future development.
*Note* this release is not for general public release and we request
that it is not distributed.
Release: WSJT-X 2.0.1
February 25, 2019
---------------------
WSJT-X 2.0.1 is a bug fix release including the following defect
repairs reported since the v2.0.0 GA release.

View File

@ -11,6 +11,44 @@
Copyright 2001 - 2021 by Joe Taylor, K1JT.
Release: WSJT-X 2.4.0
May 24, 2021
---------------------
WSJT-X 2.4.0 General Availability Release adds new Q65 mode
functionality and decoder optimizations and repairs several defects
and regressions discovered in the RC4 and v2.3.1 GA releases. Since
the release candidates documented below this final release includes
the following enhancements and defect repairs.
- On MS Windows WSJT-X now ships with a DLL version of the Hamlib
library, specifically Hamlib version 4.2. This should allow Hamlib
bug fixes to resolved by the user replacing the DLL with an updated
version.
- Repair a defect with own call decode highlighting when callsigns
with a common root are decoded.
- Q65 message averaging correctly disabled as be menu option.
- Repair a regression with missing timestamps in AlL.TXT for the
MSK144 mode.
- Repair a defect in the selection of working frequencies matching
the current band and mode combination.
- WSPR band hopping mode now generates a tune up tone for bands where
it is scheduled to transmit.
- Repair a long standing defect per band tune and Tx power level
memories.
- More flexibility for inputting calls into the DX Call field,
leading and trailing white space characters are allowed but
ignored.
Release: WSJT-X 2.4.0-rc4
Mar 26, 2021
-------------------------
@ -130,7 +168,7 @@ the RC1 release.
Release: WSJT-X 2.3.1
Mar 18, 2021
Mar 26, 2021
---------------------
WSJT-X 2.3.1 General Availability release updates the User Guide to

View File

@ -31,7 +31,7 @@
// menu that allows each dock window to be hidden or revealed.
//
#include <clocale>
#include <locale>
#include <iostream>
#include <exception>
@ -52,10 +52,9 @@ int main (int argc, char * argv[])
QApplication app {argc, argv};
try
{
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
// consistent format, do this after
// instantiating QApplication so
// that GUI has correct l18n
// ensure number forms are in consistent format, do this after
// instantiating QApplication so that GUI has correct l18n
std::locale::global (std::locale::classic ());
app.setApplicationName ("WSJT-X Reference UDP Message Aggregator Server");
app.setApplicationVersion ("1.0");

View File

@ -17,6 +17,7 @@
#include <iostream>
#include <exception>
#include <locale>
#include <cstdlib>
#include <QCoreApplication>
@ -263,10 +264,9 @@ int main (int argc, char * argv[])
QCoreApplication app {argc, argv};
try
{
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
// consistent format, do this after
// instantiating QApplication so
// that GUI has correct l18n
// ensure number forms are in consistent format, do this after
// instantiating QApplication so that GUI has correct l18n
std::locale::global (std::locale::classic ());
app.setApplicationName ("WSJT-X UDP Message Server Daemon");
app.setApplicationVersion ("1.0");

View File

@ -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

View File

@ -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

1420
cty.dat

File diff suppressed because it is too large Load Diff

View File

@ -18,12 +18,12 @@ Here is an overview list, details are filled out below:
* MSYS2 *nix like command line environment
* Hamlib rig control library
* Pkg Config Lite
* Boost C++ libraries
* Boost C++ libraries (see separate document)
Qt Framework
------------
At the time of writing I recommend using Qt v5.15.0 64-bit, v5.15.1
At the time of writing I recommend using Qt v5.15.2 64-bit, v5.15.1
has a defect that affects us so is best avoided. You need the MinGW
version as we do not support the MSVC version due to lack of a
suitable FOSS Fortran complier. To install the Qt developer SDK you
@ -31,7 +31,7 @@ should download the official Qt on-line installer, this allows you to
install one or more variants of the Qt SDK and also to maintain and
update the installation at a later date. There are many versions and
components within versions available, you only need the base 64-bit
MinGW framework for Qt v5.15.0 and the matching MinGW 8.1.0 64-bit
MinGW framework for Qt v5.15.2 and the matching MinGW 8.1.0 64-bit
developer tools, other components can be unchecked within the on-line
installer. The default install location is C:\Qt which is fine, do
not attempt to move the location of the installed libraries if you
@ -85,14 +85,10 @@ Hamlib from sources.
Hamlib
------
Currently we statically link Hamlib to avoid clashes with
pre-installed DLLs that may be older versions than we support. Once
Hamlib v1.4 is officially released and commonly available we will move
to dynamic linking. Until then Hamlib must be built from
sources. There is a fork of the official Hamlib project which we keep
up to date with the official project master branch, we recommend
building from the 'integration' branch of that fork. The fork is a git
repository which can be cloned with this command:
There is a fork of the official Hamlib project which we keep up to
date with the official project master branch, we recommend building
from the 'integration' branch, or a suitable tag on that fork. The
fork is a git repository which can be cloned with this command:
mkdir -p ~/src/sf/bsomervi
cd !$
@ -105,7 +101,7 @@ Qt. As you will build Hamlib again when there are updates you should
set up you Msys2 command line environment for this. I use a
$HOME/.bash_profile file containing these lines:
dll_paths_64bit=/c/Tools/libusb-1.0.23/MinGW64/dll
dll_paths_64bit=/c/Tools/libusb-1.0.23/MinGW64/dll:$HOME/local/hamlib/mingw64/release/bin
export PATH=/c/Qt/Tools/mingw810_64/bin:$dll_paths_64bit:$PATH
Test the amended ~/.bash_profile file by opening a new Msys2 shell and
@ -127,7 +123,7 @@ then change working directory to that build directory.
mkdir -p ~/build/hamlib/release
cd !$
~/src/sf/bsomervi/hamlib/configure --disable-shared \
~/src/sf/bsomervi/hamlib/configure --enable-shared --disable-static \
--prefix=$HOME/local/hamlib/mingw64/release \
CFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections -I/c/Tools/libusb-1.0.23/include" \
CXXFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections" \
@ -144,7 +140,7 @@ for tracking down issues:
mkdir -p ~/build/hamlib/debug
cd !$
~/src/sf/bsomervi/hamlib/configure --disable-shared \
~/src/sf/bsomervi/hamlib/configure --enable-shared --disable-static \
--prefix=$HOME/local/hamlib/mingw64/debug \
CFLAGS="-g -O0 -I/c/Tools/libusb-1.0.23/include" \
CXXFLAGS="-g -O0" \
@ -160,6 +156,12 @@ To update the Hamlib sources to the latest commit and rebuild:
cd ~/build/hamlib/debug
make && make install
Note that the WSJT-X CMake build script will not detect an updated
build of the Hamlib DLL, so to avoid using an out-of-date Hamlib DLL
you should delete the Hamlib DLL (libhamlib-4.dll) from your WSJT-X
release configuration install tree before rebuilding and installing
WSJT-X after a Hamlib update.
Pkg Config Lite
---------------

View File

@ -112,7 +112,7 @@ summarized in the following Table:
|===========================================
|Mode |Mode character|Sync character|End of line information
|FST4 | ` | | ? &#160; aP
|FT4 | ~ | | ? &#160; aP
|FT4 | + | | ? &#160; aP
|FT8 | ~ | | ? &#160; aP
|JT4 | $ | *, # | f, fN, dCN
|JT9 | @ | |

View File

@ -341,8 +341,7 @@ contains
endif
endif
enddo ! icand
if(iavg.eq.0 .and.navg(iseq).ge.2) go to 50
if(iavg.eq.0 .and.navg(iseq).ge.2 .and. iand(ndepth,16).ne.0) go to 50
900 return
end subroutine decode

View File

@ -130,12 +130,8 @@ int main(int argc, char *argv[])
QLocale locale; // get the current system locale
// Set C/C++ locale used for logging etc.
#if defined (Q_OS_WIN)
std::locale::global (std::locale ("C"));
#else
std::locale::global (std::locale ("en_US.UTF-8"));
#endif
// reset the C+ & C global locales to the classic C locale
std::locale::global (std::locale::classic ());
// Override programs executable basename as application name.
a.setApplicationName ("WSJT-X");

View File

@ -965,8 +965,11 @@ auto FrequencyList_v2::all_bands (Region region, Mode mode) const -> BandSet
BandSet result;
for (auto const& item : m_->frequency_list_)
{
if (region == IARURegions::ALL || item.region_ == region
|| mode == Modes::ALL || item.mode_ == mode)
// Match frequencies that are for all regions, for the specified
// region (which can also be "all"), and where the mode matches
// the specified mode (which can also be "all").
if ((region == IARURegions::ALL || item.region_ == IARURegions::ALL || item.region_ == region)
&& (mode == Modes::ALL || item.mode_ == Modes::ALL || item.mode_ == mode))
{
result << m_->bands_->find (item.frequency_);
}

View File

@ -2285,12 +2285,12 @@ Fejl(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3399"/>
<source>Quick-Start Guide to Q65</source>
<translation type="unfinished"></translation>
<translation>Quick Start Guide for Q65</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3407"/>
<source>Auto Clear Avg after decode</source>
<translation type="unfinished"></translation>
<translation>Auto Slet Avg efter Dekodning</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="573"/>
@ -2992,7 +2992,7 @@ listen. Makro listen kan også ændfres i Inderstillinger (F2).</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3383"/>
<source>Q65</source>
<translation type="unfinished"></translation>
<translation>Q65</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3391"/>
@ -4107,7 +4107,9 @@ listen. Makro listen kan også ændfres i Inderstillinger (F2).</translation>
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
&quot;The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group.&quot;</source>
<translation type="unfinished"></translation>
<translation>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
&quot;The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group.&quot;</translation>
</message>
<message>
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
@ -5290,7 +5292,7 @@ Fejl(%2): %3</translation>
<message>
<location filename="../widgets/widegraph.ui" line="340"/>
<source>Q65_Sync</source>
<translation type="unfinished"></translation>
<translation>Q65_Sync</translation>
</message>
<message>
<location filename="../widgets/widegraph.ui" line="348"/>

View File

@ -2480,12 +2480,12 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3399"/>
<source>Quick-Start Guide to Q65</source>
<translation type="unfinished"></translation>
<translation>Guía de inicio rápido de Q65</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3407"/>
<source>Auto Clear Avg after decode</source>
<translation type="unfinished"></translation>
<translation>Auto Clear Avg después de decodificar</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1588"/>
@ -2610,7 +2610,7 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3383"/>
<source>Q65</source>
<translation type="unfinished"></translation>
<translation>Q65</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3391"/>
@ -4442,7 +4442,9 @@ Error al cargar datos de usuarios de LotW</translatorcomment>
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
&quot;The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group.&quot;</source>
<translation type="unfinished"></translation>
<translation>Si hace un uso legítimo de cualquier parte del programa WSJT-X según los términos de la Licencia Pública General GNU, debe mostrar el siguiente aviso de derechos de autor en un lugar destacado en su trabajo derivado:
&quot;Los algoritmos, código fuente, apariencia de WSJT-X y programas relacionados, y especificaciones de protocolo para los modos FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 son Copyright (C) 2001-2021 por uno o más de los siguientes autores: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; y otros miembros del Grupo de Desarrollo WSJT &quot;.</translation>
</message>
<message>
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
@ -5698,7 +5700,7 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/widegraph.ui" line="340"/>
<source>Q65_Sync</source>
<translation type="unfinished"></translation>
<translation>Q65_Sync</translation>
</message>
<message>
<location filename="../widgets/widegraph.ui" line="348"/>

View File

@ -2,14 +2,24 @@
CallsignValidator::CallsignValidator (QObject * parent, bool allow_compound)
: QValidator {parent}
, re_ {allow_compound ? R"(^[A-Za-z0-9/]+$)" : R"(^[A-Za-z0-9]+$)"}
, re_ {allow_compound ? R"(^[A-Z0-9/]+$)" : R"(^[A-Z0-9]+$)"}
{
}
auto CallsignValidator::validate (QString& input, int& pos) const -> State
{
auto match = re_.match (input, 0, QRegularExpression::PartialPreferCompleteMatch);
input = input.toUpper ();
while (input.size () && input[0].isSpace ())
{
input.remove (0, 1);
if (pos > 0) --pos;
}
while (input.size () && input[input.size ()].isSpace ())
{
if (pos > input.size ()) --pos;
input.chop (1);
}
auto match = re_.match (input, 0, QRegularExpression::PartialPreferCompleteMatch);
if (match.hasMatch ()) return Acceptable;
if (!input.size () || match.hasPartialMatch ()) return Intermediate;
pos = input.size ();

View File

@ -413,17 +413,19 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con
else
{
if (bCQonly) return;
if (myCall != "" && (decodedText.indexOf (" " + myCall + " ") >= 0
or decodedText.indexOf (" " + myCall + "/") >= 0
or decodedText.indexOf ("<" + myCall + "/") >= 0
or decodedText.indexOf ("/" + myCall + " ") >= 0
or decodedText.indexOf ("/" + myCall + ">") >= 0
or decodedText.indexOf ("<" + myCall + " ") >= 0
or decodedText.indexOf ("<" + myCall + ">") >= 0
or decodedText.indexOf (" " + myCall + ">") >= 0)) {
highlight_types types {Highlight::MyCall};
set_colours (m_config, &bg, &fg, types);
}
if (myCall.size ())
{
QString regexp {"[ <]" + myCall + "[ >]"};
if (Radio::is_compound_callsign (myCall))
{
regexp = "(?:" + regexp + "|[ <]" + Radio::base_callsign (myCall) + "[ >])";
}
if ((decodedText.clean_string () + " ").contains (QRegularExpression {regexp}))
{
highlight_types types {Highlight::MyCall};
set_colours (m_config, &bg, &fg, types);
}
}
}
auto message = decodedText.string();
QString dxCall;

View File

@ -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);
@ -1493,8 +1493,8 @@ void MainWindow::dataSink(qint64 frames)
freqcal_(&dec_data.d2[0],&k,&nkhz,&RxFreq,&ftol,&line[0],80);
QString t=QString::fromLatin1(line);
DecodedText decodedtext {t};
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand, m_config.ppfx());
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx ());
if (ui->measure_check_box->isChecked ()) {
// Append results text to file "fmt.all".
QFile f {m_config.writeable_data_dir ().absoluteFilePath ("fmt.all")};
@ -1748,8 +1748,8 @@ void MainWindow::fastSink(qint64 frames)
if(bmsk144 and (line[0]!=0)) {
QString message {QString::fromLatin1 (line)};
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx());
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC(),
m_logBook, m_currentBand, m_config.ppfx ());
m_bDecoded=true;
auto_sequence (decodedtext, ui->sbFtol->value (), std::numeric_limits<unsigned>::max ());
postDecode (true, decodedtext.string ());
@ -3253,8 +3253,8 @@ void::MainWindow::fast_decode_done()
//Left (Band activity) window
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
if(!m_bFastDone) {
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx());
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx ());
}
t=message.mid(10,5).toFloat();
@ -3460,16 +3460,16 @@ void MainWindow::readFromStdout() //readFromStdout
if(!m_bDisplayedOnce) {
// This hack sets the font. Surely there's a better way!
DecodedText dt{"."};
ui->decodedTextBrowser->displayDecodedText(dt,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx());
ui->decodedTextBrowser->displayDecodedText (dt, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx ());
m_bDisplayedOnce=true;
}
} else {
DecodedText decodedtext1=decodedtext0;
ui->decodedTextBrowser->displayDecodedText(decodedtext1,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx(),
ui->cbCQonly->isVisible() && ui->cbCQonly->isChecked(),
haveFSpread, fSpread);
ui->decodedTextBrowser->displayDecodedText (decodedtext1, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx (),
ui->cbCQonly->isVisible() && ui->cbCQonly->isChecked(),
haveFSpread, fSpread);
if(m_bBestSPArmed && m_mode=="FT4" && CALLING == m_QSOProgress) {
QString messagePriority=ui->decodedTextBrowser->CQPriority();
@ -3498,7 +3498,6 @@ void MainWindow::readFromStdout() //readFromStdout
bool bDisplayRight=bAvgMsg;
int audioFreq=decodedtext.frequencyOffset();
if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="FST4" or m_mode=="Q65") {
// if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="FST4") {
int ftol=10;
if(m_mode=="Q65") ftol=ui->sbFtol->value();
auto const& parts = decodedtext.string().remove("<").remove(">")
@ -3506,7 +3505,23 @@ void MainWindow::readFromStdout() //readFromStdout
if (parts.size() > 6) {
auto for_us = parts[5].contains (m_baseCall)
|| ("DE" == parts[5] && qAbs (ui->RxFreqSpinBox->value () - audioFreq) <= ftol);
if(m_baseCall==m_config.my_callsign() and m_baseCall!=parts[5]) for_us=false;
if(m_baseCall == m_config.my_callsign())
{
if (m_baseCall != parts[5])
{
for_us=false;
}
}
else
{
if (m_config.my_callsign () != parts[5])
{
for_us = false; // same base call as ours but
// different prefix or suffix, rare
// but can happen with multi station
// special events
}
}
if(m_bCallingCQ && !m_bAutoReply && for_us && ui->cbFirst->isChecked() and
SpecOp::FOX > m_config.special_op_id()) {
m_bDoubleClicked=true;
@ -3527,8 +3542,8 @@ void MainWindow::readFromStdout() //readFromStdout
// This msg is within 10 hertz of our tuned frequency, or a JT4 or JT65 avg,
// or contains MyCall
if(!m_bBestSPArmed or m_mode!="FT4") {
ui->decodedTextBrowser2->displayDecodedText(decodedtext0,m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx());
ui->decodedTextBrowser2->displayDecodedText (decodedtext0, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx ());
}
m_QSOText = decodedtext.string ().trimmed ();
}
@ -5194,8 +5209,8 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
QString s2 = message.clean_string ().trimmed();
if (s1!=s2 and !message.isTX()) {
if (!s2.contains(m_baseCall) or m_mode=="MSK144") { // Taken care of elsewhere if for_us and slow mode
ui->decodedTextBrowser2->displayDecodedText(message, m_baseCall,m_mode,m_config.DXCC(),
m_logBook,m_currentBand,m_config.ppfx());
ui->decodedTextBrowser2->displayDecodedText (message, m_config.my_callsign (), m_mode, m_config.DXCC (),
m_logBook, m_currentBand, m_config.ppfx ());
}
m_QSOText = s2;
}
@ -6920,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) {
@ -6997,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)) {
@ -7008,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 {
@ -7028,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);
@ -9199,7 +9218,7 @@ void MainWindow::write_all(QString txRx, QString message)
t = t.asprintf("%5d",ui->TxFreqSpinBox->value());
if (txRx=="Tx") msg=" 0 0.0" + t + " " + message;
auto time = QDateTime::currentDateTimeUtc ();
if( txRx=="Rx" ) time=m_dateTimeSeqStart;
if( txRx=="Rx" && !m_bFastMode ) time=m_dateTimeSeqStart;
t = t.asprintf("%10.3f ",m_freqNominal/1.e6);
if (m_diskData) {

View File

@ -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);