79 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| module jt65_test
 | |
| 
 | |
|   ! Test the JT65 decoder for WSJT-X
 | |
| 
 | |
|   implicit none
 | |
| 
 | |
|   public :: test
 | |
|   integer, parameter, public :: NZMAX=60*12000
 | |
|   integer, public :: nft
 | |
| 
 | |
| contains
 | |
| 
 | |
|   subroutine test (dd,nutc,nflow,nfhigh,nfqso,ntol,nsubmode,n2pass,nrobust     &
 | |
|        ,ntrials,naggressive,ndepth,mycall,hiscall,hisgrid,nexp_decode,         &
 | |
|         nQSOProgress,ljt65apon)
 | |
|     use timer_module, only: timer
 | |
|     use jt65_decode
 | |
|     implicit none
 | |
| 
 | |
|     include 'constants.f90'
 | |
|     real, intent(in) :: dd(NZMAX)
 | |
|     integer, intent(in) :: nutc, nflow, nfhigh, nfqso, ntol, nsubmode, n2pass  &
 | |
|          , ntrials, naggressive, ndepth, nexp_decode, nQSOProgress
 | |
|     logical, intent(in) :: nrobust,ljt65apon
 | |
|     character(len=12), intent(in) :: mycall, hiscall
 | |
|     character(len=6), intent(in) :: hisgrid
 | |
|     type(jt65_decoder) :: my_decoder
 | |
|     logical nclearave                          !### Should be a dummy arg?
 | |
|     nclearave=.false.
 | |
| 
 | |
|     call timer('jt65a   ',0)
 | |
|     call my_decoder%decode(my_callback,dd,npts=52*12000,newdat=.true.,     &
 | |
|          nutc=nutc,nf1=nflow,nf2=nfhigh,nfqso=nfqso,ntol=ntol,             &
 | |
|          nsubmode=nsubmode, minsync=-1,nagain=.false.,n2pass=n2pass,       &
 | |
|          nrobust=nrobust,ntrials=ntrials,naggressive=naggressive,          &
 | |
|          ndepth=ndepth,emedelay=0.0,clearave=nclearave,mycall=mycall,      &
 | |
|          hiscall=hiscall,hisgrid=hisgrid,nexp_decode=nexp_decode,          &
 | |
|          nQSOProgress=nQSOProgress,ljt65apon=ljt65apon)
 | |
|     call timer('jt65a   ',1)
 | |
|   end subroutine test
 | |
| 
 | |
|   subroutine my_callback (this,sync,snr,dt,freq,drift,nflip,width,     &
 | |
|        decoded,ft,qual,smo,sum,minsync)
 | |
|     use jt65_decode
 | |
|     implicit none
 | |
| 
 | |
|     class(jt65_decoder), intent(inout) :: this
 | |
|     real, intent(in) :: sync
 | |
|     integer, intent(in) :: snr
 | |
|     real, intent(in) :: dt
 | |
|     integer, intent(in) :: freq
 | |
|     integer, intent(in) :: drift
 | |
|     integer, intent(in) :: nflip
 | |
|     real, intent(in) :: width
 | |
|     character(len=22), intent(in) :: decoded
 | |
|     integer, intent(in) :: ft
 | |
|     integer, intent(in) :: qual
 | |
|     integer, intent(in) :: smo
 | |
|     integer, intent(in) :: sum
 | |
|     integer, intent(in) :: minsync
 | |
| 
 | |
|     integer nwidth
 | |
|     real t
 | |
| 
 | |
|     if(minsync+nflip+qual.eq.-9999) stop            !Silence compiler warning
 | |
|     t=max(0.0,width*width-7.2)
 | |
|     nwidth=max(nint(sqrt(t)),2)
 | |
| !### deal with nflip here! ###
 | |
| !### also single_decode, csync, etc... ###
 | |
|     write(*,1012) nint(sync),snr,dt,freq,drift,nwidth,         &
 | |
|          decoded,ft,sum,smo
 | |
| 1012 format(i4,i5,f6.2,i5,i4,i3,1x,a22,' JT65',3i3)
 | |
|     nft=ft
 | |
|     call flush(6)
 | |
| 
 | |
|   end subroutine my_callback
 | |
| 
 | |
| end module jt65_test
 | 
