46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine genwspr_fsk8(msg,msgsent,itone) | ||
|  | 
 | ||
|  | ! Encode a WSPR-LF 8-FSK message, producing array itone(). | ||
|  |    | ||
|  |   use crc | ||
|  |   include 'wspr_fsk8_params.f90' | ||
|  | 
 | ||
|  |   character*22 msg,msgsent | ||
|  |   character*60 cbits | ||
|  |   integer*1,target :: idat(9) | ||
|  |   integer*1 msgbits(KK),codeword(3*ND) | ||
|  |   integer itone(NN) | ||
|  |   integer icos7(0:6) | ||
|  |   data icos7/2,5,6,0,4,1,3/                  !Costas 7x7 tone pattern | ||
|  | 
 | ||
|  |   idat=0 | ||
|  |   call wqencode(msg,ntype0,idat)             !Source encoding | ||
|  |   id7=idat(7) | ||
|  |   if(id7.lt.0) id7=id7+256 | ||
|  |   id7=id7/64 | ||
|  |   icrc=crc10(c_loc(idat),9)                  !Compute the 10-bit CRC | ||
|  |   idat(8)=icrc/256                           !Insert CRC into idat(8:9) | ||
|  |   idat(9)=iand(icrc,255) | ||
|  |   call wqdecode(idat,msgsent,itype) | ||
|  | 
 | ||
|  |   write(cbits,1004) idat(1:6),id7,icrc | ||
|  | 1004 format(6b8.8,b2.2,b10.10) | ||
|  |   read(cbits,1006) msgbits | ||
|  | 1006 format(60i1) | ||
|  | 
 | ||
|  | !  call chkcrc10(msgbits,nbadcrc) | ||
|  | !  print*,msgsent,itype,crc10_check(c_loc(idat),9),nbadcrc | ||
|  |    | ||
|  |   call encode300(msgbits,codeword)      !Encode the test message | ||
|  | 
 | ||
|  | ! Message structure: S7 D100 S7 | ||
|  |   itone(1:7)=icos7 | ||
|  |   itone(NN-6:NN)=icos7 | ||
|  |   do j=1,ND | ||
|  |      i=3*j -2 | ||
|  |      itone(j+7)=codeword(i)*4 + codeword(i+1)*2 + codeword(i+2) | ||
|  |   enddo | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine genwspr_fsk8 |