1 | #if !defined(_ECC_LIB_H_)
|
---|
2 |
|
---|
3 | #define _ECC_LIB_H_
|
---|
4 |
|
---|
5 | #define REED_SOLOMON
|
---|
6 |
|
---|
7 | typedef unsigned char dtype;
|
---|
8 |
|
---|
9 | void EccInit( int nn, int kk, int mm ) ;
|
---|
10 |
|
---|
11 | /* Reed-Solomon encoding
|
---|
12 | * data[] is the input block, parity symbols are placed in bb[]
|
---|
13 | * bb[] may lie past the end of the data, e.g., for (255,223):
|
---|
14 | * encode_rs(&data[0],&data[223]);
|
---|
15 | */
|
---|
16 | int EccEncode(dtype *data, dtype *bb );
|
---|
17 |
|
---|
18 | /* Reed-Solomon erasures-and-errors decoding
|
---|
19 | * The received block goes into data[], and a list of zero-origin
|
---|
20 | * erasure positions, if any, goes in eras_pos[] with a count in no_eras.
|
---|
21 | *
|
---|
22 | * The decoder corrects the symbols in place, if possible and returns
|
---|
23 | * the number of corrected symbols. If the codeword is illegal or
|
---|
24 | * uncorrectible, the data array is unchanged and -1 is returned
|
---|
25 | */
|
---|
26 | int EccDecode( dtype *data, dtype *ecc, int *eras_pos, int no_eras) ;
|
---|
27 |
|
---|
28 | void SetEcc( void *bloc, unsigned char * ) ;
|
---|
29 | int UnsetEcc( void *bloc, unsigned char * ) ;
|
---|
30 |
|
---|
31 | #if defined(REED_SOLOMON)
|
---|
32 | /* defini ici que si l'on n'a pas inclu archeops.h qui contient les memes definitions */
|
---|
33 | #ifndef version_num
|
---|
34 | #define ECC_TOTAL 255
|
---|
35 | #define ECC_DATA 239 /* Nb de bytes de data encodes */
|
---|
36 | #define ECC_SIZE (ECC_TOTAL-ECC_DATA) /* Nb de bytes encodeurs */
|
---|
37 | #define SIZE_HEAD sizeof(long)*3 /* 3 mots d'entete de blocs */
|
---|
38 | #endif
|
---|
39 | #if defined(_ECCLIB_MAIN_)
|
---|
40 |
|
---|
41 | int Kgood = ECC_DATA, /* Detection/correction de 8 bytes en erreur
|
---|
42 | On peut aller jusqu'a 16 (Kgood = 223 ) */
|
---|
43 | Ntotal = 255 ;
|
---|
44 |
|
---|
45 | #else
|
---|
46 |
|
---|
47 | extern int Kgood, Ntotal ;
|
---|
48 |
|
---|
49 | #endif
|
---|
50 | #endif
|
---|
51 | #endif
|
---|