Fixed #23: idle watchdog should prevent all types of automated transmissions

This commit is contained in:
Jordan Sherer 2018-12-14 20:02:46 -05:00
parent 90858f8964
commit 29f759dafe
2 changed files with 34 additions and 1 deletions

View File

@ -5706,13 +5706,25 @@ bool MainWindow::ensureSelcalCallsignSelected(bool alert){
bool MainWindow::ensureKeyNotStuck(QString const& text){
// be annoying and drop messages with all the same character to reduce spam...
if(text.length() > 5 && QString(text).replace(text.at(0), "").trimmed().isEmpty()){
return false;
}
return true;
}
bool MainWindow::ensureNotIdle(){
if (!m_config.watchdog()){
return true;
}
if(m_idleMinutes < m_config.watchdog ()){
return true;
}
tx_watchdog (true); // disable transmit and auto replies
return false;
}
void MainWindow::createMessage(QString const& text){
if(!ensureCallsignSet()){
on_stopTxButton_clicked();
@ -5724,6 +5736,11 @@ void MainWindow::createMessage(QString const& text){
return;
}
if(!ensureNotIdle()){
on_stopTxButton_clicked();
return;
}
if(!ensureKeyNotStuck(text)){
on_stopTxButton_clicked();
@ -11000,9 +11017,24 @@ void MainWindow::tx_watchdog (bool triggered)
tx_status_label.setText ("Inactive watchdog");
// if the watchdog is triggered...we're no longer active
bool wasAuto = ui->autoReplyButton->isChecked();
bool wasActive = ui->activeButton->isChecked();
bool wasHB = ui->hbMacroButton->isChecked();
bool wasCQ = ui->cqMacroButton->isChecked();
// save the button states
ui->autoReplyButton->setChecked(false);
ui->activeButton->setChecked(false);
ui->hbMacroButton->setChecked(false);
ui->cqMacroButton->setChecked(false);
MessageBox::warning_message(this, QString("Attempting to transmit, but you have been inactive for more than %1 minutes.").arg(m_config.watchdog()));
// restore the button states
ui->autoReplyButton->setChecked(wasAuto);
ui->activeButton->setChecked(wasActive);
ui->hbMacroButton->setChecked(wasHB);
ui->cqMacroButton->setChecked(wasCQ);
}
else
{

View File

@ -153,6 +153,7 @@ public slots:
bool ensureCallsignSet(bool alert=true);
bool ensureSelcalCallsignSelected(bool alert=true);
bool ensureKeyNotStuck(QString const& text);
bool ensureNotIdle();
void createMessage(QString const& text);
void createMessageTransmitQueue(QString const& text);
void resetMessageTransmitQueue();