mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	Generic message packing and unpacking routines now understand antipode grid contest messages. These messages are now recognized as standard messages in message response processing and dealt with appropriately when contest mode is selected and applicable (currently FT8 and MSK144 only). git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8062 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
program QRA64code
 | 
						|
 | 
						|
! Provides examples of message packing, bit and symbol ordering,
 | 
						|
! QRA (63,12) encoding, and other necessary details of the QRA64
 | 
						|
! protocol.  
 | 
						|
 | 
						|
  use packjt
 | 
						|
  character*22 msg,msg0,msg1,decoded,cok*3,msgtype*10,arg*12
 | 
						|
  character*6 mycall
 | 
						|
  logical ltext
 | 
						|
  integer dgen(12),sent(63),dec(12)
 | 
						|
  integer icos7(0:6)
 | 
						|
  data icos7/2,5,6,0,4,1,3/     !Defines a 7x7 Costas array
 | 
						|
 | 
						|
  include 'testmsg.f90'
 | 
						|
 | 
						|
  nargs=iargc()
 | 
						|
  if(nargs.lt.1) then
 | 
						|
     print*,'Usage: qra64code "message"'
 | 
						|
     print*,'       qra64code -t'
 | 
						|
     go to 999
 | 
						|
  endif
 | 
						|
 | 
						|
  call getarg(1,msg)                     !Get message from command line
 | 
						|
  nmsg=1
 | 
						|
  if(msg(1:2).eq."-t") nmsg=NTEST
 | 
						|
 | 
						|
  write(*,1010)
 | 
						|
1010 format("     Message                 Decoded                Err? Type"/74("-"))
 | 
						|
 | 
						|
  do imsg=1,nmsg
 | 
						|
     if(nmsg.gt.1) msg=testmsg(imsg)
 | 
						|
    call fmtmsg(msg,iz)                    !To upper, collapse mult blanks
 | 
						|
     msg0=msg                               !Input message
 | 
						|
     call chkmsg(msg,cok,nspecial,flip)     !See if it includes "OOO" report
 | 
						|
     msg1=msg                               !Message without "OOO"
 | 
						|
     call packmsg(msg1,dgen,itype,.false.) !Pack message into 12 six-bit bytes
 | 
						|
     msgtype=""
 | 
						|
     if(itype.eq.1) msgtype="Std Msg"
 | 
						|
     if(itype.eq.2) msgtype="Type 1 pfx"
 | 
						|
     if(itype.eq.3) msgtype="Type 1 sfx"
 | 
						|
     if(itype.eq.4) msgtype="Type 2 pfx"
 | 
						|
     if(itype.eq.5) msgtype="Type 2 sfx"
 | 
						|
     if(itype.eq.6) msgtype="Free text"
 | 
						|
 | 
						|
     call qra64_enc(dgen,sent)              !Encode using QRA64
 | 
						|
 | 
						|
     call unpackmsg(dgen,decoded,.false.,'      ') !Unpack the user message
 | 
						|
     call fmtmsg(decoded,iz)
 | 
						|
     ii=imsg
 | 
						|
     write(*,1020) ii,msg0,decoded,itype,msgtype
 | 
						|
1020 format(i4,1x,a22,2x,a22,4x,i3,": ",a13)
 | 
						|
  enddo
 | 
						|
 | 
						|
  if(nmsg.eq.1) then
 | 
						|
     write(*,1030) dgen
 | 
						|
1030 format(/'Packed message, 6-bit symbols ',12i3) !Display packed symbols
 | 
						|
 | 
						|
     write(*,1040) sent
 | 
						|
1040 format(/'Information-carrying channel symbols'/(i5,29i3))
 | 
						|
 | 
						|
     write(*,1050) 10*icos7,sent(1:32),10*icos7,sent(33:63),10*icos7
 | 
						|
1050 format(/'Channel symbols including sync'/(i5,29i3))
 | 
						|
  endif
 | 
						|
  
 | 
						|
999 end program QRA64code
 |