Improved auto-sequencing for the contest-like modes.

This commit is contained in:
Joe Taylor 2018-07-31 10:45:32 -04:00
parent 0235af4f77
commit b0e7901502

View File

@ -2899,8 +2899,7 @@ void MainWindow::readFromStdout() //readFromStdout
m_blankLine = false; m_blankLine = false;
} }
DecodedText decodedtext {QString::fromUtf8 (t.constData ()).remove (QRegularExpression {"\r|\n"})}; DecodedText decodedtext {QString::fromUtf8(t.constData()).remove(QRegularExpression {"\r|\n"})};
if(m_mode=="FT8" and m_config.bFox() and if(m_mode=="FT8" and m_config.bFox() and
(decodedtext.string().contains("R+") or decodedtext.string().contains("R-"))) { (decodedtext.string().contains("R+") or decodedtext.string().contains("R-"))) {
auto for_us = decodedtext.string().contains(" " + m_config.my_callsign() + " ") or auto for_us = decodedtext.string().contains(" " + m_config.my_callsign() + " ") or
@ -2937,7 +2936,8 @@ void MainWindow::readFromStdout() //readFromStdout
int audioFreq=decodedtext.frequencyOffset(); int audioFreq=decodedtext.frequencyOffset();
if(m_mode=="FT8") { if(m_mode=="FT8") {
auto const& parts = decodedtext.string ().split (' ', QString::SkipEmptyParts); auto const& parts = decodedtext.string().remove("<").remove(">")
.split (' ', QString::SkipEmptyParts);
if (parts.size () > 6) { if (parts.size () > 6) {
auto for_us = parts[5].contains (m_baseCall) auto for_us = parts[5].contains (m_baseCall)
|| ("DE" == parts[5] && qAbs (ui->RxFreqSpinBox->value () - audioFreq) <= 10); || ("DE" == parts[5] && qAbs (ui->RxFreqSpinBox->value () - audioFreq) <= 10);
@ -4253,6 +4253,9 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_QSOProgress=ROGER_REPORT; m_QSOProgress=ROGER_REPORT;
} }
} }
} else if(m_nContest==FIELD_DAY and bFieldDay_w34) {
gen_msg=setTxMsg(3);
m_QSOProgress=ROGER_REPORT;
} else { // no grid on end of msg } else { // no grid on end of msg
QString r=message_words.at (3); QString r=message_words.at (3);
if(m_QSOProgress >= ROGER_REPORT && (r=="RRR" || r.toInt()==73 || "RR73" == r)) { if(m_QSOProgress >= ROGER_REPORT && (r=="RRR" || r.toInt()==73 || "RR73" == r)) {
@ -4266,8 +4269,8 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
} }
m_QSOProgress = SIGNOFF; m_QSOProgress = SIGNOFF;
} else if((m_QSOProgress >= REPORT } else if((m_QSOProgress >= REPORT
|| (m_QSOProgress >= REPLYING && (m_mode=="MSK144" or m_mode=="FT8") || (m_QSOProgress >= REPLYING && (m_mode=="MSK144" or m_mode=="FT8")))
/*&& ui->cbVHFcontest->isChecked()*/ )) && r.mid(0,1)=="R") { //### Check this !!! ### && r.mid(0,1)=="R") {
m_ntx=4; m_ntx=4;
m_QSOProgress = ROGERS; m_QSOProgress = ROGERS;
ui->txrb4->setChecked(true); ui->txrb4->setChecked(true);
@ -4276,16 +4279,20 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
m_ntx=7; m_ntx=7;
m_gen_message_is_cq = false; m_gen_message_is_cq = false;
} }
} else if(m_QSOProgress >= CALLING && ((r.toInt()>=-50 && r.toInt()<=49) or } else if(m_QSOProgress>=CALLING and
(r.toInt()>=529 && r.toInt()<=599))) { ((r.toInt()>=-50 && r.toInt()<=49) or (r.toInt()>=529 && r.toInt()<=599))) {
gen_msg=setTxMsg(3); if(m_nContest==EU_VHF or m_nContest==FIELD_DAY) {
m_QSOProgress=ROGER_REPORT; gen_msg=setTxMsg(2);
m_QSOProgress=REPORT;
} else {
gen_msg=setTxMsg(3);
m_QSOProgress=ROGER_REPORT;
}
} else { // nothing for us } else { // nothing for us
return; return;
} }
} }
} }
else if (m_QSOProgress >= ROGERS else if (m_QSOProgress >= ROGERS
&& message_words.size () > 2 && message_words.at (1).contains (m_baseCall) && message_words.at (2) == "73") { && message_words.size () > 2 && message_words.at (1).contains (m_baseCall) && message_words.at (2) == "73") {
// 73 back to compound call holder // 73 back to compound call holder
@ -4304,7 +4311,6 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
if ((message_words.size () > 4 && message_words.at (1).contains (m_baseCall) && message_words.at (4) == "OOO")) { if ((message_words.size () > 4 && message_words.at (1).contains (m_baseCall) && message_words.at (4) == "OOO")) {
// EME short code report or MSK144/FT8 contest mode reply, send back Tx3 // EME short code report or MSK144/FT8 contest mode reply, send back Tx3
m_ntx=3; m_ntx=3;
qDebug() << "dd";
m_QSOProgress = ROGER_REPORT; m_QSOProgress = ROGER_REPORT;
ui->txrb3->setChecked (true); ui->txrb3->setChecked (true);
if (ui->tabWidget->currentIndex () == 1) { if (ui->tabWidget->currentIndex () == 1) {
@ -4483,7 +4489,7 @@ int MainWindow::setTxMsg(int n)
void MainWindow::genCQMsg () void MainWindow::genCQMsg ()
{ {
if(m_config.my_callsign().size () && m_config.my_grid().size ()) { if(m_config.my_callsign().size () && m_config.my_grid().size ()) {
auto const& grid = m_config.my_callsign () != m_baseCall && shortList (m_config.my_callsign ()) ? QString {} : m_config.my_grid (); QString grid{m_config.my_grid()};
if (ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked ()) { if (ui->cbCQTx->isEnabled () && ui->cbCQTx->isVisible () && ui->cbCQTx->isChecked ()) {
if(stdCall(m_config.my_callsign())) { if(stdCall(m_config.my_callsign())) {
msgtype (QString {"CQ %1 %2 %3"} msgtype (QString {"CQ %1 %2 %3"}
@ -4524,10 +4530,9 @@ void MainWindow::genCQMsg ()
bool MainWindow::stdCall(QString w) bool MainWindow::stdCall(QString w)
{ {
int n=w.trimmed().length(); int n=w.trimmed().length();
//Treat /P and /R as special cases: //Treat /P and /R as special cases: strip them off for this test.
if((w.mid(n-2,2)=="/P") and m_nContest==EU_VHF) w=w.left(n-2); if(w.mid(n-2,2)=="/P") w=w.left(n-2);
if(w.mid(n-2,2)=="/R") w=w.left(n-2); if(w.mid(n-2,2)=="/R") w=w.left(n-2);
n=w.trimmed().length(); n=w.trimmed().length();
if(n>6) return false; if(n>6) return false;
w=w.toUpper(); w=w.toUpper();