From 39024253d2ad03392623914f42f7667858c94bb4 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Tue, 19 Jan 2021 14:11:21 -0500 Subject: [PATCH] Fix the oddball values of DT and f0 sometimes being displayed. --- lib/decoder.f90 | 1 + lib/q65_decode.f90 | 26 ++++++++++++++++++-------- lib/qra/q65/q65.f90 | 7 ++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/decoder.f90 b/lib/decoder.f90 index 2e72fc748..db66fe4ac 100644 --- a/lib/decoder.f90 +++ b/lib/decoder.f90 @@ -211,6 +211,7 @@ subroutine multimode_decoder(ss,id2,params,nfsample) params%emedelay,mycall,hiscall,hisgrid,params%nQSOProgress, & ncontest,logical(params%lapcqonly),navg0) call timer('dec_q65 ',1) + close(17) go to 800 endif diff --git a/lib/q65_decode.f90 b/lib/q65_decode.f90 index 0ac662ace..dd6fd960b 100644 --- a/lib/q65_decode.f90 +++ b/lib/q65_decode.f90 @@ -118,14 +118,14 @@ contains call timer('q65_dec0',1) if(idec.ge.0) then - xdt1=xdt !We have a list-decode result - f1=f0 + dtdec=xdt !We have a list-decode result + f0dec=f0 go to 100 endif if(snr1.lt.2.8) then - xdt1=0. !No reliable sync, abandon decoding attempt - f1=0. + dtdec=0. !No reliable sync, abandon decoding attempt + f0dec=0. go to 100 endif @@ -163,7 +163,11 @@ contains xdt,f0,iaptype,xdt1,f1,snr2,dat4,idec) ! idec=-1 !### TEMPORARY ### call timer('q65loops',1) - if(idec.ge.0) go to 100 !Successful decode, we're done + if(idec.ge.0) then + dtdec=xdt1 + f0dec=f1 + go to 100 !Successful decode, we're done + endif enddo ! ipass if(iand(ndepth,16).eq.0 .or. navg.lt.2) go to 100 @@ -176,6 +180,8 @@ contains emedelay,xdt,f0,snr1,width,dat4,snr2,idec) call timer('list_avg',1) if(idec.ge.0) then + dtdec=xdt !We have a list-decode result from averaged data + f0dec=f0 nused=navg go to 100 endif @@ -189,7 +195,11 @@ contains call q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, & emedelay,xdt,f0,snr1,width,dat4,snr2,idec) call timer('q65_avg ',1) - if(idec.ge.0) nused=navg + if(idec.ge.0) then + dtdec=xdt !We have a q[012]n result + f0dec=f0 + nused=navg + endif 100 decoded=' ' if(idec.ge.0) then @@ -206,14 +216,14 @@ contains 1000 format(12b6.6,b5.5) call unpack77(c77,0,decoded,unpk77_success) !Unpack to get msgsent nsnr=nint(snr2) - call this%callback(nutc,snr1,nsnr,xdt1,f1,decoded,idec,nused,ntrperiod) + call this%callback(nutc,snr1,nsnr,dtdec,f0dec,decoded,idec,nused,ntrperiod) if(iand(ndepth,128).ne.0) call q65_clravg !AutoClrAvg after decode else ! Report snr1, even if no decode. nsnr=db(snr1) - 35.0 if(nsnr.lt.-35) nsnr=-35 idec=-1 - call this%callback(nutc,snr1,nsnr,xdt1,f1,decoded, & + call this%callback(nutc,snr1,nsnr,xdt,f0,decoded, & idec,0,ntrperiod) endif navg0=navg diff --git a/lib/qra/q65/q65.f90 b/lib/qra/q65/q65.f90 index 68d550c1e..30409e8d1 100644 --- a/lib/qra/q65/q65.f90 +++ b/lib/qra/q65/q65.f90 @@ -1,7 +1,7 @@ module q65 parameter (NSTEP=8) !Time bins per symbol, in s1() and s1a() - parameter (PLOG_MIN=-240.0) !List decoding threshold + parameter (PLOG_MIN=-242.0) !List decoding threshold integer nsave,nlist,LL0,iz0,jz0 integer listutc(10) integer apsym0(58),aph10(10) @@ -15,7 +15,7 @@ module q65 integer i0,j0 real,allocatable,save :: s1a(:,:) !Cumulative symbol spectra real sync(85) !sync vector - real df,dtstep + real df,dtstep,dtdec,f0dec contains @@ -208,7 +208,8 @@ subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, & 1100 format(4f10.3) endif enddo - close(17) + rewind 17 + if(iavg.eq.2) then call q65_dec_q012(s3,LL,snr2,dat4,idec,decoded)