diff --git a/Configuration.cpp b/Configuration.cpp index 20674b52a..3fc6ff94c 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -645,10 +645,6 @@ QString Configuration::rig_name () const {return m_->rig_params_.rig_name;} bool Configuration::is_transceiver_online () const { -#if WSJT_TRACE_CAT - qDebug () << "Configuration::is_transceiver_online: " << m_->cached_rig_state_; -#endif - return m_->rig_active_; } @@ -1280,7 +1276,6 @@ void Configuration::impl::read_settings () x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool (); offsetRxFreq_ = settings_->value("OffsetRx",false).toBool(); rig_params_.poll_interval = settings_->value ("Polling", 0).toInt (); - rig_params_.set_rig_mode = data_mode_ != data_mode_none; rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value (); udp_server_name_ = settings_->value ("UDPServer", "127.0.0.1").toString (); udp_server_port_ = settings_->value ("UDPServerPort", 2237).toUInt (); @@ -1600,7 +1595,6 @@ TransceiverFactory::ParameterPack Configuration::impl::gather_rig_data () result.ptt_type = static_cast (ui_->PTT_method_button_group->checkedId ()); result.ptt_port = ui_->PTT_port_combo_box->currentText (); result.audio_source = static_cast (ui_->TX_audio_source_button_group->checkedId ()); - result.set_rig_mode = static_cast (ui_->TX_mode_button_group->checkedId ()) != data_mode_none; result.split_mode = static_cast (ui_->split_mode_button_group->checkedId ()); return result; } @@ -2251,7 +2245,15 @@ void Configuration::impl::transceiver_tx_frequency (Frequency f) Q_ASSERT (!f || split_mode ()); if (split_mode ()) { + Transceiver::MODE mode {Transceiver::UNK}; + switch (data_mode_) + { + case data_mode_USB: mode = Transceiver::USB; break; + case data_mode_data: mode = Transceiver::DIG_U; break; + case data_mode_none: break; + } cached_rig_state_.online (true); // we want the rig online + cached_rig_state_.mode (mode); cached_rig_state_.split (f); cached_rig_state_.tx_frequency (f); diff --git a/DXLabSuiteCommanderTransceiver.cpp b/DXLabSuiteCommanderTransceiver.cpp index 4205c0ce1..49455268b 100644 --- a/DXLabSuiteCommanderTransceiver.cpp +++ b/DXLabSuiteCommanderTransceiver.cpp @@ -155,13 +155,17 @@ void DXLabSuiteCommanderTransceiver::do_frequency (Frequency f, MODE m, bool /*n update_rx_frequency (f); } -void DXLabSuiteCommanderTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) +void DXLabSuiteCommanderTransceiver::do_tx_frequency (Frequency tx, MODE mode, bool /*no_ignore*/) { TRACE_CAT ("DXLabSuiteCommanderTransceiver", tx << state ()); if (tx) { auto f_string = frequency_to_string (tx); auto params = ("" + f_string + "Y").arg (f_string.size ()); + if (UNK == mode) + { + params += "Y"; + } simple_command (("CmdQSXSplit" + params).arg (params.size ())); } else @@ -421,7 +425,7 @@ auto DXLabSuiteCommanderTransceiver::string_to_frequency (QString s) const -> Fr // conversion to Hz bool ok; - // auto f = locale_.toDouble (s, &ok); // use when CmdSendFreq and + // auto f = locale_.toDouble (s, &ok); // use when CmdSendFreq and // CmdSendTxFreq reinstated auto f = QLocale::c ().toDouble (s, &ok); // temporary fix diff --git a/DXLabSuiteCommanderTransceiver.hpp b/DXLabSuiteCommanderTransceiver.hpp index bd2c114c4..92d042c99 100644 --- a/DXLabSuiteCommanderTransceiver.hpp +++ b/DXLabSuiteCommanderTransceiver.hpp @@ -35,7 +35,7 @@ protected: int do_start () override; void do_stop () override; void do_frequency (Frequency, MODE, bool no_ignore) override; - void do_tx_frequency (Frequency, bool no_ignore) override; + void do_tx_frequency (Frequency, MODE, bool no_ignore) override; void do_mode (MODE) override; void do_ptt (bool on) override; diff --git a/HRDTransceiver.cpp b/HRDTransceiver.cpp index 427e7a3c8..edfd70a65 100644 --- a/HRDTransceiver.cpp +++ b/HRDTransceiver.cpp @@ -70,12 +70,10 @@ HRDTransceiver::HRDTransceiver (std::unique_ptr wrapped , QString const& server , bool use_for_ptt , int poll_interval - , bool set_rig_mode , QObject * parent) : PollingTransceiver {poll_interval, parent} , wrapped_ {std::move (wrapped)} , use_for_ptt_ {use_for_ptt} - , set_rig_mode_ {set_rig_mode} , server_ {server} , hrd_ {0} , protocol_ {none} @@ -542,7 +540,7 @@ void HRDTransceiver::do_frequency (Frequency f, MODE m, bool /*no_ignore*/) update_rx_frequency (f); } -void HRDTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) +void HRDTransceiver::do_tx_frequency (Frequency tx, MODE mode, bool /*no_ignore*/) { TRACE_CAT ("HRDTransceiver", tx << "reversed" << reversed_); @@ -571,15 +569,15 @@ void HRDTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) bool split {tx != 0}; if (split) { - if (set_rig_mode_) + if (mode != UNK) { if (!reversed_ && mode_B_dropdown_ >= 0) { - set_dropdown (mode_B_dropdown_, lookup_mode (state ().mode (), mode_B_map_)); + set_dropdown (mode_B_dropdown_, lookup_mode (mode, mode_B_map_)); } else if (reversed_ && mode_B_dropdown_ >= 0) { - set_dropdown (mode_A_dropdown_, lookup_mode (state ().mode (), mode_A_map_)); + set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); } else { @@ -588,22 +586,22 @@ void HRDTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) if (rx_B_button_ >= 0) { set_button (reversed_ ? rx_A_button_ : rx_B_button_); - set_dropdown (mode_A_dropdown_, lookup_mode (state ().mode (), mode_A_map_)); - set_data_mode (state ().mode ()); + set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); + set_data_mode (mode); set_button (reversed_ ? rx_B_button_ : rx_A_button_); } else if (receiver_dropdown_ >= 0) { set_dropdown (receiver_dropdown_, (reversed_ ? rx_A_selection_ : rx_B_selection_).front ()); - set_dropdown (mode_A_dropdown_, lookup_mode (state ().mode (), mode_A_map_)); - set_data_mode (state ().mode ()); + set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); + set_data_mode (mode); set_dropdown (receiver_dropdown_, (reversed_ ? rx_B_selection_ : rx_A_selection_).front ()); } else if (vfo_count_ > 1) { set_button (vfo_A_button_ >= 0 ? (reversed_ ? vfo_A_button_ : vfo_B_button_) : vfo_toggle_button_); - set_dropdown (mode_A_dropdown_, lookup_mode (state ().mode (), mode_A_map_)); - set_data_mode (state ().mode ()); + set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); + set_data_mode (mode); set_button (vfo_A_button_ >= 0 ? (reversed_ ? vfo_B_button_ : vfo_A_button_) : vfo_toggle_button_); } // else Tx VFO mode gets set with frequency below @@ -630,12 +628,12 @@ void HRDTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) // we rationalise the modes here as well as the frequencies set_button (vfo_B_button_ >= 0 ? vfo_B_button_ : vfo_toggle_button_); send_simple_command ("set frequency-hz " + fo_string); - if (set_rig_mode_ && mode_B_dropdown_ < 0) + if (mode != UNK && mode_B_dropdown_ < 0) { // do this here rather than later so we only // toggle/switch VFOs once - set_dropdown (mode_A_dropdown_, lookup_mode (state ().mode (), mode_A_map_)); - set_data_mode (state ().mode ()); + set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); + set_data_mode (mode); } set_button (vfo_A_button_ >= 0 ? vfo_A_button_ : vfo_toggle_button_); } @@ -713,7 +711,7 @@ void HRDTransceiver::do_mode (MODE mode) { set_dropdown (mode_A_dropdown_, lookup_mode (mode, mode_A_map_)); } - if (set_rig_mode_ && state ().split ()) // rationalise mode if split + if (mode != UNK && state ().split ()) // rationalise mode if split { if (reversed_) { diff --git a/HRDTransceiver.hpp b/HRDTransceiver.hpp index 7fcd87a8d..183b67a56 100644 --- a/HRDTransceiver.hpp +++ b/HRDTransceiver.hpp @@ -35,7 +35,6 @@ public: , QString const& server , bool use_for_ptt , int poll_interval - , bool set_rig_mode , QObject * parent = nullptr); protected: @@ -43,7 +42,7 @@ protected: int do_start () override; void do_stop () override; void do_frequency (Frequency, MODE, bool no_ignore) override; - void do_tx_frequency (Frequency, bool no_ignore) override; + void do_tx_frequency (Frequency, MODE, bool no_ignore) override; void do_mode (MODE) override; void do_ptt (bool on) override; @@ -81,8 +80,6 @@ private: bool use_for_ptt_; // Use HRD for PTT. - bool set_rig_mode_; // Set VFO mode when required - QString server_; // The TCP/IP addrress and port for // the HRD server. diff --git a/HamlibTransceiver.cpp b/HamlibTransceiver.cpp index 3cb7812da..e126bfc7b 100644 --- a/HamlibTransceiver.cpp +++ b/HamlibTransceiver.cpp @@ -185,7 +185,6 @@ HamlibTransceiver::HamlibTransceiver (TransceiverFactory::PTTMethod ptt_type, QS QObject * parent) : PollingTransceiver {0, parent} , rig_ {rig_init (RIG_MODEL_DUMMY)} - , set_rig_mode_ {false} , back_ptt_port_ {false} , one_VFO_ {false} , is_dummy_ {true} @@ -237,7 +236,6 @@ HamlibTransceiver::HamlibTransceiver (int model_number, TransceiverFactory::Para QObject * parent) : PollingTransceiver {params.poll_interval, parent} , rig_ {rig_init (model_number)} - , set_rig_mode_ {params.set_rig_mode} , back_ptt_port_ {TransceiverFactory::TX_audio_source_rear == params.audio_source} , one_VFO_ {false} , is_dummy_ {RIG_MODEL_DUMMY == model_number} @@ -677,7 +675,7 @@ void HamlibTransceiver::do_frequency (Frequency f, MODE m, bool no_ignore) } } -void HamlibTransceiver::do_tx_frequency (Frequency tx, bool no_ignore) +void HamlibTransceiver::do_tx_frequency (Frequency tx, MODE mode, bool no_ignore) { TRACE_CAT ("HamlibTransceiver", tx << "reversed:" << reversed_); @@ -728,11 +726,11 @@ void HamlibTransceiver::do_tx_frequency (Frequency tx, bool no_ignore) error_check (rig_set_freq (rig_.data (), RIG_VFO_CURR, tx), tr ("setting frequency")); - if (set_rig_mode_ && mode_query_works_) + if (UNK != mode && mode_query_works_) { rmode_t current_mode; pbwidth_t current_width; - auto new_mode = map_mode (state ().mode ()); + auto new_mode = map_mode (mode); error_check (rig_get_mode (rig_.data (), RIG_VFO_CURR, ¤t_mode, ¤t_width), tr ("getting current VFO mode")); TRACE_CAT ("HamlibTransceiver", "rig_get_mode mode = " << rig_strrmode (current_mode) << "bw =" << current_width); @@ -747,9 +745,9 @@ void HamlibTransceiver::do_tx_frequency (Frequency tx, bool no_ignore) else if (!one_VFO_ || no_ignore) // if not single VFO addressing and not forced { hamlib_tx_vfo_fixup fixup (rig_.data (), tx_vfo); - if (set_rig_mode_) + if (UNK != mode) { - auto new_mode = map_mode (state ().mode ()); + auto new_mode = map_mode (mode); TRACE_CAT ("HamlibTransceiver", "rig_set_split_freq_mode freq = " << tx << " mode = " << rig_strrmode (new_mode)); error_check (rig_set_split_freq_mode (rig_.data (), RIG_VFO_CURR, tx, new_mode, RIG_PASSBAND_NOCHANGE), tr ("setting split TX frequency and mode")); diff --git a/HamlibTransceiver.hpp b/HamlibTransceiver.hpp index 601dcac7d..851a70757 100644 --- a/HamlibTransceiver.hpp +++ b/HamlibTransceiver.hpp @@ -36,7 +36,7 @@ class HamlibTransceiver final int do_start () override; void do_stop () override; void do_frequency (Frequency, MODE, bool no_ignore) override; - void do_tx_frequency (Frequency, bool no_ignore) override; + void do_tx_frequency (Frequency, MODE, bool no_ignore) override; void do_mode (MODE) override; void do_ptt (bool) override; @@ -52,7 +52,6 @@ class HamlibTransceiver final struct RIGDeleter {static void cleanup (RIG *);}; QScopedPointer rig_; - bool set_rig_mode_; bool back_ptt_port_; bool one_VFO_; bool is_dummy_; diff --git a/OmniRigTransceiver.cpp b/OmniRigTransceiver.cpp index d9336ed74..38662d287 100644 --- a/OmniRigTransceiver.cpp +++ b/OmniRigTransceiver.cpp @@ -589,12 +589,16 @@ void OmniRigTransceiver::do_frequency (Frequency f, MODE m, bool /*no_ignore*/) } } -void OmniRigTransceiver::do_tx_frequency (Frequency tx, bool /*no_ignore*/) +void OmniRigTransceiver::do_tx_frequency (Frequency tx, MODE m, bool /*no_ignore*/) { TRACE_CAT ("OmniRigTransceiver", tx << state ()); bool split {tx != 0}; if (split) { + if (UNK != m) + { + do_mode (m); + } TRACE_CAT ("OmniRigTransceiver", "set SPLIT mode on"); rig_->SetSplitMode (state ().frequency (), tx); update_other_frequency (tx); diff --git a/OmniRigTransceiver.hpp b/OmniRigTransceiver.hpp index dc5b0dae9..9e2329b41 100644 --- a/OmniRigTransceiver.hpp +++ b/OmniRigTransceiver.hpp @@ -35,7 +35,7 @@ public: int do_start () override; void do_stop () override; void do_frequency (Frequency, MODE, bool no_ignore) override; - void do_tx_frequency (Frequency, bool no_ignore) override; + void do_tx_frequency (Frequency, MODE, bool no_ignore) override; void do_mode (MODE) override; void do_ptt (bool on) override; void do_sync (bool force_signal, bool no_poll) override; diff --git a/PollingTransceiver.cpp b/PollingTransceiver.cpp index ede371e48..b2bbab179 100644 --- a/PollingTransceiver.cpp +++ b/PollingTransceiver.cpp @@ -85,7 +85,7 @@ void PollingTransceiver::do_post_frequency (Frequency f, MODE m) } } -void PollingTransceiver::do_post_tx_frequency (Frequency f) +void PollingTransceiver::do_post_tx_frequency (Frequency f, MODE) { if (next_state_.tx_frequency () != f) { diff --git a/PollingTransceiver.hpp b/PollingTransceiver.hpp index b81d49283..0945c84ac 100644 --- a/PollingTransceiver.hpp +++ b/PollingTransceiver.hpp @@ -48,7 +48,7 @@ protected: void do_post_start () override final; void do_post_stop () override final; void do_post_frequency (Frequency, MODE) override final; - void do_post_tx_frequency (Frequency) override final; + void do_post_tx_frequency (Frequency, MODE) override final; void do_post_mode (MODE) override final; void do_post_ptt (bool = true) override final; bool do_pre_update () override final; diff --git a/TransceiverBase.cpp b/TransceiverBase.cpp index df4040443..22cd14df9 100644 --- a/TransceiverBase.cpp +++ b/TransceiverBase.cpp @@ -93,8 +93,8 @@ void TransceiverBase::set (TransceiverState const& s, // || s.split () != requested_.split ())) // or split change || (s.tx_frequency () && ptt_on)) // or about to tx split { - do_tx_frequency (s.tx_frequency (), ptt_on); - do_post_tx_frequency (s.tx_frequency ()); + do_tx_frequency (s.tx_frequency (), s.mode (), ptt_on); + do_post_tx_frequency (s.tx_frequency (), s.mode ()); // record what actually changed requested_.tx_frequency (actual_.tx_frequency ()); @@ -150,8 +150,8 @@ void TransceiverBase::shutdown () if (requested_.split ()) { // try and reset split mode - do_tx_frequency (0, true); - do_post_tx_frequency (0); + do_tx_frequency (0, UNK, true); + do_post_tx_frequency (0, UNK); } } catch (...) diff --git a/TransceiverBase.hpp b/TransceiverBase.hpp index 4b579e4a6..5eec7aac8 100644 --- a/TransceiverBase.hpp +++ b/TransceiverBase.hpp @@ -107,8 +107,8 @@ protected: virtual void do_frequency (Frequency, MODE, bool no_ignore) = 0; virtual void do_post_frequency (Frequency, MODE) {} - virtual void do_tx_frequency (Frequency, bool no_ignore) = 0; - virtual void do_post_tx_frequency (Frequency) {} + virtual void do_tx_frequency (Frequency, MODE, bool no_ignore) = 0; + virtual void do_post_tx_frequency (Frequency, MODE) {} virtual void do_mode (MODE) = 0; virtual void do_post_mode (MODE) {} diff --git a/TransceiverFactory.cpp b/TransceiverFactory.cpp index 534ad005c..4b0078abb 100644 --- a/TransceiverFactory.cpp +++ b/TransceiverFactory.cpp @@ -121,7 +121,7 @@ std::unique_ptr TransceiverFactory::create (ParameterPack const& pa } // wrap the basic Transceiver object instance with a decorator object that talks to ham Radio Deluxe - result.reset (new HRDTransceiver {std::move (basic_transceiver), params.network_port, PTT_method_CAT == params.ptt_type, params.poll_interval, params.set_rig_mode}); + result.reset (new HRDTransceiver {std::move (basic_transceiver), params.network_port, PTT_method_CAT == params.ptt_type, params.poll_interval}); if (target_thread) { result->moveToThread (target_thread); diff --git a/TransceiverFactory.hpp b/TransceiverFactory.hpp index 6c93f591c..f7b5167cb 100644 --- a/TransceiverFactory.hpp +++ b/TransceiverFactory.hpp @@ -111,7 +111,6 @@ public: PTTMethod ptt_type; // "CAT" | "DTR" | "RTS" | "VOX" TXAudioSource audio_source; // some rigs allow audio routing // to Mic/Data connector - bool set_rig_mode; // handle rig mode when required SplitMode split_mode; // how to support split TX mode QString ptt_port; // serial port device name or special // value "CAT" @@ -134,7 +133,6 @@ public: && rhs.rts_high == rts_high && rhs.ptt_type == ptt_type && rhs.audio_source == audio_source - && rhs.set_rig_mode == set_rig_mode && rhs.split_mode == split_mode && rhs.ptt_port == ptt_port && rhs.poll_interval == poll_interval diff --git a/contrib/Commander TCPIP Mesages.pdf b/contrib/Commander TCPIP Mesages.pdf index 1c7e6a8ca..f1fb2a465 100644 Binary files a/contrib/Commander TCPIP Mesages.pdf and b/contrib/Commander TCPIP Mesages.pdf differ