blob: 44df4ad66577ec7a4fdb2363b75f2cc8d2f71535 [file] [log] [blame]
Piotr Krysik9e2e8352018-02-27 12:16:25 +01001
Piotr Krysik70c25a12017-01-03 08:01:23 +01002/*
Piotr Krysik9e2e8352018-02-27 12:16:25 +01003 * Copyright (C) 2011-2016 Sylvain Munaut <tnt@246tNt.com>
Piotr Krysik70c25a12017-01-03 08:01:23 +01004 * Copyright (C) 2016 sysmocom s.f.m.c. GmbH
5 *
6 * All Rights Reserved
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
Piotr Krysik9e2e8352018-02-27 12:16:25 +010010 * the Free Software Foundation; either version 3 of the License, or
Piotr Krysik70c25a12017-01-03 08:01:23 +010011 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License along
19 * with this program; if not, write to the Free Software Foundation, Inc.,
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22
23#pragma once
24
Piotr Krysik70c25a12017-01-03 08:01:23 +010025#include <stdint.h>
Piotr Krysik70c25a12017-01-03 08:01:23 +010026#include <osmocom/core/conv.h>
27
Piotr Krysik9e2e8352018-02-27 12:16:25 +010028/*! structure describing xCCH convolutional code:.
29 * 228 bits blocks, rate 1/2, k = 5
30 * G0 = 1 + D3 + D4
31 * G1 = 1 + D + D3 + D4
Piotr Krysik70c25a12017-01-03 08:01:23 +010032 */
33extern const struct osmo_conv_code gsm0503_xcch;
34
Piotr Krysik9e2e8352018-02-27 12:16:25 +010035/*! structure describing RACH convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +010036 */
37extern const struct osmo_conv_code gsm0503_rach;
38
Piotr Krysik9e2e8352018-02-27 12:16:25 +010039/*! structure describing Extended RACH (11 bit) convolutional code.
40 */
Piotr Krysik1aede382018-02-27 14:34:11 +010041//extern const struct osmo_conv_code gsm0503_rach_ext;
Piotr Krysik9e2e8352018-02-27 12:16:25 +010042
43/*! structure describing SCH convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +010044 */
45extern const struct osmo_conv_code gsm0503_sch;
46
Piotr Krysik9e2e8352018-02-27 12:16:25 +010047/*! structure describing CS2 convolutional code:.
48 * G0 = 1 + D3 + D4
49 * G1 = 1 + D + D3 + D4
Piotr Krysik70c25a12017-01-03 08:01:23 +010050 */
51extern const struct osmo_conv_code gsm0503_cs2;
Piotr Krysik9e2e8352018-02-27 12:16:25 +010052
53/*! structure describing CS3 convolutional code:.
54 * G0 = 1 + D3 + D4
55 * G1 = 1 + D + D3 + D4
56 */
Piotr Krysik70c25a12017-01-03 08:01:23 +010057extern const struct osmo_conv_code gsm0503_cs3;
58
Piotr Krysik9e2e8352018-02-27 12:16:25 +010059/*! structure describing CS2 convolutional code (non-punctured):.
60 * G0 = 1 + D3 + D4
61 * G1 = 1 + D + D3 + D4
Piotr Krysik70c25a12017-01-03 08:01:23 +010062 */
Piotr Krysik1aede382018-02-27 14:34:11 +010063//extern const struct osmo_conv_code gsm0503_cs2_np;
Piotr Krysik70c25a12017-01-03 08:01:23 +010064
Piotr Krysik9e2e8352018-02-27 12:16:25 +010065/*! structure describing CS3 convolutional code (non-punctured):.
66 * G0 = 1 + D3 + D4
67 * G1 = 1 + D + D3 + D4
Piotr Krysik70c25a12017-01-03 08:01:23 +010068 */
Piotr Krysik1aede382018-02-27 14:34:11 +010069//extern const struct osmo_conv_code gsm0503_cs3_np;
Piotr Krysik70c25a12017-01-03 08:01:23 +010070
Piotr Krysik9e2e8352018-02-27 12:16:25 +010071/*! structure describing TCH/AFS 12.2 kbits convolutional code:.
72 * 250 bits block, rate 1/2, punctured
73 * G0/G0 = 1
74 * G1/G0 = 1 + D + D3 + D4 / 1 + D3 + D4
Piotr Krysik70c25a12017-01-03 08:01:23 +010075 */
76extern const struct osmo_conv_code gsm0503_tch_afs_12_2;
77
Piotr Krysik9e2e8352018-02-27 12:16:25 +010078/*! structure describing TCH/AFS 10.2 kbits convolutional code:.
79 * G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
80 * G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
81 * G3/G3 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +010082 */
83extern const struct osmo_conv_code gsm0503_tch_afs_10_2;
84
Piotr Krysik9e2e8352018-02-27 12:16:25 +010085/*! structure describing TCH/AFS 7.95 kbits convolutional code:.
86 * G4/G4 = 1
87 * G5/G4 = 1 + D + D4 + D6 / 1 + D2 + D3 + D5 + D6
88 * G6/G4 = 1 + D + D2 + D3 + D4 + D6 / 1 + D2 + D3 + D5 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +010089 */
90extern const struct osmo_conv_code gsm0503_tch_afs_7_95;
91
Piotr Krysik9e2e8352018-02-27 12:16:25 +010092/*! structure describing TCH/AFS 7.4 kbits convolutional code:.
93 * G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
94 * G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
95 * G3/G3 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +010096 */
97extern const struct osmo_conv_code gsm0503_tch_afs_7_4;
98
Piotr Krysik9e2e8352018-02-27 12:16:25 +010099/*! structure describing TCH/AFS 6.7 kbits convolutional code:.
100 * G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
101 * G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
102 * G3/G3 = 1
103 * G3/G3 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +0100104 */
105extern const struct osmo_conv_code gsm0503_tch_afs_6_7;
106
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100107/*! structure describing TCH/AFS 5.9 kbits convolutional code:.
108 * 124 bits
109 * G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
110 * G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6
111 * G6/G6 = 1
112 * G6/G6 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +0100113 */
114extern const struct osmo_conv_code gsm0503_tch_afs_5_9;
115
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100116/*! structure describing TCH/AFS 5.15 kbits convolutional code:.
117 * G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
118 * G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4
119 * G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4
120 * G3/G3 = 1
121 * G3/G3 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +0100122 */
123extern const struct osmo_conv_code gsm0503_tch_afs_5_15;
124
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100125/*! structure describing TCH/AFS 4.75 kbits convolutional code:.
126 * G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
127 * G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6
128 * G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6
129 * G6/G6 = 1
130 * G6/G6 = 1
Piotr Krysik70c25a12017-01-03 08:01:23 +0100131 */
132extern const struct osmo_conv_code gsm0503_tch_afs_4_75;
133
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100134/*! structure describing TCH/F convolutional code.
135 */
136extern const struct osmo_conv_code gsm0503_tch_fr;
137
138/*! structure describing TCH/H convolutional code.
139 */
140extern const struct osmo_conv_code gsm0503_tch_hr;
141
142/*! structure describing TCH/AHS 7.95 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100143 */
144extern const struct osmo_conv_code gsm0503_tch_ahs_7_95;
145
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100146/*! structure describing TCH/AHS 7.4 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100147 */
148extern const struct osmo_conv_code gsm0503_tch_ahs_7_4;
149
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100150/*! structure describing TCH/AHS 6.7 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100151 */
152extern const struct osmo_conv_code gsm0503_tch_ahs_6_7;
153
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100154/*! structure describing TCH/AHS 5.9 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100155 */
156extern const struct osmo_conv_code gsm0503_tch_ahs_5_9;
157
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100158/*! structure describing TCH/AHS 5.15 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100159 */
160extern const struct osmo_conv_code gsm0503_tch_ahs_5_15;
161
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100162/*! structure describing TCH/AHS 4.75 kbits convolutional code.
Piotr Krysik70c25a12017-01-03 08:01:23 +0100163 */
164extern const struct osmo_conv_code gsm0503_tch_ahs_4_75;
165
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100166/*! structure describing EDGE MCS-1 DL header convolutional code:.
167 * 42 bits blocks, rate 1/3, k = 7
168 * G4 = 1 + D2 + D3 + D5 + D6
169 * G7 = 1 + D + D2 + D3 + D6
170 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100171 */
172extern const struct osmo_conv_code gsm0503_mcs1_dl_hdr;
173
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100174/*! structure describing EDGE MCS-1 UL header convolutional code:.
175 * 45 bits blocks, rate 1/3, k = 7
176 * G4 = 1 + D2 + D3 + D5 + D6
177 * G7 = 1 + D + D2 + D3 + D6
178 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100179 */
180extern const struct osmo_conv_code gsm0503_mcs1_ul_hdr;
181
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100182/*! structure describing EDGE MCS-1 data convolutional code:.
183 * 196 bits blocks, rate 1/3, k = 7
184 * G4 = 1 + D2 + D3 + D5 + D6
185 * G7 = 1 + D + D2 + D3 + D6
186 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100187 */
188extern const struct osmo_conv_code gsm0503_mcs1;
189
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100190/*! structure describing EDGE MCS-2 data convolutional code:.
191 * 244 bits blocks, rate 1/3, k = 7
192 * G4 = 1 + D2 + D3 + D5 + D6
193 * G7 = 1 + D + D2 + D3 + D6
194 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100195 */
196extern const struct osmo_conv_code gsm0503_mcs2;
197
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100198/*! structure describing EDGE MCS-3 data convolutional code:.
199 * 316 bits blocks, rate 1/3, k = 7
200 * G4 = 1 + D2 + D3 + D5 + D6
201 * G7 = 1 + D + D2 + D3 + D6
202 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100203 */
204extern const struct osmo_conv_code gsm0503_mcs3;
205
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100206/*! structure describing EDGE MCS-4 data convolutional code:.
207 * 372 bits blocks, rate 1/3, k = 7
208 * G4 = 1 + D2 + D3 + D5 + D6
209 * G7 = 1 + D + D2 + D3 + D6
210 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100211 */
212extern const struct osmo_conv_code gsm0503_mcs4;
213
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100214/*! structure describing EDGE MCS-5 DL header convolutional code:.
215 * 39 bits blocks, rate 1/3, k = 7
216 * G4 = 1 + D2 + D3 + D5 + D6
217 * G7 = 1 + D + D2 + D3 + D6
218 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100219 */
220extern const struct osmo_conv_code gsm0503_mcs5_dl_hdr;
221
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100222/*! structure describing EDGE MCS-5 UL header convolutional code:.
223 * 51 bits blocks, rate 1/3, k = 7
224 * G4 = 1 + D2 + D3 + D5 + D6
225 * G7 = 1 + D + D2 + D3 + D6
226 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100227 */
228extern const struct osmo_conv_code gsm0503_mcs5_ul_hdr;
229
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100230/*! structure describing EDGE MCS-5 data convolutional code:.
231 * 468 bits blocks, rate 1/3, k = 7
232 * G4 = 1 + D2 + D3 + D5 + D6
233 * G7 = 1 + D + D2 + D3 + D6
234 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100235 */
236extern const struct osmo_conv_code gsm0503_mcs5;
237
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100238/*! structure describing EDGE MCS-6 data convolutional code:.
239 * 612 bits blocks, rate 1/3, k = 7
240 * G4 = 1 + D2 + D3 + D5 + D6
241 * G7 = 1 + D + D2 + D3 + D6
242 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100243 */
244extern const struct osmo_conv_code gsm0503_mcs6;
245
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100246/*! structure describing EDGE MCS-7 DL header convolutional code:.
247 * 51 bits blocks, rate 1/3, k = 7
248 * G4 = 1 + D2 + D3 + D5 + D6
249 * G7 = 1 + D + D2 + D3 + D6
250 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100251 */
252extern const struct osmo_conv_code gsm0503_mcs7_dl_hdr;
253
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100254/*! structure describing EDGE MCS-7 UL header convolutional code:.
255 * 60 bits blocks, rate 1/3, k = 7
256 * G4 = 1 + D2 + D3 + D5 + D6
257 * G7 = 1 + D + D2 + D3 + D6
258 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100259 */
260extern const struct osmo_conv_code gsm0503_mcs7_ul_hdr;
261
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100262/*! structure describing EDGE MCS-7 data convolutional code:.
263 * 468 bits blocks, rate 1/3, k = 7
264 * G4 = 1 + D2 + D3 + D5 + D6
265 * G7 = 1 + D + D2 + D3 + D6
266 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100267 */
268extern const struct osmo_conv_code gsm0503_mcs7;
269
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100270/*! structure describing EDGE MCS-8 data convolutional code:.
271 * 564 bits blocks, rate 1/3, k = 7
272 * G4 = 1 + D2 + D3 + D5 + D6
273 * G7 = 1 + D + D2 + D3 + D6
274 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100275 */
276extern const struct osmo_conv_code gsm0503_mcs8;
277
Piotr Krysik9e2e8352018-02-27 12:16:25 +0100278/*! structure describing EDGE MCS-9 data convolutional code:.
279 * 612 bits blocks, rate 1/3, k = 7
280 * G4 = 1 + D2 + D3 + D5 + D6
281 * G7 = 1 + D + D2 + D3 + D6
282 * G5 = 1 + D + D4 + D6
Piotr Krysik70c25a12017-01-03 08:01:23 +0100283 */
284extern const struct osmo_conv_code gsm0503_mcs9;
285