mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 22:28:41 -05:00
1a23757b26
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6122 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
56 lines
1.5 KiB
Fortran
56 lines
1.5 KiB
Fortran
subroutine geniscat(msg,msgsent,itone)
|
|
|
|
! Generate an ISCAT waveform.
|
|
|
|
parameter (NSZ=1291)
|
|
character msg*28,msgsent*28 !Message to be transmitted
|
|
integer imsg(30)
|
|
integer itone(NSZ)
|
|
real*8 sps
|
|
character c*42
|
|
integer icos(4) !Costas array
|
|
data icos/0,1,3,2/
|
|
data nsync/4/,nlen/2/,ndat/18/
|
|
data c/'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ /.?@-'/
|
|
|
|
sps=256.d0*12000.d0/11025.d0
|
|
nsym=int(30*12000.d0/sps)
|
|
nblk=nsync+nlen+ndat
|
|
|
|
do i=22,1,-1
|
|
if(msg(i:i).ne.' ' .and. msg(i:i).ne.char(0)) exit
|
|
enddo
|
|
nmsg=i
|
|
msglen=nmsg+1
|
|
k=0
|
|
kk=1
|
|
imsg(1)=40 !Always start with BOM char: '@'
|
|
do i=1,nmsg !Define the tone sequence
|
|
imsg(i+1)=36 !Illegal char set to blank
|
|
do j=1,42
|
|
if(msg(i:i).eq.c(j:j)) imsg(i+1)=j-1
|
|
enddo
|
|
enddo
|
|
|
|
do i=1,nsym !Total symbols in 30 s
|
|
j=mod(i-1,nblk)+1
|
|
if(j.le.nsync) then
|
|
itone(i)=icos(j) !Insert 4x4 Costas array
|
|
else if(j.gt.nsync .and. j.le.nsync+nlen) then
|
|
itone(i)=msglen !Insert message-length indicator
|
|
if(j.ge.nsync+2) then
|
|
n=msglen + 5*(j-nsync-1)
|
|
if(n.gt.41) n=n-42
|
|
itone(i)=n
|
|
endif
|
|
else
|
|
k=k+1
|
|
kk=mod(k-1,msglen)+1
|
|
itone(i)=imsg(kk)
|
|
endif
|
|
enddo
|
|
msgsent=msg
|
|
|
|
return
|
|
end subroutine geniscat
|