mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-23 12:48:40 -05:00
Add facility to disallow CAT commands while transmitting.
Some rigs either do not honour some CAT commands while transmitting or interpret them incorrectly. To deal with this a settings option to allow TX frequency changes while transmitting has been added with a default value of off. Any UI actions that directly or indirectly change the TX frequency are guarded according to this new option. As well as this band changes and use of the +2kHz check box are disabled and guarded respectively in transmit mode. Mode changes via the menu are now disabled while transmitting. When TX frequency changes are allowed; frequency changes are correctly implemented while in tune mode. Double clicking decodes while transmitting now correctly regenerate and change the message sent on the fly. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4349 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
ec86773191
commit
a576aa3c06
@ -369,6 +369,7 @@ private:
|
||||
QString my_grid_;
|
||||
qint32 id_interval_;
|
||||
bool id_after_73_;
|
||||
bool tx_QSY_allowed_;
|
||||
bool spot_to_psk_reporter_;
|
||||
bool monitor_off_at_startup_;
|
||||
bool log_as_RTTY_;
|
||||
@ -425,6 +426,7 @@ QString Configuration::my_grid () const {return m_->my_grid_;}
|
||||
QFont Configuration::decoded_text_font () const {return m_->decoded_text_font_;}
|
||||
qint32 Configuration::id_interval () const {return m_->id_interval_;}
|
||||
bool Configuration::id_after_73 () const {return m_->id_after_73_;}
|
||||
bool Configuration::tx_QSY_allowed () const {return m_->tx_QSY_allowed_ || !split_mode ();}
|
||||
bool Configuration::spot_to_psk_reporter () const {return m_->spot_to_psk_reporter_;}
|
||||
bool Configuration::monitor_off_at_startup () const {return m_->monitor_off_at_startup_;}
|
||||
bool Configuration::log_as_RTTY () const {return m_->log_as_RTTY_;}
|
||||
@ -839,6 +841,7 @@ void Configuration::impl::initialise_models ()
|
||||
ui_->PTT_method_button_group->button (rig_params_.PTT_method_)->setChecked (true);
|
||||
ui_->save_path_display_label->setText (save_directory_.absolutePath ());
|
||||
ui_->CW_id_after_73_check_box->setChecked (id_after_73_);
|
||||
ui_->tx_QSY_check_box->setChecked (tx_QSY_allowed_);
|
||||
ui_->psk_reporter_check_box->setChecked (spot_to_psk_reporter_);
|
||||
ui_->monitor_off_check_box->setChecked (monitor_off_at_startup_);
|
||||
ui_->log_as_RTTY_check_box->setChecked (log_as_RTTY_);
|
||||
@ -987,6 +990,7 @@ void Configuration::impl::read_settings ()
|
||||
monitor_off_at_startup_ = settings_->value ("MonitorOFF", false).toBool ();
|
||||
spot_to_psk_reporter_ = settings_->value ("PSKReporter", false).toBool ();
|
||||
id_after_73_ = settings_->value ("After73", false).toBool ();
|
||||
tx_QSY_allowed_ = settings_->value ("TxQSYAllowed", false).toBool ();
|
||||
|
||||
macros_.setStringList (settings_->value ("Macros", QStringList {"TNX 73 GL"}).toStringList ());
|
||||
|
||||
@ -1067,6 +1071,7 @@ void Configuration::impl::write_settings ()
|
||||
settings_->setValue ("MonitorOFF", monitor_off_at_startup_);
|
||||
settings_->setValue ("PSKReporter", spot_to_psk_reporter_);
|
||||
settings_->setValue ("After73", id_after_73_);
|
||||
settings_->setValue ("TxQSYAllowed", tx_QSY_allowed_);
|
||||
settings_->setValue ("Macros", macros_.stringList ());
|
||||
settings_->setValue ("frequencies", QVariant::fromValue (frequencies_.frequencies ()));
|
||||
settings_->setValue ("stations", QVariant::fromValue (stations_.stations ()));
|
||||
@ -1404,6 +1409,7 @@ void Configuration::impl::accept ()
|
||||
spot_to_psk_reporter_ = ui_->psk_reporter_check_box->isChecked ();
|
||||
id_interval_ = ui_->CW_id_interval_spin_box->value ();
|
||||
id_after_73_ = ui_->CW_id_after_73_check_box->isChecked ();
|
||||
tx_QSY_allowed_ = ui_->tx_QSY_check_box->isChecked ();
|
||||
monitor_off_at_startup_ = ui_->monitor_off_check_box->isChecked ();
|
||||
jt9w_bw_mult_ = ui_->jt9w_bandwidth_mult_combo_box->currentText ().toUInt ();
|
||||
jt9w_min_dt_ = static_cast<float> (ui_->jt9w_min_dt_double_spin_box->value ());
|
||||
|
@ -85,6 +85,7 @@ public:
|
||||
QFont decoded_text_font () const;
|
||||
qint32 id_interval () const;
|
||||
bool id_after_73 () const;
|
||||
bool tx_QSY_allowed () const;
|
||||
bool spot_to_psk_reporter () const;
|
||||
bool monitor_off_at_startup () const;
|
||||
bool log_as_RTTY () const;
|
||||
|
@ -214,6 +214,27 @@
|
||||
<string>Behavior</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_8">
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="disable_TX_on_73_check_box">
|
||||
<property name="toolTip">
|
||||
<string>Turns off automatic transmissions after sending a 73 or any other free
|
||||
text message.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Di&sable Tx after sending 73</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="watchdog_check_box">
|
||||
<property name="toolTip">
|
||||
<string>Stop transmitting automatically after five periods.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Runaway Tx &watchdog</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="monitor_off_check_box">
|
||||
<property name="toolTip">
|
||||
@ -237,28 +258,17 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="disable_TX_on_73_check_box">
|
||||
<item row="0" column="1">
|
||||
<widget class="QCheckBox" name="tx_QSY_check_box">
|
||||
<property name="toolTip">
|
||||
<string>Turns off automatic transmissions after sending a 73 or any other free
|
||||
text message.</string>
|
||||
<string><html><head/><body><p>Some rigs are not able to process CAT commands while transmitting. This means that if you are operating in split mode you may have to uncheck this option.</p></body></html></string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Di&sable Tx after sending 73</string>
|
||||
<string>Allow Tx Frequency Changes While Transmitting</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="watchdog_check_box">
|
||||
<property name="toolTip">
|
||||
<string>Stop transmitting automatically after five periods.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Runaway Tx &watchdog</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="4" column="0" colspan="2">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_9">
|
||||
<item>
|
||||
<widget class="QCheckBox" name="CW_id_after_73_check_box">
|
||||
@ -1825,11 +1835,11 @@ soundcard changes</string>
|
||||
</connections>
|
||||
<buttongroups>
|
||||
<buttongroup name="CAT_stop_bits_button_group"/>
|
||||
<buttongroup name="TX_audio_source_button_group"/>
|
||||
<buttongroup name="CAT_data_bits_button_group"/>
|
||||
<buttongroup name="CAT_handshake_button_group"/>
|
||||
<buttongroup name="TX_mode_button_group"/>
|
||||
<buttongroup name="TX_audio_source_button_group"/>
|
||||
<buttongroup name="split_mode_button_group"/>
|
||||
<buttongroup name="PTT_method_button_group"/>
|
||||
<buttongroup name="TX_mode_button_group"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
@ -58,7 +58,9 @@ void Modulator::start (unsigned symbolsLength, double framesPerSymbol, unsigned
|
||||
m_quickClose = false;
|
||||
|
||||
m_symbolsLength = symbolsLength;
|
||||
m_isym0 = std::numeric_limits<unsigned>::max (); // Arbitrary big number
|
||||
m_isym0 = std::numeric_limits<unsigned>::max (); // Arbitrary big
|
||||
// number
|
||||
m_frequency0 = 0.;
|
||||
m_addNoise = dBSNR < 0.;
|
||||
m_nsps = framesPerSymbol;
|
||||
m_frequency = frequency;
|
||||
@ -223,7 +225,7 @@ qint64 Modulator::readData (char * data, qint64 maxSize)
|
||||
|
||||
for (unsigned i = 0; i < numFrames && m_ic <= i1; ++i) {
|
||||
isym = m_tuning ? 0 : m_ic / (4.0 * m_nsps); //Actual fsample=48000
|
||||
if (isym != m_isym0) {
|
||||
if (isym != m_isym0 || m_frequency != m_frequency0) {
|
||||
// qDebug () << "@m_ic:" << m_ic << "itone[" << isym << "] =" << itone[isym] << "@" << i << "in numFrames:" << numFrames;
|
||||
|
||||
if(m_toneSpacing==0.0) {
|
||||
@ -233,6 +235,7 @@ qint64 Modulator::readData (char * data, qint64 maxSize)
|
||||
}
|
||||
m_dphi = m_twoPi * toneFrequency0 / m_frameRate;
|
||||
m_isym0 = isym;
|
||||
m_frequency0 = m_frequency;
|
||||
}
|
||||
|
||||
int j=m_ic/480;
|
||||
|
@ -60,6 +60,7 @@ private:
|
||||
double m_amp;
|
||||
double m_nsps;
|
||||
double volatile m_frequency;
|
||||
double m_frequency0;
|
||||
double m_snr;
|
||||
double m_fac;
|
||||
double m_toneSpacing;
|
||||
|
210
mainwindow.cpp
210
mainwindow.cpp
@ -285,8 +285,6 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme
|
||||
m_killAll=false;
|
||||
m_widebandDecode=false;
|
||||
m_ntx=1;
|
||||
m_rxFreq=1500;
|
||||
m_txFreq=1500;
|
||||
m_setftx=0;
|
||||
m_loopall=false;
|
||||
m_startAnother=false;
|
||||
@ -373,8 +371,6 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme
|
||||
if(m_mode!="JT9" and m_mode!="JT9W-1" and m_mode!="JT65" and
|
||||
m_mode!="JT9+JT65") m_mode="JT9";
|
||||
on_actionWide_Waterfall_triggered(); //###
|
||||
m_wideGraph->setRxFreq(m_rxFreq);
|
||||
m_wideGraph->setTxFreq(m_txFreq);
|
||||
m_wideGraph->setLockTxFreq(m_lockTxFreq);
|
||||
m_wideGraph->setModeTx(m_mode);
|
||||
m_wideGraph->setModeTx(m_modeTx);
|
||||
@ -398,7 +394,7 @@ MainWindow::MainWindow(bool multiple, QSettings * settings, QSharedMemory *shdme
|
||||
Q_EMIT startAudioInputStream (m_config.audio_input_device (), m_framesAudioInputBuffered, &m_detector, m_downSampleFactor, m_config.audio_input_channel ());
|
||||
Q_EMIT initializeAudioOutputStream (m_config.audio_output_device (), AudioDevice::Mono == m_config.audio_output_channel () ? 1 : 2, m_msAudioOutputBuffered);
|
||||
|
||||
Q_EMIT transmitFrequency (m_txFreq - m_XIT);
|
||||
Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT);
|
||||
|
||||
auto t = "UTC dB DT Freq Message";
|
||||
ui->decodedTextLabel->setText(t);
|
||||
@ -447,8 +443,8 @@ void MainWindow::writeSettings()
|
||||
m_settings->setValue("SaveDecoded",ui->actionSave_decoded->isChecked());
|
||||
m_settings->setValue("SaveAll",ui->actionSave_all->isChecked());
|
||||
m_settings->setValue("NDepth",m_ndepth);
|
||||
m_settings->setValue("RxFreq",m_rxFreq);
|
||||
m_settings->setValue("TxFreq",m_txFreq);
|
||||
m_settings->setValue("RxFreq",ui->RxFreqSpinBox->value ());
|
||||
m_settings->setValue("TxFreq",ui->TxFreqSpinBox->value ());
|
||||
m_settings->setValue ("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency));
|
||||
m_settings->setValue("InGain",m_inGain);
|
||||
m_settings->setValue("OutAttenuation", ui->outAttenuation->value ());
|
||||
@ -500,12 +496,10 @@ void MainWindow::readSettings()
|
||||
ui->actionSave_decoded->setChecked(m_settings->value(
|
||||
"SaveDecoded",false).toBool());
|
||||
ui->actionSave_all->setChecked(m_settings->value("SaveAll",false).toBool());
|
||||
m_rxFreq=m_settings->value("RxFreq",1500).toInt();
|
||||
ui->RxFreqSpinBox->setValue(m_rxFreq);
|
||||
m_txFreq=m_settings->value("TxFreq",1500).toInt();
|
||||
ui->RxFreqSpinBox->setValue(m_settings->value("RxFreq",1500).toInt());
|
||||
m_lastMonitoredFrequency = m_settings->value ("DialFreq", QVariant::fromValue<Frequency> (default_frequency)).value<Frequency> ();
|
||||
ui->TxFreqSpinBox->setValue(m_txFreq);
|
||||
Q_EMIT transmitFrequency (m_txFreq - m_XIT);
|
||||
ui->TxFreqSpinBox->setValue(m_settings->value("TxFreq",1500).toInt());
|
||||
Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT);
|
||||
m_saveDecoded=ui->actionSave_decoded->isChecked();
|
||||
m_saveAll=ui->actionSave_all->isChecked();
|
||||
m_ndepth=m_settings->value("NDepth",3).toInt();
|
||||
@ -644,7 +638,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
|
||||
displayDialFrequency ();
|
||||
}
|
||||
|
||||
setXIT (m_txFreq);
|
||||
setXIT (ui->TxFreqSpinBox->value ());
|
||||
if (m_config.transceiver_online ())
|
||||
{
|
||||
Q_EMIT m_config.transceiver_frequency (m_dialFreq);
|
||||
@ -664,7 +658,7 @@ void MainWindow::on_monitorButton_clicked (bool checked)
|
||||
|
||||
// put rig back where it was when last in control
|
||||
Q_EMIT m_config.transceiver_frequency (m_lastMonitoredFrequency);
|
||||
setXIT (m_txFreq);
|
||||
setXIT (ui->TxFreqSpinBox->value ());
|
||||
}
|
||||
|
||||
Q_EMIT m_config.sync_transceiver (true, checked); // gets
|
||||
@ -828,13 +822,16 @@ void MainWindow::bumpFqso(int n) //bumpFqso()
|
||||
int i;
|
||||
bool ctrl = (n>=100);
|
||||
n=n%100;
|
||||
i=m_wideGraph->rxFreq();
|
||||
i=ui->RxFreqSpinBox->value ();
|
||||
if(n==11) i--;
|
||||
if(n==12) i++;
|
||||
m_wideGraph->setRxFreq(i);
|
||||
if(ctrl) {
|
||||
ui->TxFreqSpinBox->setValue(i);
|
||||
m_wideGraph->setTxFreq(i);
|
||||
if (ui->RxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->RxFreqSpinBox->setValue (i);
|
||||
}
|
||||
if(ctrl && ui->TxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->TxFreqSpinBox->setValue (i);
|
||||
}
|
||||
}
|
||||
|
||||
@ -848,14 +845,11 @@ void MainWindow::qsy (Frequency f)
|
||||
if (m_dialFreq != f)
|
||||
{
|
||||
m_dialFreq = f;
|
||||
setXIT(m_txFreq);
|
||||
setXIT(ui->TxFreqSpinBox->value ());
|
||||
|
||||
m_repeatMsg=0;
|
||||
m_secBandChanged=QDateTime::currentMSecsSinceEpoch()/1000;
|
||||
|
||||
bumpFqso(11);
|
||||
bumpFqso(12);
|
||||
|
||||
QFile f2(m_config.data_path ().absoluteFilePath ("ALL.TXT"));
|
||||
f2.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
|
||||
QTextStream out(&f2);
|
||||
@ -1198,12 +1192,6 @@ void MainWindow::on_DecodeButton_clicked (bool /* checked */) //Decode request
|
||||
|
||||
void MainWindow::freezeDecode(int n) //freezeDecode()
|
||||
{
|
||||
bool ctrl = (n>=100);
|
||||
int i=m_wideGraph->rxFreq();
|
||||
if(ctrl) {
|
||||
ui->TxFreqSpinBox->setValue(i);
|
||||
m_wideGraph->setTxFreq(i);
|
||||
}
|
||||
if((n%100)==2) on_DecodeButton_clicked (true);
|
||||
}
|
||||
|
||||
@ -1426,7 +1414,7 @@ void MainWindow::guiUpdate()
|
||||
bTxTime=true;
|
||||
}
|
||||
|
||||
Frequency onAirFreq = m_dialFreq + m_txFreq;
|
||||
Frequency onAirFreq = m_dialFreq + ui->TxFreqSpinBox->value ();
|
||||
if (onAirFreq > 10139900 && onAirFreq < 10140320)
|
||||
{
|
||||
bTxTime=false;
|
||||
@ -1506,7 +1494,7 @@ void MainWindow::guiUpdate()
|
||||
f.close();
|
||||
if (m_config.TX_messages ())
|
||||
{
|
||||
ui->decodedTextBrowser2->displayTransmittedText(t,m_modeTx,m_txFreq);
|
||||
ui->decodedTextBrowser2->displayTransmittedText(t,m_modeTx,ui->TxFreqSpinBox->value ());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1553,24 +1541,16 @@ void MainWindow::guiUpdate()
|
||||
if (g_iptt == 1 && iptt0 == 0)
|
||||
{
|
||||
QString t=QString::fromLatin1(msgsent);
|
||||
if(t==m_msgSent0) {
|
||||
if(t==m_msgSent0)
|
||||
{
|
||||
m_repeatMsg++;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
m_repeatMsg=0;
|
||||
m_msgSent0=t;
|
||||
}
|
||||
|
||||
signalMeter->setValue(0);
|
||||
|
||||
if (m_monitoring)
|
||||
if(!m_tune)
|
||||
{
|
||||
monitor (false);
|
||||
}
|
||||
|
||||
m_btxok=true;
|
||||
m_transmitting=true;
|
||||
ui->pbTxMode->setEnabled(false);
|
||||
if(!m_tune) {
|
||||
QFile f(m_config.data_path ().absoluteFilePath ("ALL.TXT"));
|
||||
f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
|
||||
QTextStream out(&f);
|
||||
@ -1581,10 +1561,30 @@ void MainWindow::guiUpdate()
|
||||
}
|
||||
if (m_config.TX_messages () && !m_tune)
|
||||
{
|
||||
ui->decodedTextBrowser2->displayTransmittedText(t,m_modeTx,m_txFreq);
|
||||
ui->decodedTextBrowser2->displayTransmittedText(t,m_modeTx,ui->TxFreqSpinBox->value ());
|
||||
}
|
||||
}
|
||||
|
||||
if(!m_tune)
|
||||
{
|
||||
QFile f(m_config.data_path ().absoluteFilePath ("ALL.TXT"));
|
||||
f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append);
|
||||
QTextStream out(&f);
|
||||
out << QDateTime::currentDateTimeUtc().toString("hhmm")
|
||||
<< " Transmitting " << (m_dialFreq / 1.e6) << " MHz " << m_modeTx
|
||||
<< ": " << t << endl;
|
||||
f.close();
|
||||
}
|
||||
|
||||
if (m_config.TX_messages () && !m_tune)
|
||||
{
|
||||
ui->decodedTextBrowser2->displayTransmittedText(t,m_modeTx,ui->TxFreqSpinBox->value ());
|
||||
}
|
||||
|
||||
m_transmitting = true;
|
||||
transmitDisplay (true);
|
||||
}
|
||||
|
||||
if(!m_btxok && btxok0 && g_iptt==1) stopTx();
|
||||
|
||||
/*
|
||||
@ -1604,7 +1604,7 @@ void MainWindow::guiUpdate()
|
||||
QDateTime t = QDateTime::currentDateTimeUtc();
|
||||
int fQSO=125;
|
||||
if(m_astroWidget) m_astroWidget->astroUpdate(t, m_config.my_grid (), m_hisGrid, fQSO,
|
||||
m_setftx, m_txFreq);
|
||||
m_setftx, ui->TxFreqSpinBox->value ());
|
||||
|
||||
if(m_transmitting) {
|
||||
if(nsendingsh==1) {
|
||||
@ -1658,21 +1658,14 @@ void MainWindow::startTx2()
|
||||
if(snr>0.0 or snr < -50.0) snr=99.0;
|
||||
transmit (snr);
|
||||
signalMeter->setValue(0);
|
||||
|
||||
//monitor (false);
|
||||
|
||||
//m_btxok=true;
|
||||
//m_transmitting=true;
|
||||
ui->pbTxMode->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::stopTx()
|
||||
{
|
||||
Q_EMIT endTransmitMessage ();
|
||||
m_transmitting=false;
|
||||
m_btxok = false;
|
||||
if ("JT9+JT65" == m_mode) ui->pbTxMode->setEnabled(true);
|
||||
m_transmitting = false;
|
||||
g_iptt=0;
|
||||
tx_status_label->setStyleSheet("");
|
||||
tx_status_label->setText("");
|
||||
@ -1819,18 +1812,23 @@ void MainWindow::doubleClickOnCall(bool shift, bool ctrl)
|
||||
|
||||
|
||||
int frequency = decodedtext.frequencyOffset();
|
||||
m_wideGraph->setRxFreq(frequency); //Set Rx freq
|
||||
if (ui->RxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->RxFreqSpinBox->setValue (frequency); //Set Rx freq
|
||||
}
|
||||
if (decodedtext.isTX())
|
||||
{
|
||||
if (ctrl)
|
||||
if (ctrl && ui->TxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->TxFreqSpinBox->setValue(frequency); //Set Tx freq
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
QString firstcall = decodedtext.call();
|
||||
// Don't change Tx freq if a station is calling me, unless m_lockTxFreq
|
||||
// is true or CTRL is held down
|
||||
if ((firstcall!=m_config.my_callsign ()) or m_lockTxFreq or ctrl)
|
||||
if (((firstcall!=m_config.my_callsign ()) or m_lockTxFreq or ctrl) and ui->TxFreqSpinBox->isEnabled ())
|
||||
ui->TxFreqSpinBox->setValue(frequency);
|
||||
|
||||
if (decodedtext.isJT9())
|
||||
@ -1929,6 +1927,7 @@ void MainWindow::doubleClickOnCall(bool shift, bool ctrl)
|
||||
ui->rbGenMsg->setChecked(true);
|
||||
}
|
||||
}
|
||||
if(m_transmitting) m_restart=true;
|
||||
if(m_config.quick_call ())
|
||||
{
|
||||
auto_tx_mode (true);
|
||||
@ -2288,7 +2287,7 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
||||
, m_rptSent
|
||||
, m_rptRcvd
|
||||
, m_dateTimeQSO
|
||||
, (m_dialFreq + m_txFreq) / 1.e6
|
||||
, (m_dialFreq + ui->TxFreqSpinBox->value ()) / 1.e6
|
||||
, m_config.my_callsign ()
|
||||
, m_config.my_grid ()
|
||||
, m_noSuffix
|
||||
@ -2301,7 +2300,7 @@ void MainWindow::acceptQSO2(bool accepted)
|
||||
{
|
||||
if(accepted)
|
||||
{
|
||||
QString band = ADIF::bandFromFrequency ((m_dialFreq + m_txFreq) / 1.e6);
|
||||
QString band = ADIF::bandFromFrequency ((m_dialFreq + ui->TxFreqSpinBox->value ()) / 1.e6);
|
||||
QString date = m_dateTimeQSO.toString("yyyy-MM-dd");
|
||||
date=date.mid(0,4) + date.mid(5,2) + date.mid(8,2);
|
||||
m_logBook.addAsWorked(m_hisCall,band,m_modeTx,date);
|
||||
@ -2394,17 +2393,19 @@ void MainWindow::on_actionJT9_JT65_triggered()
|
||||
|
||||
void MainWindow::on_TxFreqSpinBox_valueChanged(int n)
|
||||
{
|
||||
m_txFreq=n;
|
||||
m_wideGraph->setTxFreq(n);
|
||||
if(m_lockTxFreq) ui->RxFreqSpinBox->setValue(n);
|
||||
Q_EMIT transmitFrequency (m_txFreq - m_XIT);
|
||||
Q_EMIT transmitFrequency (n - m_XIT);
|
||||
}
|
||||
|
||||
void MainWindow::on_RxFreqSpinBox_valueChanged(int n)
|
||||
{
|
||||
m_rxFreq=n;
|
||||
m_wideGraph->setRxFreq(n);
|
||||
if(m_lockTxFreq) ui->TxFreqSpinBox->setValue(n);
|
||||
|
||||
if (m_lockTxFreq && ui->TxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->TxFreqSpinBox->setValue (n);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionQuickDecode_triggered()
|
||||
@ -2662,7 +2663,6 @@ void MainWindow::on_stopTxButton_clicked() //Stop Tx
|
||||
auto_tx_mode (false);
|
||||
}
|
||||
|
||||
m_transmitting = false;
|
||||
m_btxok=false;
|
||||
m_repeatMsg=0;
|
||||
}
|
||||
@ -2679,13 +2679,18 @@ void MainWindow::rigOpen ()
|
||||
|
||||
void MainWindow::on_pbR2T_clicked()
|
||||
{
|
||||
int n=m_wideGraph->rxFreq();
|
||||
ui->TxFreqSpinBox->setValue(n);
|
||||
if (ui->TxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->TxFreqSpinBox->setValue(ui->RxFreqSpinBox->value ());
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_pbT2R_clicked()
|
||||
{
|
||||
m_wideGraph->setRxFreq(m_txFreq);
|
||||
if (ui->RxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->RxFreqSpinBox->setValue (ui->TxFreqSpinBox->value ());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2731,15 +2736,20 @@ void MainWindow::setXIT(int n)
|
||||
}
|
||||
}
|
||||
|
||||
Q_EMIT transmitFrequency (m_txFreq - m_XIT);
|
||||
Q_EMIT transmitFrequency (ui->TxFreqSpinBox->value () - m_XIT);
|
||||
}
|
||||
|
||||
void MainWindow::setFreq4(int rxFreq, int txFreq)
|
||||
{
|
||||
m_rxFreq=rxFreq;
|
||||
m_txFreq=txFreq;
|
||||
ui->RxFreqSpinBox->setValue(m_rxFreq);
|
||||
ui->TxFreqSpinBox->setValue(m_txFreq);
|
||||
if (ui->RxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->RxFreqSpinBox->setValue(rxFreq);
|
||||
}
|
||||
|
||||
if (ui->TxFreqSpinBox->isEnabled ())
|
||||
{
|
||||
ui->TxFreqSpinBox->setValue(txFreq);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_cbTxLock_clicked(bool checked)
|
||||
@ -2773,6 +2783,14 @@ void MainWindow::on_cbPlus2kHz_toggled(bool checked)
|
||||
|
||||
void MainWindow::handle_transceiver_update (Transceiver::TransceiverState s)
|
||||
{
|
||||
static bool prior_ptt {false};
|
||||
|
||||
if (!s.ptt () && prior_ptt)
|
||||
{
|
||||
transmitDisplay (false);
|
||||
}
|
||||
prior_ptt = s.ptt ();
|
||||
|
||||
if ((s.frequency () - m_dialFreq) || s.split () != m_splitMode)
|
||||
{
|
||||
m_splitMode = s.split ();
|
||||
@ -2821,11 +2839,11 @@ void MainWindow::transmit (double snr)
|
||||
{
|
||||
if (m_modeTx == "JT65")
|
||||
{
|
||||
Q_EMIT sendMessage (NUM_JT65_SYMBOLS, 4096.0 * 12000.0 / 11025.0, m_txFreq - m_XIT, m_toneSpacing, &m_soundOutput, m_config.audio_output_channel (), true, snr);
|
||||
Q_EMIT sendMessage (NUM_JT65_SYMBOLS, 4096.0 * 12000.0 / 11025.0, ui->TxFreqSpinBox->value () - m_XIT, m_toneSpacing, &m_soundOutput, m_config.audio_output_channel (), true, snr);
|
||||
}
|
||||
else
|
||||
{
|
||||
Q_EMIT sendMessage (NUM_JT9_SYMBOLS, m_nsps, m_txFreq - m_XIT, m_toneSpacing, &m_soundOutput, m_config.audio_output_channel (), true, snr);
|
||||
Q_EMIT sendMessage (NUM_JT9_SYMBOLS, m_nsps, ui->TxFreqSpinBox->value () - m_XIT, m_toneSpacing, &m_soundOutput, m_config.audio_output_channel (), true, snr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2951,3 +2969,45 @@ void MainWindow::pskSetLocal ()
|
||||
, m_config.my_grid ()
|
||||
, antenna_description, "WSJT-X " + m_revision);
|
||||
}
|
||||
|
||||
void MainWindow::transmitDisplay (bool transmitting)
|
||||
{
|
||||
if (transmitting)
|
||||
{
|
||||
signalMeter->setValue(0);
|
||||
|
||||
if (m_monitoring)
|
||||
{
|
||||
monitor (false);
|
||||
}
|
||||
|
||||
m_btxok=true;
|
||||
}
|
||||
|
||||
auto QSY_allowed = !transmitting || m_config.tx_QSY_allowed ();
|
||||
if (ui->cbTxLock->isChecked ())
|
||||
{
|
||||
ui->RxFreqSpinBox->setEnabled (QSY_allowed);
|
||||
ui->pbT2R->setEnabled (QSY_allowed);
|
||||
}
|
||||
ui->TxFreqSpinBox->setEnabled (QSY_allowed);
|
||||
ui->pbR2T->setEnabled (QSY_allowed);
|
||||
ui->cbTxLock->setEnabled (QSY_allowed);
|
||||
ui->cbPlus2kHz->setEnabled (QSY_allowed);
|
||||
|
||||
// the following are always disallowed in transmit
|
||||
ui->menuMode->setEnabled (!transmitting);
|
||||
ui->bandComboBox->setEnabled (!transmitting);
|
||||
if (!transmitting)
|
||||
{
|
||||
if ("JT9+JT65" == m_mode)
|
||||
{
|
||||
// allow mode switch in Rx when in dual mode
|
||||
ui->pbTxMode->setEnabled (true);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->pbTxMode->setEnabled (false);
|
||||
}
|
||||
}
|
||||
|
@ -220,8 +220,6 @@ private:
|
||||
qint32 m_waterfallAvg;
|
||||
qint32 m_ntx;
|
||||
qint32 m_timeout;
|
||||
qint32 m_rxFreq;
|
||||
qint32 m_txFreq;
|
||||
int m_XIT;
|
||||
qint32 m_setftx;
|
||||
qint32 m_ndepth;
|
||||
@ -389,6 +387,7 @@ private:
|
||||
void rigFailure (QString const& reason, QString const& detail);
|
||||
void pskSetLocal ();
|
||||
void displayDialFrequency ();
|
||||
void transmitDisplay (bool);
|
||||
};
|
||||
|
||||
extern void getfile(QString fname, int ntrperiod);
|
||||
|
26
plotter.cpp
26
plotter.cpp
@ -399,18 +399,9 @@ int CPlotter::binsPerPixel() // get nbpp
|
||||
return m_binsPerPixel;
|
||||
}
|
||||
|
||||
void CPlotter::setRxFreq(int x, bool bf) //setRxFreq()
|
||||
void CPlotter::setRxFreq (int x)
|
||||
{
|
||||
if(bf) {
|
||||
m_rxFreq=x; // x is freq in Hz
|
||||
m_xClick=XfromFreq(m_rxFreq);
|
||||
} else {
|
||||
if(x<0) x=0; // x is pixel number
|
||||
if(x>m_Size.width()) x=m_Size.width();
|
||||
m_rxFreq=int(FreqfromX(x)+0.5);
|
||||
m_xClick=x;
|
||||
}
|
||||
emit setFreq1(m_rxFreq,m_txFreq);
|
||||
m_rxFreq = x; // x is freq in Hz
|
||||
DrawOverlay();
|
||||
update();
|
||||
}
|
||||
@ -420,18 +411,22 @@ int CPlotter::rxFreq() {return m_rxFreq;} //get rxFreq
|
||||
void CPlotter::mousePressEvent(QMouseEvent *event) //mousePressEvent
|
||||
{
|
||||
int x=event->x();
|
||||
setRxFreq(x,false); // Wideband waterfall
|
||||
if(x<0) x=0;
|
||||
if(x>m_Size.width()) x=m_Size.width();
|
||||
bool ctrl = (event->modifiers() & Qt::ControlModifier);
|
||||
int freq = int(FreqfromX(x)+0.5);
|
||||
int tx_freq = m_txFreq;
|
||||
if (ctrl or m_lockTxFreq) tx_freq = freq;
|
||||
|
||||
emit setFreq1 (freq, tx_freq);
|
||||
|
||||
int n=1;
|
||||
if(ctrl) n+=100;
|
||||
emit freezeDecode1(n);
|
||||
if(ctrl or m_lockTxFreq) setTxFreq(m_rxFreq);
|
||||
}
|
||||
|
||||
void CPlotter::mouseDoubleClickEvent(QMouseEvent *event) //mouse2click
|
||||
{
|
||||
// int x=event->x();
|
||||
// setRxFreq(x,false);
|
||||
bool ctrl = (event->modifiers() & Qt::ControlModifier);
|
||||
int n=2;
|
||||
if(ctrl) n+=100;
|
||||
@ -464,7 +459,6 @@ void CPlotter::setNsps(int ntrperiod, int nsps)
|
||||
void CPlotter::setTxFreq(int n) //setTol()
|
||||
{
|
||||
m_txFreq=n;
|
||||
emit setFreq1(m_rxFreq,m_txFreq);
|
||||
DrawOverlay();
|
||||
update();
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ public:
|
||||
void setRxRange(int fMin);
|
||||
void setBinsPerPixel(int n);
|
||||
int binsPerPixel();
|
||||
void setRxFreq(int n, bool bf);
|
||||
void setRxFreq(int n);
|
||||
void DrawOverlay();
|
||||
int rxFreq();
|
||||
void setFsample(int n);
|
||||
|
@ -214,9 +214,8 @@ void WideGraph::keyPressEvent(QKeyEvent *e)
|
||||
|
||||
void WideGraph::setRxFreq(int n)
|
||||
{
|
||||
m_rxFreq=n;
|
||||
ui->widePlot->setRxFreq(m_rxFreq,true);
|
||||
if(m_lockTxFreq) setTxFreq(m_rxFreq);
|
||||
ui->widePlot->setRxFreq(n);
|
||||
if(m_lockTxFreq) setTxFreq(n);
|
||||
}
|
||||
|
||||
int WideGraph::rxFreq()
|
||||
@ -322,14 +321,11 @@ void WideGraph::setLockTxFreq(bool b)
|
||||
|
||||
void WideGraph::setFreq2(int rxFreq, int txFreq)
|
||||
{
|
||||
m_rxFreq=rxFreq;
|
||||
m_txFreq=txFreq;
|
||||
emit setFreq3(rxFreq,txFreq);
|
||||
}
|
||||
|
||||
void WideGraph::setDialFreq(double d)
|
||||
{
|
||||
m_dialFreq=d;
|
||||
ui->widePlot->setDialFreq(d);
|
||||
}
|
||||
|
||||
|
@ -77,11 +77,6 @@ private:
|
||||
QDir m_palettes_path;
|
||||
WFPalette m_userPalette;
|
||||
|
||||
qint32 m_rxFreq;
|
||||
qint32 m_txFreq;
|
||||
|
||||
double m_dialFreq;
|
||||
|
||||
qint32 m_waterfallAvg;
|
||||
qint32 m_fSample;
|
||||
qint32 m_TRperiod;
|
||||
|
Loading…
Reference in New Issue
Block a user