67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| program fixwav
 | |
| 
 | |
|   use wavhdr
 | |
|   parameter (NBANDS=23,NMODES=11)
 | |
|   parameter(NMAX=120*12000)
 | |
|   type(hdr) h
 | |
|   integer*2 id2(NMAX),id(4)
 | |
|   character*8 mode,mode0
 | |
|   character*6 band
 | |
|   character*12 arg
 | |
|   character*80 infile
 | |
|   character*1 c
 | |
|   logical ok
 | |
| 
 | |
|   nargs=iargc()
 | |
|   if(nargs.ne.1 .and. nargs.ne.5) then
 | |
|      print*,'Usage: fixwav [fMHz mode submode TRperiod] infile'
 | |
|      go to 999
 | |
|   endif
 | |
|   call getarg(1,infile)
 | |
|   if(nargs.eq.1) go to 10
 | |
|   read(infile,*) fMHz
 | |
|   call getarg(2,mode0)
 | |
|   call getarg(3,arg)
 | |
|   nsubmode0=-1
 | |
|   do i=1,8
 | |
|      if(arg(1:1).eq.char(ichar('A')-1+i)) nsubmode0=i
 | |
|   enddo
 | |
|   if(nsubmode0.lt.0) read(arg,*) nsubmode0
 | |
|   call getarg(4,arg)
 | |
|   read(arg,*) ntrperiod0
 | |
|   call getarg(5,infile)
 | |
| 
 | |
| 10 open(10,file=infile,status='old',access='stream')
 | |
|   read(10) h
 | |
|   npts=h%ndata/2
 | |
|   nfsample=h%nsamrate
 | |
|   read(10) id2(1:npts)
 | |
|   write(*,1002) h%nchan2,h%nbitsam2,h%nsamrate,npts
 | |
| 1002 format('Channels:',i2,'   Bits/sample:',i3,'   Sample rate:',i6,   &
 | |
|           '   Npts:',i8)
 | |
| 
 | |
|   call get_wsjtx_wav_params(id2,band,mode,nsubmode,ntrperiod,ok)
 | |
|   if(nfsample.ne.11025 .and. nfsample.ne.12000) ok=.false.
 | |
|   if(ok) write(*,1010) band,ntrperiod,mode,char(ichar('A')-1+id2(3))
 | |
| 1010 format('Band: ',a6,'  T/R period:',i4,'   Mode: ',a8,1x,a1)
 | |
| 
 | |
|   if(.not.ok) write(*,'(a)') 'File has no valid WSJT-X params.'
 | |
|   if(ok .and. nargs.eq.1) go to 999
 | |
| 
 | |
|   write(*,'(a)',advance='no') 'Do you want to add or change them? (Y/N): '
 | |
|   read*,c
 | |
|   if(c.ne.'y' .and. c.ne.'Y') go to 999
 | |
| 
 | |
|   print*,fMHz,mode0,nsubmode0,ntrperiod0
 | |
|   call set_wsjtx_wav_params(fMHz,mode0,nsubmode0,ntrperiod0,id2)
 | |
|   band=""
 | |
|   mode=""
 | |
|   nsubmode=0
 | |
|   ntrperiod=0
 | |
|   call get_wsjtx_wav_params(id2,band,mode,nsubmode,ntrperiod,ok)
 | |
|   write(*,1010) band,ntrperiod,mode,char(ichar('A')-1+id2(3))
 | |
|   rewind 10
 | |
|   write(10) h,id2(1:npts)
 | |
| 
 | |
| 999 end program fixwav
 |