Add MSK144 "Contest mode" option to skip Tx2 and Tx3. Needs checking!

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7070 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-09-09 18:37:00 +00:00
parent a0ff0049c1
commit 488a53d991
4 changed files with 36 additions and 19 deletions

View File

@ -539,6 +539,7 @@ private:
bool single_decode_; bool single_decode_;
bool twoPass_; bool twoPass_;
bool x2ToneSpacing_; bool x2ToneSpacing_;
bool contestMode_;
bool offsetRxFreq_; bool offsetRxFreq_;
QString udp_server_name_; QString udp_server_name_;
port_type udp_server_port_; port_type udp_server_port_;
@ -624,6 +625,7 @@ bool Configuration::decode_at_52s () const {return m_->decode_at_52s_;}
bool Configuration::single_decode () const {return m_->single_decode_;} bool Configuration::single_decode () const {return m_->single_decode_;}
bool Configuration::twoPass() const {return m_->twoPass_;} bool Configuration::twoPass() const {return m_->twoPass_;}
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;} bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
bool Configuration::contestMode() const {return m_->contestMode_;}
bool Configuration::offsetRxFreq () const {return m_->offsetRxFreq_;} bool Configuration::offsetRxFreq () const {return m_->offsetRxFreq_;}
bool Configuration::split_mode () const {return m_->split_mode ();} bool Configuration::split_mode () const {return m_->split_mode ();}
QString Configuration::udp_server_name () const {return m_->udp_server_name_;} QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
@ -1050,6 +1052,7 @@ void Configuration::impl::initialize_models ()
ui_->single_decode_check_box->setChecked(single_decode_); ui_->single_decode_check_box->setChecked(single_decode_);
ui_->cbTwoPass->setChecked(twoPass_); ui_->cbTwoPass->setChecked(twoPass_);
ui_->cbx2ToneSpacing->setChecked(x2ToneSpacing_); ui_->cbx2ToneSpacing->setChecked(x2ToneSpacing_);
ui_->cbContestMode->setChecked(contestMode_);
ui_->offset_Rx_freq_check_box->setChecked(offsetRxFreq_); ui_->offset_Rx_freq_check_box->setChecked(offsetRxFreq_);
ui_->type_2_msg_gen_combo_box->setCurrentIndex (type_2_msg_gen_); ui_->type_2_msg_gen_combo_box->setCurrentIndex (type_2_msg_gen_);
ui_->rig_combo_box->setCurrentText (rig_params_.rig_name); ui_->rig_combo_box->setCurrentText (rig_params_.rig_name);
@ -1274,6 +1277,7 @@ void Configuration::impl::read_settings ()
single_decode_ = settings_->value("SingleDecode",false).toBool (); single_decode_ = settings_->value("SingleDecode",false).toBool ();
twoPass_ = settings_->value("TwoPass",true).toBool (); twoPass_ = settings_->value("TwoPass",true).toBool ();
x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool (); x2ToneSpacing_ = settings_->value("x2ToneSpacing",false).toBool ();
contestMode_ = settings_->value("ContestMode",false).toBool ();
offsetRxFreq_ = settings_->value("OffsetRx",false).toBool(); offsetRxFreq_ = settings_->value("OffsetRx",false).toBool();
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt (); rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> (); rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> ();
@ -1370,6 +1374,7 @@ void Configuration::impl::write_settings ()
settings_->setValue ("SingleDecode", single_decode_); settings_->setValue ("SingleDecode", single_decode_);
settings_->setValue ("TwoPass", twoPass_); settings_->setValue ("TwoPass", twoPass_);
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_); settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
settings_->setValue ("ContestMode", contestMode_);
settings_->setValue("OffsetRx",offsetRxFreq_); settings_->setValue("OffsetRx",offsetRxFreq_);
settings_->setValue ("UDPServer", udp_server_name_); settings_->setValue ("UDPServer", udp_server_name_);
settings_->setValue ("UDPServerPort", udp_server_port_); settings_->setValue ("UDPServerPort", udp_server_port_);
@ -1762,6 +1767,7 @@ void Configuration::impl::accept ()
single_decode_ = ui_->single_decode_check_box->isChecked (); single_decode_ = ui_->single_decode_check_box->isChecked ();
twoPass_ = ui_->cbTwoPass->isChecked (); twoPass_ = ui_->cbTwoPass->isChecked ();
x2ToneSpacing_ = ui_->cbx2ToneSpacing->isChecked (); x2ToneSpacing_ = ui_->cbx2ToneSpacing->isChecked ();
contestMode_ = ui_->cbContestMode->isChecked ();
offsetRxFreq_ = ui_->offset_Rx_freq_check_box->isChecked(); offsetRxFreq_ = ui_->offset_Rx_freq_check_box->isChecked();
frequency_calibration_intercept_ = ui_->calibration_intercept_spin_box->value (); frequency_calibration_intercept_ = ui_->calibration_intercept_spin_box->value ();
frequency_calibration_slope_ppm_ = ui_->calibration_slope_ppm_spin_box->value (); frequency_calibration_slope_ppm_ = ui_->calibration_slope_ppm_spin_box->value ();

View File

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

View File

