You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
/* Utility routines for FEC support |
|
* Copyright 2004, Phil Karn, KA9Q |
|
*/ |
|
|
|
#include <stdio.h> |
|
#include "fec.h" |
|
|
|
unsigned char Partab[256]; |
|
int P_init; |
|
|
|
/* Create 256-entry odd-parity lookup table |
|
* Needed only on non-ia32 machines |
|
*/ |
|
void partab_init(void){ |
|
int i,cnt,ti; |
|
|
|
/* Initialize parity lookup table */ |
|
for(i=0;i<256;i++){ |
|
cnt = 0; |
|
ti = i; |
|
while(ti){ |
|
if(ti & 1) |
|
cnt++; |
|
ti >>= 1; |
|
} |
|
Partab[i] = cnt & 1; |
|
} |
|
P_init=1; |
|
} |
|
|
|
/* Lookup table giving count of 1 bits for integers 0-255 */ |
|
int Bitcnt[] = { |
|
0, 1, 1, 2, 1, 2, 2, 3, |
|
1, 2, 2, 3, 2, 3, 3, 4, |
|
1, 2, 2, 3, 2, 3, 3, 4, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
1, 2, 2, 3, 2, 3, 3, 4, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
1, 2, 2, 3, 2, 3, 3, 4, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
4, 5, 5, 6, 5, 6, 6, 7, |
|
1, 2, 2, 3, 2, 3, 3, 4, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
4, 5, 5, 6, 5, 6, 6, 7, |
|
2, 3, 3, 4, 3, 4, 4, 5, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
4, 5, 5, 6, 5, 6, 6, 7, |
|
3, 4, 4, 5, 4, 5, 5, 6, |
|
4, 5, 5, 6, 5, 6, 6, 7, |
|
4, 5, 5, 6, 5, 6, 6, 7, |
|
5, 6, 6, 7, 6, 7, 7, 8, |
|
}; |
|
|
|
|