Added explicit setting for automatically acknowledging heartbeat messages

This commit is contained in:
Jordan Sherer 2019-03-24 13:41:35 -04:00
parent 7bd86ca177
commit 5d2ba76c17
2 changed files with 22 additions and 4 deletions

View File

@ -569,6 +569,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_txFrameCountEstimate {0}, m_txFrameCountEstimate {0},
m_previousFreq {0}, m_previousFreq {0},
m_hbPaused { false }, m_hbPaused { false },
m_hbAutoAck { true },
m_hbHidden { false }, m_hbHidden { false },
m_hbInterval {0}, m_hbInterval {0},
m_cqInterval {0}, m_cqInterval {0},
@ -1998,6 +1999,7 @@ void MainWindow::writeSettings()
m_settings->setValue ("JT65AP", ui->actionEnable_AP_JT65->isChecked ()); m_settings->setValue ("JT65AP", ui->actionEnable_AP_JT65->isChecked ());
m_settings->setValue("SortBy", QVariant(m_sortCache)); m_settings->setValue("SortBy", QVariant(m_sortCache));
m_settings->setValue("ShowColumns", QVariant(m_showColumnsCache)); m_settings->setValue("ShowColumns", QVariant(m_showColumnsCache));
m_settings->setValue("HBAutoAck", m_hbAutoAck);
m_settings->setValue("HBHidden", m_hbHidden); m_settings->setValue("HBHidden", m_hbHidden);
m_settings->setValue("HBInterval", m_hbInterval); m_settings->setValue("HBInterval", m_hbInterval);
m_settings->setValue("CQInterval", m_cqInterval); m_settings->setValue("CQInterval", m_cqInterval);
@ -2132,6 +2134,7 @@ void MainWindow::readSettings()
m_sortCache = m_settings->value("SortBy").toMap(); m_sortCache = m_settings->value("SortBy").toMap();
m_showColumnsCache = m_settings->value("ShowColumns").toMap(); m_showColumnsCache = m_settings->value("ShowColumns").toMap();
m_hbAutoAck = m_settings->value("HBAutoAck", true).toBool();
m_hbHidden = m_settings->value("HBHidden", true).toBool(); m_hbHidden = m_settings->value("HBHidden", true).toBool();
m_hbInterval = m_settings->value("HBInterval", 0).toInt(); m_hbInterval = m_settings->value("HBInterval", 0).toInt();
m_cqInterval = m_settings->value("CQInterval", 0).toInt(); m_cqInterval = m_settings->value("CQInterval", 0).toInt();
@ -2988,6 +2991,9 @@ void MainWindow::on_autoButton_clicked (bool checked)
void MainWindow::on_autoReplyButton_toggled(bool checked){ void MainWindow::on_autoReplyButton_toggled(bool checked){
resetPushButtonToggleText(ui->autoReplyButton); resetPushButtonToggleText(ui->autoReplyButton);
// update the HB button immediately
updateRepeatButtonDisplay();
} }
void MainWindow::on_monitorButton_toggled(bool checked){ void MainWindow::on_monitorButton_toggled(bool checked){
@ -7034,6 +7040,16 @@ void MainWindow::buildFrequencyMenu(QMenu *menu){
} }
void MainWindow::buildHeartbeatMenu(QMenu *menu){ void MainWindow::buildHeartbeatMenu(QMenu *menu){
auto autoAckHB = menu->addAction(ui->autoReplyButton->isChecked() ? "Automatically ACK Heartbeats" : "Automatically ACK Heartbeats (AUTO disabled)");
autoAckHB->setEnabled(ui->autoReplyButton->isChecked());
autoAckHB->setCheckable(true);
autoAckHB->setChecked(m_hbAutoAck);
connect(autoAckHB, &QAction::triggered, this, [this, autoAckHB](){
m_hbAutoAck = autoAckHB->isChecked();
updateRepeatButtonDisplay();
});
menu->addSeparator();
if(m_hbInterval > 0){ if(m_hbInterval > 0){
auto startStop = menu->addAction(ui->hbMacroButton->isChecked() ? "Stop Heartbeat Timer" : "Start Heartbeat Timer"); auto startStop = menu->addAction(ui->hbMacroButton->isChecked() ? "Stop Heartbeat Timer" : "Start Heartbeat Timer");
connect(startStop, &QAction::triggered, this, [this](){ ui->hbMacroButton->toggle(); }); connect(startStop, &QAction::triggered, this, [this](){ ui->hbMacroButton->toggle(); });
@ -9137,15 +9153,16 @@ void MainWindow::updateButtonDisplay(){
} }
void MainWindow::updateRepeatButtonDisplay(){ void MainWindow::updateRepeatButtonDisplay(){
auto hbBase = m_hbAutoAck && ui->autoReplyButton->isChecked() ? "HB + ACK" : "HB";
if(ui->hbMacroButton->isChecked() && m_hbInterval > 0 && m_nextHeartbeat.isValid()){ if(ui->hbMacroButton->isChecked() && m_hbInterval > 0 && m_nextHeartbeat.isValid()){
auto secs = DriftingDateTime::currentDateTimeUtc().secsTo(m_nextHeartbeat); auto secs = DriftingDateTime::currentDateTimeUtc().secsTo(m_nextHeartbeat);
if(secs > 0){ if(secs > 0){
ui->hbMacroButton->setText(QString("HB (%1)").arg(secs)); ui->hbMacroButton->setText(QString("%1 (%2)").arg(hbBase).arg(secs));
} else { } else {
ui->hbMacroButton->setText(QString("HB (now)")); ui->hbMacroButton->setText(QString("%1 (now)").arg(hbBase));
} }
} else { } else {
ui->hbMacroButton->setText("HB"); ui->hbMacroButton->setText(hbBase);
} }
if(ui->cqMacroButton->isChecked() && m_cqInterval > 0 && m_nextCQ.isValid()){ if(ui->cqMacroButton->isChecked() && m_cqInterval > 0 && m_nextCQ.isValid()){
@ -10283,7 +10300,7 @@ void MainWindow::processCommandActivity() {
// PROCESS ACTIVE HEARTBEAT // PROCESS ACTIVE HEARTBEAT
// if we have auto reply enabled and we are heartbeating and selcall is not enabled // if we have auto reply enabled and we are heartbeating and selcall is not enabled
else if (d.cmd == " HB" && ui->autoReplyButton->isChecked() && ui->hbMacroButton->isChecked() && m_hbInterval > 0){ else if (d.cmd == " HB" && ui->autoReplyButton->isChecked() && m_hbAutoAck){
// check to see if we have a message for a station who is heartbeating // check to see if we have a message for a station who is heartbeating
QString extra; QString extra;

View File

@ -860,6 +860,7 @@ private:
QQueue<QString> m_foxQSOinProgress; //QSOs in progress: Fox has sent a report QQueue<QString> m_foxQSOinProgress; //QSOs in progress: Fox has sent a report
QQueue<qint64> m_foxRateQueue; QQueue<qint64> m_foxRateQueue;
bool m_hbAutoAck;
bool m_hbHidden; bool m_hbHidden;
int m_hbInterval; int m_hbInterval;
int m_cqInterval; int m_cqInterval;