mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-09-27 15:46:51 -04:00
Furter attempts to get the Tx watchdog and its UDP Status Message right
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6901 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
e7e5e3f340
commit
396dd6d491
118
mainwindow.cpp
118
mainwindow.cpp
@ -322,6 +322,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
m_monitoring {false},
|
m_monitoring {false},
|
||||||
m_transmitting {false},
|
m_transmitting {false},
|
||||||
m_tune {false},
|
m_tune {false},
|
||||||
|
m_tx_watchdog {false},
|
||||||
m_tune_attenuation {0},
|
m_tune_attenuation {0},
|
||||||
m_tune_attenuation_restore {0},
|
m_tune_attenuation_restore {0},
|
||||||
m_block_pwr_tooltip {false},
|
m_block_pwr_tooltip {false},
|
||||||
@ -423,6 +424,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
connect (m_messageClient, &MessageClient::error, this, &MainWindow::networkError);
|
connect (m_messageClient, &MessageClient::error, this, &MainWindow::networkError);
|
||||||
connect (m_messageClient, &MessageClient::free_text, [this] (QString const& text, bool send) {
|
connect (m_messageClient, &MessageClient::free_text, [this] (QString const& text, bool send) {
|
||||||
if (m_config.accept_udp_requests ()) {
|
if (m_config.accept_udp_requests ()) {
|
||||||
|
tx_watchdog (false);
|
||||||
// send + non-empty text means set and send the free text
|
// send + non-empty text means set and send the free text
|
||||||
// message, !send + non-empty text means set the current free
|
// message, !send + non-empty text means set the current free
|
||||||
// text message, send + empty text means send the current free
|
// text message, send + empty text means send the current free
|
||||||
@ -447,6 +449,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
ui->freeTextMsg->setCurrentText (text);
|
ui->freeTextMsg->setCurrentText (text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
QApplication::alert (this);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -872,12 +875,11 @@ void MainWindow::on_the_minute ()
|
|||||||
if (m_config.watchdog () && !m_mode.startsWith ("WSPR"))
|
if (m_config.watchdog () && !m_mode.startsWith ("WSPR"))
|
||||||
{
|
{
|
||||||
if (m_idleMinutes < m_config.watchdog ()) ++m_idleMinutes;
|
if (m_idleMinutes < m_config.watchdog ()) ++m_idleMinutes;
|
||||||
updateProgressBarFormat (true);
|
update_watchdog_label ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_idleMinutes = 0;
|
tx_watchdog (false);
|
||||||
updateProgressBarFormat (false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1362,7 +1364,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
|
|||||||
ui->label_7->setText("Rx Frequency");
|
ui->label_7->setText("Rx Frequency");
|
||||||
}
|
}
|
||||||
|
|
||||||
updateProgressBarFormat (m_config.watchdog () && !m_mode.startsWith ("WSPR"));
|
update_watchdog_label ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_monitorButton_clicked (bool checked)
|
void MainWindow::on_monitorButton_clicked (bool checked)
|
||||||
@ -1437,18 +1439,6 @@ void MainWindow::auto_tx_mode (bool state)
|
|||||||
on_autoButton_clicked (state);
|
on_autoButton_clicked (state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateProgressBarFormat (bool wd_in_use)
|
|
||||||
{
|
|
||||||
if (wd_in_use)
|
|
||||||
{
|
|
||||||
progressBar.setFormat (QString {"%v/%m WD:%1m"}.arg (m_config.watchdog () - m_idleMinutes));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
progressBar.setFormat ("%v/%m");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::keyPressEvent (QKeyEvent * e)
|
void MainWindow::keyPressEvent (QKeyEvent * e)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
@ -1612,11 +1602,8 @@ bool MainWindow::eventFilter (QObject * object, QEvent * event)
|
|||||||
case QEvent::KeyPress:
|
case QEvent::KeyPress:
|
||||||
// fall through
|
// fall through
|
||||||
case QEvent::MouseButtonPress:
|
case QEvent::MouseButtonPress:
|
||||||
if (m_idleMinutes && m_config.watchdog () && !m_mode.startsWith ("WSPR")) {
|
// reset the Tx watchdog
|
||||||
m_idleMinutes = 0; // reset Tx watchdog
|
tx_watchdog (false);
|
||||||
updateProgressBarFormat (true);
|
|
||||||
statusUpdate ();
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QEvent::ChildAdded:
|
case QEvent::ChildAdded:
|
||||||
@ -1662,7 +1649,10 @@ void MainWindow::createStatusBar() //createStatusBar
|
|||||||
|
|
||||||
statusBar()->addPermanentWidget(&progressBar, 1);
|
statusBar()->addPermanentWidget(&progressBar, 1);
|
||||||
progressBar.setMinimumSize (QSize {100, 18});
|
progressBar.setMinimumSize (QSize {100, 18});
|
||||||
updateProgressBarFormat (m_config.watchdog () && !m_mode.startsWith ("WSPR"));
|
progressBar.setFormat ("%v/%m");
|
||||||
|
|
||||||
|
statusBar ()->addPermanentWidget (&watchdog_label);
|
||||||
|
update_watchdog_label ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::setup_status_bar (bool vhf)
|
void MainWindow::setup_status_bar (bool vhf)
|
||||||
@ -2640,12 +2630,7 @@ void MainWindow::guiUpdate()
|
|||||||
|
|
||||||
if (m_config.watchdog() && !m_mode.startsWith ("WSPR")
|
if (m_config.watchdog() && !m_mode.startsWith ("WSPR")
|
||||||
&& m_idleMinutes >= m_config.watchdog ()) {
|
&& m_idleMinutes >= m_config.watchdog ()) {
|
||||||
m_bTxTime=false;
|
tx_watchdog (true); // disable transmit
|
||||||
if (m_tune) stop_tuning ();
|
|
||||||
if (m_auto) auto_tx_mode (false);
|
|
||||||
tx_status_label.setStyleSheet ("QLabel{background-color: #ff0000}");
|
|
||||||
tx_status_label.setText ("Runaway Tx watchdog");
|
|
||||||
QApplication::alert (this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float fTR=float((nsec%m_TRperiod))/m_TRperiod;
|
float fTR=float((nsec%m_TRperiod))/m_TRperiod;
|
||||||
@ -2866,12 +2851,10 @@ void MainWindow::guiUpdate()
|
|||||||
if (g_iptt == 1 && m_iptt0 == 0)
|
if (g_iptt == 1 && m_iptt0 == 0)
|
||||||
{
|
{
|
||||||
auto const& current_message = QString::fromLatin1 (msgsent);
|
auto const& current_message = QString::fromLatin1 (msgsent);
|
||||||
if(m_config.watchdog () && !m_mode.startsWith ("WSPR")) {
|
if(m_config.watchdog () && !m_mode.startsWith ("WSPR")
|
||||||
if (current_message != m_msgSent0) {
|
&& current_message != m_msgSent0) {
|
||||||
m_idleMinutes=0; // in case we are auto sequencing
|
tx_watchdog (false); // in case we are auto sequencing
|
||||||
m_msgSent0 = current_message;
|
m_msgSent0 = current_message;
|
||||||
}
|
|
||||||
updateProgressBarFormat (true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!m_tune) {
|
if(!m_tune) {
|
||||||
@ -2955,12 +2938,12 @@ void MainWindow::guiUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if(m_monitoring) {
|
} else if(m_monitoring) {
|
||||||
if (m_idleMinutes < m_config.watchdog ()) {
|
if (!m_tx_watchdog) {
|
||||||
tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}");
|
tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}");
|
||||||
tx_status_label.setText ("Receiving");
|
tx_status_label.setText ("Receiving");
|
||||||
}
|
}
|
||||||
transmitDisplay(false);
|
transmitDisplay(false);
|
||||||
} else if (!m_diskData && m_idleMinutes < m_config.watchdog ()) {
|
} else if (!m_diskData && !m_tx_watchdog) {
|
||||||
tx_status_label.setStyleSheet("");
|
tx_status_label.setStyleSheet("");
|
||||||
tx_status_label.setText("");
|
tx_status_label.setText("");
|
||||||
}
|
}
|
||||||
@ -3025,7 +3008,7 @@ void MainWindow::stopTx()
|
|||||||
m_btxok = false;
|
m_btxok = false;
|
||||||
m_transmitting = false;
|
m_transmitting = false;
|
||||||
g_iptt=0;
|
g_iptt=0;
|
||||||
if (m_idleMinutes < m_config.watchdog ()) {
|
if (!m_tx_watchdog) {
|
||||||
tx_status_label.setStyleSheet("");
|
tx_status_label.setStyleSheet("");
|
||||||
tx_status_label.setText("");
|
tx_status_label.setText("");
|
||||||
}
|
}
|
||||||
@ -5265,10 +5248,7 @@ void MainWindow::replyToCQ (QTime time, qint32 snr, float delta_time, quint32 de
|
|||||||
// find the linefeed at the end of the line
|
// find the linefeed at the end of the line
|
||||||
position = ui->decodedTextBrowser->toPlainText().indexOf("\n",position);
|
position = ui->decodedTextBrowser->toPlainText().indexOf("\n",position);
|
||||||
processMessage (messages, position, false);
|
processMessage (messages, position, false);
|
||||||
if (m_idleMinutes && m_config.watchdog () && !m_mode.startsWith ("WSPR")) {
|
tx_watchdog (false);
|
||||||
m_idleMinutes = 0; // reset Tx watchdog
|
|
||||||
updateProgressBarFormat (true);
|
|
||||||
}
|
|
||||||
QApplication::alert (this);
|
QApplication::alert (this);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -5719,19 +5699,14 @@ void MainWindow::CQRxFreq()
|
|||||||
|
|
||||||
void MainWindow::statusUpdate () const
|
void MainWindow::statusUpdate () const
|
||||||
{
|
{
|
||||||
if (ui)
|
if (!ui) return;
|
||||||
{
|
m_messageClient->status_update (m_freqNominal, m_mode, m_hisCall,
|
||||||
bool watchdog_timeout {m_config.watchdog ()
|
QString::number (ui->rptSpinBox->value ()),
|
||||||
&& m_idleMinutes >= m_config.watchdog ()
|
m_modeTx, ui->autoButton->isChecked (),
|
||||||
&& !m_mode.startsWith("WSPR")};
|
m_transmitting, m_decoderBusy,
|
||||||
m_messageClient->status_update (m_freqNominal, m_mode, m_hisCall,
|
ui->RxFreqSpinBox->value (), ui->TxFreqSpinBox->value (),
|
||||||
QString::number (ui->rptSpinBox->value ()),
|
m_config.my_callsign (), m_config.my_grid (),
|
||||||
m_modeTx, ui->autoButton->isChecked (),
|
m_hisGrid, m_tx_watchdog);
|
||||||
m_transmitting, m_decoderBusy,
|
|
||||||
ui->RxFreqSpinBox->value (), ui->TxFreqSpinBox->value (),
|
|
||||||
m_config.my_callsign (), m_config.my_grid (),
|
|
||||||
m_hisGrid, watchdog_timeout);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::childEvent (QChildEvent * e)
|
void MainWindow::childEvent (QChildEvent * e)
|
||||||
@ -5776,3 +5751,38 @@ void MainWindow::remove_child_from_event_filter (QObject * target)
|
|||||||
target->removeEventFilter (this);
|
target->removeEventFilter (this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::tx_watchdog (bool triggered)
|
||||||
|
{
|
||||||
|
auto prior = m_tx_watchdog;
|
||||||
|
m_tx_watchdog = triggered;
|
||||||
|
if (triggered)
|
||||||
|
{
|
||||||
|
m_bTxTime=false;
|
||||||
|
if (m_tune) stop_tuning ();
|
||||||
|
if (m_auto) auto_tx_mode (false);
|
||||||
|
tx_status_label.setStyleSheet ("QLabel{background-color: #ff0000}");
|
||||||
|
tx_status_label.setText ("Runaway Tx watchdog");
|
||||||
|
QApplication::alert (this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_idleMinutes = 0;
|
||||||
|
update_watchdog_label ();
|
||||||
|
}
|
||||||
|
if (prior != triggered) statusUpdate ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::update_watchdog_label ()
|
||||||
|
{
|
||||||
|
if (m_config.watchdog () && !m_mode.startsWith ("WSPR"))
|
||||||
|
{
|
||||||
|
watchdog_label.setText (QString {"WD:%1m"}.arg (m_config.watchdog () - m_idleMinutes));
|
||||||
|
watchdog_label.setVisible (true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
watchdog_label.setText (QString {});
|
||||||
|
watchdog_label.setVisible (false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -434,6 +434,7 @@ private:
|
|||||||
QLabel auto_tx_label;
|
QLabel auto_tx_label;
|
||||||
QLabel band_hopping_label;
|
QLabel band_hopping_label;
|
||||||
QProgressBar progressBar;
|
QProgressBar progressBar;
|
||||||
|
QLabel watchdog_label;
|
||||||
|
|
||||||
QFuture<void> m_wav_future;
|
QFuture<void> m_wav_future;
|
||||||
QFutureWatcher<void> m_wav_future_watcher;
|
QFutureWatcher<void> m_wav_future_watcher;
|
||||||
@ -495,6 +496,7 @@ private:
|
|||||||
bool m_monitoring;
|
bool m_monitoring;
|
||||||
bool m_transmitting;
|
bool m_transmitting;
|
||||||
bool m_tune;
|
bool m_tune;
|
||||||
|
bool m_tx_watchdog; // true when watchdog triggered
|
||||||
int m_tune_attenuation;
|
int m_tune_attenuation;
|
||||||
int m_tune_attenuation_restore;
|
int m_tune_attenuation_restore;
|
||||||
bool m_block_pwr_tooltip;
|
bool m_block_pwr_tooltip;
|
||||||
@ -555,11 +557,12 @@ private:
|
|||||||
void subProcessFailed (QProcess *, int exit_code, QProcess::ExitStatus);
|
void subProcessFailed (QProcess *, int exit_code, QProcess::ExitStatus);
|
||||||
void subProcessError (QProcess *, QProcess::ProcessError);
|
void subProcessError (QProcess *, QProcess::ProcessError);
|
||||||
void statusUpdate () const;
|
void statusUpdate () const;
|
||||||
void updateProgressBarFormat (bool wd_in_use);
|
void update_watchdog_label ();
|
||||||
void on_the_minute ();
|
void on_the_minute ();
|
||||||
void add_child_to_event_filter (QObject *);
|
void add_child_to_event_filter (QObject *);
|
||||||
void remove_child_from_event_filter (QObject *);
|
void remove_child_from_event_filter (QObject *);
|
||||||
void setup_status_bar (bool vhf);
|
void setup_status_bar (bool vhf);
|
||||||
|
void tx_watchdog (bool triggered);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int killbyname(const char* progName);
|
extern int killbyname(const char* progName);
|
||||||
|
Loading…
Reference in New Issue
Block a user