From 7425c28df2db91347a5ee654731a2d5da8a21229 Mon Sep 17 00:00:00 2001 From: Joe Taylor Date: Wed, 7 Apr 2021 13:12:53 -0400 Subject: [PATCH] Convert genqra64 to gen_q65_wave. Not finished yet! --- libm65/gen_q65_wave.f90 | 75 +++++++++++++++++++++++++++++++++++++++++ mainwindow.cpp | 2 +- mainwindow.h | 2 +- 3 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 libm65/gen_q65_wave.f90 diff --git a/libm65/gen_q65_wave.f90 b/libm65/gen_q65_wave.f90 new file mode 100644 index 000000000..86d0b9470 --- /dev/null +++ b/libm65/gen_q65_wave.f90 @@ -0,0 +1,75 @@ +subroutine gen_q65_wave(msg0,ichk,ntxfreq,mode64,itype,msgsent,iwave,nwave) + +! Encodes a QRA64 message to yield itone(1:84) + + use packjt + parameter (NMAX=2*60*11025) + character*22 msg0 + character*22 message !Message to be generated + character*22 msgsent !Message as it will be received + integer itone(84) + character*3 cok !' ' or 'OOO' + real*8 t,dt,phi,f,f0,dfgen,dphi,twopi,samfac,tsym + integer dgen(13) + integer sent(63) + integer*2 iwave(NMAX) + integer icos7(0:6) + data icos7/2,5,6,0,4,1,3/ !Defines a 7x7 Costas array + data twopi/6.283185307179586476d0/ + save + + itone=0 + if(msg0(1:1).eq.'@') then + read(msg0(2:5),*,end=1,err=1) nfreq + go to 2 +1 nfreq=1000 +2 itone(1)=nfreq + write(msgsent,1000) nfreq +1000 format(i5,' Hz') + else + message=msg0 + do i=1,22 + if(ichar(message(i:i)).eq.0) then + message(i:)=' ' + exit + endif + enddo + + do i=1,22 !Strip leading blanks + if(message(1:1).ne.' ') exit + message=message(i+1:) + enddo + endif + +! Set up necessary constants + nsym=84 + tsym=6912.d0/12000.d0 + samfac=1.d0 + dt=1.d0/(samfac*11025.d0) + f0=ntxfreq + ndf=2**(mode64-1) + dfgen=ndf*12000.d0/6912.d0 + phi=0.d0 + dphi=twopi*dt*f0 + i=0 + iz=84*6912*11025.d0/12000.d0 + t=0.d0 + j0=0 + do i=1,iz + t=t+dt + j=t/tsym + if(j.ne.j0) then + f=f0 + itone(j)*dfgen + dphi=twopi*dt*f + j0=j + endif + phi=phi+dphi + if(phi.gt.twopi) phi=phi-twopi + xphi=phi + iwave(2*i-1)=32767.0*cos(xphi) + iwave(2*i)=32767.0*sin(xphi) + enddo + nwave=2*iz + +999 return +end subroutine gen_q65_wave diff --git a/mainwindow.cpp b/mainwindow.cpp index 9a3fc4f14..4480c9abc 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1492,7 +1492,7 @@ void MainWindow::guiUpdate() &nwave,len1,len1); } else { if(m_modeQ65==5) ntxFreq=700; - genqra64a_(message,&ichk,&ntxFreq,&m_modeQ65,&itype,msgsent,iwave, + gen_q65_wave_(message,&ichk,&ntxFreq,&m_modeQ65,&itype,msgsent,iwave, &nwave,len1,len1); } msgsent[22]=0; diff --git a/mainwindow.h b/mainwindow.h index 226a8fd6d..90a38811f 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -299,7 +299,7 @@ extern "C" { int* nsendingsh, char* msgsent, short iwave[], int* nwave, int len1, int len2); - void genqra64a_(char* msg, int* ichk, int* ntxFreq, int* mode64, + void gen_q65_wave_(char* msg, int* ichk, int* ntxFreq, int* mode64, int* itype, char* msgsent, short iwave[], int* nwave, int len1, int len2);