mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 12:23:37 -05:00
Convert genqra64 to gen_q65_wave. Not finished yet!
This commit is contained in:
parent
6c1d88c79b
commit
7425c28df2
75
libm65/gen_q65_wave.f90
Normal file
75
libm65/gen_q65_wave.f90
Normal file
@ -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
|
@ -1492,7 +1492,7 @@ void MainWindow::guiUpdate()
|
|||||||
&nwave,len1,len1);
|
&nwave,len1,len1);
|
||||||
} else {
|
} else {
|
||||||
if(m_modeQ65==5) ntxFreq=700;
|
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);
|
&nwave,len1,len1);
|
||||||
}
|
}
|
||||||
msgsent[22]=0;
|
msgsent[22]=0;
|
||||||
|
@ -299,7 +299,7 @@ extern "C" {
|
|||||||
int* nsendingsh, char* msgsent, short iwave[], int* nwave,
|
int* nsendingsh, char* msgsent, short iwave[], int* nwave,
|
||||||
int len1, int len2);
|
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* itype, char* msgsent, short iwave[], int* nwave,
|
||||||
int len1, int len2);
|
int len1, int len2);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user