mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 13:48:42 -05:00
Added flag to halt Tx UDP reply
The reply can now be used to turn off auto Tx or to halt Tx immediately. Also enforced the accept UDP requests setting for halt Tx and set free text message replies. Merged from the wsjtx-1.5 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5336 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
3b3ef37848
commit
2e08443d08
@ -195,6 +195,7 @@ public:
|
|||||||
, id_ {id}
|
, id_ {id}
|
||||||
, decodes_table_view_ {new QTableView}
|
, decodes_table_view_ {new QTableView}
|
||||||
, message_line_edit_ {new QLineEdit}
|
, message_line_edit_ {new QLineEdit}
|
||||||
|
, auto_off_button_ {new QPushButton {tr ("&Auto Off")}}
|
||||||
, halt_tx_button_ {new QPushButton {tr ("&Halt Tx")}}
|
, halt_tx_button_ {new QPushButton {tr ("&Halt Tx")}}
|
||||||
, mode_label_ {new QLabel}
|
, mode_label_ {new QLabel}
|
||||||
, dx_call_label_ {new QLabel}
|
, dx_call_label_ {new QLabel}
|
||||||
@ -221,9 +222,13 @@ public:
|
|||||||
Q_EMIT do_free_text (id_, message_line_edit_->text ());
|
Q_EMIT do_free_text (id_, message_line_edit_->text ());
|
||||||
});
|
});
|
||||||
control_layout->addLayout (form_layout);
|
control_layout->addLayout (form_layout);
|
||||||
|
control_layout->addWidget (auto_off_button_);
|
||||||
control_layout->addWidget (halt_tx_button_);
|
control_layout->addWidget (halt_tx_button_);
|
||||||
|
connect (auto_off_button_, &QAbstractButton::clicked, [this] (bool /* checked */) {
|
||||||
|
Q_EMIT do_halt_tx (id_, true);
|
||||||
|
});
|
||||||
connect (halt_tx_button_, &QAbstractButton::clicked, [this] (bool /* checked */) {
|
connect (halt_tx_button_, &QAbstractButton::clicked, [this] (bool /* checked */) {
|
||||||
Q_EMIT do_halt_tx (id_);
|
Q_EMIT do_halt_tx (id_, false);
|
||||||
});
|
});
|
||||||
content_layout->addLayout (control_layout);
|
content_layout->addLayout (control_layout);
|
||||||
|
|
||||||
@ -252,7 +257,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Q_SLOT void update_status (QString const& id, Frequency f, QString const& mode, QString const& dx_call
|
Q_SLOT void update_status (QString const& id, Frequency f, QString const& mode, QString const& dx_call
|
||||||
, QString const& report, QString const& tx_mode, bool transmitting)
|
, QString const& report, QString const& tx_mode, bool tx_enabled, bool transmitting)
|
||||||
{
|
{
|
||||||
if (id == id_)
|
if (id == id_)
|
||||||
{
|
{
|
||||||
@ -261,6 +266,7 @@ public:
|
|||||||
frequency_label_->setText ("QRG: " + Radio::pretty_frequency_MHz_string (f));
|
frequency_label_->setText ("QRG: " + Radio::pretty_frequency_MHz_string (f));
|
||||||
report_label_->setText ("SNR: " + report);
|
report_label_->setText ("SNR: " + report);
|
||||||
update_dynamic_property (frequency_label_, "transmitting", transmitting);
|
update_dynamic_property (frequency_label_, "transmitting", transmitting);
|
||||||
|
auto_off_button_->setEnabled (tx_enabled);
|
||||||
halt_tx_button_->setEnabled (transmitting);
|
halt_tx_button_->setEnabled (transmitting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -278,7 +284,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
Q_SIGNAL void do_reply (QModelIndex const&);
|
Q_SIGNAL void do_reply (QModelIndex const&);
|
||||||
Q_SIGNAL void do_halt_tx (QString const& id);
|
Q_SIGNAL void do_halt_tx (QString const& id, bool auto_only);
|
||||||
Q_SIGNAL void do_free_text (QString const& id, QString const& text);
|
Q_SIGNAL void do_free_text (QString const& id, QString const& text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -306,6 +312,7 @@ private:
|
|||||||
QTableView * decodes_table_view_;
|
QTableView * decodes_table_view_;
|
||||||
QLineEdit * message_line_edit_;
|
QLineEdit * message_line_edit_;
|
||||||
QAbstractButton * set_free_text_button_;
|
QAbstractButton * set_free_text_button_;
|
||||||
|
QAbstractButton * auto_off_button_;
|
||||||
QAbstractButton * halt_tx_button_;
|
QAbstractButton * halt_tx_button_;
|
||||||
QLabel * mode_label_;
|
QLabel * mode_label_;
|
||||||
QLabel * dx_call_label_;
|
QLabel * dx_call_label_;
|
||||||
|
@ -126,7 +126,9 @@ void MessageClient::impl::parse_message (QByteArray const& msg)
|
|||||||
case NetworkMessage::HaltTx:
|
case NetworkMessage::HaltTx:
|
||||||
if (check_status (in))
|
if (check_status (in))
|
||||||
{
|
{
|
||||||
Q_EMIT self_->halt_tx ();
|
bool auto_only;
|
||||||
|
in >> auto_only;
|
||||||
|
Q_EMIT self_->halt_tx (auto_only);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -251,14 +253,15 @@ void MessageClient::send_raw_datagram (QByteArray const& message, QHostAddress c
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MessageClient::status_update (Frequency f, QString const& mode, QString const& dx_call
|
void MessageClient::status_update (Frequency f, QString const& mode, QString const& dx_call
|
||||||
, QString const& report, QString const& tx_mode, bool transmitting)
|
, QString const& report, QString const& tx_mode
|
||||||
|
, bool tx_enabled, bool transmitting)
|
||||||
{
|
{
|
||||||
if (m_->server_port_ && !m_->server_.isNull ())
|
if (m_->server_port_ && !m_->server_.isNull ())
|
||||||
{
|
{
|
||||||
QByteArray message;
|
QByteArray message;
|
||||||
NetworkMessage::Builder out {&message, NetworkMessage::Status, m_->id_};
|
NetworkMessage::Builder out {&message, NetworkMessage::Status, m_->id_};
|
||||||
out << f << mode.toUtf8 () << dx_call.toUtf8 () << report.toUtf8 () << tx_mode.toUtf8 ()
|
out << f << mode.toUtf8 () << dx_call.toUtf8 () << report.toUtf8 () << tx_mode.toUtf8 ()
|
||||||
<< transmitting;
|
<< tx_enabled << transmitting;
|
||||||
if (m_->check_status (out))
|
if (m_->check_status (out))
|
||||||
{
|
{
|
||||||
m_->writeDatagram (message, m_->server_, m_->server_port_);
|
m_->writeDatagram (message, m_->server_, m_->server_port_);
|
||||||
|
@ -46,7 +46,7 @@ public:
|
|||||||
|
|
||||||
// outgoing messages
|
// outgoing messages
|
||||||
Q_SLOT void status_update (Frequency, QString const& mode, QString const& dx_call, QString const& report
|
Q_SLOT void status_update (Frequency, QString const& mode, QString const& dx_call, QString const& report
|
||||||
, QString const& tx_mode, bool transmitting);
|
, QString const& tx_mode, bool tx_enabled, bool transmitting);
|
||||||
Q_SLOT void decode (bool is_new, QTime time, qint32 snr, float delta_time, quint32 delta_frequency
|
Q_SLOT void decode (bool is_new, QTime time, qint32 snr, float delta_time, quint32 delta_frequency
|
||||||
, QString const& mode, QString const& message);
|
, QString const& mode, QString const& message);
|
||||||
Q_SLOT void clear_decodes ();
|
Q_SLOT void clear_decodes ();
|
||||||
@ -69,9 +69,9 @@ public:
|
|||||||
// all decodes
|
// all decodes
|
||||||
Q_SIGNAL void replay ();
|
Q_SIGNAL void replay ();
|
||||||
|
|
||||||
// this signal is emitted if the server has requested transmission
|
// this signal is emitted if the server has requested immediate (or
|
||||||
// to halt immediately
|
// auto Tx if auto_only is true) transmission to halt
|
||||||
Q_SIGNAL void halt_tx ();
|
Q_SIGNAL void halt_tx (bool auto_only);
|
||||||
|
|
||||||
// this signal is emitted if the server has requested a new free
|
// this signal is emitted if the server has requested a new free
|
||||||
// message text
|
// message text
|
||||||
|
@ -142,13 +142,14 @@ void MessageServer::impl::parse_message (QHostAddress const& sender, port_type s
|
|||||||
QByteArray dx_call;
|
QByteArray dx_call;
|
||||||
QByteArray report;
|
QByteArray report;
|
||||||
QByteArray tx_mode;
|
QByteArray tx_mode;
|
||||||
|
bool tx_enabled;
|
||||||
bool transmitting;
|
bool transmitting;
|
||||||
in >> f >> mode >> dx_call >> report >> tx_mode >> transmitting;
|
in >> f >> mode >> dx_call >> report >> tx_mode >> tx_enabled >> transmitting;
|
||||||
if (check_status (in))
|
if (check_status (in))
|
||||||
{
|
{
|
||||||
Q_EMIT self_->status_update (id, f, QString::fromUtf8 (mode), QString::fromUtf8 (dx_call)
|
Q_EMIT self_->status_update (id, f, QString::fromUtf8 (mode), QString::fromUtf8 (dx_call)
|
||||||
, QString::fromUtf8 (report), QString::fromUtf8 (tx_mode)
|
, QString::fromUtf8 (report), QString::fromUtf8 (tx_mode)
|
||||||
, transmitting);
|
, tx_enabled, transmitting);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -316,13 +317,14 @@ void MessageServer::replay (QString const& id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageServer::halt_tx (QString const& id)
|
void MessageServer::halt_tx (QString const& id, bool auto_only)
|
||||||
{
|
{
|
||||||
auto iter = m_->clients_.find (id);
|
auto iter = m_->clients_.find (id);
|
||||||
if (iter != std::end (m_->clients_))
|
if (iter != std::end (m_->clients_))
|
||||||
{
|
{
|
||||||
QByteArray message;
|
QByteArray message;
|
||||||
NetworkMessage::Builder out {&message, NetworkMessage::HaltTx, id};
|
NetworkMessage::Builder out {&message, NetworkMessage::HaltTx, id};
|
||||||
|
out << auto_only;
|
||||||
if (m_->check_status (out))
|
if (m_->check_status (out))
|
||||||
{
|
{
|
||||||
m_->writeDatagram (message, iter.value ().sender_address_, (*iter).sender_port_);
|
m_->writeDatagram (message, iter.value ().sender_address_, (*iter).sender_port_);
|
||||||
|
@ -48,8 +48,9 @@ public:
|
|||||||
// ask the client with identification 'id' to replay all decodes
|
// ask the client with identification 'id' to replay all decodes
|
||||||
Q_SLOT void replay (QString const& id);
|
Q_SLOT void replay (QString const& id);
|
||||||
|
|
||||||
// ask the client with identification 'id' to halt transmitting immediately
|
// ask the client with identification 'id' to halt transmitting
|
||||||
Q_SLOT void halt_tx (QString const& id);
|
// auto_only just disables auto Tx, otherwise halt is immediate
|
||||||
|
Q_SLOT void halt_tx (QString const& id, bool auto_only);
|
||||||
|
|
||||||
// ask the client with identification 'id' to set the free text message
|
// ask the client with identification 'id' to set the free text message
|
||||||
Q_SLOT void free_text (QString const& id, QString const& text);
|
Q_SLOT void free_text (QString const& id, QString const& text);
|
||||||
@ -58,7 +59,7 @@ public:
|
|||||||
// matching message
|
// matching message
|
||||||
Q_SIGNAL void client_opened (QString const& id);
|
Q_SIGNAL void client_opened (QString const& id);
|
||||||
Q_SIGNAL void status_update (QString const& id, Frequency, QString const& mode, QString const& dx_call
|
Q_SIGNAL void status_update (QString const& id, Frequency, QString const& mode, QString const& dx_call
|
||||||
, QString const& report, QString const& tx_mode, bool transmitting);
|
, QString const& report, QString const& tx_mode, bool tx_enabled, bool transmitting);
|
||||||
Q_SIGNAL void client_closed (QString const& id);
|
Q_SIGNAL void client_closed (QString const& id);
|
||||||
Q_SIGNAL void decode (bool is_new, QString const& id, QTime time, qint32 snr, float delta_time
|
Q_SIGNAL void decode (bool is_new, QString const& id, QTime time, qint32 snr, float delta_time
|
||||||
, quint32 delta_frequency, QString const& mode, QString const& message);
|
, quint32 delta_frequency, QString const& mode, QString const& message);
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
* DX call utf8
|
* DX call utf8
|
||||||
* Report utf8
|
* Report utf8
|
||||||
* Tx Mode utf8
|
* Tx Mode utf8
|
||||||
|
* Tx Enabled bool
|
||||||
* Transmitting bool
|
* Transmitting bool
|
||||||
*
|
*
|
||||||
* Decode Out 2 quint32
|
* Decode Out 2 quint32
|
||||||
@ -83,7 +84,7 @@
|
|||||||
* Id (target unique key) utf8
|
* Id (target unique key) utf8
|
||||||
* Time QTime
|
* Time QTime
|
||||||
* snr qint32
|
* snr qint32
|
||||||
* Delta time (S) float
|
* Delta time (S) float (serialized as double)
|
||||||
* Delta frequency (Hz) quint32
|
* Delta frequency (Hz) quint32
|
||||||
* Mode utf8
|
* Mode utf8
|
||||||
* Message utf8
|
* Message utf8
|
||||||
@ -109,6 +110,7 @@
|
|||||||
*
|
*
|
||||||
* Halt Tx In 8
|
* Halt Tx In 8
|
||||||
* Id (unique key) utf8
|
* Id (unique key) utf8
|
||||||
|
* Auto Tx Only bool
|
||||||
*
|
*
|
||||||
* Free Text In 9
|
* Free Text In 9
|
||||||
* Id (unique key) utf8
|
* Id (unique key) utf8
|
||||||
|
@ -190,16 +190,29 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme
|
|||||||
// Network message handlers
|
// Network message handlers
|
||||||
connect (m_messageClient, &MessageClient::reply, this, &MainWindow::replyToCQ);
|
connect (m_messageClient, &MessageClient::reply, this, &MainWindow::replyToCQ);
|
||||||
connect (m_messageClient, &MessageClient::replay, this, &MainWindow::replayDecodes);
|
connect (m_messageClient, &MessageClient::replay, this, &MainWindow::replayDecodes);
|
||||||
connect (m_messageClient, &MessageClient::halt_tx, ui->stopTxButton, &QAbstractButton::click);
|
connect (m_messageClient, &MessageClient::halt_tx, [this] (bool auto_only) {
|
||||||
|
if (m_config.accept_udp_requests ()) {
|
||||||
|
if (auto_only) {
|
||||||
|
if (ui->autoButton->isChecked ()) {
|
||||||
|
ui->autoButton->click ();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ui->stopTxButton->click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
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) {
|
connect (m_messageClient, &MessageClient::free_text, [this] (QString const& text) {
|
||||||
if (0 == ui->tabWidget->currentIndex ()) {
|
if (m_config.accept_udp_requests ()) {
|
||||||
ui->tx5->setCurrentText (text);
|
if (0 == ui->tabWidget->currentIndex ()) {
|
||||||
ui->txrb5->click ();
|
ui->tx5->setCurrentText (text);
|
||||||
} else {
|
ui->txrb5->click ();
|
||||||
ui->freeTextMsg->setCurrentText (text);
|
} else {
|
||||||
ui->rbFreeText->click ();
|
ui->freeTextMsg->setCurrentText (text);
|
||||||
}});
|
ui->rbFreeText->click ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
on_EraseButton_clicked ();
|
on_EraseButton_clicked ();
|
||||||
|
|
||||||
@ -837,6 +850,7 @@ void MainWindow::on_actionAbout_triggered() //Display "About"
|
|||||||
void MainWindow::on_autoButton_clicked (bool checked)
|
void MainWindow::on_autoButton_clicked (bool checked)
|
||||||
{
|
{
|
||||||
m_auto = checked;
|
m_auto = checked;
|
||||||
|
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, ui->autoButton->isChecked (), m_transmitting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::auto_tx_mode (bool state)
|
void MainWindow::auto_tx_mode (bool state)
|
||||||
@ -1030,7 +1044,7 @@ void MainWindow::displayDialFrequency ()
|
|||||||
|
|
||||||
void MainWindow::statusChanged()
|
void MainWindow::statusChanged()
|
||||||
{
|
{
|
||||||
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, m_transmitting);
|
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, ui->autoButton->isChecked (), m_transmitting);
|
||||||
|
|
||||||
QFile f {m_config.temp_dir ().absoluteFilePath ("wsjtx_status.txt")};
|
QFile f {m_config.temp_dir ().absoluteFilePath ("wsjtx_status.txt")};
|
||||||
if(f.open(QFile::WriteOnly | QIODevice::Text)) {
|
if(f.open(QFile::WriteOnly | QIODevice::Text)) {
|
||||||
@ -1873,7 +1887,7 @@ void MainWindow::guiUpdate()
|
|||||||
|
|
||||||
m_transmitting = true;
|
m_transmitting = true;
|
||||||
transmitDisplay (true);
|
transmitDisplay (true);
|
||||||
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, m_transmitting);
|
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, ui->autoButton->isChecked (), m_transmitting);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!m_btxok && btxok0 && g_iptt==1) stopTx();
|
if(!m_btxok && btxok0 && g_iptt==1) stopTx();
|
||||||
@ -2005,7 +2019,7 @@ void MainWindow::stopTx()
|
|||||||
tx_status_label->setText("");
|
tx_status_label->setText("");
|
||||||
ptt0Timer->start(200); //Sequencer delay
|
ptt0Timer->start(200); //Sequencer delay
|
||||||
monitor (true);
|
monitor (true);
|
||||||
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, m_transmitting);
|
m_messageClient->status_update (m_dialFreq, m_mode, m_hisCall, QString::number (ui->rptSpinBox->value ()), m_modeTx, ui->autoButton->isChecked (), m_transmitting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::stopTx2()
|
void MainWindow::stopTx2()
|
||||||
|
Loading…
Reference in New Issue
Block a user