Smarter Tx sequencing that allows for CAT processing latency

When using  split operating and/or rig  mode setting there is  a delay
before PTT  is asserted  while the CAT  commands are  processed. There
will even be  a small delay if  CAT is only used for  PTT. This change
waits for these  commands to be completed before starting  the user Tx
delay specified in the settings.

There is  a notable exception to  this in that DX  Lab Suite Commander
does not give us a way of knowing when CAT commands have actually been
completed.   This combined  with  the way  that  Commander spaces  CAT
commands, rather  than being paced  by the rig's CAT  responses, means
that delays of more than 1 second are likely. As most rigs suffer some
sort of ALC overshoot when PTT is asserted with audio already present,
it is strongly recommended not to use  the DX Lab Suite Commander as a
rig control proxy if your rig may  suffer ALC overshoot and you use an
external PA. Please note that using a typical RF power meter to detect
ALC  overshoots is  unwise  as  they are  rarely  fast  enough. It  is
probably wise to assume that all rigs suffer ALC overshoot since it is
very difficult to design an ALC loop that avoids it.

This change  also increases  the range of  the "Settings->Advanced->Tx
Delay" spin box to 0s up to 2s.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7756 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Bill Somerville 2017-07-01 00:19:58 +00:00
parent f6ecfec363
commit 2687a308d6
3 changed files with 17 additions and 6 deletions

View File

@ -2308,10 +2308,10 @@ Right click for insert and delete options.</string>
<number>1</number>
</property>
<property name="minimum">
<double>0.200000000000000</double>
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>0.500000000000000</double>
<double>2.000000000000000</double>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
@ -2616,12 +2616,12 @@ soundcard changes</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="TX_mode_button_group"/>
</buttongroups>
</ui>

View File

@ -345,6 +345,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_bandEdited {false},
m_splitMode {false},
m_monitoring {false},
m_tx_when_ready {false},
m_transmitting {false},
m_tune {false},
m_tx_watchdog {false},
@ -2941,7 +2942,7 @@ void MainWindow::guiUpdate()
setXIT (ui->TxFreqSpinBox->value ());
Q_EMIT m_config.transceiver_ptt (true); //Assert the PTT
ptt1Timer.start(int(1000.0*m_config.txDelay())); //Start-of-transmission sequencer delay
m_tx_when_ready = true;
}
if(!m_bTxTime and !m_tune) m_btxok=false; //Time to stop transmitting
}
@ -5289,6 +5290,15 @@ void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const&
// qDebug () << "MainWindow::handle_transceiver_update:" << s;
Transceiver::TransceiverState old_state {m_rigState};
//transmitDisplay (s.ptt ());
if (s.ptt () && !m_rigState.ptt ()) // safe to start audio
// (caveat - DX Lab Suite Commander)
{
if (m_tx_when_ready && g_iptt) // waiting to Tx and still needed
{
ptt1Timer.start(1000 * m_config.txDelay ()); //Start-of-transmission sequencer delay
}
m_tx_when_ready = false;
}
m_rigState = s;
if (old_state.online () == false && s.online () == true)
{

View File

@ -526,6 +526,7 @@ private:
bool m_bandEdited;
bool m_splitMode;
bool m_monitoring;
bool m_tx_when_ready;
bool m_transmitting;
bool m_tune;
bool m_tx_watchdog; // true when watchdog triggered