From f58656984c924e68ca6b6ed6c6a4cd24a32d4518 Mon Sep 17 00:00:00 2001 From: Bill Somerville Date: Tue, 10 Feb 2015 14:04:54 +0000 Subject: [PATCH] Add more decoding parameters to jt9 command line program Options have been added to control frequency cut off values, mode and, Tx mode. The comand line parser now has optional long option names and usage help. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4949 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- lib/fillcom.f90 | 22 ++++++++++++----- lib/jt9.f90 | 63 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 71 insertions(+), 14 deletions(-) diff --git a/lib/fillcom.f90 b/lib/fillcom.f90 index 4f9ab55f4..f58e31642 100644 --- a/lib/fillcom.f90 +++ b/lib/fillcom.f90 @@ -1,5 +1,7 @@ -subroutine fillcom(nutc0,ndepth0,nrxfreq) +subroutine fillcom(nutc0,ndepth0,nrxfreq,mode,tx9,flow,fsplit,fhigh) character*20 datetime + integer mode,flow,fsplit,fhigh + logical tx9 common/npar/nutc,ndiskdat,ntrperiod,nfqso,newdat,npts8,nfa,nfsplit,nfb, & ntol,kin,nzhsym,nsave,nagain,ndepth,ntxmode,nmode,datetime save @@ -10,16 +12,24 @@ subroutine fillcom(nutc0,ndepth0,nrxfreq) nfqso=nrxfreq newdat=1 npts8=74736 - nfa=200 - nfsplit=2700 - nfb=4007 + nfa=flow + nfsplit=fsplit + nfb=fhigh ntol=3 kin=1024 nzhsym=173 nsave=0 ndepth=ndepth0 - ntxmode=9 - nmode=9+65 + if (tx9) then + ntxmode=9 + else + ntxmode=65 + end if + if (mode.lt.9) then + nmode=65+9 + else + nmode=mode + end if datetime="2013-Apr-16 15:13" return diff --git a/lib/jt9.f90 b/lib/jt9.f90 index a40d30da6..983c958e7 100644 --- a/lib/jt9.f90 +++ b/lib/jt9.f90 @@ -16,9 +16,25 @@ program jt9 character c character(len=500) optarg, infile character wisfile*80 - integer*4 arglen,stat,offset,remain - logical :: shmem = .false., read_files = .false., have_args = .false. - type (option) :: long_options (0) + integer :: arglen,stat,offset,remain,mode=0,flow=200,fsplit=2700,fhigh=4007,nrxfreq=1500,ntrperiod=1,ndepth=1 + logical :: shmem = .false., read_files = .false., have_args = .false., tx9 = .false., display_help = .false. + type (option) :: long_options(16) = [ & + option ('help', .false., 'h', 'Display this help message', ''), & + option ('shmem', .true., 's', 'Use shared memory for sample data', ''), & + option ('tr-period', .true., 'p', 'Tx/Rx period, default=1', ''), & + option ('executable-path', .true., 'e', 'Location of subordinate executables (KVASD) default="."', ''), & + option ('data-path', .true., 'a', 'Location of writeable data files, detfault="."', ''), & + option ('temp-path', .true., 't', 'Temporary files path, default="."', ''), & + option ('lowest', .true., 'L', 'Lowest frequency decoded (JT65), default=200Hz', ''), & + option ('highest', .true., 'H', 'Highest frequency decoded, default=4007Hz', ''), & + option ('split', .true., 'S', 'Lowest JT9 frequency decoded, default=2700Hz', ''), & + option ('rx-frequency', .true., 'f', 'Receive frequency offset, default=1500', ''), & + option ('patience', .true., 'w', 'FFTW3 planing patience (0-4), default=1', ''), & + option ('fft-threads', .true., 'm', 'Number of threads to process large FFTs, default=1', ''), & + option ('jt65', .false., '6', 'JT65 mode', ''), & + option ('jt9', .false., '9', 'JT9 mode', ''), & + option ('depth', .true., 'd', 'JT9 decoding depth (1-3), default=1', ''), & + option ('tx-jt9', .false., 'T', 'Tx mode is JT9, default=JT65', '') ] common/jt9com/ss(184,NSMAX),savg(NSMAX),id2(NMAX),nutc,ndiskdat,ntr, & mousefqso,newdat,nfa,nfsplit,nfb,ntol,kin,nzhsym,nsynced,ndecoded common/tracer/limtrace,lu @@ -26,13 +42,16 @@ program jt9 data npatience/1/,nthreads/1/ do - call getopt('s:e:a:r:m:p:d:f:w:t:',long_options,c,optarg,arglen,stat, & + call getopt('hs:e:a:r:m:p:d:f:w:t:96TL:S:H:',long_options,c,optarg,arglen,stat, & offset,remain) if (stat .ne. 0) then exit end if have_args = .true. select case (c) + case ('h') + display_help = .true. + case ('s') shmem = .true. shm_key = optarg(:arglen) @@ -61,20 +80,48 @@ program jt9 read_files = .true. read (optarg(:arglen), *) nrxfreq + case ('L') + read_files = .true. + read (optarg(:arglen), *) flow + + case ('S') + read_files = .true. + read (optarg(:arglen), *) fsplit + + case ('H') + read_files = .true. + read (optarg(:arglen), *) fhigh + + case ('6') + read_files = .true. + if (mode.lt.65) mode = mode + 65 + + case ('9') + read_files = .true. + if (mode.lt.9.or.mode.eq.65) mode = mode + 9 + + case ('T') + read_files = .true. + tx9 = .true. + case ('w') read (optarg(:arglen), *) npatience end select end do - if (.not. have_args .or. (stat .lt. 0 .or. (shmem .and. remain .gt. 0) & + if (display_help .or. .not. have_args .or. (stat .lt. 0 .or. (shmem .and. remain .gt. 0) & .or. (read_files .and. remain .eq. 0) .or. & (shmem .and. read_files))) then - print*,'Usage: jt9 -p TRperiod [-d ndepth] [-f rxfreq] {-w patience] [-e exe_dir] [-m nthreads] file1 [file2 ...]' + print*,'Usage: jt9 -p OPTIONS file1 [file2 ...]' print*,' Reads data from *.wav files.' print*,'' - print*,' jt9 -s [-w patience] [-m nthreads] -e exe_dir -a data_dir -t temp_dir' + print*,' jt9 -s [-w n] [-m n] [-e path] [-a path] [-t path]' print*,' Gets data from shared memory region with key==' + do i = 1, size (long_options) + print*,'' + call long_options(i) % print (6) + end do go to 999 endif @@ -152,7 +199,7 @@ program jt9 enddo 10 close(10) - call fillcom(nutc0,ndepth,nrxfreq) + call fillcom(nutc0,ndepth,nrxfreq,mode,tx9,flow,fsplit,fhigh) call decoder(ss,id2) enddo