MAP65 wideband decoding tested and known working now for Q65-60A and Q65-60C.

This commit is contained in:
Joe Taylor 2021-05-14 11:52:23 -04:00
parent 25148a52e3
commit f2ca2124d4
3 changed files with 21 additions and 15 deletions

View File

@ -22,7 +22,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
character mycall*12,hiscall*12,mygrid*6,hisgrid*6,grid*6,cp*1,cm*1
integer indx(MAXMSG),nsiz(MAXMSG)
logical done(MAXMSG)
logical xpol,bq65
logical xpol,bq65,first_loop
character decoded*22,blank*22,cmode*2
real short(3,NFFT) !SNR dt ipol for potential shorthands
real qphi(12)
@ -39,27 +39,25 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
mfa=nfa-nkhz_center+48
mfb=nfb-nkhz_center+48
nts_jt65=2
nts_q65=1
mode65=mod(nmode,10)
if(mode65.eq.3) mode65=4
mode_q65=nmode/10
nts_jt65=2**(mode65-1)
nts_q65=2**(mode_q65)
if(nagain.eq.0) then
call timer('get_cand',0)
call get_candidates(ss,savg,mfa,mfb,nts_jt65,nts_q65,cand,ncand)
call timer('get_cand',1)
endif
!###
! print*,'=',nagain
! do k=1,ncand
! freq=cand(k)%f+77.0-1.27046
! freq=cand(k)%f+nkhz_center-48.0-1.27046
! write(*,3010) nutc,k,cand(k)%snr,cand(k)%f,freq,cand(k)%xdt, &
! cand(k)%ipol,cand(k)%iflip
!3010 format('= ',i4.4,i5,f10.1,3f10.3,2i3)
!3010 format('=aaa ',i4.4,i5,f10.1,3f10.3,2i3)
! enddo
! print*,'AAA',nfa,nfb,ncand
!###
mode65=mod(nmode,10)
if(mode65.eq.3) mode65=4
mode_q65=nmode/10
nwrite_q65=0
bq65=mode_q65.gt.0
@ -113,6 +111,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
jpz=1
if(xpol) jpz=4
first_loop=.true.
do i=ia,ib !Search over freq range
freq=0.001*(i-16385)*df
! Find the local base level for each polarization; update every 10 bins.
@ -216,9 +215,10 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
if(nqd.eq.1 .and. ntol.le.100) thresh1=0.
noffset=0
if(nqd.ge.1) noffset=nint(1000.0*(freq-fqso)-mousedf)
if(nqd.eq.2) then
if(first_loop) then !### For Q65 changes ??? ###
sync1=thresh1+1.0
noffset=0
first_loop=.false.
endif
if(sync1.gt.thresh1 .and. abs(noffset).le.ntol) then
! Keep only the best candidate within ftol.
@ -357,7 +357,7 @@ 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
freq=cand(n)%f+nkhz_center-48.0-1.27046
if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle
ikhz=nint(freq)
! write(*,3201) nqd,freq,mousefqso,mousedf,ntol,mycall,hiscall,hisgrid
@ -390,7 +390,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
if(nqd.eq.0) then
do n=1,ncand
if(cand(n)%iflip.ne.0) cycle
freq=cand(n)%f+77.0-1.27046
freq=cand(n)%f+nkhz_center-48.0-1.27046
if(nqd.eq.1 .and. abs(freq-mousefqso).gt.0.001*ntol) cycle
ikhz=nint(freq)
! write(*,3202) nqd,freq,mousefqso,mousedf,ntol

View File

@ -32,6 +32,9 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
common/cacb/ca,cb
save
write(71,*) nutc,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
mycall0,hiscall0,hisgrid,mode_q65
open(9,file='wsjtx_dir.txt',status='old')
read(9,'(a)') wsjtx_dir !Establish the working directory
close(9)
@ -53,7 +56,10 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
snr1=sync(ipk)%ccfmax
ipol=1
if(xpol) ipol=sync(ipk)%ipol
! print*,'=A',nqd,ikhz,ff,ifreq,0.001*ia*df3+77,0.001*ib*df3+77
! print*,'=CCC',nqd,nkhz_center,ikhz,ff,ifreq, &
! 0.001*ia*df3+nkhz_center-48.0-1.27046, &
! 0.001*ib*df3+nkhz_center-48.0-1/27046
! print*,'=CCC2',sum(abs(ca)),sum(abs(cb))
!###
nfft1=MAXFFT1

View File

@ -56,7 +56,7 @@ call wb_sync(ss,savg,jz,nfa,nfb)
n=indx(iz+1-i) + ia - 1
f0=0.001*(n-1)*df3
snr1=sync(n)%ccfmax
! print*,'=',f0,snr1
! print*,'=A',f0,snr1
if(snr1.lt.4.5) exit
flip=sync(n)%iflip
if(flip.ne.0.0 .and. nts_jt65.eq.0) cycle