diff --git a/commons.h b/commons.h index a40607174..ee10ff1bb 100644 --- a/commons.h +++ b/commons.h @@ -42,6 +42,7 @@ extern struct dec_data { bool nagain; int ndepth; bool lft8apon; + bool lapcqonly; bool ljt65apon; int napwid; int ntxmode; diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 5b2e12a8d..600314a31 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -76,8 +76,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) call my_ft8%decode(ft8_decoded,id2,params%nQSOProgress,params%nfqso, & params%nftx,newdat,params%nutc,params%nfa,params%nfb, & params%nexp_decode,params%ndepth,logical(params%nagain), & - logical(params%lft8apon),params%napwid,params%mycall, & - params%mygrid,params%hiscall,params%hisgrid) + logical(params%lft8apon),logical(params%lapcqonly),params%napwid, & + params%mycall,params%mygrid,params%hiscall,params%hisgrid) call timer('decft8 ',1) n15min=minval(n15fox(1:nfox)) n15max=maxval(n15fox(1:nfox)) diff --git a/lib/ft8/ft8b.f90 b/lib/ft8/ft8b.f90 index 3049dfd43..f01466fc9 100644 --- a/lib/ft8/ft8b.f90 +++ b/lib/ft8/ft8b.f90 @@ -1,6 +1,6 @@ -subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,napwid, & - lsubtract,nagain,iaptype,mygrid6,bcontest,sync0,f1,xdt,xbase,apsym, & - nharderrors,dmin,nbadcrc,ipass,iera,message,xsnr) +subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,lapcqonly, & + napwid,lsubtract,nagain,iaptype,mygrid6,bcontest,sync0,f1,xdt,xbase, & + apsym,nharderrors,dmin,nbadcrc,ipass,iera,message,xsnr) use timer_module, only: timer include 'ft8_params.f90' @@ -27,7 +27,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,napwid, & complex cd0(3200) complex ctwk(32) complex csymb(32) - logical first,newdat,lsubtract,lapon,nagain + logical first,newdat,lsubtract,lapon,lapcqonly,nagain equivalence (s1,s1sort) data icos7/2,5,6,0,4,1,3/ data mcq/1,1,1,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,1,1,0,0,0,1,1,0,0,1/ @@ -66,7 +66,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,napwid, & naptypes(2,1:4)=(/2,3,0,0/) naptypes(3,1:4)=(/3,4,5,6/) naptypes(4,1:4)=(/3,4,5,6/) - naptypes(5,1:4)=(/3,1,2,0/) !? + naptypes(5,1:4)=(/3,1,2,0/) first=.false. endif @@ -265,7 +265,11 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,napwid, & ! 7 ap pass 4, etc. if(lapon) then - npasses=4+nappasses(nQSOProgress) + if(.not.lapcqonly) then + npasses=4+nappasses(nQSOProgress) + else + npasses=5 + endif else npasses=4 endif @@ -283,7 +287,11 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,lapon,napwid, & endif if(ipass .gt. 4) then - iaptype=naptypes(nQSOProgress,ipass-4) + if(.not.lapcqonly) then + iaptype=naptypes(nQSOProgress,ipass-4) + else + iaptype=1 + endif if(iaptype.ge.3 .and. (abs(f1-nfqso).gt.napwid .and. abs(f1-nftx).gt.napwid) ) cycle if(iaptype.eq.1 .or. iaptype.eq.2 ) then ! AP,???,??? apmask=0 diff --git a/lib/ft8_decode.f90 b/lib/ft8_decode.f90 index ed6360e20..11e83c0c9 100644 --- a/lib/ft8_decode.f90 +++ b/lib/ft8_decode.f90 @@ -32,9 +32,9 @@ module ft8_decode contains - subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, & - nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,napwid,mycall12, & - mygrid6,hiscall12,hisgrid6) + subroutine decode(this,callback,iwave,nQSOProgress,nfqso,nftx,newdat, & + nutc,nfa,nfb,nexp_decode,ndepth,nagain,lft8apon,lapcqonly,napwid, & + mycall12,mygrid6,hiscall12,hisgrid6) ! use wavhdr use timer_module, only: timer include 'ft8/ft8_params.f90' @@ -46,7 +46,7 @@ contains real sbase(NH1) real candidate(3,200) real dd(15*12000) - logical, intent(in) :: lft8apon,nagain + logical, intent(in) :: lft8apon,lapcqonly,nagain logical newdat,lsubtract,ldupe,bcontest character*12 mycall12, hiscall12 character*6 mygrid6,hisgrid6 @@ -105,9 +105,9 @@ contains xbase=10.0**(0.1*(sbase(nint(f1/3.125))-40.0)) nsnr0=min(99,nint(10.0*log10(sync) - 25.5)) !### empirical ### call timer('ft8b ',0) - call ft8b(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon,napwid, & - lsubtract,nagain,iaptype,mygrid6,bcontest,sync,f1,xdt,xbase, & - apsym,nharderrors,dmin,nbadcrc,iappass,iera,message,xsnr) + call ft8b(dd,newdat,nQSOProgress,nfqso,nftx,ndepth,lft8apon,lapcqonly, & + napwid,lsubtract,nagain,iaptype,mygrid6,bcontest,sync,f1,xdt, & + xbase,apsym,nharderrors,dmin,nbadcrc,iappass,iera,message,xsnr) nsnr=nint(xsnr) xdt=xdt-0.5 hd=nharderrors+dmin diff --git a/lib/jt9com.f90 b/lib/jt9com.f90 index 7d4332d19..be44f3b6f 100644 --- a/lib/jt9com.f90 +++ b/lib/jt9com.f90 @@ -24,6 +24,7 @@ logical(c_bool) :: nagain integer(c_int) :: ndepth logical(c_bool) :: lft8apon + logical(c_bool) :: lapcqonly logical(c_bool) :: ljt65apon integer(c_int) :: napwid integer(c_int) :: ntxmode diff --git a/mainwindow.cpp b/mainwindow.cpp index 9a9dcd084..9503d99c7 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2517,11 +2517,21 @@ void MainWindow::msgAvgDecode2() void MainWindow::decode() //decode() { + + QDateTime now = QDateTime::currentDateTime(); if( m_dateTimeLastTX.isValid () ) { - QDateTime now = QDateTime::currentDateTime(); qint64 isecs_since_tx = m_dateTimeLastTX.secsTo(now); -// QTextStream(stdout) << "The last TX was " << isecs_since_tx << "seconds ago" << endl; + dec_data.params.lapcqonly= (isecs_since_tx > 600); +// QTextStream(stdout) << "last tx " << isecs_since_tx << endl; + } else { + m_dateTimeLastTX = now.addSecs(-900); + dec_data.params.lapcqonly=true; } + if( m_diskData ) { + dec_data.params.lapcqonly=false; + } +// QTextStream(stdout) << " lapcqonly is " << dec_data.params.lapcqonly << endl; + m_msec0=QDateTime::currentMSecsSinceEpoch(); if(!m_dataAvailable or m_TRperiod==0) return; ui->DecodeButton->setChecked (true);