From a9c637dc1fc55e49563719a13108c496e38e8cf3 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Thu, 2 Oct 2014 14:46:32 +0000 Subject: [PATCH] Allow for rigs with neither get VFO nor toggle VFO CAT commands Some rigs always receive on the same VFO, the HamlibTransceiver::init_rig() method was not allowing for this. It needs to simply do nothing and assume VFO MAIN/A is current at startup. Merged from wsjtx-1.4 branch. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4450 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- HamlibTransceiver.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/HamlibTransceiver.cpp b/HamlibTransceiver.cpp index 778107bfc..b0f8590db 100644 --- a/HamlibTransceiver.cpp +++ b/HamlibTransceiver.cpp @@ -290,7 +290,7 @@ void HamlibTransceiver::init_rig () rmode_t mb; pbwidth_t w {rig_passband_wide (rig_.data (), m)}; pbwidth_t wb; - if (!rig_->caps->get_vfo) + if (!rig_->caps->get_vfo && (rig_->caps->set_vfo || rig_has_vfo_op (rig_.data (), RIG_OP_TOGGLE))) { // Icom have deficient CAT protocol with no way of reading which // VFO is selected or if SPLIT is selected so we have to simply @@ -314,18 +314,10 @@ void HamlibTransceiver::init_rig () if (!rig_->caps->set_vfo) { - if (rig_has_vfo_op (rig_.data (), RIG_OP_TOGGLE)) - { - #if WSJT_TRACE_CAT - qDebug () << "HamlibTransceiver::init_rig rig_vfo_op TOGGLE"; + qDebug () << "HamlibTransceiver::init_rig rig_vfo_op TOGGLE"; #endif - error_check (rig_vfo_op (rig_.data (), RIG_VFO_CURR, RIG_OP_TOGGLE), tr ("exchanging VFOs")); - } - else - { - throw error {tr ("Hamlib: unable to initialise rig")}; - } + error_check (rig_vfo_op (rig_.data (), RIG_VFO_CURR, RIG_OP_TOGGLE), tr ("exchanging VFOs")); } else { @@ -401,14 +393,18 @@ void HamlibTransceiver::init_rig () } else { - vfo_t v; + vfo_t v {RIG_VFO_A}; // assume RX always on VFO A/MAIN + + if (rig_->caps->get_vfo) + { #if WSJT_TRACE_CAT - qDebug ().nospace () << "HamlibTransceiver::init_rig rig_get_vfo current VFO"; + qDebug ().nospace () << "HamlibTransceiver::init_rig rig_get_vfo current VFO"; #endif - error_check (rig_get_vfo (rig_.data (), &v), tr ("getting current VFO")); // has side effect of establishing current VFO inside hamlib + error_check (rig_get_vfo (rig_.data (), &v), tr ("getting current VFO")); // has side effect of establishing current VFO inside hamlib #if WSJT_TRACE_CAT - qDebug ().nospace () << "HamlibTransceiver::init_rig rig_get_vfo current VFO = 0x" << hex << v; + qDebug ().nospace () << "HamlibTransceiver::init_rig rig_get_vfo current VFO = 0x" << hex << v; #endif + } reversed_ = RIG_VFO_B == v;