Add FLow and FHigh spinner controls to set the FST4 decoding range.

This commit is contained in:
Joe Taylor 2020-09-16 17:02:40 -04:00
parent 10fbcfc7d0
commit 2266e8dbb7
8 changed files with 510 additions and 404 deletions

View File

@ -1,27 +1,27 @@
Here are the "displayWidgets()" strings for WSJT-X modes Here are the "displayWidgets()" strings for WSJT-X modes
1 2 3 1 2 3
0123456789012345678901234567890123 012345678901234567890123456789012345
---------------------------------------------- ------------------------------------------------
JT4 1110100000001100001100000000000000 JT4 111010000000110000110000000000000000
JT4/VHF 1111100100101101101111000000000000 JT4/VHF 111110010010110110111100000000000000
JT9 1110100000001110000100000000000010 JT9 111010000000111000010000000000001000
JT9/VHF 1111101010001111100100000000000000 JT9/VHF 111110101000111110010000000000000000
JT9+JT65 1110100000011110000100000000000010 JT9+JT65 111010000001111000010000000000001000
JT65 1110100000001110000100000000000010 JT65 111010000000111000010000000000001000
JT65/VHF 1111100100001101101011000100000000 JT65/VHF 111110010000110110101100010000000000
QRA64 1111100101101101100000000010000000 QRA64 111110010110110110000000001000000000
ISCAT 1001110000000001100000000000000000 ISCAT 100111000000000110000000000000000000
MSK144 1011111101000000000100010000000000 MSK144 101111110100000000010001000000000000
WSPR 0000000000000000010100000000000000 WSPR 000000000000000001010000000000000000
FST4 1111110001001110000100000001000000 FST4 111111000100111000010000000100000011
FST4W 0000000000000000010100000000000001 FST4W 000000000000000001010000000000000100
Echo 0000000000000000000000100000000000 Echo 000000000000000000000010000000000000
FCal 0011010000000000000000000000010000 FCal 001101000000000000000000000001000000
FT8 1110100001001110000100001001100010 FT8 111010000100111000010000100110001000
FT8/VHF 1110100001001110000100001001100010 FT8/VHF 111010000100111000010000100110001000
FT8/Fox 1110100001001110000100000000001000 FT8/Fox 111010000100111000010000000000100000
FT8/Hound 1110100001001110000100000000001100 FT8/Hound 111010000100111000010000000000110000
---------------------------------------------- ----------------------------------------------
1 2 3 1 2 3
012345678901234567890123456789012 012345678901234567890123456789012
@ -63,3 +63,5 @@ Mapping of column numbers to widgets
31. cbRxAll 31. cbRxAll
32. cbCQonly 32. cbCQonly
33. sbTR_FST4W 33. sbTR_FST4W
34. sbF_Low
35. sbF_High

View File

