28 lines
		
	
	
		
			769 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			769 B
		
	
	
	
		
			Fortran
		
	
	
	
	
	
|   | subroutine chkcrc10(decoded,nbadcrc)
 | ||
|  | 
 | ||
|  |   use crc
 | ||
|  |   integer*1 decoded(60)
 | ||
|  |   integer*1, target:: i1Dec8BitBytes(9)
 | ||
|  | 
 | ||
|  | ! Check the CRC
 | ||
|  |   do ibyte=1,6
 | ||
|  |      itmp=0
 | ||
|  |      do ibit=1,8
 | ||
|  |         itmp=ishft(itmp,1)+iand(1,decoded((ibyte-1)*8+ibit))
 | ||
|  |      enddo
 | ||
|  |      i1Dec8BitBytes(ibyte)=itmp
 | ||
|  |   enddo
 | ||
|  |   i1Dec8BitBytes(7)=decoded(49)*128+decoded(50)*64
 | ||
|  | 
 | ||
|  | ! Pack received CRC into bytes 8 and 9 for crc10_check
 | ||
|  |   i1Dec8BitBytes(8)=decoded(51)*2+decoded(52)
 | ||
|  |   i1Dec8BitBytes(9)=decoded(53)*128 + decoded(54)*64+decoded(55)*32 +   &
 | ||
|  |        decoded(56)*16
 | ||
|  |   i1Dec8BitBytes(9)=i1Dec8BitBytes(9) + decoded(57)*8+decoded(58)*4 +   &
 | ||
|  |        decoded(59)*2+decoded(60)*1
 | ||
|  |   nbadcrc=1
 | ||
|  |   if(crc10_check(c_loc(i1Dec8BitBytes),9)) nbadcrc=0
 | ||
|  | 
 | ||
|  |   return
 | ||
|  | end subroutine chkcrc10
 |