Skip to content

File rs_codec_core.h

File List > doppler > rs_codec > rs_codec_core.h

Go to the documentation of this file

#ifndef DP_RS_CODEC_CORE_H
#define DP_RS_CODEC_CORE_H

#include "doppler/clib_common.h"
#include "doppler/jm_perf.h"
#include "doppler/rs/rs_core.h"
#ifdef __cplusplus
extern "C" {
#endif

typedef struct
{
  rs_t rs;
  /*<<property_struct_fields>>*/
} dp_rs_codec_state_t;

dp_rs_codec_state_t *dp_rs_codec_create (uint32_t nroots, uint32_t symbol_bits,
                                   uint32_t field_poly, uint32_t first_root,
                                   uint32_t root_stride);

void dp_rs_codec_destroy (dp_rs_codec_state_t *state);

size_t dp_rs_codec_encode_max_out (dp_rs_codec_state_t *state, size_t n_in);

size_t dp_rs_codec_encode (dp_rs_codec_state_t *state, const uint8_t *in,
                        size_t n_in, uint8_t *out, size_t max_out);

int dp_rs_codec_decode (dp_rs_codec_state_t *state, uint8_t *codeword,
                     size_t codeword_len);

size_t dp_rs_codec_syndromes_max_out (dp_rs_codec_state_t *state, size_t n_in);

size_t dp_rs_codec_syndromes (dp_rs_codec_state_t *state, const uint8_t *in,
                           size_t n_in, uint8_t *out, size_t max_out);

int dp_rs_codec_codeword_ok (dp_rs_codec_state_t *state, const uint8_t *codeword,
                          size_t codeword_len);

size_t dp_rs_codec_generator (dp_rs_codec_state_t *state, uint8_t *out,
                           size_t out_len);

size_t dp_rs_codec_get_n (const dp_rs_codec_state_t *state);

size_t dp_rs_codec_get_k (const dp_rs_codec_state_t *state);

size_t dp_rs_codec_get_e (const dp_rs_codec_state_t *state);

size_t dp_rs_codec_get_nroots (const dp_rs_codec_state_t *state);

size_t dp_rs_codec_get_symbol_bits (const dp_rs_codec_state_t *state);

#ifdef __cplusplus
}
#endif

#endif /* RS_CODEC_CORE_H */