blob: fab4d3d0f18a870ae7fe32ad910bfd5ad0f2d09f [file] [log] [blame]
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02001/*! \file gsm0503_interleaving.h
2 * GSM TS 05.03 interleaving.
3 */
4
Vadim Yanitskiy3262f822016-09-23 01:48:59 +07005#pragma once
6
7#include <osmocom/core/bits.h>
8
Harald Weltec6636782017-06-12 14:59:37 +02009/*! \addtogroup interleaving
10 * @{
Neels Hofmeyr17518fe2017-06-20 04:35:06 +020011 * \file gsm0503_interleaving.h */
Harald Weltec6636782017-06-12 14:59:37 +020012
Vadim Yanitskiy3262f822016-09-23 01:48:59 +070013void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB);
Harald Welte0eb2c5d2017-06-12 15:03:11 +020014void gsm0503_xcch_interleave(const ubit_t *cB, ubit_t *iB);
Vadim Yanitskiy3262f822016-09-23 01:48:59 +070015
Harald Welte0eb2c5d2017-06-12 15:03:11 +020016void gsm0503_tch_fr_deinterleave(sbit_t *cB, const sbit_t *iB);
17void gsm0503_tch_fr_interleave(const ubit_t *cB, ubit_t *iB);
Vadim Yanitskiy3262f822016-09-23 01:48:59 +070018
Harald Welte0eb2c5d2017-06-12 15:03:11 +020019void gsm0503_tch_hr_deinterleave(sbit_t *cB, const sbit_t *iB);
20void gsm0503_tch_hr_interleave(const ubit_t *cB, ubit_t *iB);
Vadim Yanitskiy3262f822016-09-23 01:48:59 +070021
22void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB);
23void gsm0503_mcs1_ul_interleave(const ubit_t *hc,
24 const ubit_t *dc, ubit_t *iB);
25
26void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc,
27 sbit_t *dc, const sbit_t *iB);
28void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc,
29 const ubit_t *dc, ubit_t *iB);
30
31void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc,
32 const sbit_t *hi, const sbit_t *di);
33void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc,
34 ubit_t *hi, ubit_t *di);
35
36void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc,
37 const sbit_t *hi, const sbit_t *di);
38void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc,
39 ubit_t *hi, ubit_t *di);
40
41void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
42 const sbit_t *hi, const sbit_t *di);
43void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1,
44 const ubit_t *c2, ubit_t *hi, ubit_t *di);
45
46void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
47 const sbit_t *hi, const sbit_t *di);
48void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1,
49 const ubit_t *c2, ubit_t *hi, ubit_t *di);
50
51void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
52 const sbit_t *hi, const sbit_t *di);
53void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1,
54 const ubit_t *c2, ubit_t *hi, ubit_t *di);
55
56void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
57 const sbit_t *hi, const sbit_t *di);
58void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1,
59 const ubit_t *c2, ubit_t *hi, ubit_t *di);
Harald Weltec6636782017-06-12 14:59:37 +020060
Vadim Yanitskiy242ef1b2023-05-20 16:31:03 +070061void gsm0503_tch_f96_deinterleave(sbit_t *cB, const sbit_t *iB);
62void gsm0503_tch_f96_interleave(const ubit_t *cB, ubit_t *iB);
63
Harald Weltec6636782017-06-12 14:59:37 +020064/*! @} */