diff --git a/lib/decoder.f90 b/lib/decoder.f90 index d1a530092..eb517b71e 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -205,7 +205,8 @@ subroutine multimode_decoder(ss,id2,params,nfsample) open(17,file=trim(temp_dir)//'/red.dat',status='unknown') open(14,file=trim(temp_dir)//'/avemsg.txt',status='unknown') call timer('dec_q65 ',0) - call my_q65%decode(q65_decoded,id2,params%nutc,params%ntr, & + nqd=1 + call my_q65%decode(q65_decoded,id2,nqd,params%nutc,params%ntr, & params%nsubmode,params%nfqso,params%ntol,params%ndepth, & params%nfa,params%nfb,logical(params%nclearave), & single_decode,logical(params%nagain), & diff --git a/lib/map65_mmdec.f90 b/lib/map65_mmdec.f90 index 24a54c9ca..144b99480 100644 --- a/lib/map65_mmdec.f90 +++ b/lib/map65_mmdec.f90 @@ -1,5 +1,5 @@ -subroutine map65_mmdec(nutc,id2,nsubmode,nfa,nfb,nfqso,ntol,newdat,nagain, & - mycall,hiscall,hisgrid) +subroutine map65_mmdec(nutc,id2,nqd,nsubmode,nfa,nfb,nfqso,ntol,newdat, & + nagain,mycall,hiscall,hisgrid) use prog_args use timer_module, only: timer @@ -47,7 +47,7 @@ subroutine map65_mmdec(nutc,id2,nsubmode,nfa,nfb,nfqso,ntol,newdat,nagain, & open(14,file=trim(temp_dir)//'/avemsg.txt',status='unknown') call timer('dec_q65 ',0) - call my_q65%decode(q65_decoded,id2,nutc,ntrperiod,nsubmode,nfqso, & + call my_q65%decode(q65_decoded,id2,nqd,nutc,ntrperiod,nsubmode,nfqso, & ntol,ndepth,nfa,nfb,lclearave,single_decode,lagain,lnewdat, & emedelay,mycall,hiscall,hisgrid,nQSOProgress,ncontest,lapcqonly,navg0) call timer('dec_q65 ',1) diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index d0c8904ba..c5704da28 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -30,8 +30,8 @@ module q65_decode contains - subroutine decode(this,callback,iwave,nutc,ntrperiod,nsubmode,nfqso, & - ntol,ndepth,nfa0,nfb0,lclearave,single_decode,lagain,lnewdat0, & + subroutine decode(this,callback,iwave,nqd,nutc,ntrperiod,nsubmode,nfqso, & + ntol,ndepth,nfa0,nfb0,lclearave,single_decode,lagain,lnewdat0, & emedelay,mycall,hiscall,hisgrid,nQSOprogress,ncontest,lapcqonly,navg0) ! Top-level routine that organizes the decoding of Q65 signals @@ -135,10 +135,12 @@ contains ! Generate codewords for full-AP list decoding if(ichar(hiscall(1:1)).eq.0) hiscall=' ' if(ichar(hisgrid(1:1)).eq.0) hisgrid=' ' - call q65_set_list(mycall,hiscall,hisgrid,codewords,ncw) + ncw=0 + if(nqd.eq.1 .or. lagain) then + call q65_set_list(mycall,hiscall,hisgrid,codewords,ncw) + endif dgen=0 call q65_enc(dgen,codewords) !Initialize the Q65 codec - nused=1 iavg=0 call timer('q65_dec0',0) diff --git a/map65/libm65/map65a.f90 b/map65/libm65/map65a.f90 index 1c5e22109..4cd4410ca 100644 --- a/map65/libm65/map65a.f90 +++ b/map65/libm65/map65a.f90 @@ -41,7 +41,6 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & mfb=nfb-nkhz_center+48 nts_jt65=2 nts_q65=1 - ncand=0 if(nagain.eq.0) then call timer('get_cand',0) call get_candidates(ss,savg,mfa,mfb,nts_jt65,nts_q65,cand,ncand) @@ -126,7 +125,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & else write(13,*) 'Error in iii:',iii,ia,ib,fa,fb flush(13) - go to 999 + go to 900 endif enddo call pctile(tavg,101,50,base(jp)) @@ -236,12 +235,12 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & write(*,*) '! Signal too strong, or suspect data? Decoding aborted.' write(13,*) 'Signal too strong, or suspect data? Decoding aborted.' call flush(13) - go to 999 + go to 900 endif call timer('decode1a',0) ifreq=i - ikHz=nint(freq+0.5*(nfa+nfb)-foffset)-nfshift + ikhz=nint(freq+0.5*(nfa+nfb)-foffset)-nfshift idf=nint(1000.0*(freq+0.5*(nfa+nfb)-foffset-(ikHz+nfshift))) call decode1a(dd,newdat,f00,nflip,mode65,nfsample, & xpol,mycall,hiscall,hisgrid,neme,ndepth,nqd,dphi, & @@ -359,10 +358,10 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & do n=1,ncand if(cand(n)%iflip.ne.0) cycle freq=cand(n)%f+77.0-1.27046 - if(nqd.eq.1 .and. abs(freq-mousefqso).gt.float(ntol)) cycle + if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle ikhz=nint(freq) -! write(*,3201) nqd,freq,mousefqso,mousedf,ntol -!3201 format('=A',i3,f10.3,3i5) +! write(*,3201) nqd,freq,mousefqso,mousedf,ntol,mycall,hiscall,hisgrid +!3201 format('=A',i3,f10.3,3i5,2a12,a6) call timer('q65b ',0) call q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz, & mousedf,ntol,xpol,mycall,hiscall,hisgrid,mode_q65) @@ -386,13 +385,13 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & 1013 format('',2i4) flush(6) endif - if(nqd.eq.1 .and. nagain.eq.1) go to 999 + if(nqd.eq.1 .and. nagain.eq.1) go to 900 if(nqd.eq.0) then do n=1,ncand if(cand(n)%iflip.ne.0) cycle freq=cand(n)%f+77.0-1.27046 - if(nqd.eq.1 .and. abs(freq-mousefqso).gt.float(ntol)) cycle + if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle ikhz=nint(freq) ! write(*,3202) nqd,freq,mousefqso,mousedf,ntol !3202 format('=B',i3,f10.3,3i5) @@ -520,7 +519,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, & call display(nkeep,ftol) ndecdone=2 -999 close(23) +900 close(23) ndphi=0 nagain=0 mcall3b=mcall3a diff --git a/map65/libm65/q65b.f90 b/map65/libm65/q65b.f90 index 01f02191f..88951ce2f 100644 --- a/map65/libm65/q65b.f90 +++ b/map65/libm65/q65b.f90 @@ -53,7 +53,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & snr1=sync(ipk)%ccfmax ipol=1 if(xpol) ipol=sync(ipk)%ipol -! print*,'BBB',ipk00,ipk,snr1,ipol +! print*,'=A',nqd,ikhz,ff,ifreq,0.001*ia*df3+77,0.001*ib*df3+77 !### nfft1=MAXFFT1 @@ -129,7 +129,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, & nsnr0=-99 !Default snr for no decode ! NB: Frequency of ipk is now shifted to 1000 Hz. - call map65_mmdec(nutc,iwave,nsubmode,nfa,nfb,1000,ntol, & + call map65_mmdec(nutc,iwave,nqd,nsubmode,nfa,nfb,1000,ntol, & newdat,nagain,mycall,hiscall,hisgrid) nfreq=nfreq0 + nhz + mousedf - 1000