More tweaks to minimize false JT65 decodes when strong signals are present.

This commit is contained in:
Joe Taylor 2020-04-19 18:56:16 -04:00
parent d5d8b1c38d
commit b0a7cef3bd
2 changed files with 18 additions and 12 deletions

View File

@ -460,7 +460,6 @@ set (wsjt_FSRCS
lib/ft8/foxfilt.f90 lib/ft8/foxfilt.f90
lib/ft8/foxgen.f90 lib/ft8/foxgen.f90
lib/ft8/foxgen_wrap.f90 lib/ft8/foxgen_wrap.f90
lib/fqso_first.f90
lib/freqcal.f90 lib/freqcal.f90
lib/ft8/ft8apset.f90 lib/ft8/ft8apset.f90
lib/ft8/ft8b.f90 lib/ft8/ft8b.f90

View File

@ -98,6 +98,7 @@ contains
first_time=newdat first_time=newdat
dd=dd0 dd=dd0
ndecoded=0 ndecoded=0
ndecoded0=0
if(nsubmode.ge.100) then if(nsubmode.ge.100) then
! This is QRA64 mode ! This is QRA64 mode
@ -119,7 +120,7 @@ contains
single_decode=iand(nexp_decode,32).ne.0 .or. nagain single_decode=iand(nexp_decode,32).ne.0 .or. nagain
bVHF=iand(nexp_decode,64).ne.0 bVHF=iand(nexp_decode,64).ne.0
if( bVHF ) then if(bVHF) then
nvec=ntrials nvec=ntrials
npass=1 npass=1
if(n2pass.gt.1) npass=2 if(n2pass.gt.1) npass=2
@ -188,15 +189,9 @@ contains
ncand=0 ncand=0
call timer('sync65 ',0) call timer('sync65 ',0)
call sync65(nfa,nfb,ntol,nqsym,ca,ncand,nrob,bVHF) call sync65(nfa,nfb,ntol,nqsym,ca,ncand,nrob,bVHF)
ncand=min(ncand,50/ipass)
call timer('sync65 ',1) call timer('sync65 ',1)
! If a candidate was found within +/- ntol of nfqso, move it into ca(1).
call fqso_first(nfqso,ntol,ca,ncand)
if(single_decode) then
if(ncand.eq.0) ncand=1
if(abs(ca(1)%freq - f0).gt.width) width=2*df !### ??? ###
endif
mode65=2**nsubmode mode65=2**nsubmode
nflip=1 nflip=1
nqd=0 nqd=0
@ -238,6 +233,16 @@ contains
ljt65apon,bVHF,sync2,a,dtx,nft,nspecial,qual, & ljt65apon,bVHF,sync2,a,dtx,nft,nspecial,qual, &
nhist,nsmo,decoded) nhist,nsmo,decoded)
call timer('decod65a',1) call timer('decod65a',1)
if(.not.bVHF) then
if(abs(a(1)).gt.10.0/ipass) cycle
ibad=0
if(abs(a(1)).gt.5.0) ibad=1
if(abs(a(2)).gt.2.0) ibad=ibad+1
if(abs(dtx-1.0).gt.2.5) ibad=ibad+1
if(ibad.ge.2) cycle
endif
if(nspecial.eq.0 .and. sync1.eq.5.0 .and. dtx.eq.2.5) cycle if(nspecial.eq.0 .and. sync1.eq.5.0 .and. dtx.eq.2.5) cycle
if(nspecial.eq.2) decoded='RO' if(nspecial.eq.2) decoded='RO'
if(nspecial.eq.3) decoded='RRR' if(nspecial.eq.3) decoded='RRR'
@ -343,10 +348,12 @@ contains
decoded0=decoded decoded0=decoded
freq0=freq freq0=freq
if(decoded0.eq.' ') decoded0='*' if(decoded0.eq.' ') decoded0='*'
if(single_decode .and. ndecoded.gt.0) go to 900
endif endif
enddo !Candidate loop enddo ! icand
if(ipass.eq.2 .and. ndecoded.lt.1) exit if(ipass.gt.1 .and. ndecoded.eq.ndecoded0) exit
enddo !Multiple-pass loop ndecoded0=ndecoded
enddo ! ipass
900 return 900 return
end subroutine decode end subroutine decode