40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  This file is part of wsprd. | ||
|  |   | ||
|  |  File name: fano.h | ||
|  | 
 | ||
|  |  Description: Header file for sequential Fano decoder. | ||
|  | 
 | ||
|  |  Copyright 1994, Phil Karn, KA9Q | ||
|  |  Minor modifications by Joe Taylor, K1JT | ||
|  | */ | ||
|  | 
 | ||
|  | #ifndef FANO_H
 | ||
|  | #define FANO_H
 | ||
|  | 
 | ||
|  | int fano(unsigned int *metric, unsigned int *cycles, unsigned int *maxnp, | ||
|  | 	unsigned char *data,unsigned char *symbols, unsigned int nbits, | ||
|  | 	 int mettab[2][256],int delta,unsigned int maxcycles); | ||
|  | 
 | ||
|  | int encode(unsigned char *symbols,unsigned char *data,unsigned int nbytes); | ||
|  | 
 | ||
|  | extern unsigned char Partab[]; | ||
|  | 
 | ||
|  | /* Convolutional encoder macro. Takes the encoder state, generates
 | ||
|  |  * a rate 1/2 symbol pair and stores it in 'sym'. The symbol generated from | ||
|  |  * POLY1 goes into the 2-bit of sym, and the symbol generated from POLY2 | ||
|  |  * goes into the 1-bit. | ||
|  |  */ | ||
|  | #define	ENCODE(sym,encstate){\
 | ||
|  | unsigned long _tmp;\ | ||
|  | \ | ||
|  | _tmp = (encstate) & POLY1;\ | ||
|  | _tmp ^= _tmp >> 16;\ | ||
|  | (sym) = Partab[(_tmp ^ (_tmp >> 8)) & 0xff] << 1;\ | ||
|  | _tmp = (encstate) & POLY2;\ | ||
|  | _tmp ^= _tmp >> 16;\ | ||
|  | (sym) |= Partab[(_tmp ^ (_tmp >> 8)) & 0xff];\ | ||
|  | } | ||
|  | 
 | ||
|  | #endif
 |