19 #ifndef GNSS_SDR_REED_SOLOMON_H 20 #define GNSS_SDR_REED_SOLOMON_H 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{};
164 #endif // GNSS_SDR_REED_SOLOMON_H std::vector< uint8_t > encode_with_generator_poly(const std::vector< uint8_t > &data_to_encode) const
Encode data with the generator polynomial (for testing purposes)
std::vector< uint8_t > encode_with_generator_matrix(const std::vector< uint8_t > &data_to_encode) const
Encode data with the generator matrix (for testing purposes)
Class implementing a Reed-Solomon encoder and decoder RS(255,K,d) where k=255-nroots is the informati...
int decode(std::vector< uint8_t > &data_to_decode, const std::vector< int > &erasure_positions=std::vector< int >{}) const
Decode an encoded block.
ReedSolomon(const std::string &gnss_signal=std::string())
Default constructor. Constructs a Reed Solomon object. The encode_with_generator_poly and encode_with...