Enable q3 decodes, but only at the QSO freq.

This commit is contained in:
Joe Taylor 2021-05-13 15:33:52 -04:00
parent ebfe352834
commit 8034a006d7
5 changed files with 22 additions and 20 deletions

View File

@ -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), &

View File

@ -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)

View File

@ -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)

View File

@ -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('<QuickDecodeDone>',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

View File

@ -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