64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
program ft8d
 | 
						|
 | 
						|
! Decode FT8 data read from *.wav files.
 | 
						|
 | 
						|
  include 'ft8_params.f90'
 | 
						|
  character*12 arg
 | 
						|
  character infile*80,datetime*13,message*22
 | 
						|
  real s(NH1,NHSYM)
 | 
						|
  real candidate(3,100)
 | 
						|
  integer ihdr(11)
 | 
						|
  integer*2 iwave(NMAX)                 !Generated full-length waveform  
 | 
						|
  real dd(NMAX)
 | 
						|
 
 | 
						|
  nargs=iargc()
 | 
						|
  if(nargs.lt.3) then
 | 
						|
     print*,'Usage:   ft8d MaxIt Norder file1 [file2 ...]'
 | 
						|
     print*,'Example  ft8d   40     2   *.wav'
 | 
						|
     go to 999
 | 
						|
  endif
 | 
						|
  call getarg(1,arg)
 | 
						|
  read(arg,*) max_iterations
 | 
						|
  call getarg(2,arg)
 | 
						|
  read(arg,*) norder
 | 
						|
  nfiles=nargs-2
 | 
						|
 | 
						|
  twopi=8.0*atan(1.0)
 | 
						|
  fs=12000.0                             !Sample rate
 | 
						|
  dt=1.0/fs                              !Sample interval (s)
 | 
						|
  tt=NSPS*dt                             !Duration of "itone" symbols (s)
 | 
						|
  ts=2*NSPS*dt                           !Duration of OQPSK symbols (s)
 | 
						|
  baud=1.0/tt                            !Keying rate (baud)
 | 
						|
  txt=NZ*dt                              !Transmission length (s)
 | 
						|
  nfa=100.0
 | 
						|
  nfb=3000.0
 | 
						|
  nfqso=1500.0
 | 
						|
 | 
						|
  do ifile=1,nfiles
 | 
						|
     call getarg(ifile+2,infile)
 | 
						|
     open(10,file=infile,status='old',access='stream')
 | 
						|
     read(10,end=999) ihdr,iwave
 | 
						|
     close(10)
 | 
						|
     j2=index(infile,'.wav')
 | 
						|
     read(infile(j2-6:j2-1),*) nutc
 | 
						|
     datetime=infile(j2-13:j2-1)
 | 
						|
     call sync8(iwave,nfa,nfb,nfqso,s,candidate,ncand)
 | 
						|
     syncmin=2.0
 | 
						|
     dd=iwave
 | 
						|
     do icand=1,ncand
 | 
						|
       sync=candidate(3,icand)
 | 
						|
       if( sync.lt.syncmin) cycle
 | 
						|
       f1=candidate(1,icand)
 | 
						|
       xdt=candidate(2,icand)
 | 
						|
       nsnr=min(99,nint(10.0*log10(sync)-25.5))
 | 
						|
       call ft8b(dd,nfqso,f1,xdt,nharderrors,dmin,nbadcrc,message,xsnr)
 | 
						|
       nsnr=xsnr
 | 
						|
       xdt=xdt-0.6
 | 
						|
       write(*,1110) datetime,0,nsnr,xdt,f1,message,nharderrors,dmin
 | 
						|
1110   format(a13,2i4,f6.2,f7.1,' ~ ',a22,i6,f7.1)
 | 
						|
     enddo
 | 
						|
  enddo   ! ifile loop
 | 
						|
 | 
						|
999 end program ft8d
 | 
						|
  
 |