From 46e1cd5a30ec4a3b56be4f9119260f7eae9dcfa5 Mon Sep 17 00:00:00 2001 From: Steven Franke Date: Tue, 18 Jul 2017 15:22:20 +0000 Subject: [PATCH] Fix a bug in AP decoding when iaptype=2. Decrease time-sync search range to +/- 1.5s. Fix a big with erasure decoding. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7926 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/fsk4hf/ft8b.f90 | 10 +++++----- lib/fsk4hf/sync8.f90 | 10 ++++++---- lib/ft8_decode.f90 | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/fsk4hf/ft8b.f90 b/lib/fsk4hf/ft8b.f90 index e8292fc8b..1a3468e57 100644 --- a/lib/fsk4hf/ft8b.f90 +++ b/lib/fsk4hf/ft8b.f90 @@ -35,7 +35,7 @@ subroutine ft8b(dd0,newdat,nfqso,ndepth,lsubtract,iaptype,icand,sync0,f1,xdt, call ft8_downsample(dd0,newdat,f1,cd0) !Mix f1 to baseband and downsample call timer('ft8_down',1) - i0=nint(xdt*fs2) !Initial guess for start of signal + i0=nint((xdt+0.5)*fs2) !Initial guess for start of signal smax=0.0 do idt=i0-8,i0+8 !Search over +/- one quarter symbol call sync8d(cd0,idt,ctwk,0,sync) @@ -154,7 +154,7 @@ subroutine ft8b(dd0,newdat,nfqso,ndepth,lsubtract,iaptype,icand,sync0,f1,xdt, llra=2.0*rxdatap/(ss*ss) ! llr's for use with ap apmag=4.0 nap=0 -! if(ndepth.eq.3) nap=2 + if(ndepth.eq.3) nap=2 do iap=0,nap !### Temporary ### nera=1 @@ -162,9 +162,9 @@ subroutine ft8b(dd0,newdat,nfqso,ndepth,lsubtract,iaptype,icand,sync0,f1,xdt, do iera=1,nera llr=llr0 nblank=0 - if(nera.eq.3 .and. iera.eq.1) nblank=48 + if(nera.eq.3 .and. iera.eq.1) nblank=0 if(nera.eq.3 .and. iera.eq.2) nblank=24 - if(nera.eq.3 .and. iera.eq.3) nblank=0 + if(nera.eq.3 .and. iera.eq.3) nblank=48 if(nblank.gt.0) llr(1:nblank)=0. if(iap.eq.0) then apmask=0 @@ -208,7 +208,7 @@ subroutine ft8b(dd0,newdat,nfqso,ndepth,lsubtract,iaptype,icand,sync0,f1,xdt, llrap=llr ! llrap(88:143)=apmag*apsym(1:56)/ss llrap(115)=llra(115) - llrap(116:143)=apmag*apsym(1:28)/ss + llrap(116:143)=apmag*apsym(29:56)/ss llrap(144)=-apmag/ss ! llrap(160:162)=apmag*apsym(73:75)/ss endif diff --git a/lib/fsk4hf/sync8.f90 b/lib/fsk4hf/sync8.f90 index cd0c1db81..0813d7f88 100644 --- a/lib/fsk4hf/sync8.f90 +++ b/lib/fsk4hf/sync8.f90 @@ -1,8 +1,8 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand) include 'ft8_params.f90' -! Search over +/- 2.5s relative to start of interval. - parameter (JZ=62) +! Search over +/- 1.5s relative to 0.5s TX start time. + parameter (JZ=38) complex cx(0:NH1) real s(NH1,NHSYM) real savg(NH1) @@ -45,8 +45,10 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand) ib=nint(nfb/df) nssy=NSPS/NSTEP ! # steps per symbol nfos=NFFT1/NSPS ! # frequency bin oversampling factor + jstrt=0.5/tstep + do i=ia,ib - do j=-JZ,JZ + do j=-JZ,+JZ ta=0. tb=0. tc=0. @@ -54,7 +56,7 @@ subroutine sync8(dd,nfa,nfb,syncmin,nfqso,s,candidate,ncand) t0b=0. t0c=0. do n=0,6 - k=j+nssy*n + k=j+jstrt+nssy*n if(k.ge.1.and.k.le.NHSYM) then ta=ta + s(i+nfos*icos7(n),k) t0a=t0a + sum(s(i:i+nfos*6:nfos,k)) diff --git a/lib/ft8_decode.f90 b/lib/ft8_decode.f90 index 99092fce3..dc841a27e 100644 --- a/lib/ft8_decode.f90 +++ b/lib/ft8_decode.f90 @@ -80,7 +80,7 @@ contains call ft8b(dd,newdat,nfqso,ndepth,lsubtract,iaptype,icand,sync,f1, & xdt,apsym,nharderrors,dmin,nbadcrc,iap,ipass,iera,message,xsnr) nsnr=nint(xsnr) - xdt=xdt-0.6 + xdt=xdt-0.5 call timer('ft8b ',1) if(nbadcrc.eq.0 .and. associated(this%callback)) then call this%callback(sync,nsnr,xdt,f1,iap,iera,message)