mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-04 05:50:31 -05:00 
			
		
		
		
	Update some test routines.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7719 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									7c56769454
								
							
						
					
					
						commit
						98877f526c
					
				@ -333,6 +333,7 @@ set (wsjt_FSRCS
 | 
				
			|||||||
  lib/ccf65.f90
 | 
					  lib/ccf65.f90
 | 
				
			||||||
  lib/fsk4hf/chkcrc10.f90
 | 
					  lib/fsk4hf/chkcrc10.f90
 | 
				
			||||||
  lib/fsk4hf/chkcrc12.f90
 | 
					  lib/fsk4hf/chkcrc12.f90
 | 
				
			||||||
 | 
					  lib/fsk4hf/chkcrc12a.f90
 | 
				
			||||||
  lib/chkhist.f90
 | 
					  lib/chkhist.f90
 | 
				
			||||||
  lib/chkmsg.f90
 | 
					  lib/chkmsg.f90
 | 
				
			||||||
  lib/chkss2.f90
 | 
					  lib/chkss2.f90
 | 
				
			||||||
@ -890,7 +891,7 @@ if (Fortran_COMPILER_NAME MATCHES "gfortran.*")
 | 
				
			|||||||
    set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
 | 
					    set (CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -isysroot ${CMAKE_OSX_SYSROOT}")
 | 
				
			||||||
  endif (CMAKE_OSX_SYSROOT)
 | 
					  endif (CMAKE_OSX_SYSROOT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -fbounds-check -funroll-all-loops -fno-f2c ${General_FFLAGS}")
 | 
					  set (CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE} -funroll-all-loops -fno-f2c ${General_FFLAGS}")
 | 
				
			||||||
  set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check -fno-f2c ${General_FFLAGS}")
 | 
					  set (CMAKE_Fortran_FLAGS_DEBUG   "${CMAKE_Fortran_FLAGS_DEBUG} -fbounds-check -fno-f2c ${General_FFLAGS}")
 | 
				
			||||||
elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
 | 
					elseif (Fortran_COMPILER_NAME MATCHES "ifort.*")
 | 
				
			||||||
  # ifort (untested)
 | 
					  # ifort (untested)
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										24
									
								
								lib/fsk4hf/chkcrc12a.f90
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								lib/fsk4hf/chkcrc12a.f90
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					subroutine chkcrc12a(decoded,nbadcrc)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  use crc
 | 
				
			||||||
 | 
					  integer*1 decoded(87)
 | 
				
			||||||
 | 
					  integer*1, target:: i1Dec8BitBytes(11)
 | 
				
			||||||
 | 
					  character*87 cbits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					! Write decoded bits into cbits: 75-bit message plus 12-bit CRC
 | 
				
			||||||
 | 
					  write(cbits,1000) decoded
 | 
				
			||||||
 | 
					1000 format(87i1)
 | 
				
			||||||
 | 
					  read(cbits,1001) i1Dec8BitBytes
 | 
				
			||||||
 | 
					1001 format(11b8)
 | 
				
			||||||
 | 
					  read(cbits,1002) ncrc12                         !Received CRC12
 | 
				
			||||||
 | 
					1002 format(75x,b12)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32)
 | 
				
			||||||
 | 
					  i1Dec8BitBytes(11)=0
 | 
				
			||||||
 | 
					  icrc12=crc12(c_loc(i1Dec8BitBytes),11)          !CRC12 computed from 75 msg bits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  nbadcrc=1
 | 
				
			||||||
 | 
					  if(ncrc12.eq.icrc12) nbadcrc=0
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  return
 | 
				
			||||||
 | 
					end subroutine chkcrc12a
 | 
				
			||||||
@ -6,28 +6,24 @@ subroutine extractmessage174(decoded,msgreceived,ncrcflag,recent_calls,nrecent)
 | 
				
			|||||||
  character*22 msgreceived
 | 
					  character*22 msgreceived
 | 
				
			||||||
  character*12 call1,call2
 | 
					  character*12 call1,call2
 | 
				
			||||||
  character*12 recent_calls(nrecent)
 | 
					  character*12 recent_calls(nrecent)
 | 
				
			||||||
 | 
					  character*87 cbits
 | 
				
			||||||
  integer*1 decoded(87)
 | 
					  integer*1 decoded(87)
 | 
				
			||||||
  integer*1, target::  i1Dec8BitBytes(11)
 | 
					  integer*1, target::  i1Dec8BitBytes(11)
 | 
				
			||||||
  integer*4 i4Dec6BitWords(12)
 | 
					  integer*4 i4Dec6BitWords(12)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! Collapse 87 decoded bits to 11 bytes. Bytes 1-9 are the message, byte 10 and first half of byte 11 is the crc
 | 
					! Write decoded bits into cbits: 75-bit message plus 12-bit CRC
 | 
				
			||||||
  do ibyte=1,9
 | 
					  write(cbits,1000) decoded
 | 
				
			||||||
      itmp=0
 | 
					1000 format(87i1)
 | 
				
			||||||
    do ibit=1,8
 | 
					  read(cbits,1001) i1Dec8BitBytes
 | 
				
			||||||
      itmp=ishft(itmp,1)+iand(1,decoded((ibyte-1)*8+ibit))
 | 
					1001 format(11b8)
 | 
				
			||||||
    enddo
 | 
					  read(cbits,1002) ncrc12                         !Received CRC12
 | 
				
			||||||
    i1Dec8BitBytes(ibyte)=itmp
 | 
					1002 format(75x,b12)
 | 
				
			||||||
  enddo
 | 
					 | 
				
			||||||
! Need to pack the crc into bytes 10 and 11 for crc12_check
 | 
					 | 
				
			||||||
!  i1Dec8BitBytes(10)=decoded(73)*8+decoded(74)*4+decoded(75)*2+decoded(76)
 | 
					 | 
				
			||||||
!  i1Dec8BitBytes(11)=decoded(77)*128+decoded(78)*64+decoded(79)*2*32+decoded(80)*16
 | 
					 | 
				
			||||||
!  i1Dec8BitBytes(11)=i1Dec8BitBytes(11)+decoded(81)*8+decoded(82)*4+decoded(83)*2+decoded(84)
 | 
					 | 
				
			||||||
  i1Dec8BitBytes(10)=decoded(76)*8+decoded(77)*4+decoded(78)*2+decoded(79)
 | 
					 | 
				
			||||||
  i1Dec8BitBytes(11)=decoded(80)*128+decoded(81)*64+decoded(82)*2*32+decoded(83)*16
 | 
					 | 
				
			||||||
  i1Dec8BitBytes(11)=i1Dec8BitBytes(11)+decoded(84)*8+decoded(85)*4+decoded(86)*2+decoded(87)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
!  if( crc12_check(c_loc (i1Dec8BitBytes), 11) ) then
 | 
					  i1Dec8BitBytes(10)=iand(i1Dec8BitBytes(10),128+64+32)
 | 
				
			||||||
  if(.true.) then    !### TEST ###
 | 
					  i1Dec8BitBytes(11)=0
 | 
				
			||||||
 | 
					  icrc12=crc12(c_loc(i1Dec8BitBytes),11)          !CRC12 computed from 75 msg bits
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if(ncrc12.eq.icrc12) then
 | 
				
			||||||
! CRC12 checks out --- unpack 72-bit message
 | 
					! CRC12 checks out --- unpack 72-bit message
 | 
				
			||||||
    do ibyte=1,12
 | 
					    do ibyte=1,12
 | 
				
			||||||
      itmp=0
 | 
					      itmp=0
 | 
				
			||||||
 | 
				
			|||||||
@ -13,7 +13,7 @@ program ft8d
 | 
				
			|||||||
  include 'ft8_params.f90'
 | 
					  include 'ft8_params.f90'
 | 
				
			||||||
  parameter(NRECENT=10)
 | 
					  parameter(NRECENT=10)
 | 
				
			||||||
  character*12 recent_calls(NRECENT)
 | 
					  character*12 recent_calls(NRECENT)
 | 
				
			||||||
  character message*22,cbits*75,infile*80,datetime*11
 | 
					  character message*22,infile*80,datetime*11
 | 
				
			||||||
  real s(NH1,NHSYM)
 | 
					  real s(NH1,NHSYM)
 | 
				
			||||||
  real s1(0:7,ND)
 | 
					  real s1(0:7,ND)
 | 
				
			||||||
  real ps(0:7)
 | 
					  real ps(0:7)
 | 
				
			||||||
@ -47,6 +47,7 @@ program ft8d
 | 
				
			|||||||
     datetime=infile(j2-11:j2-1)
 | 
					     datetime=infile(j2-11:j2-1)
 | 
				
			||||||
     call sync8(iwave,xdt,f1,s)
 | 
					     call sync8(iwave,xdt,f1,s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     xsnr=0.
 | 
				
			||||||
     tstep=0.5*NSPS/12000.0
 | 
					     tstep=0.5*NSPS/12000.0
 | 
				
			||||||
     df=12000.0/NFFT1
 | 
					     df=12000.0/NFFT1
 | 
				
			||||||
     i0=nint(f1/df)
 | 
					     i0=nint(f1/df)
 | 
				
			||||||
@ -83,15 +84,13 @@ program ft8d
 | 
				
			|||||||
     ss=0.84
 | 
					     ss=0.84
 | 
				
			||||||
     llr=2.0*rxdata/(ss*ss)
 | 
					     llr=2.0*rxdata/(ss*ss)
 | 
				
			||||||
     apmask=0
 | 
					     apmask=0
 | 
				
			||||||
     max_iterations=20
 | 
					     max_iterations=40
 | 
				
			||||||
     ifer=0
 | 
					     ifer=0
 | 
				
			||||||
     call bpdecode174(llr,apmask,max_iterations,decoded,niterations)
 | 
					     call bpdecode174(llr,apmask,max_iterations,decoded,niterations)
 | 
				
			||||||
!     if(niterations.lt.0) call osd174(llr,4,decoded,niterations,cw)
 | 
					     if(niterations.lt.0) call osd174(llr,2,decoded,niterations,cw)
 | 
				
			||||||
     nbadcrc=0
 | 
					     nbadcrc=0
 | 
				
			||||||
     if(niterations.ge.0) call chkcrc10(decoded,nbadcrc)
 | 
					     if(niterations.ge.0) call chkcrc12a(decoded,nbadcrc)
 | 
				
			||||||
!     if(niterations.lt.0 .or. nbadcrc.ne.0) ifer=1
 | 
					     if(niterations.lt.0 .or. nbadcrc.ne.0) ifer=1
 | 
				
			||||||
     if(niterations.lt.0) ifer=1
 | 
					 | 
				
			||||||
!     if(ifer.eq.0) exit
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
     message='                      '
 | 
					     message='                      '
 | 
				
			||||||
     if(ifer.eq.0) then
 | 
					     if(ifer.eq.0) then
 | 
				
			||||||
 | 
				
			|||||||
@ -4,13 +4,13 @@ subroutine genft8(msg,msgsent,itone)
 | 
				
			|||||||
  
 | 
					  
 | 
				
			||||||
  use crc
 | 
					  use crc
 | 
				
			||||||
  use packjt
 | 
					  use packjt
 | 
				
			||||||
  use hashing
 | 
					 | 
				
			||||||
  include 'ft8_params.f90'
 | 
					  include 'ft8_params.f90'
 | 
				
			||||||
 | 
					 | 
				
			||||||
  character*22 msg,msgsent
 | 
					  character*22 msg,msgsent
 | 
				
			||||||
  character*87 cbits
 | 
					  character*87 cbits
 | 
				
			||||||
 | 
					  logical checksumok
 | 
				
			||||||
  integer*4 i4Msg6BitWords(12)                !72-bit message as 6-bit words
 | 
					  integer*4 i4Msg6BitWords(12)                !72-bit message as 6-bit words
 | 
				
			||||||
  integer*1 msgbits(KK),codeword(3*ND)
 | 
					  integer*1 msgbits(KK),codeword(3*ND)
 | 
				
			||||||
 | 
					  integer*1, target:: i1Msg8BitBytes(11)
 | 
				
			||||||
  integer itone(NN)
 | 
					  integer itone(NN)
 | 
				
			||||||
  integer icos7(0:6)
 | 
					  integer icos7(0:6)
 | 
				
			||||||
  data icos7/2,5,6,0,4,1,3/                   !Costas 7x7 tone pattern
 | 
					  data icos7/2,5,6,0,4,1,3/                   !Costas 7x7 tone pattern
 | 
				
			||||||
@ -18,13 +18,26 @@ subroutine genft8(msg,msgsent,itone)
 | 
				
			|||||||
  call packmsg(msg,i4Msg6BitWords,itype)      !Pack into 12 6-bit bytes
 | 
					  call packmsg(msg,i4Msg6BitWords,itype)      !Pack into 12 6-bit bytes
 | 
				
			||||||
  call unpackmsg(i4Msg6BitWords,msgsent)      !Unpack to get msgsent
 | 
					  call unpackmsg(i4Msg6BitWords,msgsent)      !Unpack to get msgsent
 | 
				
			||||||
  i3bit=0                                     !### temporary ###
 | 
					  i3bit=0                                     !### temporary ###
 | 
				
			||||||
  icrc12=0        !### temporary ###
 | 
					  write(cbits,1000) i4Msg6BitWords,32*i3bit
 | 
				
			||||||
 | 
					1000 format(12b6.6,b8.8)
 | 
				
			||||||
 | 
					  read(cbits,1001) i1Msg8BitBytes(1:10)
 | 
				
			||||||
 | 
					1001 format(10b8)
 | 
				
			||||||
 | 
					  i1Msg8BitBytes(10)=iand(i1Msg8BitBytes(10),128+64+32)
 | 
				
			||||||
 | 
					  i1Msg8BitBytes(11)=0
 | 
				
			||||||
 | 
					  icrc12=crc12(c_loc(i1Msg8BitBytes),11)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  write(cbits,1000) i4Msg6BitWords,i3bit,icrc12
 | 
					! For reference, here's how to check the CRC
 | 
				
			||||||
1000 format(12b6.6,b3.3,b12.12)
 | 
					  i1Msg8BitBytes(10)=icrc12/256
 | 
				
			||||||
  read(cbits,1002) msgbits
 | 
					  i1Msg8BitBytes(11)=iand (icrc12,255)
 | 
				
			||||||
1002 format(87i1)
 | 
					  checksumok = crc12_check(c_loc (i1Msg8BitBytes), 11)
 | 
				
			||||||
 | 
					  if( checksumok ) write(*,*) 'Good checksum'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  write(cbits,1003) i4Msg6BitWords,i3bit,icrc12
 | 
				
			||||||
 | 
					1003 format(12b6.6,b3.3,b12.12)
 | 
				
			||||||
 | 
					  read(cbits,1004) msgbits
 | 
				
			||||||
 | 
					1004 format(87i1)
 | 
				
			||||||
  print*,cbits
 | 
					  print*,cbits
 | 
				
			||||||
 | 
					  print*,icrc12
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  call encode174(msgbits,codeword)      !Encode the test message
 | 
					  call encode174(msgbits,codeword)      !Encode the test message
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user