Modify genqra64.f90 so it can also be used for a "QRA66" mode.

This commit is contained in:
Joe Taylor 2020-07-31 09:27:36 -04:00
parent 846b0b6ed8
commit ee24f03d09
1 changed files with 30 additions and 15 deletions

View File

@ -4,15 +4,17 @@ subroutine genqra64(msg0,ichk,msgsent,itone,itype)
use packjt
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'
character*22 message !Message to be generated
character*22 msgsent !Message as it will be received
integer itone(85) !QRA64 uses only 84
character*3 cok !' ' or 'OOO'
logical old_qra_sync
integer dgen(13)
integer sent(63)
integer b11(11) !Barker 11 code
integer icos7(0:6)
data icos7/2,5,6,0,4,1,3/ !Defines a 7x7 Costas array
data icos7/2,5,6,0,4,1,3/ !Defines a 7x7 Costas array
data b11/1,1,1,0,0,0,1,0,0,1,0/ !Barker 11 definition
save
if(msg0(1:1).eq.'@') then
@ -39,18 +41,31 @@ subroutine genqra64(msg0,ichk,msgsent,itone,itype)
call chkmsg(message,cok,nspecial,flip)
call packmsg(message,dgen,itype) !Pack message into 72 bits
call unpackmsg(dgen,msgsent) !Unpack to get message sent
if(ichk.ne.0) go to 999 !Return if checking only
if(ichk.eq.1) go to 999 !Return if checking only
call qra64_enc(dgen,sent) !Encode using QRA64
nsync=10
inquire(file='old_qra_sync',exist=old_qra_sync)
if(old_qra_sync) nsync=1
itone(1:7)=nsync*icos7 !Insert 7x7 Costas array in 3 places
itone(8:39)=sent(1:32)
itone(40:46)=nsync*icos7
itone(47:77)=sent(33:63)
itone(78:84)=nsync*icos7
if(ichk.eq.66) then
! Experimental QRA66 (FST66?) mode
j=0
k=0
do i=1,85
if(mod(i,4).eq.1) then
j=j+1 !Index for next sync symbol
if(j.eq.12) j=1
itone(i)=b11(j) !Insert a sync symbol
else
k=k+1
itone(i)=sent(k) + 2
endif
enddo
else
! Original QRA64 mode
itone(1:7)=10*icos7 !Insert 7x7 Costas array in 3 places
itone(8:39)=sent(1:32)
itone(40:46)=10*icos7
itone(47:77)=sent(33:63)
itone(78:84)=10*icos7
endif
endif
999 return