Wireshark
4.5.0
The Wireshark network protocol analyzer
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
Variables
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
m
o
p
r
s
t
u
v
w
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
Variables
Typedefs
a
b
c
d
e
f
g
h
i
m
p
r
s
t
u
v
w
Enumerations
Enumerator
a
b
c
e
f
h
i
n
o
r
s
t
w
Macros
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
Loading...
Searching...
No Matches
epan
reedsolomon.h
Go to the documentation of this file.
1
14
#ifdef __cplusplus
15
extern
"C"
{
16
#endif
17
18
/* Set one of these to enable encoder/decoder debugging and error checking,
19
* at the expense of speed */
20
/* #undef DEBUG 1*/
21
/* #undef DEBUG 2*/
22
#undef DEBUG
23
24
/* To select the CCSDS standard (255,223) code, define CCSDS. This
25
* implies standard values for MM, KK, B0 and PRIM.
26
*/
27
/* #undef CCSDS 1*/
28
#undef CCSDS
29
#ifndef CCSDS
30
31
/* Otherwise, leave CCSDS undefined and set the parameters below:
32
*
33
* Set MM to be the size of each code symbol in bits. The Reed-Solomon
34
* block size will then be NN = 2**M - 1 symbols. Supported values are
35
* defined in rs.c.
36
*/
37
#define MM 8
/* Symbol size in bits */
38
39
/*
40
* Set KK to be the number of data symbols in each block, which must be
41
* less than the block size. The code will then be able to correct up
42
* to NN-KK erasures or (NN-KK)/2 errors, or combinations thereof with
43
* each error counting as two erasures.
44
*/
45
#define KK 207
/* Number of data symbols per block */
46
47
/* Set B0 to the first root of the generator polynomial, in alpha form, and
48
* set PRIM to the power of alpha used to generate the roots of the
49
* generator polynomial. The generator polynomial will then be
50
* @**PRIM*B0, @**PRIM*(B0+1), @**PRIM*(B0+2)...@**PRIM*(B0+NN-KK)
51
* where "@" represents a lower case alpha.
52
*/
53
#define B0 1
/* First root of generator polynomial, alpha form */
54
#define PRIM 1
/* power of alpha used to generate roots of generator poly */
55
#define STANDARD_ORDER
56
57
/* If you want to select your own field generator polynomial, you'll have
58
* to edit that in rs.c.
59
*/
60
61
#else
/* CCSDS */
62
/* Don't change these, they're CCSDS standard */
63
#define MM 8
64
#define KK 223
65
#define B0 112
66
#define PRIM 11
67
#endif
68
69
#define NN ((1 << MM) - 1)
70
71
#if MM <= 8
72
typedef
unsigned
char
dtype;
73
#else
74
typedef
unsigned
int
dtype;
75
#endif
76
77
/* Reed-Solomon encoding
78
* data[] is the input block, parity symbols are placed in bb[]
79
* bb[] may lie past the end of the data, e.g., for (255,223):
80
* encode_rs(&data[0],&data[223]);
81
*/
82
int
encode_rs(dtype data[], dtype bb[]);
83
84
/* Reed-Solomon erasures-and-errors decoding
85
* The received block goes into data[], and a list of zero-origin
86
* erasure positions, if any, goes in eras_pos[] with a count in no_eras.
87
*
88
* The decoder corrects the symbols in place, if possible and returns
89
* the number of corrected symbols. If the codeword is illegal or
90
* uncorrectible, the data array is unchanged and -1 is returned
91
*/
92
int
eras_dec_rs(dtype data[],
int
eras_pos[],
int
no_eras);
93
94
#ifdef __cplusplus
95
}
96
#endif
Generated by
1.9.8