@ -208,7 +208,7 @@ namespace
// grid exact match excluding RR73 // grid exact match excluding RR73
QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"}; QRegularExpression grid_regexp {"\\A(?![Rr]{2}73)[A-Ra-r]{2}[0-9]{2}([A-Xa-x]{2}){0,1}\\z"};
auto quint32_max = std::numeric_limits<quint32>::max (); auto quint32_max = std::numeric_limits<quint32>::max ();
constexpr int N_WIDGETS {34}; constexpr int N_WIDGETS {36};
constexpr int rx_chunk_size {3456}; // audio samples at 12000 Hz constexpr int rx_chunk_size {3456}; // audio samples at 12000 Hz
constexpr int tx_audio_buffer_size {48000 / 5}; // audio frames at 48000 Hz constexpr int tx_audio_buffer_size {48000 / 5}; // audio frames at 48000 Hz
@ -1135,6 +1135,8 @@ void MainWindow::writeSettings()
m_settings->setValue("WSPRfreq",ui->WSPRfreqSpinBox->value()); m_settings->setValue("WSPRfreq",ui->WSPRfreqSpinBox->value());
m_settings->setValue("FST4W_RxFreq",ui->sbFST4W_RxFreq->value()); m_settings->setValue("FST4W_RxFreq",ui->sbFST4W_RxFreq->value());
m_settings->setValue("FST4W_FTol",ui->sbFST4W_FTol->value()); m_settings->setValue("FST4W_FTol",ui->sbFST4W_FTol->value());
m_settings->setValue("FST4_FLow",ui->sbF_Low->value());
m_settings->setValue("FST4_FHigh",ui->sbF_High->value());
m_settings->setValue("SubMode",ui->sbSubmode->value()); m_settings->setValue("SubMode",ui->sbSubmode->value());
m_settings->setValue("DTtol",m_DTtol); m_settings->setValue("DTtol",m_DTtol);
m_settings->setValue("Ftol", ui->sbFtol->value ()); m_settings->setValue("Ftol", ui->sbFtol->value ());
@ -1222,6 +1224,8 @@ void MainWindow::readSettings()
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq",1500).toInt()); ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq",1500).toInt());
ui->sbFST4W_RxFreq->setValue(0); ui->sbFST4W_RxFreq->setValue(0);
ui->sbFST4W_RxFreq->setValue(m_settings->value("FST4W_RxFreq",1500).toInt()); ui->sbFST4W_RxFreq->setValue(m_settings->value("FST4W_RxFreq",1500).toInt());
ui->sbF_Low->setValue(m_settings->value("FST4_FLow",600).toInt());
ui->sbF_High->setValue(m_settings->value("FST4_FHigh",1400).toInt());
m_nSubMode=m_settings->value("SubMode",0).toInt(); m_nSubMode=m_settings->value("SubMode",0).toInt();
ui->sbFtol->setValue (m_settings->value("Ftol", 50).toInt()); ui->sbFtol->setValue (m_settings->value("Ftol", 50).toInt());
ui->sbFST4W_FTol->setValue(m_settings->value("FST4W_FTol",100).toInt()); ui->sbFST4W_FTol->setValue(m_settings->value("FST4W_FTol",100).toInt());
@ -1427,6 +1431,10 @@ void MainWindow::dataSink(qint64 frames)
// Get power, spectrum, and ihsym // Get power, spectrum, and ihsym
dec_data.params.nfa=m_wideGraph->nStartFreq(); dec_data.params.nfa=m_wideGraph->nStartFreq();
dec_data.params.nfb=m_wideGraph->Fmax(); dec_data.params.nfb=m_wideGraph->Fmax();
if(m_mode=="FST4") {
dec_data.params.nfa=ui->sbF_Low->value();
dec_data.params.nfb=ui->sbF_High->value();
}
int nsps=m_nsps; int nsps=m_nsps;
if(m_bFastMode) nsps=6912; if(m_bFastMode) nsps=6912;
int nsmo=m_wideGraph->smoothYellow()-1; int nsmo=m_wideGraph->smoothYellow()-1;
@ -4224,7 +4232,7 @@ void MainWindow::guiUpdate()
//Once per second (onesec) //Once per second (onesec)
if(nsec != m_sec0) { if(nsec != m_sec0) {
// qDebug() << "AAA" << nsec; // qDebug() << "AAA" << nsec;
if(m_mode=="FST4") sbFtolMaxVal(); if(m_mode=="FST4") chk_FST4_freq_range();
m_currentBand=m_config.bands()->find(m_freqNominal); m_currentBand=m_config.bands()->find(m_freqNominal);
if( SpecOp::HOUND == m_config.special_op_id() ) { if( SpecOp::HOUND == m_config.special_op_id() ) {
qint32 tHound=QDateTime::currentMSecsSinceEpoch()/1000 - m_tAutoOn; qint32 tHound=QDateTime::currentMSecsSinceEpoch()/1000 - m_tAutoOn;
@ -5870,6 +5878,8 @@ void MainWindow::displayWidgets(qint64 n)
if(i==31) ui->cbRxAll->setVisible(b); if(i==31) ui->cbRxAll->setVisible(b);
if(i==32) ui->cbCQonly->setVisible(b); if(i==32) ui->cbCQonly->setVisible(b);
if(i==33) ui->sbTR_FST4W->setVisible(b); if(i==33) ui->sbTR_FST4W->setVisible(b);
if(i==34) ui->sbF_Low->setVisible(b);
if(i==35) ui->sbF_High->setVisible(b);
j=j>>1; j=j>>1;
} }
ui->pbBestSP->setVisible(m_mode=="FT4"); ui->pbBestSP->setVisible(m_mode=="FT4");
@ -5902,12 +5912,12 @@ void MainWindow::on_actionFST4_triggered()
ui->label_6->setText(tr ("Band Activity")); ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Rx Frequency")); ui->label_7->setText(tr ("Rx Frequency"));
WSPR_config(false); WSPR_config(false);
// 0123456789012345678901234567890123 // 012345678901234567890123456789012345
displayWidgets(nWidgets("1111110001001110000100000001000000")); displayWidgets(nWidgets("111111000100111000010000000100000011"));
setup_status_bar(false); setup_status_bar(false);
ui->sbTR->values ({15, 30, 60, 120, 300, 900, 1800}); ui->sbTR->values ({15, 30, 60, 120, 300, 900, 1800});
on_sbTR_valueChanged (ui->sbTR->value()); on_sbTR_valueChanged (ui->sbTR->value());
sbFtolMaxVal(); chk_FST4_freq_range();
ui->cbAutoSeq->setChecked(true); ui->cbAutoSeq->setChecked(true);
m_wideGraph->setMode(m_mode); m_wideGraph->setMode(m_mode);
m_wideGraph->setModeTx(m_modeTx); m_wideGraph->setModeTx(m_modeTx);
@ -5915,6 +5925,7 @@ void MainWindow::on_actionFST4_triggered()
m_wideGraph->setRxFreq(ui->RxFreqSpinBox->value()); m_wideGraph->setRxFreq(ui->RxFreqSpinBox->value());
m_wideGraph->setTol(ui->sbFtol->value()); m_wideGraph->setTol(ui->sbFtol->value());
m_wideGraph->setTxFreq(ui->TxFreqSpinBox->value()); m_wideGraph->setTxFreq(ui->TxFreqSpinBox->value());
m_wideGraph->setFST4_FreqRange(ui->sbF_Low->value(),ui->sbF_High->value());
switch_mode (Modes::FST4); switch_mode (Modes::FST4);
m_wideGraph->setMode(m_mode); m_wideGraph->setMode(m_mode);
statusChanged(); statusChanged();
@ -5933,8 +5944,8 @@ void MainWindow::on_actionFST4W_triggered()
m_FFTSize = m_nsps / 2; m_FFTSize = m_nsps / 2;
Q_EMIT FFTSize(m_FFTSize); Q_EMIT FFTSize(m_FFTSize);
WSPR_config(true); WSPR_config(true);
// 0123456789012345678901234567890123 // 012345678901234567890123456789012345
displayWidgets(nWidgets("0000000000000000010100000000000001")); displayWidgets(nWidgets("000000000000000001010000000000000100"));
setup_status_bar(false); setup_status_bar(false);
ui->band_hopping_group_box->setChecked(false); ui->band_hopping_group_box->setChecked(false);
ui->band_hopping_group_box->setVisible(false); ui->band_hopping_group_box->setVisible(false);
@ -5982,7 +5993,7 @@ void MainWindow::on_actionFT4_triggered()
ui->label_7->setText(tr ("Rx Frequency")); ui->label_7->setText(tr ("Rx Frequency"));
ui->label_6->setText(tr ("Band Activity")); ui->label_6->setText(tr ("Band Activity"));
ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message")); ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message"));
displayWidgets(nWidgets("1110100001001110000100000001100010")); displayWidgets(nWidgets("111010000100111000010000000110001000"));
ui->txrb2->setEnabled(true); ui->txrb2->setEnabled(true);
ui->txrb4->setEnabled(true); ui->txrb4->setEnabled(true);
ui->txrb5->setEnabled(true); ui->txrb5->setEnabled(true);
@ -6031,7 +6042,7 @@ void MainWindow::on_actionFT8_triggered()
ui->label_6->setText(tr ("Band Activity")); ui->label_6->setText(tr ("Band Activity"));
ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message")); ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message"));
} }
displayWidgets(nWidgets("1110100001001110000100001001100010")); displayWidgets(nWidgets("111010000100111000010000100110001000"));
ui->txrb2->setEnabled(true); ui->txrb2->setEnabled(true);
ui->txrb4->setEnabled(true); ui->txrb4->setEnabled(true);
ui->txrb5->setEnabled(true); ui->txrb5->setEnabled(true);
@ -6049,7 +6060,7 @@ void MainWindow::on_actionFT8_triggered()
ui->cbAutoSeq->setEnabled(false); ui->cbAutoSeq->setEnabled(false);
ui->tabWidget->setCurrentIndex(1); ui->tabWidget->setCurrentIndex(1);
ui->TxFreqSpinBox->setValue(300); ui->TxFreqSpinBox->setValue(300);
displayWidgets(nWidgets("1110100001001110000100000000001000")); displayWidgets(nWidgets("111010000100111000010000000000100000"));
ui->labDXped->setText(tr ("Fox")); ui->labDXped->setText(tr ("Fox"));
on_fox_log_action_triggered(); on_fox_log_action_triggered();
} }
@ -6059,7 +6070,7 @@ void MainWindow::on_actionFT8_triggered()
ui->cbAutoSeq->setEnabled(false); ui->cbAutoSeq->setEnabled(false);
ui->tabWidget->setCurrentIndex(0); ui->tabWidget->setCurrentIndex(0);
ui->cbHoldTxFreq->setChecked(true); ui->cbHoldTxFreq->setChecked(true);
displayWidgets(nWidgets("1110100001001100000100000000001100")); displayWidgets(nWidgets("111010000100110000010000000000110000"));
ui->labDXped->setText(tr ("Hound")); ui->labDXped->setText(tr ("Hound"));
ui->txrb1->setChecked(true); ui->txrb1->setChecked(true);
ui->txrb2->setEnabled(false); ui->txrb2->setEnabled(false);
@ -6134,9 +6145,9 @@ void MainWindow::on_actionJT4_triggered()
ui->sbSubmode->setValue(0); ui->sbSubmode->setValue(0);
} }
if(bVHF) { if(bVHF) {
displayWidgets(nWidgets("1111100100101101101111000000000000")); displayWidgets(nWidgets("111110010010110110111100000000000000"));
} else { } else {
displayWidgets(nWidgets("1110100000001100001100000000000000")); displayWidgets(nWidgets("111010000000110000110000000000000000"));
} }
fast_config(false); fast_config(false);
statusChanged(); statusChanged();
@ -6193,9 +6204,9 @@ void MainWindow::on_actionJT9_triggered()
ui->label_6->setText(tr ("Band Activity")); ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Rx Frequency")); ui->label_7->setText(tr ("Rx Frequency"));
if(bVHF) { if(bVHF) {
displayWidgets(nWidgets("1111101010001111100100000000000000")); displayWidgets(nWidgets("111110101000111110010000000000000000"));
} else { } else {
displayWidgets(nWidgets("1110100000001110000100000000000010")); displayWidgets(nWidgets("111010000000111000010000000000001000"));
} }
fast_config(m_bFastMode); fast_config(m_bFastMode);
ui->cbAutoSeq->setVisible(m_bFast9); ui->cbAutoSeq->setVisible(m_bFast9);
@ -6234,7 +6245,7 @@ void MainWindow::on_actionJT9_JT65_triggered()
ui->label_7->setText(tr ("Rx Frequency")); ui->label_7->setText(tr ("Rx Frequency"));
ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message")); ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB DT Freq " + tr ("Message")); ui->decodedTextLabel2->setText("UTC dB DT Freq " + tr ("Message"));
displayWidgets(nWidgets("1110100000011110000100000000000010")); displayWidgets(nWidgets("111010000001111000010000000000001000"));
fast_config(false); fast_config(false);
statusChanged(); statusChanged();
} }
@ -6282,9 +6293,9 @@ void MainWindow::on_actionJT65_triggered()
ui->label_7->setText(tr ("Rx Frequency")); ui->label_7->setText(tr ("Rx Frequency"));
} }
if(bVHF) { if(bVHF) {
displayWidgets(nWidgets("1111100100001101101011000100000000")); displayWidgets(nWidgets("111110010000110110101100010000000000"));
} else { } else {
displayWidgets(nWidgets("1110100000001110000100000000000010")); displayWidgets(nWidgets("111010000000111000010000000000001000"));
} }
fast_config(false); fast_config(false);
if(ui->cbShMsgs->isChecked()) { if(ui->cbShMsgs->isChecked()) {
@ -6316,7 +6327,7 @@ void MainWindow::on_actionQRA64_triggered()
ui->TxFreqSpinBox->setValue(1000); ui->TxFreqSpinBox->setValue(1000);
QString fname {QDir::toNativeSeparators(m_config.temp_dir ().absoluteFilePath ("red.dat"))}; QString fname {QDir::toNativeSeparators(m_config.temp_dir ().absoluteFilePath ("red.dat"))};
m_wideGraph->setRedFile(fname); m_wideGraph->setRedFile(fname);
displayWidgets(nWidgets("1111100100101101100000000010000000")); displayWidgets(nWidgets("111110010010110110000000001000000000"));
statusChanged(); statusChanged();
} }
@ -6353,7 +6364,7 @@ void MainWindow::on_actionISCAT_triggered()
ui->sbSubmode->setMaximum(1); ui->sbSubmode->setMaximum(1);
if(m_nSubMode==0) ui->TxFreqSpinBox->setValue(1012); if(m_nSubMode==0) ui->TxFreqSpinBox->setValue(1012);
if(m_nSubMode==1) ui->TxFreqSpinBox->setValue(560); if(m_nSubMode==1) ui->TxFreqSpinBox->setValue(560);
displayWidgets(nWidgets("1001110000000001100000000000000000")); displayWidgets(nWidgets("100111000000000110000000000000000000"));
fast_config(true); fast_config(true);
statusChanged (); statusChanged ();
} }
@ -6415,7 +6426,7 @@ void MainWindow::on_actionMSK144_triggered()
ui->rptSpinBox->setValue(0); ui->rptSpinBox->setValue(0);
ui->rptSpinBox->setSingleStep(1); ui->rptSpinBox->setSingleStep(1);
ui->sbFtol->values ({20, 50, 100, 200}); ui->sbFtol->values ({20, 50, 100, 200});
displayWidgets(nWidgets("1011111101000000000100010000100000")); displayWidgets(nWidgets("101111110100000000010001000010000000"));
fast_config(m_bFastMode); fast_config(m_bFastMode);
statusChanged(); statusChanged();
@ -6455,7 +6466,7 @@ void MainWindow::on_actionWSPR_triggered()
m_bFastMode=false; m_bFastMode=false;
m_bFast9=false; m_bFast9=false;
ui->TxFreqSpinBox->setValue(ui->WSPRfreqSpinBox->value()); ui->TxFreqSpinBox->setValue(ui->WSPRfreqSpinBox->value());
displayWidgets(nWidgets("0000000000000000010100000000000000")); displayWidgets(nWidgets("000000000000000001010000000000000000"));
fast_config(false); fast_config(false);
statusChanged(); statusChanged();
} }
@ -6488,7 +6499,7 @@ void MainWindow::on_actionEcho_triggered()
m_bFast9=false; m_bFast9=false;
WSPR_config(true); WSPR_config(true);
ui->decodedTextLabel->setText(" UTC N Level Sig DF Width Q"); ui->decodedTextLabel->setText(" UTC N Level Sig DF Width Q");
displayWidgets(nWidgets("0000000000000000000000100000000000")); displayWidgets(nWidgets("000000000000000000000010000000000000"));
fast_config(false); fast_config(false);
statusChanged(); statusChanged();
} }
@ -6514,7 +6525,7 @@ void MainWindow::on_actionFreqCal_triggered()
// 18:15:47 0 1 1500 1550.349 0.100 3.5 10.2 // 18:15:47 0 1 1500 1550.349 0.100 3.5 10.2
ui->decodedTextLabel->setText(" UTC Freq CAL Offset fMeas DF Level S/N"); ui->decodedTextLabel->setText(" UTC Freq CAL Offset fMeas DF Level S/N");
ui->measure_check_box->setChecked (false); ui->measure_check_box->setChecked (false);
displayWidgets(nWidgets("0011010000000000000000000000010000")); displayWidgets(nWidgets("001101000000000000000000000001000000"));
statusChanged(); statusChanged();
} }
@ -6620,6 +6631,35 @@ void MainWindow::on_RxFreqSpinBox_valueChanged(int n)
statusUpdate (); statusUpdate ();
} }
void MainWindow::on_sbF_Low_valueChanged(int n)
{
m_wideGraph->setFST4_FreqRange(n,ui->sbF_High->value());
chk_FST4_freq_range();
}
void MainWindow::on_sbF_High_valueChanged(int n)
{
m_wideGraph->setFST4_FreqRange(ui->sbF_Low->value(),n);
chk_FST4_freq_range();
}
void MainWindow::chk_FST4_freq_range()
{
int maxDiff=2000;
if(m_TRperiod==120) maxDiff=1000;
if(m_TRperiod==300) maxDiff=400;
if(m_TRperiod>=900) maxDiff=200;
int diff=ui->sbF_High->value() - ui->sbF_Low->value();
if(diff<100 or diff>maxDiff) {
ui->sbF_Low->setStyleSheet("QSpinBox { background-color: red; }");
ui->sbF_High->setStyleSheet("QSpinBox { background-color: red; }");
} else {
ui->sbF_Low->setStyleSheet("");
ui->sbF_High->setStyleSheet("");
}
}
void MainWindow::on_actionQuickDecode_toggled (bool checked) void MainWindow::on_actionQuickDecode_toggled (bool checked)
{ {
m_ndepth ^= (-checked ^ m_ndepth) & 0x00000001; m_ndepth ^= (-checked ^ m_ndepth) & 0x00000001;
@ -7467,7 +7507,7 @@ void MainWindow::on_sbTR_valueChanged(int value)
m_wideGraph->setPeriod (value, m_nsps); m_wideGraph->setPeriod (value, m_nsps);
progressBar.setMaximum (value); progressBar.setMaximum (value);
} }
if(m_mode=="FST4") sbFtolMaxVal(); if(m_mode=="FST4") chk_FST4_freq_range();
if(m_monitoring) { if(m_monitoring) {
on_stopButton_clicked(); on_stopButton_clicked();
on_monitorButton_clicked(true); on_monitorButton_clicked(true);
@ -7478,14 +7518,6 @@ void MainWindow::on_sbTR_valueChanged(int value)
statusUpdate (); statusUpdate ();
} }
void MainWindow::sbFtolMaxVal()
{
if(m_TRperiod<=60) ui->sbFtol->setMaximum(1000);
if(m_TRperiod==120) ui->sbFtol->setMaximum(500);
if(m_TRperiod==300) ui->sbFtol->setMaximum(200);
if(m_TRperiod>=900) ui->sbFtol->setMaximum(100);
}
void MainWindow::on_sbTR_FST4W_valueChanged(int value) void MainWindow::on_sbTR_FST4W_valueChanged(int value)
{ {
on_sbTR_valueChanged(value); on_sbTR_valueChanged(value);

View File

@ -305,6 +305,9 @@ private slots:
void on_sbNlist_valueChanged(int n); void on_sbNlist_valueChanged(int n);
void on_sbNslots_valueChanged(int n); void on_sbNslots_valueChanged(int n);
void on_sbMax_dB_valueChanged(int n); void on_sbMax_dB_valueChanged(int n);
void on_sbF_Low_valueChanged(int n);
void on_sbF_High_valueChanged(int n);
void chk_FST4_freq_range();
void on_pbFoxReset_clicked(); void on_pbFoxReset_clicked();
void on_comboBoxHoundSort_activated (int index); void on_comboBoxHoundSort_activated (int index);
void not_GA_warning_message (); void not_GA_warning_message ();
@ -312,7 +315,6 @@ private slots:
void on_pbBestSP_clicked(); void on_pbBestSP_clicked();
void on_RoundRobin_currentTextChanged(QString text); void on_RoundRobin_currentTextChanged(QString text);
void setTxMsg(int n); void setTxMsg(int n);
void sbFtolMaxVal();
bool stdCall(QString const& w); bool stdCall(QString const& w);
void remote_configure (QString const& mode, quint32 frequency_tolerance, QString const& submode void remote_configure (QString const& mode, quint32 frequency_tolerance, QString const& submode
, bool fast_mode, quint32 tr_period, quint32 rx_df, QString const& dx_call , bool fast_mode, quint32 tr_period, quint32 rx_df, QString const& dx_call

View File

@ -658,6 +658,299 @@ QPushButton[state=&quot;ok&quot;] {
</property> </property>
<item> <item>
<layout class="QGridLayout" name="gridLayout_3"> <layout class="QGridLayout" name="gridLayout_3">
<item row="18" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QCheckBox" name="cbShMsgs">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to use short-format messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to use short-format messages.</string>
</property>
<property name="text">
<string>Sh</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbFast9">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable JT9 fast modes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable JT9 fast modes</string>
</property>
<property name="text">
<string>Fast</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbAutoSeq">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable automatic sequencing of Tx messages based on received messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable automatic sequencing of Tx messages based on received messages.</string>
</property>
<property name="text">
<string>Auto Seq</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbFirst">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to call the first decoded responder to my CQ.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to call the first decoded responder to my CQ.</string>
</property>
<property name="text">
<string>Call 1st</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbTx6">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Check to generate &quot;@1250 (SEND MSGS)&quot; in Tx6.</string>
</property>
<property name="text">
<string>Tx6</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="8" column="1">
<widget class="LettersSpinBox" name="sbSubmode">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Submode determines tone spacing; A is narrowest.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Submode determines tone spacing; A is narrowest.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="prefix">
<string>Submode </string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>7</number>
</property>
</widget>
</item>
<item row="17" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSpinBox" name="sbCQTxFreq">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Frequency to call CQ on in kHz above the current MHz&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Frequency to call CQ on in kHz above the current MHz</string>
</property>
<property name="prefix">
<string>Tx CQ </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>260</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCQTx">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to call CQ on the &amp;quot;Tx CQ&amp;quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.&lt;/p&gt;&lt;p&gt;Not available to nonstandard callsign holders.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to call CQ on the &quot;Tx CQ&quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.
Not available to nonstandard callsign holders.</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbRxAll">
<property name="text">
<string>Rx All Freqs</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pbTxMode">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Toggle Tx mode</string>
</property>
<property name="text">
<string>Tx JT9 @</string>
</property>
</widget>
</item>
<item row="19" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_15">
<item>
<widget class="QLabel" name="labDXped">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Fox</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbSWL">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to monitor Sh messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to monitor Sh messages.</string>
</property>
<property name="text">
<string>SWL</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbBestSP">
<property name="styleSheet">
<string notr="true">QPushButton:checked {
color: rgb(0, 0, 0);
background-color: red;
border-style: outset;
border-width: 1px;
border-radius: 5px;
border-color: black;
min-width: 5em;
padding: 3px;
}</string>
</property>
<property name="text">
<string>Best S+P</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="measure_check_box">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to start recording calibration data.&lt;br/&gt;While measuring calibration correction is disabled.&lt;br/&gt;When not checked you can view the calibration results.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to start recording calibration data.
While measuring calibration correction is disabled.
When not checked you can view the calibration results.</string>
</property>
<property name="text">
<string>Measure</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0">
<widget class="QSpinBox" name="TxFreqSpinBox">
<property name="toolTip">
<string>Audio Tx frequency</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix">
<string>Tx </string>
</property>
<property name="minimum">
<number>200</number>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="value">
<number>1500</number>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QSpinBox" name="sbSerialNumber">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="prefix">
<string>Tx# </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>4095</number>
</property>
</widget>
</item>
<item row="20" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QCheckBox" name="cbHoldTxFreq"> <widget class="QCheckBox" name="cbHoldTxFreq">
<property name="toolTip"> <property name="toolTip">
@ -671,32 +964,108 @@ QPushButton[state=&quot;ok&quot;] {
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="0" column="0">
<widget class="QSpinBox" name="RxFreqSpinBox"> <widget class="QCheckBox" name="txFirstCheckBox">
<property name="toolTip"> <property name="toolTip">
<string>Audio Rx frequency</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.</string>
</property>
<property name="text">
<string>Tx even/1st</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QSpinBox" name="syncSpinBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Synchronizing threshold. Lower numbers accept weaker sync signals.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Synchronizing threshold. Lower numbers accept weaker sync signals.</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix"> <property name="prefix">
<string>Rx </string> <string>Sync </string>
</property> </property>
<property name="minimum"> <property name="minimum">
<number>200</number> <number>-1</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLabel" name="labNextCall">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Double-click on another caller to queue that call for your next QSO.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Double-click on another caller to queue that call for your next QSO.</string>
</property>
<property name="text">
<string>Next Call</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="sbF_Low">
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="prefix">
<string>F Low </string>
</property>
<property name="minimum">
<number>100</number>
</property> </property>
<property name="maximum"> <property name="maximum">
<number>5000</number> <number>5000</number>
</property> </property>
<property name="singleStep">
<number>100</number>
</property>
<property name="value"> <property name="value">
<number>1500</number> <number>600</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="5" column="1">
<widget class="QSpinBox" name="sbF_High">
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string/>
</property>
<property name="prefix">
<string>F High </string>
</property>
<property name="minimum">
<number>100</number>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
<property name="value">
<number>1400</number>
</property>
</widget>
</item>
<item row="4" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4"> <layout class="QHBoxLayout" name="horizontalLayout_4">
<item> <item>
<widget class="QPushButton" name="pbR2T"> <widget class="QPushButton" name="pbR2T">
@ -784,265 +1153,32 @@ QPushButton[state=&quot;ok&quot;] {
</item> </item>
</layout> </layout>
</item> </item>
<item row="5" column="1"> <item row="5" column="0">
<widget class="QSpinBox" name="syncSpinBox"> <widget class="QSpinBox" name="RxFreqSpinBox">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Synchronizing threshold. Lower numbers accept weaker sync signals.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>Audio Rx frequency</string>
</property>
<property name="accessibleDescription">
<string>Synchronizing threshold. Lower numbers accept weaker sync signals.</string>
</property> </property>
<property name="alignment"> <property name="alignment">
<set>Qt::AlignCenter</set> <set>Qt::AlignCenter</set>
</property> </property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix"> <property name="prefix">
<string>Sync </string> <string>Rx </string>
</property> </property>
<property name="minimum"> <property name="minimum">
<number>-1</number> <number>200</number>
</property> </property>
<property name="maximum"> <property name="maximum">
<number>10</number> <number>5000</number>
</property> </property>
<property name="value"> <property name="value">
<number>1</number> <number>1500</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0" colspan="2"> <item row="6" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QCheckBox" name="cbShMsgs">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to use short-format messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to use short-format messages.</string>
</property>
<property name="text">
<string>Sh</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbFast9">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable JT9 fast modes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable JT9 fast modes</string>
</property>
<property name="text">
<string>Fast</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbAutoSeq">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to enable automatic sequencing of Tx messages based on received messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to enable automatic sequencing of Tx messages based on received messages.</string>
</property>
<property name="text">
<string>Auto Seq</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbFirst">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to call the first decoded responder to my CQ.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to call the first decoded responder to my CQ.</string>
</property>
<property name="text">
<string>Call 1st</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbTx6">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Check to generate &quot;@1250 (SEND MSGS)&quot; in Tx6.</string>
</property>
<property name="text">
<string>Tx6</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="txFirstCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.</string>
</property>
<property name="text">
<string>Tx even/1st</string>
</property>
</widget>
</item>
<item row="6" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSpinBox" name="sbCQTxFreq">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Frequency to call CQ on in kHz above the current MHz&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Frequency to call CQ on in kHz above the current MHz</string>
</property>
<property name="prefix">
<string>Tx CQ </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>260</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCQTx">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to call CQ on the &amp;quot;Tx CQ&amp;quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.&lt;/p&gt;&lt;p&gt;Not available to nonstandard callsign holders.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to call CQ on the &quot;Tx CQ&quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.
Not available to nonstandard callsign holders.</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbRxAll">
<property name="text">
<string>Rx All Freqs</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="1">
<widget class="LettersSpinBox" name="sbSubmode">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Submode determines tone spacing; A is narrowest.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Submode determines tone spacing; A is narrowest.</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="prefix">
<string>Submode </string>
</property>
<property name="minimum">
<number>0</number>
</property>
<property name="maximum">
<number>7</number>
</property>
</widget>
</item>
<item row="8" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_15">
<item>
<widget class="QLabel" name="labDXped">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Fox</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbSWL">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to monitor Sh messages.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check to monitor Sh messages.</string>
</property>
<property name="text">
<string>SWL</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pbBestSP">
<property name="styleSheet">
<string notr="true">QPushButton:checked {
color: rgb(0, 0, 0);
background-color: red;
border-style: outset;
border-width: 1px;
border-radius: 5px;
border-color: black;
min-width: 5em;
padding: 3px;
}</string>
</property>
<property name="text">
<string>Best S+P</string>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="measure_check_box">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to start recording calibration data.&lt;br/&gt;While measuring calibration correction is disabled.&lt;br/&gt;When not checked you can view the calibration results.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Check this to start recording calibration data.
While measuring calibration correction is disabled.
When not checked you can view the calibration results.</string>
</property>
<property name="text">
<string>Measure</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QSpinBox" name="rptSpinBox"> <widget class="QSpinBox" name="rptSpinBox">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Signal report: Signal-to-noise ratio in 2500 Hz reference bandwidth (dB).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Signal report: Signal-to-noise ratio in 2500 Hz reference bandwidth (dB).&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -1067,7 +1203,7 @@ When not checked you can view the calibration results.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="7" column="0">
<widget class="RestrictedSpinBox" name="sbTR"> <widget class="RestrictedSpinBox" name="sbTR">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tx/Rx or Frequency calibration sequence length&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tx/Rx or Frequency calibration sequence length&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -1095,95 +1231,6 @@ When not checked you can view the calibration results.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="QPushButton" name="pbTxMode">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Toggle Tx mode</string>
</property>
<property name="text">
<string>Tx JT9 @</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QSpinBox" name="TxFreqSpinBox">
<property name="toolTip">
<string>Audio Tx frequency</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix">
<string>Tx </string>
</property>
<property name="minimum">
<number>200</number>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="value">
<number>1500</number>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QSpinBox" name="sbSerialNumber">
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="prefix">
<string>Tx# </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>4095</number>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="labNextCall">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Double-click on another caller to queue that call for your next QSO.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleDescription">
<string>Double-click on another caller to queue that call for your next QSO.</string>
</property>
<property name="text">
<string>Next Call</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="9" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</item> </item>
<item> <item>
@ -3348,8 +3395,6 @@ Yellow when too low</string>
<tabstop>addButton</tabstop> <tabstop>addButton</tabstop>
<tabstop>txFirstCheckBox</tabstop> <tabstop>txFirstCheckBox</tabstop>
<tabstop>TxFreqSpinBox</tabstop> <tabstop>TxFreqSpinBox</tabstop>
<tabstop>rptSpinBox</tabstop>
<tabstop>sbTR</tabstop>
<tabstop>sbCQTxFreq</tabstop> <tabstop>sbCQTxFreq</tabstop>
<tabstop>cbCQTx</tabstop> <tabstop>cbCQTx</tabstop>
<tabstop>cbShMsgs</tabstop> <tabstop>cbShMsgs</tabstop>

View File

@ -506,11 +506,20 @@ void CPlotter::DrawOverlay() //DrawOverlay()
or m_mode=="QRA64" or m_mode=="FT8" or m_mode=="FT4" or m_mode=="QRA64" or m_mode=="FT8" or m_mode=="FT4"
or m_mode.startsWith("FST4")) { or m_mode.startsWith("FST4")) {
if(m_mode=="FST4") {
x1=XfromFreq(m_nfa);
x2=XfromFreq(m_nfb);
painter0.drawLine(x1,25,x1+5,30); // Mark FST4 F_Low
painter0.drawLine(x1,25,x1+5,20);
painter0.drawLine(x2,25,x2-5,30); // Mark FST4 F_High
painter0.drawLine(x2,25,x2-5,20);
}
if(m_mode=="QRA64" or (m_mode=="JT65" and m_bVHF)) { if(m_mode=="QRA64" or (m_mode=="JT65" and m_bVHF)) {
painter0.setPen(penGreen); painter0.setPen(penGreen);
x1=XfromFreq(m_rxFreq-m_tol); x1=XfromFreq(m_rxFreq-m_tol);
x2=XfromFreq(m_rxFreq+m_tol); x2=XfromFreq(m_rxFreq+m_tol);
painter0.drawLine(x1,28,x2,28); painter0.drawLine(x1,26,x2,26);
x1=XfromFreq(m_rxFreq); x1=XfromFreq(m_rxFreq);
painter0.drawLine(x1,24,x1,30); painter0.drawLine(x1,24,x1,30);
@ -539,8 +548,7 @@ void CPlotter::DrawOverlay() //DrawOverlay()
x1=XfromFreq(m_rxFreq-m_tol); x1=XfromFreq(m_rxFreq-m_tol);
x2=XfromFreq(m_rxFreq+m_tol); x2=XfromFreq(m_rxFreq+m_tol);
painter0.drawLine(x1,26,x2,26); // Mark the Tol range painter0.drawLine(x1,26,x2,26); // Mark the Tol range
} } }
}
} }
if(m_mode=="JT9" or m_mode=="JT65" or m_mode=="JT9+JT65" or if(m_mode=="JT9" or m_mode=="JT65" or m_mode=="JT9+JT65" or
@ -809,6 +817,12 @@ void CPlotter::setFlatten(bool b1, bool b2)
void CPlotter::setTol(int n) //setTol() void CPlotter::setTol(int n) //setTol()
{ {
m_tol=n; m_tol=n;
}
void CPlotter::setFST4_FreqRange(int fLow,int fHigh)
{
m_nfa=fLow;
m_nfb=fHigh;
DrawOverlay(); DrawOverlay();
} }

View File

@ -83,6 +83,9 @@ public:
void drawRed(int ia, int ib, float swide[]); void drawRed(int ia, int ib, float swide[]);
void setVHF(bool bVHF); void setVHF(bool bVHF);
void setRedFile(QString fRed); void setRedFile(QString fRed);
void setFST4_FreqRange(int fLow,int fHigh);
bool scaleOK () const {return m_bScaleOK;} bool scaleOK () const {return m_bScaleOK;}
signals: signals:
void freezeDecode1(int n); void freezeDecode1(int n);
@ -125,6 +128,8 @@ private:
qint32 m_nSubMode; qint32 m_nSubMode;
qint32 m_ia; qint32 m_ia;
qint32 m_ib; qint32 m_ib;
qint32 m_nfa;
qint32 m_nfb;
QPixmap m_WaterfallPixmap; QPixmap m_WaterfallPixmap;
QPixmap m_2DPixmap; QPixmap m_2DPixmap;

View File

@ -500,6 +500,11 @@ void WideGraph::setTol(int n) //setTol
ui->widePlot->update(); ui->widePlot->update();
} }
void WideGraph::setFST4_FreqRange(int fLow,int fHigh)
{
ui->widePlot->setFST4_FreqRange(fLow,fHigh);
}
void WideGraph::on_smoSpinBox_valueChanged(int n) void WideGraph::on_smoSpinBox_valueChanged(int n)
{ {
m_nsmo=n; m_nsmo=n;

View File

@ -49,6 +49,7 @@ public:
void drawRed(int ia, int ib); void drawRed(int ia, int ib);
void setVHF(bool bVHF); void setVHF(bool bVHF);
void setRedFile(QString fRed); void setRedFile(QString fRed);
void setFST4_FreqRange(int fLow,int fHigh);
signals: signals:
void freezeDecode2(int n); void freezeDecode2(int n);