1. Fix cause of "frozen UTC" bug in MSK144 mode. (Could there be more than one cause?)

2. Fix failure to remember Ftol setting in MSK144 mode.
3. Remove obsolete controls from Advanced tab.
4. Add control for "x 2 Tone spacing" on Advanced tab.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6981 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-08-01 19:46:19 +00:00
parent ea79c1a464
commit 289ba66119
4 changed files with 125 additions and 201 deletions

View File

@ -538,11 +538,7 @@ private:
bool single_decode_;
bool twoPass_;
bool sync1Bit_;
bool MyDx_;
bool CQMyN_;
bool NDxG_;
bool NN_;
bool EMEonly_;
bool x2ToneSpacing_;
bool offsetRxFreq_;
QString udp_server_name_;
port_type udp_server_port_;
@ -627,11 +623,7 @@ bool Configuration::decode_at_52s () const {return m_->decode_at_52s_;}
bool Configuration::single_decode () const {return m_->single_decode_;}
bool Configuration::twoPass() const {return m_->twoPass_;}
bool Configuration::sync1Bit() const {return m_->sync1Bit_;}
bool Configuration::MyDx() const {return m_->MyDx_;}
bool Configuration::CQMyN() const {return m_->CQMyN_;}
bool Configuration::NDxG() const {return m_->NDxG_;}
bool Configuration::NN() const {return m_->NN_;}
bool Configuration::EMEonly() const {return m_->EMEonly_;}
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
bool Configuration::offsetRxFreq () const {return m_->offsetRxFreq_;}
bool Configuration::split_mode () const {return m_->split_mode ();}
QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
@ -766,7 +758,7 @@ Configuration::impl::impl (Configuration * self, QDir const& temp_directory,
, default_audio_output_device_selected_ {false}
{
ui_->setupUi (this);
ui_->groupBox_6->setVisible(false); //### Temporary ??? ###
// ui_->groupBox_6->setVisible(false); //### Temporary ??? ###
#if !defined (CMAKE_BUILD)
#define WSJT_SHARE_DESTINATION "."
@ -1061,11 +1053,7 @@ void Configuration::impl::initialize_models ()
ui_->single_decode_check_box->setChecked(single_decode_);
ui_->cbTwoPass->setChecked(twoPass_);
ui_->cbSync1Bit->setChecked(sync1Bit_);
ui_->cbMyDx->setChecked(MyDx_);
ui_->cbCQMyN->setChecked(CQMyN_);
ui_->cbNDxG->setChecked(NDxG_);
ui_->cbNN->setChecked(NN_);
ui_->cbEMEonly->setChecked(EMEonly_);
ui_->cbx2ToneSpacing->setChecked(x2ToneSpacing_);
ui_->offset_Rx_freq_check_box->setChecked(offsetRxFreq_);
ui_->type_2_msg_gen_combo_box->setCurrentIndex (type_2_msg_gen_);
ui_->rig_combo_box->setCurrentText (rig_params_.rig_name);
@ -1289,11 +1277,7 @@ void Configuration::impl::read_settings ()
single_decode_ = settings_->value("SingleDecode",false).toBool ();
twoPass_ = settings_->value("TwoPass",true).toBool ();
sync1Bit_ = settings_->value("Sync1Bit",false).toBool ();
MyDx_ = settings_->value("MyDx",false).toBool ();
CQMyN_ = settings_->value("CQMyN",false).toBool ();
NDxG_ = settings_->value("NDxG",false).toBool ();
NN_ = settings_->value("NN",false).toBool ();
EMEonly_ = settings_->value("EMEonly",false).toBool ();
x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool ();
offsetRxFreq_ = settings_->value("OffsetRx",false).toBool();
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
rig_params_.set_rig_mode = data_mode_ != data_mode_none;
@ -1390,11 +1374,7 @@ void Configuration::impl::write_settings ()
settings_->setValue ("SingleDecode", single_decode_);
settings_->setValue ("TwoPass", twoPass_);
settings_->setValue ("Sync1Bit", sync1Bit_);
settings_->setValue ("MyDx", MyDx_);
settings_->setValue ("CQMyN", CQMyN_);
settings_->setValue ("NDxG", NDxG_);
settings_->setValue ("NN", NN_);
settings_->setValue ("EMEonly", EMEonly_);
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
settings_->setValue("OffsetRx",offsetRxFreq_);
settings_->setValue ("UDPServer", udp_server_name_);
settings_->setValue ("UDPServerPort", udp_server_port_);
@ -1787,12 +1767,7 @@ void Configuration::impl::accept ()
single_decode_ = ui_->single_decode_check_box->isChecked ();
twoPass_ = ui_->cbTwoPass->isChecked ();
sync1Bit_ = ui_->cbSync1Bit->isChecked ();
MyDx_ = ui_->cbMyDx->isChecked ();
CQMyN_ = ui_->cbCQMyN->isChecked ();
NDxG_ = ui_->cbNDxG->isChecked ();
NN_ = ui_->cbNN->isChecked ();
EMEonly_ = ui_->cbEMEonly->isChecked ();
x2ToneSpacing_ = ui_->cbx2ToneSpacing->isChecked ();
offsetRxFreq_ = ui_->offset_Rx_freq_check_box->isChecked();
frequency_calibration_intercept_ = ui_->calibration_intercept_spin_box->value ();
frequency_calibration_slope_ppm_ = ui_->calibration_slope_ppm_spin_box->value ();

View File

@ -121,6 +121,7 @@ public:
bool single_decode () const;
bool twoPass() const;
bool sync1Bit() const;
bool x2ToneSpacing() const;
bool MyDx() const;
bool CQMyN() const;
bool NDxG() const;

View File

@ -2,6 +2,14 @@
<ui version="4.0">
<class>configuration_dialog</class>
<widget class="QDialog" name="configuration_dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>545</width>
<height>591</height>
</rect>
</property>
<property name="windowTitle">
<string>Settings</string>
</property>
@ -2162,16 +2170,98 @@ Right click for insert and delete options.</string>
<string>Advanced</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_9">
<item row="0" column="0">
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QGroupBox" name="groupBox_5">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="title">
<string>Miscellaneous</string>
</property>
<layout class="QFormLayout" name="formLayout_10">
<item row="1" column="1">
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Degrade S/N of .wav file: </string>
</property>
<property name="buddy">
<cstring>sbDegrade</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QDoubleSpinBox" name="sbDegrade">
<property name="suffix">
<string> dB</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Receiver bandwidth:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QSpinBox" name="sbBandwidth">
<property name="suffix">
<string> Hz</string>
</property>
<property name="maximum">
<number>6000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
<property name="value">
<number>2500</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="cbx2ToneSpacing">
<property name="text">
<string>x 2 Tone Spacing</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="0" column="0">
<widget class="QGroupBox" name="groupBox_6">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;User-selectable parameters for JT65 decoding.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="title">
<string>JT65 decoding parameters</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_12">
<item>
<layout class="QFormLayout" name="formLayout_11">
<item row="0" column="1">
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
@ -2199,90 +2289,7 @@ Right click for insert and delete options.</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="cbSync1Bit">
<property name="text">
<string>Robust sync</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbTwoPass">
<property name="text">
<string>Two-pass decoding</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_6">
<property name="title">
<string>Experience-based decoding</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_9">
<item>
<widget class="QCheckBox" name="cbMyDx">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Test codewords corresponding to messages of the form &amp;quot;MyCall DxCall Dxgrid&amp;quot;, &amp;quot;MyCall DxCall rpt&amp;quot;. &amp;quot;MyCall DxCall RRR&amp;quot;. and &amp;quot;MyCall DxCall 73&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>MyCall DxCall rpt</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCQMyN">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Test codewords corresponding to messages of the form &amp;quot;CQ Call Grid&amp;quot; and &amp;quot;MyCall Call Grid&amp;quot; for all Call/Grid combinations selected from the list of known calls.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>(CQ, MyCall) x N</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbNDxG">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Test codewords corresponding to messages of the form &amp;quot;Call DxCall DxGrid OOO&amp;quot; for all Call/Grid combinations selected from the list of known calls.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>N x (DxCall Grid OOO)</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbNN">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Test codewords corresponding to messages of the form &amp;quot;Call1 Call2 Grid2&amp;quot;for all Call/Grid combinations selected from the list of known calls.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>N x N</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbEMEonly">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select Call/Grid combinations from list of known calls only if marked as active on EME.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>EME calls only</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="0">
<item row="1" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Aggressive decoding level:</string>
@ -2292,7 +2299,7 @@ Right click for insert and delete options.</string>
</property>
</widget>
</item>
<item row="0" column="1">
<item row="1" column="1">
<widget class="QSpinBox" name="sbAggressive">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Higher levels will increase the probability of decoding, but will also increase probability of a false decode.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -2302,49 +2309,23 @@ Right click for insert and delete options.</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Degrade S/N of .wav file: </string>
</property>
<property name="buddy">
<cstring>sbDegrade</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QDoubleSpinBox" name="sbDegrade">
<property name="suffix">
<string> dB</string>
</property>
<property name="decimals">
<number>1</number>
</property>
<property name="singleStep">
<double>0.100000000000000</double>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_9">
<widget class="QCheckBox" name="cbSync1Bit">
<property name="text">
<string>Receiver bandwidth:</string>
<string>Robust sync</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="sbBandwidth">
<property name="suffix">
<string> Hz</string>
<item row="3" column="0">
<widget class="QCheckBox" name="cbTwoPass">
<property name="text">
<string>Two-pass decoding</string>
</property>
<property name="maximum">
<number>6000</number>
</property>
<property name="singleStep">
<number>100</number>
</property>
<property name="value">
<number>2500</number>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
@ -2353,32 +2334,6 @@ Right click for insert and delete options.</string>
</layout>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="2">
<spacer name="verticalSpacer_8">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
@ -2478,12 +2433,6 @@ soundcard changes</string>
<tabstop>sbNtrials</tabstop>
<tabstop>cbSync1Bit</tabstop>
<tabstop>cbTwoPass</tabstop>
<tabstop>cbMyDx</tabstop>
<tabstop>cbCQMyN</tabstop>
<tabstop>cbNDxG</tabstop>
<tabstop>cbNN</tabstop>
<tabstop>cbEMEonly</tabstop>
<tabstop>sbAggressive</tabstop>
<tabstop>sbDegrade</tabstop>
</tabstops>
<resources/>
@ -2554,12 +2503,12 @@ soundcard changes</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_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

@ -2145,11 +2145,6 @@ void MainWindow::decode() //decode()
if(m_bEME) dec_data.params.emedelay=2.5;
dec_data.params.minSync=ui->syncSpinBox->isVisible () ? m_minSync : 0;
dec_data.params.nexp_decode=0;
if(m_config.MyDx()) dec_data.params.nexp_decode += 1;
if(m_config.CQMyN()) dec_data.params.nexp_decode += 2;
if(m_config.NDxG()) dec_data.params.nexp_decode += 4;
if(m_config.NN()) dec_data.params.nexp_decode += 8;
if(m_config.EMEonly()) dec_data.params.nexp_decode += 16;
if(m_config.single_decode()) {
dec_data.params.nexp_decode += 32;
if(dec_data.params.naggressive<1) dec_data.params.naggressive=1;
@ -2223,6 +2218,8 @@ void::MainWindow::fast_decode_done()
{
float t,tmax=-99.0;
QString msg0;
dec_data.params.nagain=false;
dec_data.params.ndiskdat=false;
m_bDecoded=false;
for(int i=0; i<100; i++) {
int i1=msg0.indexOf(m_baseCall);
@ -3979,7 +3976,6 @@ void MainWindow::on_actionMSK144_triggered()
ui->rptSpinBox->setSingleStep(2);
ui->sbFtol->setMinimum(23);
ui->sbFtol->setMaximum(25);
ui->sbFtol->setValue(25);
}
void MainWindow::on_actionQRA64_triggered()
@ -4932,10 +4928,13 @@ void MainWindow::transmit (double snr)
}
if (m_mode=="WSPR-2") { //### Similar code needed for WSPR-15 ###
int nToneSpacing=1;
if(m_config.x2ToneSpacing()) nToneSpacing=2;
Q_EMIT sendMessage (NUM_WSPR_SYMBOLS, 8192.0,
ui->TxFreqSpinBox->value() - 1.5 * 12000 / 8192, m_toneSpacing,
m_soundOutput, m_config.audio_output_channel(),
true, false, snr, m_TRperiod);
ui->TxFreqSpinBox->value() - 1.5 * 12000 / 8192,
m_toneSpacing*nToneSpacing, m_soundOutput,
m_config.audio_output_channel(),true, false, snr,
m_TRperiod);
}
if(m_mode=="Echo") {
//??? should use "fastMode = true" here ???