mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
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
This commit is contained in:
parent
c9fb8ab89f
commit
840163ab97
233
mainwindow.cpp
233
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
|
||||
|
15
mainwindow.h
15
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
|
||||
|
@ -927,18 +927,15 @@ QLabel[oob="true"] {
|
||||
<item row="10" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||
<item>
|
||||
<widget class="QSpinBox" name="sbCQRxFreq">
|
||||
<widget class="QSpinBox" name="sbCQTxFreq">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
<property name="toolTip">
|
||||
<string><html><head/><body><p>Frequency to call CQ on in kHz above the current MHz</p></body></html></string>
|
||||
</property>
|
||||
<property name="prefix">
|
||||
<string>CQ Rx </string>
|
||||
<string>Tx CQ </string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
@ -947,20 +944,17 @@ QLabel[oob="true"] {
|
||||
<number>999</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>285</number>
|
||||
<number>280</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbCQRx">
|
||||
<widget class="QCheckBox" name="cbCQTx">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
<property name="toolTip">
|
||||
<string><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></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
@ -980,7 +974,7 @@ QLabel[oob="true"] {
|
||||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@ -2282,6 +2276,14 @@ QPushButton[state="ok"] {
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>756</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
<property name="title">
|
||||
<string>File</string>
|
||||
@ -2876,8 +2878,8 @@ QPushButton[state="ok"] {
|
||||
<tabstop>sbFtol</tabstop>
|
||||
<tabstop>rptSpinBox</tabstop>
|
||||
<tabstop>sbTR</tabstop>
|
||||
<tabstop>sbCQRxFreq</tabstop>
|
||||
<tabstop>cbCQRx</tabstop>
|
||||
<tabstop>sbCQTxFreq</tabstop>
|
||||
<tabstop>cbCQTx</tabstop>
|
||||
<tabstop>cbShMsgs</tabstop>
|
||||
<tabstop>cbFast9</tabstop>
|
||||
<tabstop>cbAutoSeq</tabstop>
|
||||
|
Loading…
Reference in New Issue
Block a user