mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-23 18:02:29 -04:00
Add minimum support for one way CAT control rigs
Older rigs like the Yaesu FT-736R only support set commands and extremely limited query commands (like squelch and S-meter levels). This change allows them to be supported via Hamlib albeit in a very minimal way. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7556 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
cf97a23379
commit
b4fc646455
@ -189,6 +189,7 @@ HamlibTransceiver::HamlibTransceiver (TransceiverFactory::PTTMethod ptt_type, QS
|
||||
, one_VFO_ {false}
|
||||
, is_dummy_ {true}
|
||||
, reversed_ {false}
|
||||
, freq_query_works_ {true}
|
||||
, mode_query_works_ {true}
|
||||
, split_query_works_ {true}
|
||||
, tickle_hamlib_ {false}
|
||||
@ -240,6 +241,7 @@ HamlibTransceiver::HamlibTransceiver (int model_number, TransceiverFactory::Para
|
||||
, one_VFO_ {false}
|
||||
, is_dummy_ {RIG_MODEL_DUMMY == model_number}
|
||||
, reversed_ {false}
|
||||
, freq_query_works_ {rig_ && rig_->caps->get_freq}
|
||||
, mode_query_works_ {rig_ && rig_->caps->get_mode}
|
||||
, split_query_works_ {rig_ && rig_->caps->get_split_vfo}
|
||||
, tickle_hamlib_ {false}
|
||||
@ -441,7 +443,8 @@ int HamlibTransceiver::do_start ()
|
||||
rmode_t mb;
|
||||
pbwidth_t w {RIG_PASSBAND_NORMAL};
|
||||
pbwidth_t wb;
|
||||
if ((!get_vfo_works_ || !rig_->caps->get_vfo)
|
||||
if (freq_query_works_
|
||||
&& (!get_vfo_works_ || !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
|
||||
@ -553,6 +556,8 @@ int HamlibTransceiver::do_start ()
|
||||
}
|
||||
|
||||
int resolution {0};
|
||||
if (freq_query_works_)
|
||||
{
|
||||
freq_t current_frequency;
|
||||
error_check (rig_get_freq (rig_.data (), RIG_VFO_CURR, ¤t_frequency), tr ("getting current VFO frequency"));
|
||||
current_frequency = std::round (current_frequency);
|
||||
@ -584,6 +589,11 @@ int HamlibTransceiver::do_start ()
|
||||
}
|
||||
error_check (rig_set_freq (rig_.data (), RIG_VFO_CURR, current_frequency), tr ("setting frequency"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
resolution = -1; // best guess
|
||||
}
|
||||
|
||||
poll ();
|
||||
|
||||
@ -874,7 +884,9 @@ void HamlibTransceiver::poll ()
|
||||
reversed_ = RIG_VFO_B == v;
|
||||
}
|
||||
|
||||
// only read when receiving or simplex
|
||||
if (freq_query_works_)
|
||||
{
|
||||
// only read if possible and when receiving or simplex
|
||||
if (!state ().ptt () || !state ().split ())
|
||||
{
|
||||
error_check (rig_get_freq (rig_.data (), RIG_VFO_CURR, &f), tr ("getting current VFO frequency"));
|
||||
@ -903,6 +915,7 @@ void HamlibTransceiver::poll ()
|
||||
TRACE_CAT_POLL ("HamlibTransceiver", "rig_get_freq other VFO =" << f);
|
||||
update_other_frequency (f);
|
||||
}
|
||||
}
|
||||
|
||||
// only read when receiving or simplex if direct VFO addressing unavailable
|
||||
if ((!state ().ptt () || !state ().split ())
|
||||
|
@ -63,6 +63,7 @@ class HamlibTransceiver final
|
||||
|
||||
bool mutable reversed_;
|
||||
|
||||
bool freq_query_works_;
|
||||
bool mode_query_works_;
|
||||
bool split_query_works_;
|
||||
bool tickle_hamlib_; // Hamlib requires a
|
||||
|
Loading…
x
Reference in New Issue
Block a user