diff --git a/commons.h b/commons.h index 9bd097b6d..d568d34b4 100644 --- a/commons.h +++ b/commons.h @@ -64,6 +64,8 @@ typedef struct dec_data { char mygrid[6]; char hiscall[12]; char hisgrid[6]; + bool b_even_seq; + bool b_superfox; } params; } dec_data_t; diff --git a/lib/decoder.f90 b/lib/decoder.f90 index d105093d5..3386d5c41 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -124,8 +124,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample) if(params%nmode.eq.8) then ! We're in FT8 mode - - if(ncontest.eq.6) then + if(ncontest.eq.6) then !Fox=6, Hound=7 ! Fox mode: initialize and open houndcallers.txt inquire(file=trim(temp_dir)//'/houndcallers.txt',exist=ex) if(.not.ex) then @@ -140,19 +139,25 @@ subroutine multimode_decoder(ss,id2,params,nfsample) open(19,file=trim(temp_dir)//'/houndcallers.txt',status='unknown') endif - call timer('decft8 ',0) - newdat=params%newdat - if(params%emedelay.ne.0.0) then - id2(1:156000)=id2(24001:180000) ! Drop the first 2 seconds of data - id2(156001:180000)=0 + if(ncontest.eq.7 .and. params%b_superfox .and. params%b_even_seq) then +! Call the superFox decoder + print*,'Calling SuperFox decoder',params%nzhsym,params%b_superfox, & + params%b_even_seq + else + call timer('decft8 ',0) + newdat=params%newdat + if(params%emedelay.ne.0.0) then + id2(1:156000)=id2(24001:180000) ! Drop the first 2 seconds of data + id2(156001:180000)=0 + endif + call my_ft8%decode(ft8_decoded,id2,params%nQSOProgress,params%nfqso, & + params%nftx,newdat,params%nutc,params%nfa,params%nfb, & + params%nzhsym,params%ndepth,params%emedelay,ncontest, & + logical(params%nagain),logical(params%lft8apon), & + logical(params%lapcqonly),params%napwid,mycall,hiscall, & + params%ndiskdat) + call timer('decft8 ',1) endif - call my_ft8%decode(ft8_decoded,id2,params%nQSOProgress,params%nfqso, & - params%nftx,newdat,params%nutc,params%nfa,params%nfb, & - params%nzhsym,params%ndepth,params%emedelay,ncontest, & - logical(params%nagain),logical(params%lft8apon), & - logical(params%lapcqonly),params%napwid,mycall,hiscall, & - params%ndiskdat) - call timer('decft8 ',1) if(nfox.gt.0) then n30min=minval(n30fox(1:nfox)) n30max=maxval(n30fox(1:nfox)) diff --git a/lib/jt9com.f90 b/lib/jt9com.f90 index 5b2970c05..a156e9862 100644 --- a/lib/jt9com.f90 +++ b/lib/jt9com.f90 @@ -47,6 +47,8 @@ character(kind=c_char) :: mygrid(6) character(kind=c_char) :: hiscall(12) character(kind=c_char) :: hisgrid(6) + logical(c_bool) :: b_even_seq + logical(c_bool) :: b_superfox end type params_block type, bind(C) :: dec_data diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 6a757a84a..551c09be9 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -3456,6 +3456,12 @@ void MainWindow::decode() //decode() dec_data.params.nfb=m_wideGraph->Fmax(); if(m_mode=="FT8" and SpecOp::HOUND == m_specOp and !ui->cbRxAll->isChecked()) dec_data.params.nfb=1000; if(m_mode=="FT8" and SpecOp::FOX == m_specOp ) dec_data.params.nfqso=200; + dec_data.params.b_even_seq=(dec_data.params.nutc%10)==0; + dec_data.params.b_superfox=(m_config.superFox() and (SpecOp::FOX == m_specOp or SpecOp::HOUND == m_specOp)); + if(dec_data.params.b_superfox and dec_data.params.b_even_seq and m_ihsym<50) return; +// qDebug() << "aa" << dec_data.params.nutc << dec_data.params.b_even_seq +// << dec_data.params.b_superfox << m_ihsym; + dec_data.params.ntol=ui->sbFtol->value (); if(!m_config.enable_VHF_features()) { dec_data.params.ntol=20; @@ -3515,7 +3521,7 @@ void MainWindow::decode() //decode() 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_mode.startsWith("FST4")) dec_data.params.nexp_decode += 256*(ui->sbNB->value()+3); - dec_data.params.max_drift=ui->sbMaxDrift->value(); + dec_data.params.max_drift=ui->sbMaxDrift->value(); ::memcpy(dec_data.params.datetime, m_dateTime.toLatin1()+" ", sizeof dec_data.params.datetime); ::memcpy(dec_data.params.mycall, (m_config.my_callsign()+" ").toLatin1(), sizeof dec_data.params.mycall); @@ -7178,7 +7184,7 @@ void MainWindow::on_actionFT8_triggered() // 01234567890123456789012345678901234567 displayWidgets(nWidgets("11101000010011100001000000000010000000")); if(m_config.superFox()) { - ui->labDXped->setText(tr ("SuperFox")); + ui->labDXped->setText(tr ("Super Fox")); } else { ui->labDXped->setText(tr ("Fox")); } @@ -7194,7 +7200,7 @@ void MainWindow::on_actionFT8_triggered() // 01234567890123456789012345678901234567 displayWidgets(nWidgets("11101000010011000001000000000011000000")); if(m_config.superFox()) { - ui->labDXped->setText(tr ("SuperHound")); + ui->labDXped->setText(tr ("Super Hound")); } else { ui->labDXped->setText(tr ("Hound")); }