From 2266e8dbb748a2ca849206a6d3144c8c5d377268 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 16 Sep 2020 17:02:40 -0400 Subject: [PATCH] Add FLow and FHigh spinner controls to set the FST4 decoding range. --- displayWidgets.txt | 44 +-- widgets/mainwindow.cpp | 98 ++++-- widgets/mainwindow.h | 4 +- widgets/mainwindow.ui | 737 ++++++++++++++++++++++------------------- widgets/plotter.cpp | 20 +- widgets/plotter.h | 5 + widgets/widegraph.cpp | 5 + widgets/widegraph.h | 1 + 8 files changed, 510 insertions(+), 404 deletions(-) diff --git a/displayWidgets.txt b/displayWidgets.txt index 9b438590c..a3f31eef2 100644 --- a/displayWidgets.txt +++ b/displayWidgets.txt @@ -1,27 +1,27 @@ Here are the "displayWidgets()" strings for WSJT-X modes 1 2 3 - 0123456789012345678901234567890123 ----------------------------------------------- -JT4 1110100000001100001100000000000000 -JT4/VHF 1111100100101101101111000000000000 -JT9 1110100000001110000100000000000010 -JT9/VHF 1111101010001111100100000000000000 -JT9+JT65 1110100000011110000100000000000010 -JT65 1110100000001110000100000000000010 -JT65/VHF 1111100100001101101011000100000000 -QRA64 1111100101101101100000000010000000 -ISCAT 1001110000000001100000000000000000 -MSK144 1011111101000000000100010000000000 -WSPR 0000000000000000010100000000000000 -FST4 1111110001001110000100000001000000 -FST4W 0000000000000000010100000000000001 -Echo 0000000000000000000000100000000000 -FCal 0011010000000000000000000000010000 -FT8 1110100001001110000100001001100010 -FT8/VHF 1110100001001110000100001001100010 -FT8/Fox 1110100001001110000100000000001000 -FT8/Hound 1110100001001110000100000000001100 + 012345678901234567890123456789012345 +------------------------------------------------ +JT4 111010000000110000110000000000000000 +JT4/VHF 111110010010110110111100000000000000 +JT9 111010000000111000010000000000001000 +JT9/VHF 111110101000111110010000000000000000 +JT9+JT65 111010000001111000010000000000001000 +JT65 111010000000111000010000000000001000 +JT65/VHF 111110010000110110101100010000000000 +QRA64 111110010110110110000000001000000000 +ISCAT 100111000000000110000000000000000000 +MSK144 101111110100000000010001000000000000 +WSPR 000000000000000001010000000000000000 +FST4 111111000100111000010000000100000011 +FST4W 000000000000000001010000000000000100 +Echo 000000000000000000000010000000000000 +FCal 001101000000000000000000000001000000 +FT8 111010000100111000010000100110001000 +FT8/VHF 111010000100111000010000100110001000 +FT8/Fox 111010000100111000010000000000100000 +FT8/Hound 111010000100111000010000000000110000 ---------------------------------------------- 1 2 3 012345678901234567890123456789012 @@ -63,3 +63,5 @@ Mapping of column numbers to widgets 31. cbRxAll 32. cbCQonly 33. sbTR_FST4W +34. sbF_Low +35. sbF_High diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 3e046173c..6ff5351c2 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -208,7 +208,7 @@ namespace // 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"}; auto quint32_max = std::numeric_limits::max (); - constexpr int N_WIDGETS {34}; + constexpr int N_WIDGETS {36}; constexpr int rx_chunk_size {3456}; // audio samples at 12000 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("FST4W_RxFreq",ui->sbFST4W_RxFreq->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("DTtol",m_DTtol); m_settings->setValue("Ftol", ui->sbFtol->value ()); @@ -1222,6 +1224,8 @@ void MainWindow::readSettings() ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq",1500).toInt()); ui->sbFST4W_RxFreq->setValue(0); 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(); ui->sbFtol->setValue (m_settings->value("Ftol", 50).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 dec_data.params.nfa=m_wideGraph->nStartFreq(); 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; if(m_bFastMode) nsps=6912; int nsmo=m_wideGraph->smoothYellow()-1; @@ -4224,7 +4232,7 @@ void MainWindow::guiUpdate() //Once per second (onesec) if(nsec != m_sec0) { // qDebug() << "AAA" << nsec; - if(m_mode=="FST4") sbFtolMaxVal(); + if(m_mode=="FST4") chk_FST4_freq_range(); m_currentBand=m_config.bands()->find(m_freqNominal); if( SpecOp::HOUND == m_config.special_op_id() ) { 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==32) ui->cbCQonly->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; } ui->pbBestSP->setVisible(m_mode=="FT4"); @@ -5902,12 +5912,12 @@ void MainWindow::on_actionFST4_triggered() ui->label_6->setText(tr ("Band Activity")); ui->label_7->setText(tr ("Rx Frequency")); WSPR_config(false); -// 0123456789012345678901234567890123 - displayWidgets(nWidgets("1111110001001110000100000001000000")); +// 012345678901234567890123456789012345 + displayWidgets(nWidgets("111111000100111000010000000100000011")); setup_status_bar(false); ui->sbTR->values ({15, 30, 60, 120, 300, 900, 1800}); on_sbTR_valueChanged (ui->sbTR->value()); - sbFtolMaxVal(); + chk_FST4_freq_range(); ui->cbAutoSeq->setChecked(true); m_wideGraph->setMode(m_mode); m_wideGraph->setModeTx(m_modeTx); @@ -5915,6 +5925,7 @@ void MainWindow::on_actionFST4_triggered() m_wideGraph->setRxFreq(ui->RxFreqSpinBox->value()); m_wideGraph->setTol(ui->sbFtol->value()); m_wideGraph->setTxFreq(ui->TxFreqSpinBox->value()); + m_wideGraph->setFST4_FreqRange(ui->sbF_Low->value(),ui->sbF_High->value()); switch_mode (Modes::FST4); m_wideGraph->setMode(m_mode); statusChanged(); @@ -5933,8 +5944,8 @@ void MainWindow::on_actionFST4W_triggered() m_FFTSize = m_nsps / 2; Q_EMIT FFTSize(m_FFTSize); WSPR_config(true); -// 0123456789012345678901234567890123 - displayWidgets(nWidgets("0000000000000000010100000000000001")); +// 012345678901234567890123456789012345 + displayWidgets(nWidgets("000000000000000001010000000000000100")); setup_status_bar(false); ui->band_hopping_group_box->setChecked(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_6->setText(tr ("Band Activity")); ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message")); - displayWidgets(nWidgets("1110100001001110000100000001100010")); + displayWidgets(nWidgets("111010000100111000010000000110001000")); ui->txrb2->setEnabled(true); ui->txrb4->setEnabled(true); ui->txrb5->setEnabled(true); @@ -6031,7 +6042,7 @@ void MainWindow::on_actionFT8_triggered() ui->label_6->setText(tr ("Band Activity")); ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message")); } - displayWidgets(nWidgets("1110100001001110000100001001100010")); + displayWidgets(nWidgets("111010000100111000010000100110001000")); ui->txrb2->setEnabled(true); ui->txrb4->setEnabled(true); ui->txrb5->setEnabled(true); @@ -6049,7 +6060,7 @@ void MainWindow::on_actionFT8_triggered() ui->cbAutoSeq->setEnabled(false); ui->tabWidget->setCurrentIndex(1); ui->TxFreqSpinBox->setValue(300); - displayWidgets(nWidgets("1110100001001110000100000000001000")); + displayWidgets(nWidgets("111010000100111000010000000000100000")); ui->labDXped->setText(tr ("Fox")); on_fox_log_action_triggered(); } @@ -6059,7 +6070,7 @@ void MainWindow::on_actionFT8_triggered() ui->cbAutoSeq->setEnabled(false); ui->tabWidget->setCurrentIndex(0); ui->cbHoldTxFreq->setChecked(true); - displayWidgets(nWidgets("1110100001001100000100000000001100")); + displayWidgets(nWidgets("111010000100110000010000000000110000")); ui->labDXped->setText(tr ("Hound")); ui->txrb1->setChecked(true); ui->txrb2->setEnabled(false); @@ -6134,9 +6145,9 @@ void MainWindow::on_actionJT4_triggered() ui->sbSubmode->setValue(0); } if(bVHF) { - displayWidgets(nWidgets("1111100100101101101111000000000000")); + displayWidgets(nWidgets("111110010010110110111100000000000000")); } else { - displayWidgets(nWidgets("1110100000001100001100000000000000")); + displayWidgets(nWidgets("111010000000110000110000000000000000")); } fast_config(false); statusChanged(); @@ -6193,9 +6204,9 @@ void MainWindow::on_actionJT9_triggered() ui->label_6->setText(tr ("Band Activity")); ui->label_7->setText(tr ("Rx Frequency")); if(bVHF) { - displayWidgets(nWidgets("1111101010001111100100000000000000")); + displayWidgets(nWidgets("111110101000111110010000000000000000")); } else { - displayWidgets(nWidgets("1110100000001110000100000000000010")); + displayWidgets(nWidgets("111010000000111000010000000000001000")); } fast_config(m_bFastMode); ui->cbAutoSeq->setVisible(m_bFast9); @@ -6234,7 +6245,7 @@ void MainWindow::on_actionJT9_JT65_triggered() ui->label_7->setText(tr ("Rx Frequency")); ui->decodedTextLabel->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); statusChanged(); } @@ -6282,9 +6293,9 @@ void MainWindow::on_actionJT65_triggered() ui->label_7->setText(tr ("Rx Frequency")); } if(bVHF) { - displayWidgets(nWidgets("1111100100001101101011000100000000")); + displayWidgets(nWidgets("111110010000110110101100010000000000")); } else { - displayWidgets(nWidgets("1110100000001110000100000000000010")); + displayWidgets(nWidgets("111010000000111000010000000000001000")); } fast_config(false); if(ui->cbShMsgs->isChecked()) { @@ -6316,7 +6327,7 @@ void MainWindow::on_actionQRA64_triggered() ui->TxFreqSpinBox->setValue(1000); QString fname {QDir::toNativeSeparators(m_config.temp_dir ().absoluteFilePath ("red.dat"))}; m_wideGraph->setRedFile(fname); - displayWidgets(nWidgets("1111100100101101100000000010000000")); + displayWidgets(nWidgets("111110010010110110000000001000000000")); statusChanged(); } @@ -6353,7 +6364,7 @@ void MainWindow::on_actionISCAT_triggered() ui->sbSubmode->setMaximum(1); if(m_nSubMode==0) ui->TxFreqSpinBox->setValue(1012); if(m_nSubMode==1) ui->TxFreqSpinBox->setValue(560); - displayWidgets(nWidgets("1001110000000001100000000000000000")); + displayWidgets(nWidgets("100111000000000110000000000000000000")); fast_config(true); statusChanged (); } @@ -6415,7 +6426,7 @@ void MainWindow::on_actionMSK144_triggered() ui->rptSpinBox->setValue(0); ui->rptSpinBox->setSingleStep(1); ui->sbFtol->values ({20, 50, 100, 200}); - displayWidgets(nWidgets("1011111101000000000100010000100000")); + displayWidgets(nWidgets("101111110100000000010001000010000000")); fast_config(m_bFastMode); statusChanged(); @@ -6455,7 +6466,7 @@ void MainWindow::on_actionWSPR_triggered() m_bFastMode=false; m_bFast9=false; ui->TxFreqSpinBox->setValue(ui->WSPRfreqSpinBox->value()); - displayWidgets(nWidgets("0000000000000000010100000000000000")); + displayWidgets(nWidgets("000000000000000001010000000000000000")); fast_config(false); statusChanged(); } @@ -6488,7 +6499,7 @@ void MainWindow::on_actionEcho_triggered() m_bFast9=false; WSPR_config(true); ui->decodedTextLabel->setText(" UTC N Level Sig DF Width Q"); - displayWidgets(nWidgets("0000000000000000000000100000000000")); + displayWidgets(nWidgets("000000000000000000000010000000000000")); fast_config(false); statusChanged(); } @@ -6514,7 +6525,7 @@ void MainWindow::on_actionFreqCal_triggered() // 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->measure_check_box->setChecked (false); - displayWidgets(nWidgets("0011010000000000000000000000010000")); + displayWidgets(nWidgets("001101000000000000000000000001000000")); statusChanged(); } @@ -6620,6 +6631,35 @@ void MainWindow::on_RxFreqSpinBox_valueChanged(int n) 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) { m_ndepth ^= (-checked ^ m_ndepth) & 0x00000001; @@ -7467,7 +7507,7 @@ void MainWindow::on_sbTR_valueChanged(int value) m_wideGraph->setPeriod (value, m_nsps); progressBar.setMaximum (value); } - if(m_mode=="FST4") sbFtolMaxVal(); + if(m_mode=="FST4") chk_FST4_freq_range(); if(m_monitoring) { on_stopButton_clicked(); on_monitorButton_clicked(true); @@ -7478,14 +7518,6 @@ void MainWindow::on_sbTR_valueChanged(int value) 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) { on_sbTR_valueChanged(value); diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 042866fe2..264e0cac5 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -305,6 +305,9 @@ private slots: void on_sbNlist_valueChanged(int n); void on_sbNslots_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_comboBoxHoundSort_activated (int index); void not_GA_warning_message (); @@ -312,7 +315,6 @@ private slots: void on_pbBestSP_clicked(); void on_RoundRobin_currentTextChanged(QString text); void setTxMsg(int n); - void sbFtolMaxVal(); bool stdCall(QString const& w); 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 diff --git a/widgets/mainwindow.ui b/widgets/mainwindow.ui index 5ade13659..9779fe3bb 100644 --- a/widgets/mainwindow.ui +++ b/widgets/mainwindow.ui @@ -658,6 +658,299 @@ QPushButton[state="ok"] { + + + + + + <html><head/><body><p>Check to use short-format messages.</p></body></html> + + + Check to use short-format messages. + + + Sh + + + + + + + <html><head/><body><p>Check to enable JT9 fast modes</p></body></html> + + + Check to enable JT9 fast modes + + + Fast + + + + + + + <html><head/><body><p>Check to enable automatic sequencing of Tx messages based on received messages.</p></body></html> + + + Check to enable automatic sequencing of Tx messages based on received messages. + + + Auto Seq + + + + + + + <html><head/><body><p>Check to call the first decoded responder to my CQ.</p></body></html> + + + Check to call the first decoded responder to my CQ. + + + Call 1st + + + + + + + false + + + Check to generate "@1250 (SEND MSGS)" in Tx6. + + + Tx6 + + + + + + + + + <html><head/><body><p>Submode determines tone spacing; A is narrowest.</p></body></html> + + + Submode determines tone spacing; A is narrowest. + + + Qt::AlignCenter + + + Submode + + + 0 + + + 7 + + + + + + + + + false + + + <html><head/><body><p>Frequency to call CQ on in kHz above the current MHz</p></body></html> + + + Frequency to call CQ on in kHz above the current MHz + + + Tx CQ + + + 1 + + + 999 + + + 260 + + + + + + + false + + + <html><head/><body><p>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.</p><p>Not available to nonstandard callsign holders.</p></body></html> + + + Check this to call CQ on the "Tx CQ" 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. + + + + + + + + + + Rx All Freqs + + + + + + + + + true + + + + 0 + 0 + + + + Toggle Tx mode + + + Tx JT9 @ + + + + + + + + + + 0 + 0 + + + + + 100 + 16777215 + + + + Fox + + + Qt::AlignCenter + + + + + + + <html><head/><body><p>Check to monitor Sh messages.</p></body></html> + + + Check to monitor Sh messages. + + + SWL + + + + + + + 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; +} + + + Best S+P + + + true + + + + + + + <html><head/><body><p>Check this to start recording calibration data.<br/>While measuring calibration correction is disabled.<br/>When not checked you can view the calibration results.</p></body></html> + + + Check this to start recording calibration data. +While measuring calibration correction is disabled. +When not checked you can view the calibration results. + + + Measure + + + + + + + + + Audio Tx frequency + + + Qt::AlignCenter + + + Hz + + + Tx + + + 200 + + + 5000 + + + 1500 + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + Tx# + + + 1 + + + 4095 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + @@ -671,32 +964,108 @@ QPushButton[state="ok"] { - - + + - Audio Rx frequency + <html><head/><body><p>Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.</p></body></html> + + + Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences. + + + Tx even/1st + + + + + + + <html><head/><body><p>Synchronizing threshold. Lower numbers accept weaker sync signals.</p></body></html> + + + Synchronizing threshold. Lower numbers accept weaker sync signals. Qt::AlignCenter - - Hz - - Rx + Sync - 200 + -1 + + + 10 + + + 1 + + + + + + + <html><head/><body><p>Double-click on another caller to queue that call for your next QSO.</p></body></html> + + + Double-click on another caller to queue that call for your next QSO. + + + Next Call + + + Qt::AlignCenter + + + + + + + Qt::AlignCenter + + + F Low + + + 100 5000 + + 100 + - 1500 + 600 - + + + + Qt::AlignCenter + + + + + + F High + + + 100 + + + 5000 + + + 100 + + + 1400 + + + + @@ -784,265 +1153,32 @@ QPushButton[state="ok"] { - - + + - <html><head/><body><p>Synchronizing threshold. Lower numbers accept weaker sync signals.</p></body></html> - - - Synchronizing threshold. Lower numbers accept weaker sync signals. + Audio Rx frequency Qt::AlignCenter + + Hz + - Sync + Rx - -1 + 200 - 10 + 5000 - 1 + 1500 - - - - - - <html><head/><body><p>Check to use short-format messages.</p></body></html> - - - Check to use short-format messages. - - - Sh - - - - - - - <html><head/><body><p>Check to enable JT9 fast modes</p></body></html> - - - Check to enable JT9 fast modes - - - Fast - - - - - - - <html><head/><body><p>Check to enable automatic sequencing of Tx messages based on received messages.</p></body></html> - - - Check to enable automatic sequencing of Tx messages based on received messages. - - - Auto Seq - - - - - - - <html><head/><body><p>Check to call the first decoded responder to my CQ.</p></body></html> - - - Check to call the first decoded responder to my CQ. - - - Call 1st - - - - - - - false - - - Check to generate "@1250 (SEND MSGS)" in Tx6. - - - Tx6 - - - - - - - - - <html><head/><body><p>Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.</p></body></html> - - - Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences. - - - Tx even/1st - - - - - - - - - false - - - <html><head/><body><p>Frequency to call CQ on in kHz above the current MHz</p></body></html> - - - Frequency to call CQ on in kHz above the current MHz - - - Tx CQ - - - 1 - - - 999 - - - 260 - - - - - - - false - - - <html><head/><body><p>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.</p><p>Not available to nonstandard callsign holders.</p></body></html> - - - Check this to call CQ on the "Tx CQ" 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. - - - - - - - - - - Rx All Freqs - - - - - - - - - <html><head/><body><p>Submode determines tone spacing; A is narrowest.</p></body></html> - - - Submode determines tone spacing; A is narrowest. - - - Qt::AlignCenter - - - Submode - - - 0 - - - 7 - - - - - - - - - - 0 - 0 - - - - - 100 - 16777215 - - - - Fox - - - Qt::AlignCenter - - - - - - - <html><head/><body><p>Check to monitor Sh messages.</p></body></html> - - - Check to monitor Sh messages. - - - SWL - - - - - - - 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; -} - - - Best S+P - - - true - - - - - - - <html><head/><body><p>Check this to start recording calibration data.<br/>While measuring calibration correction is disabled.<br/>When not checked you can view the calibration results.</p></body></html> - - - Check this to start recording calibration data. -While measuring calibration correction is disabled. -When not checked you can view the calibration results. - - - Measure - - - - - - + <html><head/><body><p>Signal report: Signal-to-noise ratio in 2500 Hz reference bandwidth (dB).</p></body></html> @@ -1067,7 +1203,7 @@ When not checked you can view the calibration results. - + <html><head/><body><p>Tx/Rx or Frequency calibration sequence length</p></body></html> @@ -1095,95 +1231,6 @@ When not checked you can view the calibration results. - - - - true - - - - 0 - 0 - - - - Toggle Tx mode - - - Tx JT9 @ - - - - - - - Audio Tx frequency - - - Qt::AlignCenter - - - Hz - - - Tx - - - 200 - - - 5000 - - - 1500 - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Tx# - - - 1 - - - 4095 - - - - - - - <html><head/><body><p>Double-click on another caller to queue that call for your next QSO.</p></body></html> - - - Double-click on another caller to queue that call for your next QSO. - - - Next Call - - - Qt::AlignCenter - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -3348,8 +3395,6 @@ Yellow when too low addButton txFirstCheckBox TxFreqSpinBox - rptSpinBox - sbTR sbCQTxFreq cbCQTx cbShMsgs diff --git a/widgets/plotter.cpp b/widgets/plotter.cpp index 9fdf66cef..bc7b2270d 100644 --- a/widgets/plotter.cpp +++ b/widgets/plotter.cpp @@ -506,11 +506,20 @@ void CPlotter::DrawOverlay() //DrawOverlay() or m_mode=="QRA64" or m_mode=="FT8" or m_mode=="FT4" 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)) { painter0.setPen(penGreen); x1=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); painter0.drawLine(x1,24,x1,30); @@ -539,8 +548,7 @@ void CPlotter::DrawOverlay() //DrawOverlay() x1=XfromFreq(m_rxFreq-m_tol); x2=XfromFreq(m_rxFreq+m_tol); painter0.drawLine(x1,26,x2,26); // Mark the Tol range - } - } + } } } 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() { m_tol=n; +} + +void CPlotter::setFST4_FreqRange(int fLow,int fHigh) +{ + m_nfa=fLow; + m_nfb=fHigh; DrawOverlay(); } diff --git a/widgets/plotter.h b/widgets/plotter.h index b4b4cf42b..3787fafe0 100644 --- a/widgets/plotter.h +++ b/widgets/plotter.h @@ -83,6 +83,9 @@ public: void drawRed(int ia, int ib, float swide[]); void setVHF(bool bVHF); void setRedFile(QString fRed); + void setFST4_FreqRange(int fLow,int fHigh); + + bool scaleOK () const {return m_bScaleOK;} signals: void freezeDecode1(int n); @@ -125,6 +128,8 @@ private: qint32 m_nSubMode; qint32 m_ia; qint32 m_ib; + qint32 m_nfa; + qint32 m_nfb; QPixmap m_WaterfallPixmap; QPixmap m_2DPixmap; diff --git a/widgets/widegraph.cpp b/widgets/widegraph.cpp index c29d84989..389986c84 100644 --- a/widgets/widegraph.cpp +++ b/widgets/widegraph.cpp @@ -500,6 +500,11 @@ void WideGraph::setTol(int n) //setTol ui->widePlot->update(); } +void WideGraph::setFST4_FreqRange(int fLow,int fHigh) +{ + ui->widePlot->setFST4_FreqRange(fLow,fHigh); +} + void WideGraph::on_smoSpinBox_valueChanged(int n) { m_nsmo=n; diff --git a/widgets/widegraph.h b/widgets/widegraph.h index 90f7b51aa..d26328fdb 100644 --- a/widgets/widegraph.h +++ b/widgets/widegraph.h @@ -49,6 +49,7 @@ public: void drawRed(int ia, int ib); void setVHF(bool bVHF); void setRedFile(QString fRed); + void setFST4_FreqRange(int fLow,int fHigh); signals: void freezeDecode2(int n);