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

View File

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