diff --git a/CMakeLists.txt b/CMakeLists.txt index 712e176ad..95a8cfb57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1338,6 +1338,9 @@ target_link_libraries (qra64sim wsjt_fort wsjt_cxx) add_executable (qra65sim lib/qra/qra65/qra65sim.f90 wsjtx.rc) target_link_libraries (qra65sim wsjt_fort wsjt_cxx) +add_executable (test_qra64 lib/test_qra64.f90 wsjtx.rc) +target_link_libraries (test_qra64 wsjt_fort wsjt_cxx) + add_executable (test_qra65 lib/test_qra65.f90 wsjtx.rc) target_link_libraries (test_qra65 wsjt_fort wsjt_cxx) diff --git a/lib/test_qra64.f90 b/lib/test_qra64.f90 new file mode 100644 index 000000000..751a9e9a4 --- /dev/null +++ b/lib/test_qra64.f90 @@ -0,0 +1,134 @@ +program test_qra64 + + character*71 cmd1,cmd2,line + character*22 msg + character*8 arg + character*1 csubmode + integer nretcode(0:11) + logical decok + + nargs=iargc() + if(nargs.ne.9) then + print*,'Usage: test_qra64 "msg" A-D depth freq DT fDop TRp nfiles SNR' + print*,'Example: test_qra64 "K1ABC W9XYZ EN37" A 3 1000 0.0 5.0 60 100 -20' + print*,' SNR = 0 to loop over all relevant SNRs' + go to 999 + endif + call getarg(1,msg) + call getarg(2,csubmode) + call getarg(3,arg) + read(arg,*) ndepth + call getarg(4,arg) + read(arg,*) nf0 + call getarg(5,arg) + read(arg,*) dt + call getarg(6,arg) + read(arg,*) fDop + call getarg(7,arg) + read(arg,*) ntrperiod + call getarg(8,arg) + read(arg,*) nfiles + call getarg(9,arg) + read(arg,*) nsnr + + nsps=7680 + i50=-28 + ia=-20 + ib=-33 + if(nsnr.ne.0) then + ia=nsnr + ib=nsnr + endif + + baud=12000.0/nsps + tsym=1.0/baud + +! 1 2 3 4 5 6 7 +! 12345678901234567890123456789012345678901234567890123456789012345678901' + cmd1='qra64sim "K1ABC W9XYZ EN37 " A 1 0.2 0.00 100 -20 > junk0' + + cmd2='jt9 -q -L 300 -H 3000 -f 1000 -d 3 -b A *.wav > junk' +! jt9 -q -L 300 -H 3000 -f 1000 -d 3 -b A *.w1000 unk + + write(cmd1(10:33),'(a)') '"'//msg//'"' + cmd1(35:35)=csubmode + write(cmd1(40:43),'(f4.1)') fDop + write(cmd1(44:48),'(f5.2)') dt + write(cmd1(49:53),'(i5)') nfiles + + write(cmd2(26:29),'(i4)') nf0 + write(cmd2(34:34),'(i1)') ndepth + cmd2(39:39)=csubmode + + call system('rm -f *.wav') + + write(*,1000) (j,j=0,11) + write(12,1000) (j,j=0,11) +1000 format(/'SNR d Dop Sync Dec1 DecN Bad',i6,11i4,' tdec dtavg dtrms'/97('-')) + + dterr=tsym/4.0 + nferr=max(1,nint(0.5*baud)) + + do nsnr=ia,ib,-1 + nsync=0 + ndecodes=0 + nfalse=0 + nretcode=0 + navg=0 + sumxdt=0. + sqxdt=0. + write(cmd1(55:57),'(i3)') nsnr + call system(cmd1) + call sec0(0,tdec) + call system(cmd2) + call sec0(1,tdec) + open(10,file='junk',status='unknown') + n=0 + do iline=1,9999 + read(10,'(a71)',end=10) line + if(index(line,'