Fixed idle watchdog queued messages
This commit is contained in:
parent
54fb499518
commit
11bced9372
@ -277,7 +277,7 @@
|
|||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>-133</y>
|
||||||
<width>724</width>
|
<width>724</width>
|
||||||
<height>586</height>
|
<height>586</height>
|
||||||
</rect>
|
</rect>
|
||||||
@ -666,7 +666,7 @@ text message.</string>
|
|||||||
<item>
|
<item>
|
||||||
<widget class="QGroupBox" name="groupBox_8">
|
<widget class="QGroupBox" name="groupBox_8">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Idle Watchdog</string>
|
<string>Idle Timeout</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_32">
|
<layout class="QVBoxLayout" name="verticalLayout_32">
|
||||||
<item>
|
<item>
|
||||||
|
@ -4844,7 +4844,7 @@ void MainWindow::guiUpdate()
|
|||||||
} else if(m_monitoring) {
|
} else if(m_monitoring) {
|
||||||
if (m_tx_watchdog) {
|
if (m_tx_watchdog) {
|
||||||
tx_status_label.setStyleSheet ("QLabel{background-color: #000000; color:#ffffff}");
|
tx_status_label.setStyleSheet ("QLabel{background-color: #000000; color:#ffffff}");
|
||||||
tx_status_label.setText ("Inactive watchdog");
|
tx_status_label.setText ("Idle timeout");
|
||||||
} else {
|
} else {
|
||||||
tx_status_label.setStyleSheet("QLabel{background-color: #22ff22}");
|
tx_status_label.setStyleSheet("QLabel{background-color: #22ff22}");
|
||||||
QString t;
|
QString t;
|
||||||
@ -9722,20 +9722,26 @@ void MainWindow::processCommandActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// we're only responding to callsigns in our whitelist if we have one defined...
|
// we're only responding to callsigns in our whitelist if we have one defined...
|
||||||
// make sure the whitelist is empty (no restrictions) or the from callsign or its base callsign is on it
|
// make sure the whitelist is empty (no restrictions) or the from callsign or its base callsign is on it
|
||||||
auto whitelist = m_config.auto_whitelist();
|
auto whitelist = m_config.auto_whitelist();
|
||||||
if(!whitelist.isEmpty() && !(whitelist.contains(d.from) || whitelist.contains(Radio::base_callsign(d.from)))){
|
if(!whitelist.isEmpty() && !(whitelist.contains(d.from) || whitelist.contains(Radio::base_callsign(d.from)))){
|
||||||
|
qDebug() << "skipping command for whitelist" << d.from;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this is an allcall, check to make sure we haven't replied to their allcall recently (in the past ten minutes)
|
// if this is an allcall, check to make sure we haven't replied to their allcall recently (in the past ten minutes)
|
||||||
// that way we never get spammed by allcalls at too high of a frequency
|
// that way we never get spammed by allcalls at too high of a frequency
|
||||||
if (isAllCall && m_txAllcallCommandCache.contains(d.from) && m_txAllcallCommandCache[d.from]->secsTo(now) / 60 < 10) {
|
if (isAllCall && m_txAllcallCommandCache.contains(d.from) && m_txAllcallCommandCache[d.from]->secsTo(now) / 60 < 10) {
|
||||||
|
qDebug() << "skipping command for allcall timeout" << d.from;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// don't actually process any automatic message replies while in idle
|
||||||
|
if(m_tx_watchdog){
|
||||||
|
qDebug() << "skipping command for idle timeout" << d.from;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// HACK: if this is an autoreply cmd and relay path is populated and cmd is not MSG or MSG TO:, then swap out the relay path
|
// HACK: if this is an autoreply cmd and relay path is populated and cmd is not MSG or MSG TO:, then swap out the relay path
|
||||||
if(Varicode::isCommandAutoreply(d.cmd) && !d.relayPath.isEmpty() && !d.cmd.startsWith(" MSG")){
|
if(Varicode::isCommandAutoreply(d.cmd) && !d.relayPath.isEmpty() && !d.cmd.startsWith(" MSG")){
|
||||||
@ -11770,7 +11776,7 @@ void MainWindow::tx_watchdog (bool triggered)
|
|||||||
if (m_auto) auto_tx_mode (false);
|
if (m_auto) auto_tx_mode (false);
|
||||||
stopTx();
|
stopTx();
|
||||||
tx_status_label.setStyleSheet ("QLabel{background-color: #000000; color:#ffffff; }");
|
tx_status_label.setStyleSheet ("QLabel{background-color: #000000; color:#ffffff; }");
|
||||||
tx_status_label.setText ("Inactive watchdog");
|
tx_status_label.setText ("Idle timeout");
|
||||||
|
|
||||||
// if the watchdog is triggered...we're no longer active
|
// if the watchdog is triggered...we're no longer active
|
||||||
bool wasAuto = ui->autoReplyButton->isChecked();
|
bool wasAuto = ui->autoReplyButton->isChecked();
|
||||||
@ -11785,6 +11791,26 @@ void MainWindow::tx_watchdog (bool triggered)
|
|||||||
// clear the tx queues
|
// clear the tx queues
|
||||||
resetMessageTransmitQueue();
|
resetMessageTransmitQueue();
|
||||||
|
|
||||||
|
QMessageBox * msgBox = new QMessageBox(this);
|
||||||
|
msgBox->setIcon(QMessageBox::Information);
|
||||||
|
msgBox->setText("Idle Timeout");
|
||||||
|
msgBox->setInformativeText(QString("You have been idle for more than %1 minutes.").arg(m_config.watchdog()));
|
||||||
|
msgBox->addButton(QMessageBox::Ok);
|
||||||
|
|
||||||
|
connect(msgBox, &QMessageBox::finished, this, [this, wasAuto, wasHB, wasCQ](int /*result*/) {
|
||||||
|
// restore the button states
|
||||||
|
ui->autoReplyButton->setChecked(wasAuto);
|
||||||
|
ui->hbMacroButton->setChecked(wasHB);
|
||||||
|
ui->cqMacroButton->setChecked(wasCQ);
|
||||||
|
|
||||||
|
this->tx_watchdog(false);
|
||||||
|
});
|
||||||
|
msgBox->setModal(true);
|
||||||
|
msgBox->show();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
MessageBox::warning_message(this, QString("You have been inactive for more than %1 minutes.").arg(m_config.watchdog()));
|
MessageBox::warning_message(this, QString("You have been inactive for more than %1 minutes.").arg(m_config.watchdog()));
|
||||||
|
|
||||||
// clear the tx queues
|
// clear the tx queues
|
||||||
@ -11794,6 +11820,7 @@ void MainWindow::tx_watchdog (bool triggered)
|
|||||||
ui->autoReplyButton->setChecked(wasAuto);
|
ui->autoReplyButton->setChecked(wasAuto);
|
||||||
ui->hbMacroButton->setChecked(wasHB);
|
ui->hbMacroButton->setChecked(wasHB);
|
||||||
ui->cqMacroButton->setChecked(wasCQ);
|
ui->cqMacroButton->setChecked(wasCQ);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user