RDFS
The Rice Comp413 2017 class' continuation on the work of the 2016 RDFS.
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
erasure_coder.h
1 
26 #ifndef ISAL_INCLUDE_ERASURE_CODER_H_
27 #define ISAL_INCLUDE_ERASURE_CODER_H_
28 
29 #include <stdio.h>
30 #include <stdlib.h>
31 #include <string.h>
32 
33 #include "erasure_code.h"
34 
35 #define MMAX 14
36 #define KMAX 10
37 
38 typedef struct _IsalCoder {
39  int verbose;
40  int numParityUnits;
41  int numDataUnits;
42  int numAllUnits;
43 } IsalCoder;
44 
45 typedef struct _IsalEncoder {
46  IsalCoder coder;
47 
48  unsigned char gftbls[MMAX * KMAX * 32];
49 
50  unsigned char encodeMatrix[MMAX * KMAX];
51 } IsalEncoder;
52 
53 typedef struct _IsalDecoder {
54  IsalCoder coder;
55 
56  unsigned char encodeMatrix[MMAX * KMAX];
57 
58  // Below are per decode call
59  unsigned char gftbls[MMAX * KMAX * 32];
60  unsigned int decodeIndex[MMAX];
61  unsigned char tmpMatrix[MMAX * KMAX];
62  unsigned char invertMatrix[MMAX * KMAX];
63  unsigned char decodeMatrix[MMAX * KMAX];
64  unsigned char erasureFlags[MMAX];
65  int erasedIndexes[MMAX];
66  int numErased;
67  int numErasedDataUnits;
68  unsigned char *realInputs[MMAX];
69 } IsalDecoder;
70 
71 void initCoder(IsalCoder *pCoder, int numDataUnits, int numParityUnits);
72 
73 void allowVerbose(IsalCoder *pCoder, int flag);
74 
75 void initEncoder(IsalEncoder *encoder, int numDataUnits, int numParityUnits);
76 
77 void initDecoder(IsalDecoder *decoder, int numDataUnits, int numParityUnits);
78 
79 void clearDecoder(IsalDecoder *decoder);
80 
81 int encode(IsalEncoder *encoder, unsigned char **dataUnits,
82  unsigned char **parityUnits, int chunkSize);
83 
84 int decode(IsalDecoder *decoder, unsigned char **allUnits,
85  int *erasedIndexes, int numErased,
86  unsigned char **recoveredUnits, int chunkSize);
87 
88 int generateDecodeMatrix(IsalDecoder *pCoder);
89 
90 #endif // ISAL_INCLUDE_ERASURE_CODER_H_
Definition: erasure_coder.h:38
Definition: erasure_coder.h:45
Definition: erasure_coder.h:53