[649] | 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
|
---|