From 42b1f7c28a41c64f0a5e0276b3f20bb6c5190458 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Sun, 27 Nov 2016 01:34:43 +0000 Subject: [PATCH] Change the "CQ nnn ..." logic to specify the calling frequency... ... rather than the working frequency. Users set their working frequency and specify a calling frequency as a kHz offset into the current Rx MHz with the main window spin box. Calling CQ on the specified calling frequency is enabled by checking the associated option. Also enhanced the auto sequencing to handle short code 73 messages correctly. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7339 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- mainwindow.cpp | 233 +++++++++++++++++++++---------------------------- mainwindow.h | 15 ++-- mainwindow.ui | 36 ++++---- 3 files changed, 124 insertions(+), 160 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 697662489..a0057fd79 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -141,7 +141,7 @@ namespace bool message_is_73 (int type, QStringList const& msg_parts) { return type >= 0 - && ((type < 6 && msg_parts.contains ("73")) + && (((type < 6 || 7 == type) && msg_parts.contains ("73")) || (type == 6 && !msg_parts.filter ("73").isEmpty ())); } @@ -179,7 +179,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_fastGraph (new FastGraph(m_settings)), m_logDlg (new LogQSO (program_title (), m_settings, this)), m_lastDialFreq {0}, - m_callingFrequency {0}, m_dialFreqRxWSPR {0}, m_detector {new Detector {RX_SAMPLE_RATE, NTMAX, downSampleFactor}}, m_FFTSize {6192 / 2}, // conservative value to avoid buffer overruns @@ -214,7 +213,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_nPick {0}, m_TRperiodFast {-1}, m_nTx73 {0}, - m_freqCQ {0}, m_btxok {false}, m_diskData {false}, m_loopall {false}, @@ -642,9 +640,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, TxAgainTimer.setSingleShot(true); connect(&TxAgainTimer, SIGNAL(timeout()), this, SLOT(TxAgain())); - RxQSYTimer.setSingleShot(true); - connect(&RxQSYTimer, SIGNAL(timeout()), this, SLOT(RxQSY())); - connect(m_wideGraph.data (), SIGNAL(setFreq3(int,int)),this, SLOT(setFreq4(int,int))); @@ -774,7 +769,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, m_wideGraph->setLockTxFreq(m_lockTxFreq); ui->sbFtol->setValue(m_FtolIndex); on_sbFtol_valueChanged(m_FtolIndex); - ui->cbAutoSeq->setChecked(m_bAutoSeq); ui->cbShMsgs->setChecked(m_bShMsgs); ui->cbFast9->setChecked(m_bFast9); if(m_bFast9) m_bFastMode=true; @@ -803,7 +797,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple, ui->sbTxPercent->setValue(m_pctx); ui->TxPowerComboBox->setCurrentIndex(int(0.3*(m_dBm + 30.0)+0.2)); ui->cbUploadWSPR_Spots->setChecked(m_uploadSpots); - ui->sbCQRxFreq->setValue(m_freqCQ); ui->cbTxLock->setChecked(m_lockTxFreq); if((m_ndepth&7)==1) ui->actionQuickDecode->setChecked(true); if((m_ndepth&7)==2) ui->actionMediumDecode->setChecked(true); @@ -932,7 +925,7 @@ void MainWindow::writeSettings() m_settings->setValue("DTtol",m_DTtol); m_settings->setValue("FtolIndex",m_FtolIndex); m_settings->setValue("MinSync",m_minSync); - m_settings->setValue("AutoSeq",m_bAutoSeq); + m_settings->setValue ("AutoSeq", ui->cbAutoSeq->isChecked ()); m_settings->setValue("ShMsgs",m_bShMsgs); m_settings->setValue ("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency)); m_settings->setValue("InGain",m_inGain); @@ -949,7 +942,7 @@ void MainWindow::writeSettings() m_settings->setValue("TRindex",m_TRindex); m_settings->setValue("FastMode",m_bFastMode); m_settings->setValue("Fast9",m_bFast9); - m_settings->setValue("CQRxfreq",m_freqCQ); + m_settings->setValue ("CQTxfreq", ui->sbCQTxFreq->value ()); m_settings->setValue("pwrBandTxMemory",m_pwrBandTxMemory); m_settings->setValue("pwrBandTuneMemory",m_pwrBandTuneMemory); m_settings->endGroup(); @@ -989,7 +982,7 @@ void MainWindow::readSettings() m_FtolIndex=m_settings->value("FtolIndex",21).toInt(); // ui->FTol_combo_box->setCurrentText(m_settings->value("FTol","500").toString ()); ui->syncSpinBox->setValue(m_settings->value("MinSync",0).toInt()); - m_bAutoSeq=m_settings->value("AutoSeq",false).toBool(); + ui->cbAutoSeq->setChecked (m_settings->value ("AutoSeq", false).toBool()); m_bShMsgs=m_settings->value("ShMsgs",false).toBool(); m_bFast9=m_settings->value("Fast9",false).toBool(); m_bFastMode=m_settings->value("FastMode",false).toBool(); @@ -1012,7 +1005,7 @@ void MainWindow::readSettings() m_block_pwr_tooltip = true; ui->outAttenuation->setValue (m_settings->value ("OutAttenuation", 0).toInt ()); m_block_pwr_tooltip = false; - m_freqCQ=m_settings->value("CQRxFreq",285).toInt(); + ui->sbCQTxFreq->setValue (m_settings->value ("CQTxFreq", 280).toInt()); m_noSuffix=m_settings->value("NoSuffix",false).toBool(); int n=m_settings->value("GUItab",0).toInt(); ui->tabWidget->setCurrentIndex(n); @@ -1308,8 +1301,9 @@ void MainWindow::fastSink(qint64 frames) int i1=message.indexOf(m_baseCall); int i2=message.indexOf(m_hisCall); if(i1>10 and i2>i1+3) { - if(m_bAutoSeq and ((message.indexOf(" 73") < 0) or (m_ntx!=6))) { - processMessage(message,43,false); + if (ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isChecked () + && (message.indexOf (" 73") < 0 || m_ntx != 6)) { + processMessage (message,43,false); } } writeAllTxt(message); @@ -1449,7 +1443,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog ui->label_7->setText("Rx Frequency"); } update_watchdog_label (); - if(!m_splitMode) ui->cbCQRx->setChecked(false); + if(!m_splitMode) ui->cbCQTx->setChecked(false); } void MainWindow::on_monitorButton_clicked (bool checked) @@ -1464,10 +1458,7 @@ void MainWindow::on_monitorButton_clicked (bool checked) if (m_config.monitor_last_used ()) { // put rig back where it was when last in control - m_freqNominal = m_lastMonitoredFrequency; - m_freqTxNominal = m_freqNominal; - if (m_astroWidget) m_astroWidget->nominal_frequency (m_freqNominal, m_freqTxNominal); - setRig (); + setRig (m_lastMonitoredFrequency); setXIT (ui->TxFreqSpinBox->value ()); } } @@ -2309,9 +2300,10 @@ void::MainWindow::fast_decode_done() for(int i=0; i<100; i++) { int i1=msg0.indexOf(m_baseCall); int i2=msg0.indexOf(m_hisCall); - if((m_mode=="MSK144" or m_bFast9) and m_bAutoSeq and tmax>=0.0 and - i1>10 and i2>i1+3) { - if((msg0.indexOf(" 73") < 0) or (m_ntx!=6)) { + if ((m_mode == "MSK144" || m_bFast9) + && ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isChecked () + && tmax >= 0.0 && i1 > 10 && i2 > i1 + 3) { + if (msg0.indexOf (" 73") < 0 || m_ntx != 6) { processMessage(msg0,43,false); } } @@ -2698,16 +2690,6 @@ void MainWindow::guiUpdate() setRig (); setXIT (ui->TxFreqSpinBox->value ()); -// If "CQ nnn ..." feature is active, set the proper Tx frequency - if(m_config.offsetRxFreq() && ui->cbCQRx->isChecked() && - (m_monitoring || m_transmitting) && m_config.is_transceiver_online () - && m_config.split_mode ()) { - // All conditions are met, reset the transceiver Tx frequency: - Frequency tx_frequency {6 == m_ntx ? m_callingFrequency : - m_freqTxNominal / 1000000 * 1000000 + 1000 * m_freqCQ + m_XIT}; - Q_EMIT m_config.transceiver_tx_frequency (tx_frequency); - } - Q_EMIT m_config.transceiver_ptt (true); //Assert the PTT ptt1Timer.start(int(1000.0*m_config.txDelay())); //Start-of-transmission sequencer delay } @@ -2972,10 +2954,6 @@ void MainWindow::guiUpdate() //Once per second: if(nsec != m_sec0) { - QString txFreq; - txFreq.sprintf("R: %.3f T: %.3f C: %.3f",m_freqNominal/1000000.0, - m_freqTxNominal/1000000.0,m_callingFrequency/1000000.0); - auto_tx_label.setText(txFreq); if(m_freqNominal!=0 and m_freqNominal<50000000 and m_config.enable_VHF_features()) { if(!m_bVHFwarned) vhfWarning(); } else { @@ -3111,27 +3089,17 @@ void MainWindow::stopTx() void MainWindow::stopTx2() { Q_EMIT m_config.transceiver_ptt (false); //Lower PTT - if(m_mode=="JT9" and m_bFast9 and ui->cbAutoSeq->isChecked() and m_ntx==5 and (m_nTx73>=5)) { - on_stopTxButton_clicked(); - m_nTx73=0; + if (m_mode == "JT9" && m_bFast9 + && ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isChecked() + && m_ntx == 5 && m_nTx73 >= 5) { + on_stopTxButton_clicked (); + m_nTx73 = 0; } if(m_mode.startsWith ("WSPR") and m_ntr==-1 and !m_tuneup) { m_wideGraph->setWSPRtransmitted(); WSPR_scheduling (); m_ntr=0; } - if(m_config.offsetRxFreq() and ui->cbCQRx->isChecked()) { -// Q_EMIT m_config.transceiver_frequency(m_freqNominal); - RxQSYTimer.start(50); - } -} - -void MainWindow::RxQSY() -{ - // this appears to be a null directive - if (m_config.is_transceiver_online ()) { - Q_EMIT m_config.transceiver_frequency(m_freqNominal); - } } void MainWindow::ba2msg(QByteArray ba, char message[]) //ba2msg() @@ -3231,7 +3199,10 @@ void MainWindow::doubleClickOnCall(bool shift, bool ctrl) QString messages; if(!m_decodedText2) messages= ui->decodedTextBrowser2->toPlainText(); if(m_decodedText2) messages= ui->decodedTextBrowser->toPlainText(); - if(ui->cbCQRx->isChecked()) m_bDoubleClickAfterCQnnn=true; + if(ui->cbCQTx->isEnabled () && ui->cbCQTx->isEnabled () && ui->cbCQTx->isChecked()) + { + m_bDoubleClickAfterCQnnn=true; + } m_bDoubleClicked=true; processMessage(messages, position, ctrl); } @@ -3254,27 +3225,13 @@ void MainWindow::processMessage(QString const& messages, int position, bool ctrl i1=t2a.indexOf(" CQ "); if(i1>10) { bool ok; - int kHz=t2a.mid(i1+4,3).toInt(&ok); - if(ok and kHz>=0 and kHz<=999) { - t2a=t2a.mid(0,i1+4) + t2a.mid(i1+8,-1); + Frequency kHz {t2a.mid (i1+4,3).toUInt (&ok)}; + if(ok && kHz <= 999) { + t2a = t2a.mid (0, i1+4) + t2a.mid (i1+8, -1); if (m_config.is_transceiver_online ()) { - Frequency frequency {m_freqNominal / 1000000 * 1000000 + 1000*kHz}; //QSY Freq for answering CQ nnn - QString t; - t.sprintf("QSY %7.3f", frequency / 1e6); - ui->decodedTextBrowser2->displayQSY(t); - // ui->labDialFreq->setText (Radio::pretty_frequency_MHz_string (frequency)); - if (m_config.is_transceiver_online ()) { - Q_EMIT m_config.transceiver_frequency (frequency); - } - - if ((m_monitoring || m_transmitting) - && m_config.is_transceiver_online () - && m_config.split_mode ()) - { - // All conditions are met, reset the transmit dial frequency: - Q_EMIT m_config.transceiver_tx_frequency(frequency); - } - + //QSY Freq for answering CQ nnn + setRig (m_freqNominal / 1000000 * 1000000 + 1000 * kHz); + ui->decodedTextBrowser2->displayQSY (QString {"QSY %1"}.arg (m_freqNominal / 1e6, 7, 'f', 3)); } } } @@ -3506,28 +3463,40 @@ void MainWindow::processMessage(QString const& messages, int position, bool ctrl } } if(m_transmitting) m_restart=true; - if(ui->cbAutoSeq->isVisible() and ui->cbAutoSeq->isChecked() and !m_bDoubleClicked) return; + if (ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isChecked () && !m_bDoubleClicked) return; if(m_config.quick_call()) auto_tx_mode(true); m_bDoubleClicked=false; } -void MainWindow::genStdMsgs(QString rpt) +void MainWindow::genCQMsg () { - QString t; - if(m_config.my_callsign() !="" and m_config.my_grid() !="") + if(m_config.my_callsign().size () && m_config.my_grid().size ()) { - t="CQ " + m_config.my_callsign() + " " + m_config.my_grid().mid(0,4); - if(m_config.offsetRxFreq() and ui->cbCQRx->isChecked()) { - t.sprintf("CQ %3.3d ",m_freqCQ); - t += m_config.my_callsign() + " " + m_config.my_grid().mid(0,4); + if (m_config.offsetRxFreq () + && ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked ()) + { + msgtype ( + QString {"CQ %1 %2 %3"} + .arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'}) + .arg (m_config.my_callsign()) + .arg (m_config.my_grid ().left (4)), + ui->tx6); } - if(m_mode=="JT4") t="@1000 (TUNE)"; - msgtype(t, ui->tx6); + else + { + msgtype (QString {"CQ %1 %2"}.arg (m_config.my_callsign ()).arg (m_config.my_grid ().left (4)), ui->tx6); + } + if (m_mode=="JT4") msgtype ("@1000 (TUNE)", ui->tx6); } else { - ui->tx6->setText(""); + ui->tx6->clear (); } +} + +void MainWindow::genStdMsgs(QString rpt) +{ + genCQMsg (); QString hisCall=ui->dxCallEntry->text(); if(!hisCall.size ()) { ui->labAz->clear (); @@ -3544,7 +3513,7 @@ void MainWindow::genStdMsgs(QString rpt) QString t0=hisBase + " " + m_baseCall + " "; QString t00=t0; - t=t0 + m_config.my_grid ().mid(0,4); + QString t {t0 + m_config.my_grid ().left (4)}; msgtype(t, ui->tx1); if(m_config.enable_VHF_features() and ui->cbShMsgs->isChecked() and m_mode=="JT65") { t=t+" OOO"; @@ -3584,11 +3553,15 @@ void MainWindow::genStdMsgs(QString rpt) t=hisBase + " " + m_config.my_callsign (); msgtype(t, ui->tx1); t="CQ " + m_config.my_callsign (); - if(m_config.offsetRxFreq() and ui->cbCQRx->isChecked()) { - t.sprintf("CQ %3.3d ",m_freqCQ); - t += m_config.my_callsign (); + if(m_config.offsetRxFreq() + && ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()) { + msgtype ( + QString {"CQ %1 %2"} + .arg (m_freqNominal / 1000 - m_freqNominal / 1000000 * 1000, 3, 10, QChar {'0'}) + .arg (m_config.my_callsign()), + ui->tx6); } - msgtype(t, ui->tx6); + else msgtype(t, ui->tx6); } else { switch (m_config.type_2_msg_gen ()) { @@ -3961,9 +3934,9 @@ void MainWindow::displayWidgets(int n) if(i==4) ui->rptSpinBox->setVisible(b); if(i==5) ui->sbTR->setVisible(b); if(i==6) { - ui->sbCQRxFreq->setVisible(b); - ui->cbCQRx->setVisible(b); - ui->cbCQRx->setEnabled(b); + ui->sbCQTxFreq->setVisible(b); + ui->cbCQTx->setVisible(b); + ui->cbCQTx->setEnabled(b); } if(i==7) ui->cbShMsgs->setVisible(b); if(i==8) ui->cbFast9->setVisible(b); @@ -4510,7 +4483,6 @@ void MainWindow::on_bandComboBox_currentIndexChanged (int index) if (source_index.isValid ()) { frequency = frequencies->frequency_list ()[source_index.row ()].frequency_; - m_callingFrequency = frequency; } // Lookup band @@ -4582,10 +4554,7 @@ void MainWindow::band_changed (Frequency f) if (!m_transmitting) monitor (true); float r=m_freqNominal/(f+0.0001); if(r<0.9 or r>1.1) m_bVHFwarned=false; - m_freqNominal = f; - m_freqTxNominal = m_freqNominal; - if (m_astroWidget) m_astroWidget->nominal_frequency (m_freqNominal, m_freqTxNominal); - setRig (); + setRig (f); setXIT (ui->TxFreqSpinBox->value ()); if(monitor_off) monitor(false); } @@ -4823,7 +4792,16 @@ void MainWindow::on_pbTxMode_clicked() void MainWindow::setXIT(int n, Frequency base) { if (m_transmitting && !m_config.tx_QSY_allowed ()) return; - if(m_mode=="MSK144") return; + // If "CQ nnn ..." feature is active, set the proper Tx frequency + if(m_config.split_mode () && m_config.offsetRxFreq() + && ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()) + { + if (6 == m_ntx) + { + // All conditions are met, use calling frequency + base = m_freqNominal / 1000000 * 1000000 + 1000 * ui->sbCQTxFreq->value () + m_XIT; + } + } if (!base) base = m_freqNominal; m_XIT = 0; if (!m_bSimplex) { @@ -4866,11 +4844,8 @@ void MainWindow::setFreq4(int rxFreq, int txFreq) // for VHF & up we adjust Tx dial frequency to equalize Tx to Rx // when user CTRL+clicks on waterfall auto temp = ui->TxFreqSpinBox->value (); - m_freqNominal += txFreq - temp; - m_freqTxNominal += txFreq - temp; ui->RxFreqSpinBox->setValue (temp); - if (m_astroWidget) m_astroWidget->nominal_frequency (m_freqNominal, m_freqTxNominal); - setRig (); + setRig (m_freqNominal + txFreq - temp); setXIT (ui->TxFreqSpinBox->value ()); } } @@ -4904,14 +4879,16 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const& if (temp != m_freqNominal) { m_freqTxNominal = m_freqNominal; + genCQMsg (); } if (m_monitoring) { m_lastMonitoredFrequency = m_freqNominal; } - if (m_lastDialFreq != m_freqNominal and ((m_mode!="MSK144") or - !ui->cbCQRx->isChecked())) { + if (m_lastDialFreq != m_freqNominal && + (m_mode != "MSK144" + || !(ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked()))) { m_lastDialFreq = m_freqNominal; m_secBandChanged=QDateTime::currentMSecsSinceEpoch()/1000; if(s.frequency () < 30000000u && !m_mode.startsWith ("WSPR")) { @@ -5104,8 +5081,8 @@ void MainWindow::transmit (double snr) } // In auto-sequencing mode, stop after 5 transmissions of "73" message. - if(m_bFastMode or m_bFast9) { - if(ui->cbAutoSeq->isChecked()) { + if (m_bFastMode || m_bFast9) { + if (ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isChecked ()) { if(m_ntx==5) { m_nTx73 += 1; } else { @@ -5246,11 +5223,6 @@ void::MainWindow::VHF_features_enabled(bool b) } } -void MainWindow::on_cbAutoSeq_toggled(bool b) -{ - m_bAutoSeq=b; -} - void MainWindow::on_sbTR_valueChanged(int index) { m_TRindex=index; @@ -5780,13 +5752,19 @@ void MainWindow::astroUpdate () } } -void MainWindow::setRig () +void MainWindow::setRig (Frequency f) { - if(m_transmitting && !m_config.tx_QSY_allowed ()) return; - if ((m_monitoring || m_transmitting) - && m_config.transceiver_online ()) + if (f) { - if(m_transmitting && m_config.split_mode ()) + m_freqNominal = f; + genCQMsg (); + m_freqTxNominal = m_freqNominal; + if (m_astroWidget) m_astroWidget->nominal_frequency (m_freqNominal, m_freqTxNominal); + } + if(m_transmitting && !m_config.tx_QSY_allowed ()) return; + if ((m_monitoring || m_transmitting) && m_config.transceiver_online ()) + { + if (m_transmitting && m_config.split_mode ()) { Q_EMIT m_config.transceiver_tx_frequency (m_freqTxNominal + m_astroCorrection.tx); } @@ -5821,32 +5799,21 @@ void MainWindow::on_actionSave_reference_spectrum_triggered() m_bRefSpec=true; } -void MainWindow::on_sbCQRxFreq_valueChanged(int n) +void MainWindow::on_sbCQTxFreq_valueChanged(int) { - m_freqCQ=n; - genStdMsgs(m_rpt); - CQRxFreq(); + setXIT (ui->TxFreqSpinBox->value ()); } -void MainWindow::on_cbCQRx_toggled(bool b) +void MainWindow::on_cbCQTx_toggled(bool b) { - ui->sbCQRxFreq->setEnabled(b); - genStdMsgs(m_rpt); + ui->sbCQTxFreq->setEnabled(b); + genCQMsg(); if(b) { ui->txrb6->setChecked(true); m_ntx=6; } - CQRxFreq(); -} - -void MainWindow::CQRxFreq() -{ - Frequency rx_frequency {m_config.offsetRxFreq () && ui->cbCQRx->isChecked () ? - m_freqNominal / 1000000 * 1000000 + 1000 * m_freqCQ : - m_callingFrequency}; - if (m_config.is_transceiver_online ()) { - Q_EMIT m_config.transceiver_frequency (rx_frequency); - } + setRig (); + setXIT (ui->TxFreqSpinBox->value ()); } void MainWindow::statusUpdate () const diff --git a/mainwindow.h b/mainwindow.h index 921dba792..eb46028a3 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -219,7 +219,6 @@ private slots: void on_actionInclude_averaging_triggered(); void on_actionInclude_correlation_triggered(); void VHF_features_enabled(bool b); - void on_cbAutoSeq_toggled(bool b); void on_sbSubmode_valueChanged(int n); void on_cbShMsgs_toggled(bool b); void on_cbTx6_toggled(bool b); @@ -233,7 +232,6 @@ private slots: void WSPR_config(bool b); void uploadSpots(); void TxAgain(); - void RxQSY(); void uploadResponse(QString response); void on_WSPRfreqSpinBox_valueChanged(int n); void on_pbTxNext_clicked(bool b); @@ -246,8 +244,8 @@ private slots: void on_sbTR_valueChanged(int index); void on_sbFtol_valueChanged(int index); void on_cbFast9_clicked(bool b); - void on_sbCQRxFreq_valueChanged(int n); - void on_cbCQRx_toggled(bool b); + void on_sbCQTxFreq_valueChanged(int n); + void on_cbCQTx_toggled(bool b); void on_actionMSK144_triggered(); void on_actionQRA64_triggered(); void splash_done (); @@ -310,7 +308,6 @@ private: Transceiver::TransceiverState m_rigState; Frequency m_lastDialFreq; QString m_lastBand; - Frequency m_callingFrequency; Frequency m_dialFreqRxWSPR; // best guess at WSPR QRG Detector * m_detector; @@ -372,7 +369,6 @@ private: qint32 m_RxFreq; qint32 m_TRperiodFast; qint32 m_nTx73; - qint32 m_freqCQ; qint32 m_UTCdisk; qint32 m_wait; @@ -400,7 +396,6 @@ private: int m_lastMessageType; QString m_lastMessageSent; bool m_lockTxFreq; - bool m_bAutoSeq; bool m_bShMsgs; bool m_uploadSpots; bool m_uploading; @@ -469,7 +464,6 @@ private: QTimer uploadTimer; QTimer tuneATU_Timer; QTimer TxAgainTimer; - QTimer RxQSYTimer; QTimer minuteTimer; QTimer splashTimer; QTimer p1Timer; @@ -534,6 +528,7 @@ private: void createStatusBar(); void updateStatusBar(); void genStdMsgs(QString rpt); + void genCQMsg(); void clearDX (); void lookup(); void ba2msg(QByteArray ba, char* message); @@ -556,11 +551,11 @@ private: void enable_DXCC_entity (bool on); void switch_mode (Mode); void WSPR_scheduling (); - void setRig (); + void setRig (Frequency = 0); // zero frequency means no change void WSPR_history(Frequency dialFreq, int ndecodes); QString WSPR_hhmm(int n); void fast_config(bool b); - void CQRxFreq(); + void CQTxFreq(); QString save_wave_file (QString const& name , short const * data , int seconds diff --git a/mainwindow.ui b/mainwindow.ui index 9f0be0b7c..12a817dc7 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -927,18 +927,15 @@ QLabel[oob="true"] { - + false - - - 100 - 16777215 - + + <html><head/><body><p>Frequency to call CQ on in kHz above the current MHz</p></body></html> - CQ Rx + Tx CQ 1 @@ -947,20 +944,17 @@ QLabel[oob="true"] { 999 - 285 + 280 - + false - - - 20 - 16777215 - + + <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></body></html> @@ -980,7 +974,7 @@ QLabel[oob="true"] { QTabWidget::Triangular - 0 + 1 @@ -2282,6 +2276,14 @@ QPushButton[state="ok"] { + + + 0 + 0 + 756 + 21 + + File @@ -2876,8 +2878,8 @@ QPushButton[state="ok"] { sbFtol rptSpinBox sbTR - sbCQRxFreq - cbCQRx + sbCQTxFreq + cbCQTx cbShMsgs cbFast9 cbAutoSeq