diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 0c4da1674..14bab01a6 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -199,8 +199,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) call timer('dec240 ',0) call my_fst4%decode(fst4_decoded,id2,params%nutc, & params%nQSOProgress,params%nfa,params%nfb, & - params%nfqso,ndepth,params%ntr, & - params%nexp_decode,params%ntol,params%emedelay, & + params%nfqso,ndepth,params%ntr,params%nexp_decode, & + params%ntol,params%emedelay,logical(params%nagain), & logical(params%lapcqonly),mycall,hiscall,iwspr) call timer('dec240 ',1) go to 800 @@ -213,8 +213,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) call timer('dec240 ',0) call my_fst4%decode(fst4_decoded,id2,params%nutc, & params%nQSOProgress,params%nfa,params%nfb, & - params%nfqso,ndepth,params%ntr, & - params%nexp_decode,params%ntol,params%emedelay, & + params%nfqso,ndepth,params%ntr,params%nexp_decode, & + params%ntol,params%emedelay,logical(params%nagain), & logical(params%lapcqonly),mycall,hiscall,iwspr) call timer('dec240 ',1) go to 800 diff --git a/lib/fst4_decode.f90 b/lib/fst4_decode.f90 index 257705510..577613c7f 100644 --- a/lib/fst4_decode.f90 +++ b/lib/fst4_decode.f90 @@ -30,7 +30,7 @@ module fst4_decode contains subroutine decode(this,callback,iwave,nutc,nQSOProgress,nfa,nfb,nfqso, & - ndepth,ntrperiod,nexp_decode,ntol,emedelay,lapcqonly,mycall, & + ndepth,ntrperiod,nexp_decode,ntol,emedelay,lagain,lapcqonly,mycall, & hiscall,iwspr) use timer_module, only: timer @@ -53,9 +53,10 @@ contains real bitmetrics(320,4) real s4(0:3,NN) real minsync - logical lapcqonly + logical lagain,lapcqonly integer itone(NN) integer hmod + integer ipct(0:7) integer*1 apmask(240),cw(240) integer*1 message101(101),message74(74),message77(77) integer*1 rvec(77) @@ -69,6 +70,7 @@ contains integer*2 iwave(30*60*12000) + data ipct/0,8,14,4,12,2,10,6/ data mcq/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0/ data mrrr/0,1,1,1,1,1,1,0,1,0,0,1,0,0,1,0,0,0,1/ data m73/0,1,1,1,1,1,1,0,1,0,0,1,0,1,0,0,0,0,1/ @@ -223,7 +225,23 @@ contains endif ndropmax=1 - npct=nexp_decode/256 + single_decode=iand(nexp_decode,32).ne.0 + inb0=0 + inb1=0 + if((single_decode .or. lagain) .and. (ntol.le.20 .or. iwspr.ne.0)) then + inb1=20 + else + ipct(0)=nexp_decode/256 + endif + + ndecodes=0 + decodes=' ' + + do inb=inb0,inb1,2 +! npct=ipct(inb) + npct=inb + write(*,3001) inb,inb1,lagain,single_decode,npct,ntol +3001 format(2i4,2L3,2i5) call blanker(iwave,nfft1,ndropmax,npct,c_bigfft) ! The big fft is done once and is used for calculating the smoothed spectrum @@ -232,7 +250,6 @@ contains nhicoh=1 nsyncoh=8 - single_decode=iand(nexp_decode,32).ne.0 if(iwspr.eq.1) then !FST4W nfa=max(100,nint(nfqso+1.5*baud-150)) ! 300 Hz wide noise-fit window nfb=min(4800,nint(nfqso+1.5*baud+150)) @@ -256,9 +273,6 @@ contains call get_candidates_fst4(c_bigfft,nfft1,nsps,hmod,fs,fa,fb,nfa,nfb, & minsync,ncand,candidates0) - ndecodes=0 - decodes=' ' - isbest=0 fc2=0. do icand=1,ncand @@ -510,6 +524,7 @@ contains enddo ! metrics enddo ! istart jitter 2002 enddo !candidate list + enddo return end subroutine decode