WSJT-X/lib/wsprd/fano.h
Steven Franke 6951499db3 Move hashtab onto the heap. Add new wsprd_exp with stack decoder option (jelinek.c)
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@5721 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
2015-07-25 23:48:53 +00:00

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