mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 05:38:46 -05:00
Merge branch 'release-2.5.0' of bitbucket.org:k1jt/wsjtx into release-2.5.0
This commit is contained in:
commit
4cbfe4e1c5
48
NEWS
48
NEWS
@ -12,6 +12,54 @@
|
|||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.5.0-rc2
|
||||||
|
Jun 28, 2021
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
This release repairs several MAP65 defects and omissions discovered in
|
||||||
|
the first release candidate, it also repairs some regressions in
|
||||||
|
WSJT-X, including some in the Hamlib library.
|
||||||
|
|
||||||
|
Changes for MAP65:
|
||||||
|
|
||||||
|
- Implement linear drift compensation for Q65 mode when FTol >100 Hz.
|
||||||
|
|
||||||
|
- Implement a "Max drift" UI control for Q65.
|
||||||
|
|
||||||
|
- Repair a regression which omitted signal meter scales.
|
||||||
|
|
||||||
|
- Basic instruction document for building an MS Windows portaudio DLL
|
||||||
|
for MAP65 users who are unable to use WDM/KS drivers for their
|
||||||
|
multi-channel sound cards.
|
||||||
|
|
||||||
|
Changes for WSJT-X:
|
||||||
|
|
||||||
|
- Implement linear drift compensation for Q65 mode when FTol >100 Hz.
|
||||||
|
|
||||||
|
- Implement a "Max drift" UI control for Q65.
|
||||||
|
|
||||||
|
- Repair a long standing regression with message generation for
|
||||||
|
72-bit modes when using a compound callsign.
|
||||||
|
|
||||||
|
- Message averaging window no longer available in Q65 mode as it is
|
||||||
|
not relevant.
|
||||||
|
|
||||||
|
- Improvements to the frequency/band combo box pop up list width to
|
||||||
|
address a regression occurring in recent releases.
|
||||||
|
|
||||||
|
- Updated CTY database.
|
||||||
|
|
||||||
|
- Repair a defect in diagnostic logging that could cause crashes on
|
||||||
|
some platforms.
|
||||||
|
|
||||||
|
- Repair a defect which failed to strip leading and trailing spaces
|
||||||
|
on input of callsigns during validation.
|
||||||
|
|
||||||
|
- Hamlib updates including repair of defects with PTT handling on a
|
||||||
|
separate serial port via rigctld, delayed PTT with Elecraft K3
|
||||||
|
series rigs, and support for the Icom IC-575 rig.
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc1
|
Release: WSJT-X 2.5.0-rc1
|
||||||
Jun 3, 2021
|
Jun 3, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@ -29,19 +29,29 @@ MAP65:
|
|||||||
- Wideband Q65 synchronization corrected to include single-polarization
|
- Wideband Q65 synchronization corrected to include single-polarization
|
||||||
mode
|
mode
|
||||||
- Corrected a one-symbol (0.6 s) delay in Q65 Tx audio
|
- Corrected a one-symbol (0.6 s) delay in Q65 Tx audio
|
||||||
|
- Basic instruction document for building an MS Windows portaudio DLL
|
||||||
|
for MAP65 users who are unable to use WDM/KS drivers for their
|
||||||
|
multi-channel sound cards.
|
||||||
|
|
||||||
WSJT-X, including the decoder for Q65 used by MAP65:
|
WSJT-X (including the decoder for Q65 used by MAP65):
|
||||||
- Increase maximum DT to 5.5 s when EME decoding is enabled in Q65
|
- Increase maximum DT to 5.5 s when EME decoding is enabled in Q65
|
||||||
- Repair a minor defect in callsign input validation
|
|
||||||
- Fix generation of Tx5 message when "hiscall" has suffix /P or /R.
|
- Fix generation of Tx5 message when "hiscall" has suffix /P or /R.
|
||||||
- Improve width management of GUI's band-selection combo box
|
- Improve width management of GUI's band-selection combo box
|
||||||
- Restore plotting of Q65 sync curve after a q3 decode
|
- Restore plotting of Q65 sync curve after a q3 decode
|
||||||
- Disable selection of "View | Message Averaging F7" for modes
|
- Disable selection of "View | Message Averaging F7" for modes
|
||||||
other than JT4 and JT65
|
other than JT4 and JT65
|
||||||
- Switching to Q65 mode now defaults to "Decode | Fast"
|
- Switching to Q65 mode now defaults to "Decode | Fast"
|
||||||
|
- Repair a long standing regression with message generation for
|
||||||
|
72-bit modes when using a compound callsign.
|
||||||
|
- Repair a defect in diagnostic logging that could cause crashes on
|
||||||
|
some platforms.
|
||||||
|
- Repair a defect which failed to strip leading and trailing spaces
|
||||||
|
on input of callsigns during validation.
|
||||||
|
- Hamlib updates including repair of defects with PTT handling on a
|
||||||
|
separate serial port via rigctld, delayed PTT with Elecraft K3
|
||||||
|
series rigs, and support for the Icom IC-575 rig.
|
||||||
- Updated CTY.DAT database
|
- Updated CTY.DAT database
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc1
|
Release: WSJT-X 2.5.0-rc1
|
||||||
Jun 3, 2021
|
Jun 3, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
76
doc/building portaudio on Windows with ASIO support.txt
Normal file
76
doc/building portaudio on Windows with ASIO support.txt
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
Building the MS Windows portaudio DLL with ASIO Support
|
||||||
|
=======================================================
|
||||||
|
|
||||||
|
Some MAP65 users may not be able to use WDM/KS hosted audio devices
|
||||||
|
due to sharing issues with other applications, to circumvent this they
|
||||||
|
can build a version of the portaudio DLL with ASIO support. We cannot
|
||||||
|
provide a portaudio DLL with ASIO support as the Steinberg ASIO SDK
|
||||||
|
license prevents redistribution of drivers or hosting applications
|
||||||
|
without a commercial license agreement, nor is the Steinberg ASIO SDK
|
||||||
|
license compatible with the GPL v3 license that MAP65 is released
|
||||||
|
under. Users may build a portaudio DLL themselves, strictly for
|
||||||
|
personal use, under the terms of the Steinberg ASIO license.
|
||||||
|
|
||||||
|
Building portaudio on MS Windows is done most easily using the MinGW
|
||||||
|
(GNU) tool-chain which can be installed on MS Windows using the MSYS2
|
||||||
|
unix like environment which in turn includes a package manager
|
||||||
|
(pacman) that allows simple installation of necessary prerequisite
|
||||||
|
packages like the MinGW 64-bit tool-chain. To install MSYS2 download
|
||||||
|
the latest 64-bit installer from the MSYS2 project web site. This page
|
||||||
|
contains links to the installer download and detailed instructions to
|
||||||
|
install and bring up-to-date the base MSYS2 packages.
|
||||||
|
|
||||||
|
https://www.msys2.org/wiki/MSYS2-installation/
|
||||||
|
|
||||||
|
Take particular care to restart the MSYS2 shell window when directed
|
||||||
|
to.
|
||||||
|
|
||||||
|
Once MSYS2 is installed you will find a start menu entry labelled
|
||||||
|
"MSYS2 MinGW 64-bit", use that to start a fresh MSYS2 shell window for
|
||||||
|
the rest of these instructions.
|
||||||
|
|
||||||
|
The first step is to install some prerequisite packages which contain
|
||||||
|
the tools needed to prepare and build the portaudio DLL. Execute the
|
||||||
|
following command to do that:
|
||||||
|
|
||||||
|
pacman -S make diffutils unzip mingw-w64-x86_64-gcc sed tar curl
|
||||||
|
|
||||||
|
Then make directories to put downloaded sources in and for building:
|
||||||
|
|
||||||
|
mkdir -p ~/src ~/build/portaudio
|
||||||
|
|
||||||
|
Fetch and unpack the Steinberg ASIO SDK (note the ASIO SDK license
|
||||||
|
document included, particularly that it strictly disallows
|
||||||
|
redistribution of the DLL we will be building here), and portaudio
|
||||||
|
sources:
|
||||||
|
|
||||||
|
curl -Lo ~/src/asiosdk.zip https://www.steinberg.net/asiosdk
|
||||||
|
(cd ~/src ; unzip asiosdk.zip)
|
||||||
|
curl -O --output-dir ~/src \
|
||||||
|
http://files.portaudio.com/archives/pa_stable_v190700_20210406.tgz
|
||||||
|
tar -C ~/src -xf ~/src/pa_stable_v190700_20210406.tgz
|
||||||
|
|
||||||
|
Patch and build the portaudio library:
|
||||||
|
|
||||||
|
sed -i -e 's/-luuid//g' ~/src/portaudio/configure
|
||||||
|
cd ~/build/portaudio
|
||||||
|
~/src/portaudio/configure --with-winapi=wmme,directx,wdmks,asio \
|
||||||
|
--with-asiodir=$HOME/src/asiosdk_2.3.3_2019-06-14 \
|
||||||
|
--disable-static --enable-shared
|
||||||
|
make -j
|
||||||
|
|
||||||
|
You can check the library build is working by running a test program
|
||||||
|
that was also built:
|
||||||
|
|
||||||
|
bin/pa_devs
|
||||||
|
|
||||||
|
which should list every audio device on your system by every host API,
|
||||||
|
if all is well that should include the audio devices on your system
|
||||||
|
with ASIO drivers.
|
||||||
|
|
||||||
|
Copy the new portaudio DLL to your WSJT-X/MAP65 installation directory:
|
||||||
|
|
||||||
|
cp lib/.libs/libportaudio-2.dll /c/WSJT/wsjtx/bin/
|
||||||
|
|
||||||
|
Note that if you upgrade WSJT-X you will need to copy this DLL again
|
||||||
|
since it will be overwritten by one with no ASIO support.
|
@ -754,10 +754,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
ui->bandComboBox->setModel (m_config.frequencies ());
|
ui->bandComboBox->setModel (m_config.frequencies ());
|
||||||
ui->bandComboBox->setModelColumn (FrequencyList_v2::frequency_mhz_column);
|
ui->bandComboBox->setModelColumn (FrequencyList_v2::frequency_mhz_column);
|
||||||
|
|
||||||
// combo box drop down width defaults to the line edit + decorator width,
|
|
||||||
// here we change that to the column width size hint of the model column
|
|
||||||
ui->bandComboBox->view ()->setMinimumWidth (ui->bandComboBox->view ()->sizeHintForColumn (FrequencyList_v2::frequency_mhz_column));
|
|
||||||
|
|
||||||
// Enable live band combo box entry validation and action.
|
// Enable live band combo box entry validation and action.
|
||||||
auto band_validator = new LiveFrequencyValidator {ui->bandComboBox
|
auto band_validator = new LiveFrequencyValidator {ui->bandComboBox
|
||||||
, m_config.bands ()
|
, m_config.bands ()
|
||||||
@ -5243,27 +5239,32 @@ void MainWindow::setTxMsg(int n)
|
|||||||
|
|
||||||
void MainWindow::genCQMsg ()
|
void MainWindow::genCQMsg ()
|
||||||
{
|
{
|
||||||
if(m_config.my_callsign().size () && m_config.my_grid().size ()) {
|
auto const& my_callsign = m_config.my_callsign ();
|
||||||
QString grid{m_config.my_grid()};
|
auto is_compound = my_callsign != m_baseCall;
|
||||||
|
auto is_type_two = !is77BitMode () && is_compound && stdCall (m_baseCall) && !shortList (my_callsign);
|
||||||
|
if(my_callsign.size () && m_config.my_grid().size ()) {
|
||||||
|
auto const& grid = m_config.my_grid ();
|
||||||
if (ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked ()) {
|
if (ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked ()) {
|
||||||
if(stdCall(m_config.my_callsign())) {
|
if(stdCall (my_callsign)
|
||||||
|
|| is_type_two) {
|
||||||
msgtype (QString {"CQ %1 %2 %3"}
|
msgtype (QString {"CQ %1 %2 %3"}
|
||||||
.arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'})
|
.arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'})
|
||||||
.arg (m_config.my_callsign())
|
.arg (my_callsign)
|
||||||
.arg (grid.left (4)),
|
.arg (grid.left (4)),
|
||||||
ui->tx6);
|
ui->tx6);
|
||||||
} else {
|
} else {
|
||||||
msgtype (QString {"CQ %1 %2"}
|
msgtype (QString {"CQ %1 %2"}
|
||||||
.arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'})
|
.arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'})
|
||||||
.arg (m_config.my_callsign()),
|
.arg (my_callsign),
|
||||||
ui->tx6);
|
ui->tx6);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(stdCall(m_config.my_callsign())) {
|
if (stdCall (my_callsign)
|
||||||
msgtype (QString {"%1 %2 %3"}.arg(m_CQtype).arg(m_config.my_callsign())
|
|| is_type_two) {
|
||||||
|
msgtype (QString {"%1 %2 %3"}.arg(m_CQtype).arg(my_callsign)
|
||||||
.arg(grid.left(4)),ui->tx6);
|
.arg(grid.left(4)),ui->tx6);
|
||||||
} else {
|
} else {
|
||||||
msgtype (QString {"%1 %2"}.arg(m_CQtype).arg(m_config.my_callsign()),ui->tx6);
|
msgtype (QString {"%1 %2"}.arg(m_CQtype).arg(my_callsign),ui->tx6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((m_mode=="JT4" or m_mode=="Q65") and ui->cbShMsgs->isChecked()) {
|
if ((m_mode=="JT4" or m_mode=="Q65") and ui->cbShMsgs->isChecked()) {
|
||||||
@ -5278,15 +5279,15 @@ void MainWindow::genCQMsg ()
|
|||||||
QStringList tlist=t.split(" ");
|
QStringList tlist=t.split(" ");
|
||||||
if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144") and
|
if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144") and
|
||||||
SpecOp::NONE != m_config.special_op_id() and
|
SpecOp::NONE != m_config.special_op_id() and
|
||||||
( tlist.at(1)==m_config.my_callsign() or
|
( tlist.at(1)==my_callsign or
|
||||||
tlist.at(2)==m_config.my_callsign() ) and
|
tlist.at(2)==my_callsign ) and
|
||||||
stdCall(m_config.my_callsign())) {
|
stdCall(my_callsign)) {
|
||||||
if(SpecOp::NA_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
if(SpecOp::NA_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
||||||
if(SpecOp::EU_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
if(SpecOp::EU_VHF == m_config.special_op_id()) m_cqStr="TEST";
|
||||||
if(SpecOp::FIELD_DAY == m_config.special_op_id()) m_cqStr="FD";
|
if(SpecOp::FIELD_DAY == m_config.special_op_id()) m_cqStr="FD";
|
||||||
if(SpecOp::RTTY == m_config.special_op_id()) m_cqStr="RU";
|
if(SpecOp::RTTY == m_config.special_op_id()) m_cqStr="RU";
|
||||||
if(SpecOp::WW_DIGI == m_config.special_op_id()) m_cqStr="WW";
|
if(SpecOp::WW_DIGI == m_config.special_op_id()) m_cqStr="WW";
|
||||||
if( tlist.at(1)==m_config.my_callsign() ) {
|
if( tlist.at(1)==my_callsign ) {
|
||||||
t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2);
|
t="CQ " + m_cqStr + " " + tlist.at(1) + " " + tlist.at(2);
|
||||||
} else {
|
} else {
|
||||||
t="CQ " + m_cqStr + " " + tlist.at(2) + " " + tlist.at(3);
|
t="CQ " + m_cqStr + " " + tlist.at(2) + " " + tlist.at(3);
|
||||||
@ -5319,6 +5320,12 @@ bool MainWindow::stdCall(QString const& w)
|
|||||||
return standard_call_re.match (w).hasMatch ();
|
return standard_call_re.match (w).hasMatch ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainWindow::is77BitMode () const
|
||||||
|
{
|
||||||
|
return "FT8" == m_mode || "FT4" == m_mode || "MSK144" == m_mode
|
||||||
|
|| "FST4" == m_mode || "Q65" == m_mode;
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
||||||
{
|
{
|
||||||
genCQMsg ();
|
genCQMsg ();
|
||||||
@ -5335,7 +5342,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
}
|
}
|
||||||
auto const& my_callsign = m_config.my_callsign ();
|
auto const& my_callsign = m_config.my_callsign ();
|
||||||
auto is_compound = my_callsign != m_baseCall;
|
auto is_compound = my_callsign != m_baseCall;
|
||||||
auto is_type_one = is_compound && shortList (my_callsign);
|
auto is_type_one = !is77BitMode () && is_compound && shortList (my_callsign);
|
||||||
auto const& my_grid = m_config.my_grid ().left (4);
|
auto const& my_grid = m_config.my_grid ().left (4);
|
||||||
auto const& hisBase = Radio::base_callsign (hisCall);
|
auto const& hisBase = Radio::base_callsign (hisCall);
|
||||||
auto eme_short_codes = m_config.enable_VHF_features () && ui->cbShMsgs->isChecked ()
|
auto eme_short_codes = m_config.enable_VHF_features () && ui->cbShMsgs->isChecked ()
|
||||||
@ -5348,7 +5355,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
QString t0s=hisCall + " " + my_callsign + " ";
|
QString t0s=hisCall + " " + my_callsign + " ";
|
||||||
QString t0a,t0b;
|
QString t0a,t0b;
|
||||||
|
|
||||||
if(bHisCall and bMyCall) t0=hisCall + " " + my_callsign + " ";
|
if (is77BitMode () && bHisCall && bMyCall) t0=hisCall + " " + my_callsign + " ";
|
||||||
t0a="<"+hisCall + "> " + my_callsign + " ";
|
t0a="<"+hisCall + "> " + my_callsign + " ";
|
||||||
t0b=hisCall + " <" + my_callsign + "> ";
|
t0b=hisCall + " <" + my_callsign + "> ";
|
||||||
|
|
||||||
@ -5366,7 +5373,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
int n=rpt.toInt();
|
int n=rpt.toInt();
|
||||||
rpt = rpt.asprintf("%+2.2d",n);
|
rpt = rpt.asprintf("%+2.2d",n);
|
||||||
|
|
||||||
if(m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4" || m_mode=="FST4") {
|
if (is77BitMode ()) {
|
||||||
QString t2,t3;
|
QString t2,t3;
|
||||||
QString sent=rpt;
|
QString sent=rpt;
|
||||||
QString rs,rst;
|
QString rs,rst;
|
||||||
@ -5430,8 +5437,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((m_mode!="MSK144" and m_mode!="FT8" and m_mode!="FT4" && m_mode != "FST4")) {
|
if (!is77BitMode ()) {
|
||||||
t=t00 + rpt;
|
t=(is_type_one ? t0 : t00) + rpt;
|
||||||
msgtype(t, ui->tx2);
|
msgtype(t, ui->tx2);
|
||||||
t=t0 + "R" + rpt;
|
t=t0 + "R" + rpt;
|
||||||
msgtype(t, ui->tx3);
|
msgtype(t, ui->tx3);
|
||||||
@ -5470,7 +5477,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="MSK144" || m_mode == "FST4") return;
|
if (is77BitMode ()) return;
|
||||||
|
|
||||||
if (is_compound) {
|
if (is_compound) {
|
||||||
if (is_type_one) {
|
if (is_type_one) {
|
||||||
@ -5483,8 +5490,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
case Configuration::type_2_msg_1_full:
|
case Configuration::type_2_msg_1_full:
|
||||||
msgtype(t + my_grid, ui->tx1);
|
msgtype(t + my_grid, ui->tx1);
|
||||||
if (!eme_short_codes) {
|
if (!eme_short_codes) {
|
||||||
if((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") &&
|
if(is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) {
|
||||||
SpecOp::NA_VHF == m_config.special_op_id()) {
|
|
||||||
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
|
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
|
||||||
} else {
|
} else {
|
||||||
msgtype(t + "R" + rpt, ui->tx3);
|
msgtype(t + "R" + rpt, ui->tx3);
|
||||||
@ -5496,8 +5502,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Configuration::type_2_msg_3_full:
|
case Configuration::type_2_msg_3_full:
|
||||||
if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") &&
|
if (is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) {
|
||||||
SpecOp::NA_VHF == m_config.special_op_id()) {
|
|
||||||
msgtype(t + "R " + my_grid, ui->tx3);
|
msgtype(t + "R " + my_grid, ui->tx3);
|
||||||
msgtype(t + "RRR", ui->tx4);
|
msgtype(t + "RRR", ui->tx4);
|
||||||
} else {
|
} else {
|
||||||
@ -5512,8 +5517,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
case Configuration::type_2_msg_5_only:
|
case Configuration::type_2_msg_5_only:
|
||||||
msgtype(t00 + my_grid, ui->tx1);
|
msgtype(t00 + my_grid, ui->tx1);
|
||||||
if (!eme_short_codes) {
|
if (!eme_short_codes) {
|
||||||
if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4" || m_mode == "FST4") &&
|
if (is77BitMode () && SpecOp::NA_VHF == m_config.special_op_id()) {
|
||||||
SpecOp::NA_VHF == m_config.special_op_id()) {
|
|
||||||
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
|
msgtype(t + "R " + my_grid, ui->tx3); // #### Unreachable code
|
||||||
msgtype(t + "RRR", ui->tx4);
|
msgtype(t + "RRR", ui->tx4);
|
||||||
} else {
|
} else {
|
||||||
@ -5548,7 +5552,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_rpt=rpt;
|
m_rpt=rpt;
|
||||||
if(SpecOp::HOUND == m_config.special_op_id() and is_compound) ui->tx1->setText("DE " + m_config.my_callsign());
|
if(SpecOp::HOUND == m_config.special_op_id() and is_compound) ui->tx1->setText("DE " + my_callsign);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::TxAgain()
|
void MainWindow::TxAgain()
|
||||||
|
@ -778,6 +778,7 @@ private:
|
|||||||
void foxGenWaveform(int i,QString fm);
|
void foxGenWaveform(int i,QString fm);
|
||||||
void writeFoxQSO (QString const& msg);
|
void writeFoxQSO (QString const& msg);
|
||||||
void to_jt9(qint32 n, qint32 istart, qint32 idone);
|
void to_jt9(qint32 n, qint32 istart, qint32 idone);
|
||||||
|
bool is77BitMode () const;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int killbyname(const char* progName);
|
extern int killbyname(const char* progName);
|
||||||
|
Loading…
Reference in New Issue
Block a user