Update heartbeat to allow on demand only. Add AUTO requirement for ACKs

This commit is contained in:
Jordan Sherer 2018-10-31 10:50:51 -04:00
parent 6f648d5a60
commit 33446297fa
2 changed files with 31 additions and 7 deletions

View File

@ -633,23 +633,26 @@ text message.</string>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Number of minutes between unattended heartbeat transmissions.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="specialValueText">
<string>Disabled</string>
</property>
<property name="suffix">
<string> minutes</string>
</property>
<property name="prefix">
<string/>
<string>every </string>
</property>
<property name="minimum">
<number>5</number>
<number>0</number>
</property>
<property name="maximum">
<number>1440</number>
</property>
<property name="singleStep">
<number>1</number>
<number>5</number>
</property>
<property name="value">
<number>15</number>
<number>30</number>
</property>
</widget>
</item>
@ -676,7 +679,7 @@ text message.</string>
<string> minutes</string>
</property>
<property name="prefix">
<string/>
<string>after </string>
</property>
<property name="minimum">
<number>1</number>

View File

@ -4381,7 +4381,22 @@ void MainWindow::guiUpdate()
ui->labUTC->setText(utc);
auto delta = t.secsTo(m_nextHeartbeat);
auto ping = ui->heartbeatButton->isChecked() ? delta > 0 ? QString("%1 s").arg(delta) : "queued!" : m_nextHeartPaused ? "paused" : "disabled";
QString ping;
if(ui->heartbeatButton->isChecked()){
if(heartbeatTimer.isActive()){
if(delta > 0){
ping = QString("%1 s").arg(delta);
} else {
ping = "queued!";
}
} else {
ping = "on demand";
}
} else if (m_nextHeartPaused) {
ping = "paused";
} else {
ping = "disabled";
}
ui->labHeartbeat->setText(QString("Next Heartbeat: %1").arg(ping));
auto callLabel = m_config.my_callsign();
@ -5498,6 +5513,12 @@ void MainWindow::scheduleHeartbeat(bool first){
auto timestamp = DriftingDateTime::currentDateTimeUtc();
auto orig = timestamp;
// if we have the heartbeat interval disabled, return early, unless this is a "heartbeat now"
if(!m_config.heartbeat() && !first){
heartbeatTimer.stop();
return;
}
// remove milliseconds
auto t = timestamp.time();
t.setHMS(t.hour(), t.minute(), t.second());
@ -8838,7 +8859,7 @@ void MainWindow::processCommandActivity() {
}
// PROCESS HEARTBEAT
else if (d.cmd == " HEARTBEAT" && ui->heartbeatButton->isChecked()){
else if (d.cmd == " HEARTBEAT" && ui->heartbeatButton->isChecked() && ui->autoReplyButton->isChecked()){
reply = QString("%1 HEARTBEAT ACK %2").arg(d.from).arg(Varicode::formatSNR(d.snr));
enqueueHeartbeat(reply);