Only poll split frequency if in split mode

Because PowerSDR for the FlexRadio rigs doesn't implement split or VFO
B,  querying the  TX VFO  in transceiver  polls causes  an error  with
them. This query is unecessary. Removing  it will cause a delay of one
poll period  after split is set  for the Tx frequency  to appear. This
should be  harmless, if not  then there  is a possibility  of querying
split before  the Tx frequency. This  seems obvious but I  believe the
order matters with some rigs so it needs more investigation.

Merged from wsjtx-1.4 branch.



git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4435 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2014-10-02 01:21:56 +00:00
parent ef35c0bd48
commit 7ff8b8329d
2 changed files with 21 additions and 13 deletions

View File

@ -206,23 +206,26 @@ void DXLabSuiteCommanderTransceiver::poll ()
throw error {tr ("DX Lab Suite Commander didn't respond correctly polling frequency")};
}
reply = command_with_reply ("<command:13>CmdSendTXFreq<parameters:0>", quiet);
if (0 == reply.indexOf ("<CmdTXFreq:"))
if (state ().split ())
{
// remove thousands separator and DP - relies of n.nnn kHz format so we ca do uint conversion
auto text = reply.mid (reply.indexOf ('>') + 1).replace (",", "").replace (".", "");
if ("000" != text)
reply = command_with_reply ("<command:13>CmdSendTXFreq<parameters:0>", quiet);
if (0 == reply.indexOf ("<CmdTXFreq:"))
{
update_other_frequency (text.toUInt ());
// remove thousands separator and DP - relies of n.nnn kHz format so we ca do uint conversion
auto text = reply.mid (reply.indexOf ('>') + 1).replace (",", "").replace (".", "");
if ("000" != text)
{
update_other_frequency (text.toUInt ());
}
}
}
else
{
else
{
#if WSJT_TRACE_CAT
qDebug () << "DXLabSuiteCommanderTransceiver::poll: get tx frequency unexpected response";
qDebug () << "DXLabSuiteCommanderTransceiver::poll: get tx frequency unexpected response";
#endif
throw error {tr ("DX Lab Suite Commander didn't respond correctly polling TX frequency")};
throw error {tr ("DX Lab Suite Commander didn't respond correctly polling TX frequency")};
}
}
reply = command_with_reply ("<command:12>CmdSendSplit<parameters:0>", quiet);

View File

@ -667,9 +667,14 @@ void HamlibTransceiver::poll ()
update_rx_frequency (f);
if (rig_->caps->targetable_vfo & (RIG_TARGETABLE_FREQ | RIG_TARGETABLE_PURE))
if (state ().split () && (rig_->caps->targetable_vfo & (RIG_TARGETABLE_FREQ | RIG_TARGETABLE_PURE)))
{
// we can only probe current VFO unless rig supports reading the other one directly
// only read "other" VFO if in split, this allows rigs like
// FlexRadio to work in Kenwood TS-2000 mode despite them
// not having a FB; command
// we can only probe current VFO unless rig supports reading
// the other one directly because we can't glitch the Rx
#if WSJT_TRACE_CAT && WSJT_TRACE_CAT_POLLS
qDebug () << "HamlibTransceiver::poll rig_get_freq other VFO";
#endif