blob: 05c0365fd57f10de8ce5c1e89eabee8239246882 [file] [log] [blame]
Piotr Krysika6268a52017-08-23 16:02:19 +02001/*
2 * (C) 2013 by Andreas Eversberg <jolly@eversberg.eu>
3 * (C) 2016 by Tom Tsou <tom.tsou@ettus.com>
4 *
5 * All Rights Reserved
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 */
21
22
Piotr Krysik70c25a12017-01-03 08:01:23 +010023#pragma once
24
25#include <osmocom/core/bits.h>
26
27void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB);
28void gsm0503_xcch_interleave(ubit_t *cB, ubit_t *iB);
29
30void gsm0503_tch_fr_deinterleave(sbit_t *cB, sbit_t *iB);
31void gsm0503_tch_fr_interleave(ubit_t *cB, ubit_t *iB);
32
33void gsm0503_tch_hr_deinterleave(sbit_t *cB, sbit_t *iB);
34void gsm0503_tch_hr_interleave(ubit_t *cB, ubit_t *iB);
35
36void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB);
37void gsm0503_mcs1_ul_interleave(const ubit_t *hc,
38 const ubit_t *dc, ubit_t *iB);
39
40void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc,
41 sbit_t *dc, const sbit_t *iB);
42void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc,
43 const ubit_t *dc, ubit_t *iB);
44
45void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc,
46 const sbit_t *hi, const sbit_t *di);
47void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc,
48 ubit_t *hi, ubit_t *di);
49
50void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc,
51 const sbit_t *hi, const sbit_t *di);
52void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc,
53 ubit_t *hi, ubit_t *di);
54
55void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
56 const sbit_t *hi, const sbit_t *di);
57void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1,
58 const ubit_t *c2, ubit_t *hi, ubit_t *di);
59
60void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
61 const sbit_t *hi, const sbit_t *di);
62void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1,
63 const ubit_t *c2, ubit_t *hi, ubit_t *di);
64
65void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
66 const sbit_t *hi, const sbit_t *di);
67void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1,
68 const ubit_t *c2, ubit_t *hi, ubit_t *di);
69
70void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
71 const sbit_t *hi, const sbit_t *di);
72void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1,
73 const ubit_t *c2, ubit_t *hi, ubit_t *di);