rtlsdr-wsprd/wsprd/fano.h

45 wiersze
1.4 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
*/
#pragma once
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]; \
}