52 explicit ReedSolomon(
const std::string& gnss_signal = std::string());
87 const std::vector<uint8_t>& genpoly_coeff = std::vector<uint8_t>{},
88 const std::vector<std::vector<uint8_t>>& gen_matrix = std::vector<std::vector<uint8_t>>{});
101 int decode(std::vector<uint8_t>& data_to_decode,
102 const std::vector<int>& erasure_positions = std::vector<int>{})
const;
121 static const int d_symbols_per_block = 255;
122 static const int d_symsize = 8;
124 int mod255(
int x)
const;
125 int rs_min(
int a,
int b)
const;
126 int decode_rs_8(uint8_t* data,
const int* eras_pos,
int no_eras)
const;
128 uint8_t galois_mul(uint8_t a, uint8_t b)
const;
129 uint8_t galois_add(uint8_t a, uint8_t b)
const;
130 uint8_t galois_mul_table(uint8_t a, uint8_t b)
const;
132 void encode_rs_8(
const uint8_t* data, uint8_t* parity)
const;
133 void init_log_tables();
134 void init_alpha_tables();
136 std::array<uint8_t, 256> d_alpha_to{};
137 std::array<uint8_t, 256> d_index_of{};
138 std::array<uint8_t, 256> d_log_table{};
139 std::array<uint8_t, 255> d_antilog{};
141 std::vector<std::vector<uint8_t>> d_genmatrix;
142 std::vector<uint8_t> d_genpoly_coeff;
143 std::vector<uint8_t> d_genpoly_index;
145 size_t d_data_in_block{};
147 size_t d_columns_G{};
148 size_t d_info_symbols_shortened{};
149 size_t d_data_symbols_shortened{};
158 uint8_t d_min_poly{};
ReedSolomon(int nroots, int minpoly, int prim, int fcr, int pad=0, int shortening=0, const std::vector< uint8_t > &genpoly_coeff=std::vector< uint8_t >{}, const std::vector< std::vector< uint8_t > > &gen_matrix=std::vector< std::vector< uint8_t > >{})
Custom constructor for RS(255, 255-nroots, nroots+1). Parameters: