mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 21:40:52 -05: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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user