Vadim Yanitskiy | 3262f82 | 2016-09-23 01:48:59 +0700 | [diff] [blame] | 1 | #pragma once |
| 2 | |
| 3 | #include <osmocom/core/bits.h> |
| 4 | |
Harald Welte | c663678 | 2017-06-12 14:59:37 +0200 | [diff] [blame] | 5 | /*! \addtogroup interleaving |
| 6 | * @{ |
| 7 | */ |
| 8 | |
| 9 | /*! \file gsm0503_interleaving.h |
| 10 | * \brief GSM TS 05.03 interleaving |
| 11 | */ |
| 12 | |
Vadim Yanitskiy | 3262f82 | 2016-09-23 01:48:59 +0700 | [diff] [blame] | 13 | void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB); |
Harald Welte | 0eb2c5d | 2017-06-12 15:03:11 +0200 | [diff] [blame] | 14 | void gsm0503_xcch_interleave(const ubit_t *cB, ubit_t *iB); |
Vadim Yanitskiy | 3262f82 | 2016-09-23 01:48:59 +0700 | [diff] [blame] | 15 | |
Harald Welte | 0eb2c5d | 2017-06-12 15:03:11 +0200 | [diff] [blame] | 16 | void gsm0503_tch_fr_deinterleave(sbit_t *cB, const sbit_t *iB); |
| 17 | void gsm0503_tch_fr_interleave(const ubit_t *cB, ubit_t *iB); |
Vadim Yanitskiy | 3262f82 | 2016-09-23 01:48:59 +0700 | [diff] [blame] | 18 | |
Harald Welte | 0eb2c5d | 2017-06-12 15:03:11 +0200 | [diff] [blame] | 19 | void gsm0503_tch_hr_deinterleave(sbit_t *cB, const sbit_t *iB); |
| 20 | void gsm0503_tch_hr_interleave(const ubit_t *cB, ubit_t *iB); |
Vadim Yanitskiy | 3262f82 | 2016-09-23 01:48:59 +0700 | [diff] [blame] | 21 | |
| 22 | void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB); |
| 23 | void gsm0503_mcs1_ul_interleave(const ubit_t *hc, |
| 24 | const ubit_t *dc, ubit_t *iB); |
| 25 | |
| 26 | void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc, |
| 27 | sbit_t *dc, const sbit_t *iB); |
| 28 | void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc, |
| 29 | const ubit_t *dc, ubit_t *iB); |
| 30 | |
| 31 | void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc, |
| 32 | const sbit_t *hi, const sbit_t *di); |
| 33 | void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc, |
| 34 | ubit_t *hi, ubit_t *di); |
| 35 | |
| 36 | void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc, |
| 37 | const sbit_t *hi, const sbit_t *di); |
| 38 | void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc, |
| 39 | ubit_t *hi, ubit_t *di); |
| 40 | |
| 41 | void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, |
| 42 | const sbit_t *hi, const sbit_t *di); |
| 43 | void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1, |
| 44 | const ubit_t *c2, ubit_t *hi, ubit_t *di); |
| 45 | |
| 46 | void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, |
| 47 | const sbit_t *hi, const sbit_t *di); |
| 48 | void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1, |
| 49 | const ubit_t *c2, ubit_t *hi, ubit_t *di); |
| 50 | |
| 51 | void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, |
| 52 | const sbit_t *hi, const sbit_t *di); |
| 53 | void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1, |
| 54 | const ubit_t *c2, ubit_t *hi, ubit_t *di); |
| 55 | |
| 56 | void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, |
| 57 | const sbit_t *hi, const sbit_t *di); |
| 58 | void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1, |
| 59 | const ubit_t *c2, ubit_t *hi, ubit_t *di); |
Harald Welte | c663678 | 2017-06-12 14:59:37 +0200 | [diff] [blame] | 60 | |
| 61 | /*! @} */ |