@ -2240,7 +2240,7 @@ Right click for insert and delete options.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="4" column="0">
<widget class="QCheckBox" name="cbx2ToneSpacing"> <widget class="QCheckBox" name="cbx2ToneSpacing">
<property name="toolTip"> <property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Generate Tx audio with twice the normal tone spacing. Intended for special LF/MF transmitters that use a divide-by-2 before generating RF.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Generate Tx audio with twice the normal tone spacing. Intended for special LF/MF transmitters that use a divide-by-2 before generating RF.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@ -2279,6 +2279,13 @@ Right click for insert and delete options.</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0">
<widget class="QCheckBox" name="cbContestMode">
<property name="text">
<string>Context Mode</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
@ -2527,12 +2534,12 @@ soundcard changes</string>
</connection> </connection>
</connections> </connections>
<buttongroups> <buttongroups>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/> <buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/> <buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="CAT_data_bits_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="TX_audio_source_button_group"/> <buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="split_mode_button_group"/>
</buttongroups> </buttongroups>
</ui> </ui>

View File

@ -918,7 +918,7 @@ void MainWindow::writeSettings()
m_settings->setValue("DTtol",m_DTtol); m_settings->setValue("DTtol",m_DTtol);
m_settings->setValue("FtolIndex",m_FtolIndex); m_settings->setValue("FtolIndex",m_FtolIndex);
m_settings->setValue("MinSync",m_minSync); m_settings->setValue("MinSync",m_minSync);
m_settings->setValue("EME",m_bAutoSeq); m_settings->setValue("AutoSeq",m_bAutoSeq);
m_settings->setValue("ShMsgs",m_bShMsgs); m_settings->setValue("ShMsgs",m_bShMsgs);
m_settings->setValue ("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency)); m_settings->setValue ("DialFreq", QVariant::fromValue(m_lastMonitoredFrequency));
m_settings->setValue("InGain",m_inGain); m_settings->setValue("InGain",m_inGain);
@ -973,7 +973,7 @@ void MainWindow::readSettings()
m_FtolIndex=m_settings->value("FtolIndex",21).toInt(); m_FtolIndex=m_settings->value("FtolIndex",21).toInt();
// ui->FTol_combo_box->setCurrentText(m_settings->value("FTol","500").toString ()); // ui->FTol_combo_box->setCurrentText(m_settings->value("FTol","500").toString ());
ui->syncSpinBox->setValue(m_settings->value("MinSync",0).toInt()); ui->syncSpinBox->setValue(m_settings->value("MinSync",0).toInt());
m_bAutoSeq=m_settings->value("EME",false).toBool(); m_bAutoSeq=m_settings->value("AutoSeq",false).toBool();
m_bShMsgs=m_settings->value("ShMsgs",false).toBool(); m_bShMsgs=m_settings->value("ShMsgs",false).toBool();
m_bFast9=m_settings->value("Fast9",false).toBool(); m_bFast9=m_settings->value("Fast9",false).toBool();
m_bFastMode=m_settings->value("FastMode",false).toBool(); m_bFastMode=m_settings->value("FastMode",false).toBool();
@ -2244,7 +2244,7 @@ void::MainWindow::fast_decode_done()
int i1=msg0.indexOf(m_baseCall); int i1=msg0.indexOf(m_baseCall);
int i2=msg0.indexOf(m_hisCall); int i2=msg0.indexOf(m_hisCall);
if((m_mode=="JTMSK" or m_mode=="MSK144" or m_bFast9) and m_bAutoSeq and tmax>=0.0 and if((m_mode=="JTMSK" or m_mode=="MSK144" or m_bFast9) and m_bAutoSeq and tmax>=0.0 and
i1>10 and i2>i1+3) { //Here, "m_bAutoSeq" implies AutoSeq i1>10 and i2>i1+3) {
if((msg0.indexOf(" 73") < 0) or (m_ntx!=6)) processMessage(msg0,43,false); if((msg0.indexOf(" 73") < 0) or (m_ntx!=6)) processMessage(msg0,43,false);
} }
if(m_msg[i][0]==0) break; if(m_msg[i][0]==0) break;
@ -3187,8 +3187,7 @@ void MainWindow::processMessage(QString const& messages, int position, bool ctrl
ntsec = ntsec + t2.mid(4,2).toInt(); ntsec = ntsec + t2.mid(4,2).toInt();
t2a=t2.mid(0,4) + t2.mid(6,-1); //Change hhmmss to hhmm for the message parser t2a=t2.mid(0,4) + t2.mid(6,-1); //Change hhmmss to hhmm for the message parser
} else { } else {
t2a=t2.left (44); // strip and quality info trailing the t2a=t2.left (44); // strip and quality info trailing the decoded message
// decoded message
} }
if(m_bFast9) { if(m_bFast9) {
i1=t2a.indexOf(" CQ "); i1=t2a.indexOf(" CQ ");
@ -3400,10 +3399,14 @@ void MainWindow::processMessage(QString const& messages, int position, bool ctrl
m_ntx=7; m_ntx=7;
ui->rbGenMsg->setChecked(true); ui->rbGenMsg->setChecked(true);
} }
} } else {
else { if(m_mode=="MSK144" and m_config.contestMode()) {
m_ntx=4;
ui->txrb4->setChecked(true);
} else {
m_ntx=2; m_ntx=2;
ui->txrb2->setChecked(true); ui->txrb2->setChecked(true);
}
if(ui->tabWidget->currentIndex()==1) { if(ui->tabWidget->currentIndex()==1) {
ui->genMsg->setText(ui->tx2->text()); ui->genMsg->setText(ui->tx2->text());
m_ntx=7; m_ntx=7;