mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-04-01 00:48:43 -04:00
Implement Special Operating Activity "Q65 Pileup". Needs more checking for completeness.
This commit is contained in:
parent
39c935a882
commit
3f5cbbb147
@ -1227,6 +1227,7 @@ Configuration::impl::impl (Configuration * self, QNetworkAccessManager * network
|
|||||||
ui_->special_op_activity_button_group->setId (ui_->rbARRL_Digi, static_cast<int> (SpecialOperatingActivity::ARRL_DIGI));
|
ui_->special_op_activity_button_group->setId (ui_->rbARRL_Digi, static_cast<int> (SpecialOperatingActivity::ARRL_DIGI));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbFox, static_cast<int> (SpecialOperatingActivity::FOX));
|
ui_->special_op_activity_button_group->setId (ui_->rbFox, static_cast<int> (SpecialOperatingActivity::FOX));
|
||||||
ui_->special_op_activity_button_group->setId (ui_->rbHound, static_cast<int> (SpecialOperatingActivity::HOUND));
|
ui_->special_op_activity_button_group->setId (ui_->rbHound, static_cast<int> (SpecialOperatingActivity::HOUND));
|
||||||
|
ui_->special_op_activity_button_group->setId (ui_->rbQ65pileup, static_cast<int> (SpecialOperatingActivity::Q65_PILEUP));
|
||||||
|
|
||||||
//
|
//
|
||||||
// setup PTT port combo box drop down content
|
// setup PTT port combo box drop down content
|
||||||
|
@ -190,8 +190,8 @@ public:
|
|||||||
bool highlight_DXgrid () const;
|
bool highlight_DXgrid () const;
|
||||||
bool Individual_Contest_Name() const;
|
bool Individual_Contest_Name() const;
|
||||||
|
|
||||||
// 0 1 2 3 4 5 6 7 8
|
// 0 1 2 3 4 5 6 7 8 9
|
||||||
enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, WW_DIGI, FOX, HOUND, ARRL_DIGI};
|
enum class SpecialOperatingActivity {NONE, NA_VHF, EU_VHF, FIELD_DAY, RTTY, WW_DIGI, FOX, HOUND, ARRL_DIGI, Q65_PILEUP};
|
||||||
SpecialOperatingActivity special_op_id () const;
|
SpecialOperatingActivity special_op_id () const;
|
||||||
|
|
||||||
struct CalibrationParams
|
struct CalibrationParams
|
||||||
|
@ -2923,6 +2923,25 @@ Right click for insert and delete options.</string>
|
|||||||
</attribute>
|
</attribute>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QRadioButton" name="rbQ65pileup">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>18</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>Exchange 4-character locator instead of signal report. Provides q3-level sensitivities for the DX operator. Especially useful for 6m EME DXpeditions.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Q65 Pileup</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="buttonGroup">
|
||||||
|
<string notr="true">special_op_activity_button_group</string>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="2" column="3">
|
<item row="2" column="3">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
|
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
|
||||||
<item>
|
<item>
|
||||||
@ -3337,12 +3356,12 @@ Right click for insert and delete options.</string>
|
|||||||
</connections>
|
</connections>
|
||||||
<buttongroups>
|
<buttongroups>
|
||||||
<buttongroup name="split_mode_button_group"/>
|
<buttongroup name="split_mode_button_group"/>
|
||||||
|
<buttongroup name="CAT_data_bits_button_group"/>
|
||||||
|
<buttongroup name="PTT_method_button_group"/>
|
||||||
|
<buttongroup name="CAT_handshake_button_group"/>
|
||||||
<buttongroup name="TX_audio_source_button_group"/>
|
<buttongroup name="TX_audio_source_button_group"/>
|
||||||
<buttongroup name="special_op_activity_button_group"/>
|
<buttongroup name="special_op_activity_button_group"/>
|
||||||
<buttongroup name="TX_mode_button_group"/>
|
<buttongroup name="TX_mode_button_group"/>
|
||||||
<buttongroup name="CAT_handshake_button_group"/>
|
|
||||||
<buttongroup name="CAT_data_bits_button_group"/>
|
|
||||||
<buttongroup name="PTT_method_button_group"/>
|
|
||||||
<buttongroup name="CAT_stop_bits_button_group"/>
|
<buttongroup name="CAT_stop_bits_button_group"/>
|
||||||
</buttongroups>
|
</buttongroups>
|
||||||
</ui>
|
</ui>
|
||||||
|
@ -3380,8 +3380,9 @@ void MainWindow::decode() //decode()
|
|||||||
if(m_config.decode_at_52s()) dec_data.params.emedelay=2.5;
|
if(m_config.decode_at_52s()) dec_data.params.emedelay=2.5;
|
||||||
dec_data.params.minSync=ui->syncSpinBox->isVisible () ? m_minSync : 0;
|
dec_data.params.minSync=ui->syncSpinBox->isVisible () ? m_minSync : 0;
|
||||||
dec_data.params.nexp_decode=int(m_specOp);
|
dec_data.params.nexp_decode=int(m_specOp);
|
||||||
if(dec_data.params.nexp_decode==5) dec_data.params.nexp_decode=1; //NA VHF, WW Digi, and ARRL Digi
|
if(dec_data.params.nexp_decode==5) dec_data.params.nexp_decode=1; //NA VHF, WW Digi, ARRL Digi contests
|
||||||
if(dec_data.params.nexp_decode==8) dec_data.params.nexp_decode=1; //contests all use grid exchange
|
if(dec_data.params.nexp_decode==8) dec_data.params.nexp_decode=1; //and Q65 Pileup all use 4-character
|
||||||
|
if(dec_data.params.nexp_decode==9) dec_data.params.nexp_decode=1; //grid exchange
|
||||||
if(m_config.single_decode()) dec_data.params.nexp_decode += 32;
|
if(m_config.single_decode()) dec_data.params.nexp_decode += 32;
|
||||||
if(m_config.enable_VHF_features()) dec_data.params.nexp_decode += 64;
|
if(m_config.enable_VHF_features()) dec_data.params.nexp_decode += 64;
|
||||||
if(m_mode.startsWith("FST4")) dec_data.params.nexp_decode += 256*(ui->sbNB->value()+3);
|
if(m_mode.startsWith("FST4")) dec_data.params.nexp_decode += 256*(ui->sbNB->value()+3);
|
||||||
@ -3565,7 +3566,8 @@ void MainWindow::decodeDone ()
|
|||||||
if(m_mode!="FT8" or dec_data.params.nzhsym==50) m_nDecodes=0;
|
if(m_mode!="FT8" or dec_data.params.nzhsym==50) m_nDecodes=0;
|
||||||
|
|
||||||
if(m_mode=="Q65" and (m_specOp==SpecOp::NA_VHF or m_specOp==SpecOp::ARRL_DIGI
|
if(m_mode=="Q65" and (m_specOp==SpecOp::NA_VHF or m_specOp==SpecOp::ARRL_DIGI
|
||||||
or m_specOp==SpecOp::WW_DIGI) and m_ActiveStationsWidget!=NULL) {
|
or m_specOp==SpecOp::WW_DIGI or m_specOp==SpecOp::Q65_PILEUP)
|
||||||
|
and m_ActiveStationsWidget!=NULL) {
|
||||||
|
|
||||||
int nlist=0;
|
int nlist=0;
|
||||||
char list[2000];
|
char list[2000];
|
||||||
@ -3579,11 +3581,16 @@ void MainWindow::decodeDone ()
|
|||||||
get_q3list_(const_cast<char *> (fname.toLatin1().constData()), &nlist,
|
get_q3list_(const_cast<char *> (fname.toLatin1().constData()), &nlist,
|
||||||
&list[0], (FCL)fname.length(), (FCL)2000);
|
&list[0], (FCL)fname.length(), (FCL)2000);
|
||||||
QString t="";
|
QString t="";
|
||||||
|
QString t0="";
|
||||||
for(int i=0; i<nlist; i++) {
|
for(int i=0; i<nlist; i++) {
|
||||||
memcpy(line,&list[36*i],36);
|
memcpy(line,&list[36*i],36);
|
||||||
t+=QString::fromLatin1(line)+"\n";
|
t0=QString::fromLatin1(line)+"\n";
|
||||||
|
m_callers[i]=t0;
|
||||||
|
t+=t0;
|
||||||
}
|
}
|
||||||
|
m_ActiveStationsWidget->setClickOK(false);
|
||||||
m_ActiveStationsWidget->displayRecentStations("Q65-pileup",t);
|
m_ActiveStationsWidget->displayRecentStations("Q65-pileup",t);
|
||||||
|
m_ActiveStationsWidget->setClickOK(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3750,6 +3757,24 @@ void MainWindow::callSandP2(int n)
|
|||||||
{
|
{
|
||||||
if(m_mode!="Q65" and m_ready2call[n]=="") return;
|
if(m_mode!="Q65" and m_ready2call[n]=="") return;
|
||||||
QStringList w=m_ready2call[n].split(' ', SkipEmptyParts);
|
QStringList w=m_ready2call[n].split(' ', SkipEmptyParts);
|
||||||
|
if(m_mode=="Q65" and m_specOp==SpecOp::Q65_PILEUP) {
|
||||||
|
// This is the mode for 6m EME DXpeditions
|
||||||
|
w=m_callers[n].split(' ', SkipEmptyParts);
|
||||||
|
m_deCall=w[2];
|
||||||
|
m_deGrid=w[3];
|
||||||
|
m_bDoubleClicked=true; //### needed?
|
||||||
|
m_txFirst=true;
|
||||||
|
ui->dxCallEntry->setText(m_deCall);
|
||||||
|
ui->dxGridEntry->setText(m_deGrid);
|
||||||
|
ui->txFirstCheckBox->setChecked(m_txFirst);
|
||||||
|
genStdMsgs("-22");
|
||||||
|
setTxMsg(3);
|
||||||
|
if (!ui->autoButton->isChecked()) ui->autoButton->click(); // Enable Tx
|
||||||
|
if(m_transmitting) m_restart=true;
|
||||||
|
// qDebug() << "aa" << int(m_specOp) << n << m_callers[n];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(m_mode=="Q65") {
|
if(m_mode=="Q65") {
|
||||||
double kHz=w[1].toDouble();
|
double kHz=w[1].toDouble();
|
||||||
int nMHz=m_freqNominal/1000000;
|
int nMHz=m_freqNominal/1000000;
|
||||||
@ -4877,7 +4902,8 @@ void MainWindow::guiUpdate()
|
|||||||
SpecOp::FIELD_DAY==m_specOp or
|
SpecOp::FIELD_DAY==m_specOp or
|
||||||
SpecOp::RTTY==m_specOp or
|
SpecOp::RTTY==m_specOp or
|
||||||
SpecOp::WW_DIGI==m_specOp or
|
SpecOp::WW_DIGI==m_specOp or
|
||||||
SpecOp::ARRL_DIGI==m_specOp) ) {
|
SpecOp::ARRL_DIGI==m_specOp or
|
||||||
|
SpecOp::Q65_PILEUP==m_specOp) ) {
|
||||||
//We're in a contest-like mode other than EU_VHF: start QSO with Tx2.
|
//We're in a contest-like mode other than EU_VHF: start QSO with Tx2.
|
||||||
ui->tx1->setEnabled(false);
|
ui->tx1->setEnabled(false);
|
||||||
ui->txb1->setEnabled(false);
|
ui->txb1->setEnabled(false);
|
||||||
@ -5521,7 +5547,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
or bEU_VHF_w2 or (m_QSOProgress==CALLING))) {
|
or bEU_VHF_w2 or (m_QSOProgress==CALLING))) {
|
||||||
if(message_words.at(4).contains(grid_regexp) and SpecOp::EU_VHF!=m_specOp) {
|
if(message_words.at(4).contains(grid_regexp) and SpecOp::EU_VHF!=m_specOp) {
|
||||||
if((SpecOp::NA_VHF==m_specOp or SpecOp::WW_DIGI==m_specOp or
|
if((SpecOp::NA_VHF==m_specOp or SpecOp::WW_DIGI==m_specOp or
|
||||||
SpecOp::ARRL_DIGI==m_specOp )
|
SpecOp::ARRL_DIGI==m_specOp or SpecOp::Q65_PILEUP==m_specOp)
|
||||||
and bContestOK) {
|
and bContestOK) {
|
||||||
setTxMsg(3);
|
setTxMsg(3);
|
||||||
m_QSOProgress=ROGER_REPORT;
|
m_QSOProgress=ROGER_REPORT;
|
||||||
@ -6009,6 +6035,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
|
|||||||
if(SpecOp::NA_VHF==m_specOp) sent=my_grid;
|
if(SpecOp::NA_VHF==m_specOp) sent=my_grid;
|
||||||
if(SpecOp::WW_DIGI==m_specOp) sent=my_grid;
|
if(SpecOp::WW_DIGI==m_specOp) sent=my_grid;
|
||||||
if(SpecOp::ARRL_DIGI==m_specOp) sent=my_grid;
|
if(SpecOp::ARRL_DIGI==m_specOp) sent=my_grid;
|
||||||
|
if(SpecOp::Q65_PILEUP==m_specOp) sent=my_grid;
|
||||||
if(SpecOp::FIELD_DAY==m_specOp) sent=m_config.Field_Day_Exchange();
|
if(SpecOp::FIELD_DAY==m_specOp) sent=m_config.Field_Day_Exchange();
|
||||||
if(SpecOp::RTTY==m_specOp) {
|
if(SpecOp::RTTY==m_specOp) {
|
||||||
sent=rst + m_config.RTTY_Exchange();
|
sent=rst + m_config.RTTY_Exchange();
|
||||||
@ -6949,8 +6976,9 @@ void MainWindow::on_actionFT8_triggered()
|
|||||||
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
||||||
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
||||||
if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
|
if(SpecOp::WW_DIGI==m_specOp) t0="WW Digi";
|
||||||
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
|
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL Digi";
|
||||||
|
if(SpecOp::Q65_PILEUP==m_specOp) t0="Q65 Pileup";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
@ -7185,8 +7213,9 @@ void MainWindow::on_actionQ65_triggered()
|
|||||||
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
||||||
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
||||||
if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
|
if(SpecOp::WW_DIGI==m_specOp) t0="WW Digi";
|
||||||
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
|
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL Digi";
|
||||||
|
if(SpecOp::Q65_PILEUP==m_specOp) t0="Q65 Pileup";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
@ -10254,8 +10283,9 @@ void MainWindow::chkFT4()
|
|||||||
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
if(SpecOp::EU_VHF==m_specOp) t0="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
if(SpecOp::FIELD_DAY==m_specOp) t0="Field Day";
|
||||||
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
if(SpecOp::RTTY==m_specOp) t0="FT RU";
|
||||||
if(SpecOp::WW_DIGI==m_specOp) t0="WW_DIGI";
|
if(SpecOp::WW_DIGI==m_specOp) t0="WW Digi";
|
||||||
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL_DIGI";
|
if(SpecOp::ARRL_DIGI==m_specOp) t0="ARRL Digi";
|
||||||
|
if(SpecOp::Q65_PILEUP==m_specOp) t0="Q65 Pileup";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
|
@ -667,6 +667,7 @@ private:
|
|||||||
QString m_deCall;
|
QString m_deCall;
|
||||||
QString m_deGrid;
|
QString m_deGrid;
|
||||||
QString m_ready2call[50];
|
QString m_ready2call[50];
|
||||||
|
QString m_callers[40];
|
||||||
|
|
||||||
QSet<QString> m_pfx;
|
QSet<QString> m_pfx;
|
||||||
QSet<QString> m_sfx;
|
QSet<QString> m_sfx;
|
||||||
|
Loading…
Reference in New Issue
Block a user