Resolve more issues for display of JT4 decodes; improve JT4 sync at low spread.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6679 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2016-05-17 18:34:57 +00:00
parent 2afd43e110
commit f5c15f60bf
2 changed files with 19 additions and 28 deletions

View File

@ -159,27 +159,30 @@ contains
character*2 :: cqual
write(*,3101) 'A',is_deep,is_average,qual,decoded
3101 format(a1,2L3,f6.1,1x,a22)
if (have_sync) then
if (int(qual).gt.0) then
write(cqual, '(i2)') int(qual)
if (ave.gt.0) then
write(*,1000) params%nutc,snr,dt,freq,sync,decoded,cqual, &
char(ichar('A')+ich-1), ave
char(ichar('A')+ich-1),ave
else
write(*,1000) params%nutc,snr,dt,freq,sync,decoded,cqual, &
char(ichar('A')+ich-1)
end if
else
write(*,1000) params%nutc,snr,dt,freq,sync,decoded,' *', &
char(ichar('A')+ich-1)
if (ave.gt.0) then
write(*,1000) params%nutc,snr,dt,freq,sync,decoded,'*', &
char(ichar('A')+ich-1),ave
else
write(*,1000) params%nutc,snr,dt,freq,sync,decoded,' *', &
char(ichar('A')+ich-1)
endif
end if
else
write(*,1000) params%nutc,snr,dt,freq
end if
1000 format(i4.4,i4,f5.2,i5,1x,'$',a1,1x,a22,a2,1x,a1,i3)
1000 format(i4.4,i4,f5.1,i5,1x,'$',a1,1x,a22,a2,1x,a1,i3)
select type(this)
type is (counting_jt4_decoder)
this%decoded = this%decoded + 1

View File

@ -7,9 +7,7 @@ module jt4_decode
procedure, private :: wsjt4, avg4
end type jt4_decoder
!
! Callback function to be called with each decode
!
! Callback function to be called with each decode
abstract interface
subroutine jt4_decode_callback (this, snr, dt, freq, have_sync, &
sync, is_deep, decoded, qual, ich, is_average, ave)
@ -30,9 +28,7 @@ module jt4_decode
end subroutine jt4_decode_callback
end interface
!
! Callback function to be called with each average result
!
! Callback function to be called with each average result
abstract interface
subroutine jt4_average_callback (this, used, utc, sync, dt, freq, flip)
import jt4_decoder
@ -86,13 +82,6 @@ contains
call lpf1(dd,jz,dat,jz2)
call timer('lpf1 ',1)
!i=index(MyCall,char(0))
!if(i.le.0) i=index(MyCall,' ')
!mycall=MyCall(1:i-1)//' '
!i=index(HisCall,char(0))
!if(i.le.0) i=index(HisCall,' ')
!hiscall=HisCall(1:i-1)//' '
write(cfile6(1:4),1000) nutc
1000 format(i4.4)
cfile6(5:6)=' '
@ -137,7 +126,6 @@ contains
blank=' '
ccfblue=0.
ccfred=0.
!nagain=.false.
endif
zz=0.
@ -166,7 +154,7 @@ contains
call timer('sync4 ',1)
call timer('zplt ',0)
do ich=4,7
do ich=1,7
z(1:458,1:65)=zz(274:731,1:65,ich)
call zplt(z,ich-4,syncz,dtxz,nfreqz,flipz,sync2z,0,emedelay,dttol, &
nfqso,ntol)
@ -178,7 +166,7 @@ contains
call timer('zplt ',1)
! Use results from zplt
!### NB: JT4 is severely "sync limited" at present...
!### NB: JT4 is severely "sync limited" at present... (Maybe not still true???)
flip=flipz
sync=syncz
@ -208,7 +196,6 @@ contains
dtx=dtxz + 0.03*idt
nfreq=nfreqz + 2*idf
! Attempt a single-sequence decode, including deep4 if Fano fails.
call timer('decode4 ',0)
call decode4(dat,npts,dtx,nfreq,flip,mode4,ndepth,neme,minw, &
@ -253,7 +240,7 @@ contains
endif
if(nfanoave.gt.0) then
! Fano succeeded: report the message AVG FANO OK
! Fano succeeded: report the message AVG FANO OK
if (associated (this%decode_callback)) then
call this%decode_callback(nsnr,dtx,nfreq,.true.,csync, &
.false.,avemsg,0.,ich,.true.,nfanoave)
@ -277,6 +264,7 @@ contains
deepmsg=deepmsg0
ich=ich0
qual=qbest
if (associated (this%decode_callback)) then
if(int(qual).ge.nq1) then
call this%decode_callback(nsnr,dtx,nfreqz,.true.,csync,.true., &
@ -292,7 +280,8 @@ contains
deepave=deepave1
ich=ich1
qave=qabest
if (associated (this%decode_callback)) then
if (associated (this%decode_callback) .and. ndeepave.ge.2) then
if(int(qave).ge.nq1) then
call this%decode_callback(nsnr,dtx,nfreq,.true.,csync,.true., &
deepave,qave,ich,.true.,ndeepave)
@ -347,7 +336,7 @@ contains
do i=1,64
cused(i)='.'
if(iutc(i).lt.0) cycle
if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same (odd/even) sequence
if(mod(iutc(i),2).ne.mod(nutc,2)) cycle !Use only same sequence
if(abs(dtxx-dtsave(i)).gt.dtdiff) cycle !DT must match
if(abs(nfreq-nfsave(i)).gt.ntol) cycle !Freq must match
if(flip.ne.flipsave(i)) cycle !Sync (*/#) must match
@ -412,7 +401,6 @@ contains
qave=0.
! Possibly should pass nadd=nused, also ?
! if(ndepth.ge.3) then
if(iand(ndepth,32).eq.32) then
flipx=1.0 !Normal flip not relevant for ave msg
qbest=0.