Skip to content

File cvt_core.h

File List > cvt > cvt_core.h

Go to the documentation of this file

#ifndef CVT_CORE_H
#define CVT_CORE_H

#include "clib_common.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Declare module-level functions here. */

  typedef enum
  {
    DP_BITORDER_BIG    = 0, 
    DP_BITORDER_LITTLE = 1  
  } dp_bitorder_t;

  static inline size_t
  cvt_unit_width (size_t done, size_t total)
  {
    const size_t left = total - done;
    return (left >= 8u) ? 8u : left;
  }

  static inline size_t
  cvt_bit_slot (size_t i, size_t width, int bitorder)
  {
    return (bitorder == DP_BITORDER_BIG) ? i : (width - 1u - i);
  }

size_t int_to_bin(uint64_t v, uint32_t n_bits, uint8_t *out, size_t out_len, int bitorder);
size_t hex_to_bin(const char * hex, uint8_t *out, size_t out_len, int bitorder);
uint64_t bin_to_int(const uint8_t *bits, size_t bits_len, int bitorder);
size_t bin_to_hex(const uint8_t *bits, size_t bits_len, uint8_t *out, size_t out_len, int bitorder);
size_t bin_to_nrz(const uint8_t *bits, size_t bits_len, float *out, size_t out_len);
size_t nrz_to_bin(const float *nrz, size_t nrz_len, uint8_t *out, size_t out_len);
#ifdef __cplusplus
}
#endif

#endif /* CVT_CORE_H */