Remove unused code from sh65.f90. Make csync a 2-character flag.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6666 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-05-04 18:16:09 +00:00
parent 8cef34fe11
commit a402645e75
4 changed files with 27 additions and 43 deletions

View File

@ -1,6 +1,6 @@
subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
naggressive,ndepth,ntol,mycall,hiscall,hisgrid,nexp_decode, &
single_decode,sync2,a,dt,nft,qual,nhist,nsmo,decoded)
single_decode,sync2,a,dt,nft,nspecial,qual,nhist,nsmo,decoded)
! Apply AFC corrections to a candidate JT65 signal, then decode it.
@ -31,15 +31,11 @@ subroutine decode65a(dd,npts,newdat,nqd,f0,nflip,mode65,ntrials, &
! Check for a shorthand message
if(single_decode) then
call sh65(cx,n5,mode65,ntol,xdf,nspecial,snrdb)
call sh65(cx,n5,mode65,ntol,xdf,nspecial,sync2)
if(nspecial.gt.0) then
a=0.
a(1)=xdf
if(nspecial.eq.2) decoded='RO'
if(nspecial.eq.3) decoded='RRR'
if(nspecial.eq.4) decoded='73'
nflip=0
sync2=snrdb
go to 900
endif
endif

View File

@ -229,7 +229,7 @@ contains
integer i,n
character*5 ctail
character*22 decoded
character*1 csync
character*2 csync
character*36 c
data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
@ -256,11 +256,11 @@ contains
if(qual.lt.3) decoded(21:21)='?'
endif
endif
csync=' '
csync='# '
if(nflip.ne.0 .and. sync.ge.max(0.0,float(minsync))) then
csync='*'
csync='#*'
if(nflip.eq.-1) then
csync='#'
csync='##'
if(decoded.ne.' ') then
do i=22,1,-1
if(decoded(i:i).ne.' ') exit
@ -270,7 +270,7 @@ contains
endif
endif
write(*,1010) utc,snr,dt,freq,csync,decoded,ctail
1010 format(i4.4,i4,f5.1,i5,1x,a1,1x,a22,a5)
1010 format(i4.4,i4,f5.1,i5,1x,a2,1x,a22,a5)
endif
write(13,1012) utc,nint(sync),snr,dt,float(freq),drift,decoded,ft,nsum,nsmo

View File

@ -196,8 +196,11 @@ contains
call timer('decod65a',0)
call decode65a(dd,npts,first_time,nqd,freq,nflip,mode65,nvec, &
naggressive,ndepth,ntol,mycall,hiscall,hisgrid, &
nexp_decode,single_decode,sync2,a,dtx,nft,qual,nhist, &
nsmo,decoded)
nexp_decode,single_decode,sync2,a,dtx,nft,nspecial,qual, &
nhist,nsmo,decoded)
if(nspecial.eq.2) decoded='RO'
if(nspecial.eq.3) decoded='RRR'
if(nspecial.eq.4) decoded='73'
call timer('decod65a',1)
if(sync1.lt.float(minsync) .and. &
decoded.eq.' ') nflip=0
@ -218,6 +221,7 @@ contains
ndrift=nint(2.0*a(2))
if(single_decode) then
s2db=sync1 - 30.0 + db(width/3.3) !### VHF/UHF/microwave
if(nspecial.gt.0) s2db=sync2
else
s2db=10.0*log10(sync2) - 35 !### empirical (HF)
endif

View File

@ -73,38 +73,22 @@ subroutine sh65(cx,n5,mode65,ntol,xdf,nspecial,snrdb)
if(n2best.gt.8) n2best=nbest-4
xdf=min(ipk(nbest),ipk(n2best))*df
nspecial=0
if(abs(xdf).gt.ntol) go to 10
idiff=abs(ipk(nbest)-ipk(n2best))
xk=float(idiff)/nfac
k=nint(xk)
iderr=nint((xk-k)*nfac)
maxerr=nint(0.008*abs(idiff) + 0.51)
if(abs(iderr).le.maxerr .and. k.ge.2 .and. k.le.4) nspecial=k
nstest=0
if(nspecial.gt.0) then
call sh65snr(ss(ia2,nbest),ib2-ia2+1,snr1)
call sh65snr(ss(ia2,n2best),ib2-ia2+1,snr2)
snr=0.5*(snr1+snr2)
if(snr.gt.snrbest) then
snrbest=snr
nspecialbest=nspecial
nstest=snr/2.0 - 2.0 !Threshold set here
if(nstest.lt.0) nstest=0
if(nstest.gt.10) nstest=10
dfsh=nint(xdf)
iderrbest=iderr
snrdb=db(snr) - db(2500.0/df) - db(sqrt(nblks/4.0))+1.8
n1=nbest
n2=n2best
ipk1=ipk(n1)
ipk2=ipk(n2)
if(abs(xdf).le.ntol) then
idiff=abs(ipk(nbest)-ipk(n2best))
xk=float(idiff)/nfac
k=nint(xk)
iderr=nint((xk-k)*nfac)
maxerr=nint(0.008*abs(idiff) + 0.51)
if(abs(iderr).le.maxerr .and. k.ge.2 .and. k.le.4) nspecial=k
snrdb=-30.0
if(nspecial.gt.0) then
call sh65snr(ss(ia2,nbest),ib2-ia2+1,snr1)
call sh65snr(ss(ia2,n2best),ib2-ia2+1,snr2)
snr=0.5*(snr1+snr2)
snrdb=db(snr) - db(2500.0/df) - db(sqrt(nblks/4.0)) + 8.0
endif
if(snr1.lt.4.0 .or. snr2.lt.4.0 .or. snr.lt.5.0) nspecial=0
endif
if(nstest.eq.0) nspecial=0
10 continue
! print*,'a',ia2,ib2,snrdb,xdf,nspecial
return
end subroutine sh65