Skip to content

File interleaver_core.h

File List > doppler > interleaver > interleaver_core.h

Go to the documentation of this file

#ifndef DP_INTERLEAVER_CORE_H
#define DP_INTERLEAVER_CORE_H

#include "doppler/dp_interleave.h"

#include <stddef.h>
#include <stdint.h>

#ifdef __cplusplus
extern "C"
{
#endif

  typedef struct
  {
    size_t rows;      
    size_t cols;      
    size_t unit_bits; 
  } dp_interleaver_state_t;

  dp_interleaver_state_t *dp_interleaver_create (size_t rows, size_t cols,
                                           size_t unit_bits);

  dp_interleaver_state_t *dp_interleaver_create_rx (size_t rows, size_t cols,
                                              size_t unit_bits);

  void dp_interleaver_destroy (dp_interleaver_state_t *state);

  void dp_interleaver_reset (dp_interleaver_state_t *state);

  size_t dp_interleaver_get_block_bits (const dp_interleaver_state_t *state);

  size_t dp_interleaver_interleave_max_out (const dp_interleaver_state_t *state,
                                         size_t n_in);

  size_t dp_interleaver_deinterleave_max_out (const dp_interleaver_state_t *state,
                                           size_t n_in);

  size_t
  dp_interleaver_deinterleave_soft_max_out (const dp_interleaver_state_t *state,
                                         size_t n_in);

  size_t dp_interleaver_interleave (dp_interleaver_state_t *state,
                                 const uint8_t *in, size_t n_in, uint8_t *out,
                                 size_t max_out);

  size_t dp_interleaver_deinterleave (dp_interleaver_state_t *state,
                                   const uint8_t *in, size_t n_in,
                                   uint8_t *out, size_t max_out);

  size_t dp_interleaver_deinterleave_soft (dp_interleaver_state_t *state,
                                        const float *in, size_t n_in,
                                        float *out, size_t max_out);

  size_t dp_interleaver_get_burst_len (const dp_interleaver_state_t *state);

  size_t dp_interleaver_get_separation (const dp_interleaver_state_t *state);

#ifdef __cplusplus
}
#endif

#endif /* INTERLEAVER_CORE_H */