GNU Radio 3.5.3.1 C++ API
int.h
Go to the documentation of this file.
1
/* Include file to configure the RS codec for integer symbols
2
*
3
* Copyright 2002, Phil Karn, KA9Q
4
* May be used under the terms of the GNU General Public License (GPL)
5
*/
6
#define DTYPE int
7
8
#include <
gr_core_api.h
>
9
10
/* Reed-Solomon codec control block */
11
struct
GR_CORE_API
rs
{
12
unsigned
int
mm;
/* Bits per symbol */
13
unsigned
int
nn;
/* Symbols per block (= (1<<mm)-1) */
14
int
*
alpha_to
;
/* log lookup table */
15
int
*
index_of
;
/* Antilog lookup table */
16
int
*
genpoly
;
/* Generator polynomial */
17
unsigned
int
nroots;
/* Number of generator roots = number of parity symbols */
18
unsigned
int
fcr
;
/* First consecutive root, index form */
19
unsigned
int
prim
;
/* Primitive element, index form */
20
unsigned
int
iprim
;
/* prim-th root of 1, index form */
21
};
22
23
static
inline
int
modnn
(
struct
rs
*
rs
,
int
x){
24
while
(x >= rs->
nn
) {
25
x -= rs->
nn
;
26
x = (x >> rs->
mm
) + (x & rs->
nn
);
27
}
28
return
x;
29
}
30
#define MODNN(x) modnn(rs,x)
31
32
#define MM (rs->mm)
33
#define NN (rs->nn)
34
#define ALPHA_TO (rs->alpha_to)
35
#define INDEX_OF (rs->index_of)
36
#define GENPOLY (rs->genpoly)
37
#define NROOTS (rs->nroots)
38
#define FCR (rs->fcr)
39
#define PRIM (rs->prim)
40
#define IPRIM (rs->iprim)
41
#define A0 (NN)
42
43
#define ENCODE_RS encode_rs_int
44
#define DECODE_RS decode_rs_int
45
#define INIT_RS init_rs_int
46
#define FREE_RS free_rs_int
47
48
GR_CORE_API
void
ENCODE_RS
(
void
*p,
DTYPE
*data,
DTYPE
*parity);
49
GR_CORE_API
int
DECODE_RS
(
void
*p,
DTYPE
*data,
int
*eras_pos,
int
no_eras);
50
void
*
INIT_RS
(
unsigned
int
symsize,
unsigned
int
gfpoly,
unsigned
int
fcr,
51
unsigned
int
prim,
unsigned
int
nroots);
52
GR_CORE_API
void
FREE_RS
(
void
*p);
53
54
55
gnuradio-core
src
lib
reed-solomon
int.h
Generated by
1.8.1.1