GNU Radio's GSM Package
gsm0503_interleaving.h
Go to the documentation of this file.
1 /*
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 
23 #pragma once
24 
25 #include <osmocom/core/bits.h>
26 
27 void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB);
28 void gsm0503_xcch_interleave(ubit_t *cB, ubit_t *iB);
29 
30 void gsm0503_tch_fr_deinterleave(sbit_t *cB, sbit_t *iB);
31 void gsm0503_tch_fr_interleave(ubit_t *cB, ubit_t *iB);
32 
33 void gsm0503_tch_hr_deinterleave(sbit_t *cB, sbit_t *iB);
34 void gsm0503_tch_hr_interleave(ubit_t *cB, ubit_t *iB);
35 
36 void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB);
37 void gsm0503_mcs1_ul_interleave(const ubit_t *hc,
38  const ubit_t *dc, ubit_t *iB);
39 
40 void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc,
41  sbit_t *dc, const sbit_t *iB);
42 void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc,
43  const ubit_t *dc, ubit_t *iB);
44 
45 void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc,
46  const sbit_t *hi, const sbit_t *di);
47 void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc,
48  ubit_t *hi, ubit_t *di);
49 
50 void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc,
51  const sbit_t *hi, const sbit_t *di);
52 void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc,
53  ubit_t *hi, ubit_t *di);
54 
55 void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
56  const sbit_t *hi, const sbit_t *di);
57 void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1,
58  const ubit_t *c2, ubit_t *hi, ubit_t *di);
59 
60 void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
61  const sbit_t *hi, const sbit_t *di);
62 void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1,
63  const ubit_t *c2, ubit_t *hi, ubit_t *di);
64 
65 void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
66  const sbit_t *hi, const sbit_t *di);
67 void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1,
68  const ubit_t *c2, ubit_t *hi, ubit_t *di);
69 
70 void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2,
71  const sbit_t *hi, const sbit_t *di);
72 void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1,
73  const ubit_t *c2, ubit_t *hi, ubit_t *di);
void gsm0503_mcs1_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *iB)
void gsm0503_mcs1_dl_deinterleave(sbit_t *u, sbit_t *hc, sbit_t *dc, const sbit_t *iB)
void gsm0503_mcs7_ul_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
void gsm0503_tch_hr_deinterleave(sbit_t *cB, sbit_t *iB)
void gsm0503_mcs8_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
void gsm0503_mcs7_dl_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
void gsm0503_mcs1_ul_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *iB)
void gsm0503_mcs5_dl_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *hi, ubit_t *di)
void gsm0503_mcs8_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
void gsm0503_tch_hr_interleave(ubit_t *cB, ubit_t *iB)
void gsm0503_mcs5_dl_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *hi, const sbit_t *di)
void gsm0503_mcs7_ul_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
void gsm0503_xcch_interleave(ubit_t *cB, ubit_t *iB)
void gsm0503_tch_fr_deinterleave(sbit_t *cB, sbit_t *iB)
void gsm0503_mcs5_ul_interleave(const ubit_t *hc, const ubit_t *dc, ubit_t *hi, ubit_t *di)
void gsm0503_tch_fr_interleave(ubit_t *cB, ubit_t *iB)
void gsm0503_mcs7_dl_deinterleave(sbit_t *hc, sbit_t *c1, sbit_t *c2, const sbit_t *hi, const sbit_t *di)
void gsm0503_mcs8_dl_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
void gsm0503_mcs5_ul_deinterleave(sbit_t *hc, sbit_t *dc, const sbit_t *hi, const sbit_t *di)
void gsm0503_mcs8_ul_interleave(const ubit_t *hc, const ubit_t *c1, const ubit_t *c2, ubit_t *hi, ubit_t *di)
void gsm0503_xcch_deinterleave(sbit_t *cB, const sbit_t *iB)
void gsm0503_mcs1_dl_interleave(const ubit_t *up, const ubit_t *hc, const ubit_t *dc, ubit_t *iB)