mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-26 02:20:20 -04: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
							
								
									de58b21207
								
							
						
					
					
						commit
						38fdda4dc7
					
				| @ -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,28 +4,41 @@ 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 | ||||||
| 
 | 
 | ||||||
|   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 | ||||||
| 
 | 
 | ||||||
| ! Message structure: S7 D29 S7 D29 S7 | ! Message structure: S7 D29 S7 D29 S7 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user