diff --git a/Transceiver/HamlibTransceiver.cpp b/Transceiver/HamlibTransceiver.cpp index 28cb56501..ea30a5b17 100644 --- a/Transceiver/HamlibTransceiver.cpp +++ b/Transceiver/HamlibTransceiver.cpp @@ -195,6 +195,7 @@ HamlibTransceiver::HamlibTransceiver (TransceiverFactory::PTTMethod ptt_type, QS QObject * parent) : PollingTransceiver {0, parent} , rig_ {rig_init (RIG_MODEL_DUMMY)} + , ptt_only_ {true} , back_ptt_port_ {false} , one_VFO_ {false} , is_dummy_ {true} @@ -248,6 +249,7 @@ HamlibTransceiver::HamlibTransceiver (int model_number, TransceiverFactory::Para QObject * parent) : PollingTransceiver {params.poll_interval, parent} , rig_ {rig_init (model_number)} + , ptt_only_ {false} , back_ptt_port_ {TransceiverFactory::TX_audio_source_rear == params.audio_source} , one_VFO_ {false} , is_dummy_ {RIG_MODEL_DUMMY == model_number} @@ -591,7 +593,7 @@ int HamlibTransceiver::do_start () tickle_hamlib_ = true; - if (is_dummy_ && dummy_frequency_) + if (is_dummy_ && !ptt_only_ && dummy_frequency_) { // return to where last dummy instance was // TODO: this is going to break down if multiple dummy rigs are used @@ -652,7 +654,7 @@ int HamlibTransceiver::do_start () void HamlibTransceiver::do_stop () { - if (is_dummy_) + if (is_dummy_ && !ptt_only_) { rig_get_freq (rig_.data (), RIG_VFO_CURR, &dummy_frequency_); dummy_frequency_ = std::round (dummy_frequency_); diff --git a/Transceiver/HamlibTransceiver.hpp b/Transceiver/HamlibTransceiver.hpp index fcc17eeb9..dd78b7875 100644 --- a/Transceiver/HamlibTransceiver.hpp +++ b/Transceiver/HamlibTransceiver.hpp @@ -45,6 +45,7 @@ public: struct RIGDeleter {static void cleanup (RIG *);}; QScopedPointer rig_; + bool ptt_only_; // we can use a dummy device for PTT bool back_ptt_port_; bool one_VFO_; bool is_dummy_; diff --git a/Transceiver/TransceiverBase.cpp b/Transceiver/TransceiverBase.cpp index f1decb682..a61857528 100644 --- a/Transceiver/TransceiverBase.cpp +++ b/Transceiver/TransceiverBase.cpp @@ -172,14 +172,14 @@ void TransceiverBase::shutdown () do_tx_frequency (0, UNK, true); do_post_tx_frequency (0, UNK); } + do_stop (); + do_post_stop (); } catch (...) { // don't care about exceptions } } - do_stop (); - do_post_stop (); actual_ = TransceiverState {}; requested_ = TransceiverState {}; }