blob: 05b5e278ad1422bbd2c840488ca43b28a5a28921 [file] [log] [blame]
Piotr Krysik9e2e8352018-02-27 12:16:25 +01001/*! \file gsm0503_interleaving.h
2 * GSM TS 05.03 interleaving.
Piotr Krysika6268a52017-08-23 16:02:19 +02003 */
4
Piotr Krysik70c25a12017-01-03 08:01:23 +01005#pragma once
6
7#include <osmocom/core/bits.h>
8
Piotr Krysik9e2e8352018-02-27 12:16:25 +01009/*! \addtogroup interleaving
10 * @{
11 * \file gsm0503_interleaving.h */
12
Piotr Krysik70c25a12017-01-03 08:01:23 +010013void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB);
Piotr Krysik9e2e8352018-02-27 12:16:25 +010014void gsm0503_xcch_interleave(const ubit_t *cB, ubit_t *iB);
Piotr Krysik70c25a12017-01-03 08:01:23 +010015
Piotr Krysik9e2e8352018-02-27 12:16:25 +010016void gsm0503_tch_fr_deinterleave(sbit_t *cB, const sbit_t *iB);
17void gsm0503_tch_fr_interleave(const ubit_t *cB, ubit_t *iB);
Piotr Krysik70c25a12017-01-03 08:01:23 +010018
Piotr Krysik9e2e8352018-02-27 12:16:25 +010019void gsm0503_tch_hr_deinterleave(sbit_t *cB, const sbit_t *iB);
20void gsm0503_tch_hr_interleave(const ubit_t *cB, ubit_t *iB);
Piotr Krysik70c25a12017-01-03 08:01:23 +010021
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);
Piotr Krysik9e2e8352018-02-27 12:16:25 +010060
61/*! @} */