blob: eeed4fd0f214793018c5140a9561bb01d295716e [file] [log] [blame]
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +07001#!/usr/bin/python2
Max32e56412017-10-16 14:58:00 +02002# -*- coding: utf-8 -*-
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +07003from conv_gen import ConvolutionalCode
4from conv_gen import poly
5
6# Polynomials according to 3GPP TS 05.03 Annex B
7G0 = poly(0, 3, 4)
8G1 = poly(0, 1, 3, 4)
9G2 = poly(0, 2, 4)
10G3 = poly(0, 1, 2, 3, 4)
11G4 = poly(0, 2, 3, 5, 6)
12G5 = poly(0, 1, 4, 6)
13G6 = poly(0, 1, 2, 3, 4, 6)
14G7 = poly(0, 1, 2, 3, 6)
15
16# Shared polynomials
17shared_polys = {
18 "xcch" : [
19 ( G0, 1 ),
20 ( G1, 1 ),
21 ],
22 "mcs" : [
23 ( G4, 1 ),
24 ( G7, 1 ),
25 ( G5, 1 ),
26 ],
27}
28
29# Convolutional code definitions
30conv_codes = [
31 # xCCH definition
32 ConvolutionalCode(
33 224,
34 shared_polys["xcch"],
35 name = "xcch",
36 description = [
37 "xCCH convolutional code:",
38 "228 bits blocks, rate 1/2, k = 5",
39 "G0 = 1 + D3 + D4",
40 "G1 = 1 + D + D3 + D4",
41 ]
42 ),
43
44 # RACH definition
45 ConvolutionalCode(
46 14,
47 shared_polys["xcch"],
48 name = "rach",
49 description = ["RACH convolutional code"]
50 ),
51
Max32e56412017-10-16 14:58:00 +020052 # Extended RACH definition from 3GPP TS 45.003 ยง5.3.2
53 ConvolutionalCode(
54 17,
55 shared_polys["xcch"],
56 puncture = [ 0, 2, 5, 37, 39, 41, -1 ],
57 name = "rach_ext",
58 description = ["Extended RACH (11 bit) convolutional code"]
59 ),
60
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +070061 # SCH definition
62 ConvolutionalCode(
63 35,
64 shared_polys["xcch"],
65 name = "sch",
66 description = ["SCH convolutional code"]
67 ),
68
69 # CS2 definition
70 ConvolutionalCode(
71 290,
72 shared_polys["xcch"],
73 puncture = [
74 15, 19, 23, 27, 31, 35, 43, 47, 51, 55, 59, 63, 67, 71,
75 75, 79, 83, 91, 95, 99, 103, 107, 111, 115, 119, 123, 127, 131,
76 139, 143, 147, 151, 155, 159, 163, 167, 171, 175, 179, 187, 191, 195,
77 199, 203, 207, 211, 215, 219, 223, 227, 235, 239, 243, 247, 251, 255,
78 259, 263, 267, 271, 275, 283, 287, 291, 295, 299, 303, 307, 311, 315,
79 319, 323, 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 371, 379,
80 383, 387, 391, 395, 399, 403, 407, 411, 415, 419, 427, 431, 435, 439,
81 443, 447, 451, 455, 459, 463, 467, 475, 479, 483, 487, 491, 495, 499,
82 503, 507, 511, 515, 523, 527, 531, 535, 539, 543, 547, 551, 555, 559,
83 563, 571, 575, 579, 583, 587, -1
84 ],
85 name = "cs2",
86 description = [
87 "CS2 convolutional code:",
88 "G0 = 1 + D3 + D4",
89 "G1 = 1 + D + D3 + D4",
90 ]
91 ),
92
93 # CS3 definition
94 ConvolutionalCode(
95 334,
96 shared_polys["xcch"],
97 puncture = [
98 15, 17, 21, 23, 27, 29, 33, 35, 39, 41, 45, 47, 51, 53,
99 57, 59, 63, 65, 69, 71, 75, 77, 81, 83, 87, 89, 93, 95,
100 99, 101, 105, 107, 111, 113, 117, 119, 123, 125, 129, 131, 135, 137,
101 141, 143, 147, 149, 153, 155, 159, 161, 165, 167, 171, 173, 177, 179,
102 183, 185, 189, 191, 195, 197, 201, 203, 207, 209, 213, 215, 219, 221,
103 225, 227, 231, 233, 237, 239, 243, 245, 249, 251, 255, 257, 261, 263,
104 267, 269, 273, 275, 279, 281, 285, 287, 291, 293, 297, 299, 303, 305,
105 309, 311, 315, 317, 321, 323, 327, 329, 333, 335, 339, 341, 345, 347,
106 351, 353, 357, 359, 363, 365, 369, 371, 375, 377, 381, 383, 387, 389,
107 393, 395, 399, 401, 405, 407, 411, 413, 417, 419, 423, 425, 429, 431,
108 435, 437, 441, 443, 447, 449, 453, 455, 459, 461, 465, 467, 471, 473,
109 477, 479, 483, 485, 489, 491, 495, 497, 501, 503, 507, 509, 513, 515,
110 519, 521, 525, 527, 531, 533, 537, 539, 543, 545, 549, 551, 555, 557,
111 561, 563, 567, 569, 573, 575, 579, 581, 585, 587, 591, 593, 597, 599,
112 603, 605, 609, 611, 615, 617, 621, 623, 627, 629, 633, 635, 639, 641,
113 645, 647, 651, 653, 657, 659, 663, 665, 669, 671, -1
114 ],
115 name = "cs3",
116 description = [
117 "CS3 convolutional code:",
118 "G0 = 1 + D3 + D4",
119 "G1 = 1 + D + D3 + D4",
120 ]
121 ),
122
Vadim Yanitskiy3262f822016-09-23 01:48:59 +0700123 # CS2 definition (non-punctured)
124 ConvolutionalCode(
125 290,
126 shared_polys["xcch"],
127 name = "cs2_np",
128 description = [
129 "CS2 convolutional code (non-punctured):",
130 "G0 = 1 + D3 + D4",
131 "G1 = 1 + D + D3 + D4",
132 ]
133 ),
134
135 # CS3 definition (non-punctured)
136 ConvolutionalCode(
137 334,
138 shared_polys["xcch"],
139 name = "cs3_np",
140 description = [
141 "CS3 convolutional code (non-punctured):",
142 "G0 = 1 + D3 + D4",
143 "G1 = 1 + D + D3 + D4",
144 ]
145 ),
146
Vadim Yanitskiy15492bc2016-11-10 17:10:42 +0700147 # TCH_AFS_12_2 definition
148 ConvolutionalCode(
149 250,
150 [
151 ( 1, 1 ),
152 ( G1, G0 ),
153 ],
154 puncture = [
155 321, 325, 329, 333, 337, 341, 345, 349, 353, 357, 361, 363,
156 365, 369, 373, 377, 379, 381, 385, 389, 393, 395, 397, 401,
157 405, 409, 411, 413, 417, 421, 425, 427, 429, 433, 437, 441,
158 443, 445, 449, 453, 457, 459, 461, 465, 469, 473, 475, 477,
159 481, 485, 489, 491, 493, 495, 497, 499, 501, 503, 505, 507,
160 -1
161 ],
162 name = 'tch_afs_12_2',
163 description = [
164 "TCH/AFS 12.2 kbits convolutional code:",
165 "250 bits block, rate 1/2, punctured",
166 "G0/G0 = 1",
167 "G1/G0 = 1 + D + D3 + D4 / 1 + D3 + D4",
168 ]
169 ),
170
171 # TCH_AFS_10_2 definition
172 ConvolutionalCode(
173 210,
174 [
175 ( G1, G3 ),
176 ( G2, G3 ),
177 ( 1, 1 ),
178 ],
179 puncture = [
180 1, 4, 7, 10, 16, 19, 22, 28, 31, 34, 40, 43,
181 46, 52, 55, 58, 64, 67, 70, 76, 79, 82, 88, 91,
182 94, 100, 103, 106, 112, 115, 118, 124, 127, 130, 136, 139,
183 142, 148, 151, 154, 160, 163, 166, 172, 175, 178, 184, 187,
184 190, 196, 199, 202, 208, 211, 214, 220, 223, 226, 232, 235,
185 238, 244, 247, 250, 256, 259, 262, 268, 271, 274, 280, 283,
186 286, 292, 295, 298, 304, 307, 310, 316, 319, 322, 325, 328,
187 331, 334, 337, 340, 343, 346, 349, 352, 355, 358, 361, 364,
188 367, 370, 373, 376, 379, 382, 385, 388, 391, 394, 397, 400,
189 403, 406, 409, 412, 415, 418, 421, 424, 427, 430, 433, 436,
190 439, 442, 445, 448, 451, 454, 457, 460, 463, 466, 469, 472,
191 475, 478, 481, 484, 487, 490, 493, 496, 499, 502, 505, 508,
192 511, 514, 517, 520, 523, 526, 529, 532, 535, 538, 541, 544,
193 547, 550, 553, 556, 559, 562, 565, 568, 571, 574, 577, 580,
194 583, 586, 589, 592, 595, 598, 601, 604, 607, 609, 610, 613,
195 616, 619, 621, 622, 625, 627, 628, 631, 633, 634, 636, 637,
196 639, 640, -1
197 ],
198 name = 'tch_afs_10_2',
199 description = [
200 "TCH/AFS 10.2 kbits convolutional code:",
201 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
202 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
203 "G3/G3 = 1",
204 ]
205 ),
206
207 # TCH_AFS_7_95 definition
208 ConvolutionalCode(
209 165,
210 [
211 ( 1, 1 ),
212 ( G5, G4 ),
213 ( G6, G4 ),
214 ],
215 puncture = [
216 1, 2, 4, 5, 8, 22, 70, 118, 166, 214, 262, 310,
217 317, 319, 325, 332, 334, 341, 343, 349, 356, 358, 365, 367,
218 373, 380, 382, 385, 389, 391, 397, 404, 406, 409, 413, 415,
219 421, 428, 430, 433, 437, 439, 445, 452, 454, 457, 461, 463,
220 469, 476, 478, 481, 485, 487, 490, 493, 500, 502, 503, 505,
221 506, 508, 509, 511, 512, -1
222 ],
223 name = 'tch_afs_7_95',
224 description = [
225 "TCH/AFS 7.95 kbits convolutional code:",
226 "G4/G4 = 1",
227 "G5/G4 = 1 + D + D4 + D6 / 1 + D2 + D3 + D5 + D6",
228 "G6/G4 = 1 + D + D2 + D3 + D4 + D6 / 1 + D2 + D3 + D5 + D6",
229 ]
230 ),
231
232 # TCH_AFS_7_4 definition
233 ConvolutionalCode(
234 154,
235 [
236 ( G1, G3 ),
237 ( G2, G3 ),
238 ( 1, 1 ),
239 ],
240 puncture = [
241 0, 355, 361, 367, 373, 379, 385, 391, 397, 403, 409, 415,
242 421, 427, 433, 439, 445, 451, 457, 460, 463, 466, 468, 469,
243 471, 472, -1
244 ],
245 name = 'tch_afs_7_4',
246 description = [
247 "TCH/AFS 7.4 kbits convolutional code:",
248 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
249 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
250 "G3/G3 = 1",
251 ]
252 ),
253
254 # TCH_AFS_6_7 definition
255 ConvolutionalCode(
256 140,
257 [
258 ( G1, G3 ),
259 ( G2, G3 ),
260 ( 1, 1 ),
261 ( 1, 1 ),
262 ],
263 puncture = [
264 1, 3, 7, 11, 15, 27, 39, 55, 67, 79, 95, 107,
265 119, 135, 147, 159, 175, 187, 199, 215, 227, 239, 255, 267,
266 279, 287, 291, 295, 299, 303, 307, 311, 315, 319, 323, 327,
267 331, 335, 339, 343, 347, 351, 355, 359, 363, 367, 369, 371,
268 375, 377, 379, 383, 385, 387, 391, 393, 395, 399, 401, 403,
269 407, 409, 411, 415, 417, 419, 423, 425, 427, 431, 433, 435,
270 439, 441, 443, 447, 449, 451, 455, 457, 459, 463, 465, 467,
271 471, 473, 475, 479, 481, 483, 487, 489, 491, 495, 497, 499,
272 503, 505, 507, 511, 513, 515, 519, 521, 523, 527, 529, 531,
273 535, 537, 539, 543, 545, 547, 549, 551, 553, 555, 557, 559,
274 561, 563, 565, 567, 569, 571, 573, 575, -1
275 ],
276 name = 'tch_afs_6_7',
277 description = [
278 "TCH/AFS 6.7 kbits convolutional code:",
279 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
280 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
281 "G3/G3 = 1",
282 "G3/G3 = 1",
283 ]
284 ),
285
286 # TCH_AFS_5_9 definition
287 ConvolutionalCode(
288 124,
289 [
290 ( G4, G6 ),
291 ( G5, G6 ),
292 ( 1, 1),
293 ( 1, 1),
294 ],
295 puncture = [
296 0, 1, 3, 5, 7, 11, 15, 31, 47, 63, 79, 95,
297 111, 127, 143, 159, 175, 191, 207, 223, 239, 255, 271, 287,
298 303, 319, 327, 331, 335, 343, 347, 351, 359, 363, 367, 375,
299 379, 383, 391, 395, 399, 407, 411, 415, 423, 427, 431, 439,
300 443, 447, 455, 459, 463, 467, 471, 475, 479, 483, 487, 491,
301 495, 499, 503, 507, 509, 511, 512, 513, 515, 516, 517, 519,
302 -1
303 ],
304 name = 'tch_afs_5_9',
305 description = [
306 "TCH/AFS 5.9 kbits convolutional code:",
307 "124 bits",
308 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
309 "G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6",
310 "G6/G6 = 1",
311 "G6/G6 = 1",
312 ]
313 ),
314
315 # TCH_AFS_5_15 definition
316 ConvolutionalCode(
317 109,
318 [
319 ( G1, G3 ),
320 ( G1, G3 ),
321 ( G2, G3 ),
322 ( 1, 1 ),
323 ( 1, 1 ),
324 ],
325 puncture = [
326 0, 4, 5, 9, 10, 14, 15, 20, 25, 30, 35, 40,
327 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160,
328 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280,
329 290, 300, 310, 315, 320, 325, 330, 334, 335, 340, 344, 345,
330 350, 354, 355, 360, 364, 365, 370, 374, 375, 380, 384, 385,
331 390, 394, 395, 400, 404, 405, 410, 414, 415, 420, 424, 425,
332 430, 434, 435, 440, 444, 445, 450, 454, 455, 460, 464, 465,
333 470, 474, 475, 480, 484, 485, 490, 494, 495, 500, 504, 505,
334 510, 514, 515, 520, 524, 525, 529, 530, 534, 535, 539, 540,
335 544, 545, 549, 550, 554, 555, 559, 560, 564, -1
336 ],
337 name = 'tch_afs_5_15',
338 description = [
339 "TCH/AFS 5.15 kbits convolutional code:",
340 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
341 "G1/G3 = 1 + D + D3 + D4 / 1 + D + D2 + D3 + D4",
342 "G2/G3 = 1 + D2 + D4 / 1 + D + D2 + D3 + D4",
343 "G3/G3 = 1",
344 "G3/G3 = 1",
345 ]
346 ),
347
348 # TCH_AFS_4_75 definition
349 ConvolutionalCode(
350 101,
351 [
352 ( G4, G6 ),
353 ( G4, G6 ),
354 ( G5, G6 ),
355 ( 1, 1 ),
356 ( 1, 1 ),
357 ],
358 puncture = [
359 0, 1, 2, 4, 5, 7, 9, 15, 25, 35, 45, 55,
360 65, 75, 85, 95, 105, 115, 125, 135, 145, 155, 165, 175,
361 185, 195, 205, 215, 225, 235, 245, 255, 265, 275, 285, 295,
362 305, 315, 325, 335, 345, 355, 365, 375, 385, 395, 400, 405,
363 410, 415, 420, 425, 430, 435, 440, 445, 450, 455, 459, 460,
364 465, 470, 475, 479, 480, 485, 490, 495, 499, 500, 505, 509,
365 510, 515, 517, 519, 520, 522, 524, 525, 526, 527, 529, 530,
366 531, 532, 534, -1
367 ],
368 name = 'tch_afs_4_75',
369 description = [
370 "TCH/AFS 4.75 kbits convolutional code:",
371 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
372 "G4/G6 = 1 + D2 + D3 + D5 + D6 / 1 + D + D2 + D3 + D4 + D6",
373 "G5/G6 = 1 + D + D4 + D6 / 1 + D + D2 + D3 + D4 + D6",
374 "G6/G6 = 1",
375 "G6/G6 = 1",
376 ]
377 ),
378
379 # TCH_FR definition
380 ConvolutionalCode(
381 185,
382 shared_polys["xcch"],
383 name = "tch_fr",
384 description = ["TCH/F convolutional code"]
385 ),
386
387 # TCH_HR definition
388 ConvolutionalCode(
389 98,
390 [
391 ( G4, 1 ),
392 ( G5, 1 ),
393 ( G6, 1 ),
394 ],
395 puncture = [
396 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34,
397 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70,
398 73, 76, 79, 82, 85, 88, 91, 94, 97, 100, 103, 106,
399 109, 112, 115, 118, 121, 124, 127, 130, 133, 136, 139, 142,
400 145, 148, 151, 154, 157, 160, 163, 166, 169, 172, 175, 178,
401 181, 184, 187, 190, 193, 196, 199, 202, 205, 208, 211, 214,
402 217, 220, 223, 226, 229, 232, 235, 238, 241, 244, 247, 250,
403 253, 256, 259, 262, 265, 268, 271, 274, 277, 280, 283, 295,
404 298, 301, 304, 307, 310, -1,
405 ],
406 name = "tch_hr",
407 description = ["TCH/H convolutional code"]
408 ),
409
410 # TCH_AHS_7_95 definition
411 ConvolutionalCode(
412 129,
413 [
414 ( 1, 1 ),
415 ( G1, G0 ),
416 ],
417 puncture = [
418 1, 3, 5, 7, 11, 15, 19, 23, 27, 31, 35, 43,
419 47, 51, 55, 59, 63, 67, 71, 79, 83, 87, 91, 95,
420 99, 103, 107, 115, 119, 123, 127, 131, 135, 139, 143, 151,
421 155, 159, 163, 167, 171, 175, 177, 179, 183, 185, 187, 191,
422 193, 195, 197, 199, 203, 205, 207, 211, 213, 215, 219, 221,
423 223, 227, 229, 231, 233, 235, 239, 241, 243, 247, 249, 251,
424 255, 257, 259, 261, 263, 265, -1,
425 ],
426 name = "tch_ahs_7_95",
427 description = ["TCH/AHS 7.95 kbits convolutional code"]
428 ),
429
430 # TCH_AHS_7_4 definition
431 ConvolutionalCode(
432 126,
433 [
434 ( 1, 1 ),
435 ( G1, G0 ),
436 ],
437 puncture = [
438 1, 3, 7, 11, 19, 23, 27, 35, 39, 43, 51, 55,
439 59, 67, 71, 75, 83, 87, 91, 99, 103, 107, 115, 119,
440 123, 131, 135, 139, 143, 147, 151, 155, 159, 163, 167, 171,
441 175, 179, 183, 187, 191, 195, 199, 203, 207, 211, 215, 219,
442 221, 223, 227, 229, 231, 235, 237, 239, 243, 245, 247, 251,
443 253, 255, 257, 259, -1,
444 ],
445 name = "tch_ahs_7_4",
446 description = ["TCH/AHS 7.4 kbits convolutional code"]
447 ),
448
449 # TCH_AHS_6_7 definition
450 ConvolutionalCode(
451 116,
452 [
453 ( 1, 1 ),
454 ( G1, G0 ),
455 ],
456 puncture = [
457 1, 3, 9, 19, 29, 39, 49, 59, 69, 79, 89, 99,
458 109, 119, 129, 139, 149, 159, 167, 169, 177, 179, 187, 189,
459 197, 199, 203, 207, 209, 213, 217, 219, 223, 227, 229, 231,
460 233, 235, 237, 239, -1,
461 ],
462 name = "tch_ahs_6_7",
463 description = ["TCH/AHS 6.7 kbits convolutional code"]
464 ),
465
466 # TCH_AHS_5_9 definition
467 ConvolutionalCode(
468 108,
469 [
470 ( 1, 1 ),
471 ( G1, G0 ),
472 ],
473 puncture = [
474 1, 15, 71, 127, 139, 151, 163, 175, 187, 195, 203, 211,
475 215, 219, 221, 223, -1,
476 ],
477 name = "tch_ahs_5_9",
478 description = ["TCH/AHS 5.9 kbits convolutional code"]
479 ),
480
481 # TCH_AHS_5_15 definition
482 ConvolutionalCode(
483 97,
484 [
485 ( G1, G3 ),
486 ( G2, G3 ),
487 ( 1, 1 ),
488 ],
489 puncture = [
490 0, 1, 3, 4, 6, 9, 12, 15, 18, 21, 27, 33,
491 39, 45, 51, 54, 57, 63, 69, 75, 81, 87, 90, 93,
492 99, 105, 111, 117, 123, 126, 129, 135, 141, 147, 153, 159,
493 162, 165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195,
494 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231,
495 234, 237, 240, 243, 244, 246, 249, 252, 255, 256, 258, 261,
496 264, 267, 268, 270, 273, 276, 279, 280, 282, 285, 288, 289,
497 291, 294, 295, 297, 298, 300, 301, -1,
498 ],
499 name = "tch_ahs_5_15",
500 description = ["TCH/AHS 5.15 kbits convolutional code"]
501 ),
502
503 # TCH_AHS_4_75 definition
504 ConvolutionalCode(
505 89,
506 [
507 ( 1, 1 ),
508 ( G5, G4 ),
509 ( G6, G4 ),
510 ],
511 puncture = [
512 1, 2, 4, 5, 7, 8, 10, 13, 16, 22, 28, 34,
513 40, 46, 52, 58, 64, 70, 76, 82, 88, 94, 100, 106,
514 112, 118, 124, 130, 136, 142, 148, 151, 154, 160, 163, 166,
515 172, 175, 178, 184, 187, 190, 196, 199, 202, 208, 211, 214,
516 220, 223, 226, 232, 235, 238, 241, 244, 247, 250, 253, 256,
517 259, 262, 265, 268, 271, 274, 275, 277, 278, 280, 281, 283,
518 284, -1,
519 ],
520 name = "tch_ahs_4_75",
521 description = ["TCH/AHS 4.75 kbits convolutional code"]
522 ),
523
524 # EDGE MCS1_DL_HDR definition
525 ConvolutionalCode(
526 36,
527 shared_polys["mcs"],
528 name = "mcs1_dl_hdr",
529 term_type = "CONV_TERM_TAIL_BITING",
530 description = [
531 "EDGE MCS-1 DL header convolutional code:",
532 "42 bits blocks, rate 1/3, k = 7",
533 "G4 = 1 + D2 + D3 + D5 + D6",
534 "G7 = 1 + D + D2 + D3 + D6",
535 "G5 = 1 + D + D4 + D6"
536 ]
537 ),
538
539 # EDGE MCS1_UL_HDR definition
540 ConvolutionalCode(
541 39,
542 shared_polys["mcs"],
543 name = "mcs1_ul_hdr",
544 term_type = "CONV_TERM_TAIL_BITING",
545 description = [
546 "EDGE MCS-1 UL header convolutional code:",
547 "45 bits blocks, rate 1/3, k = 7",
548 "G4 = 1 + D2 + D3 + D5 + D6",
549 "G7 = 1 + D + D2 + D3 + D6",
550 "G5 = 1 + D + D4 + D6"
551 ]
552 ),
553
554 # EDGE MCS1 definition
555 ConvolutionalCode(
556 190,
557 shared_polys["mcs"],
558 name = "mcs1",
559 description = [
560 "EDGE MCS-1 data convolutional code:",
561 "196 bits blocks, rate 1/3, k = 7",
562 "G4 = 1 + D2 + D3 + D5 + D6",
563 "G7 = 1 + D + D2 + D3 + D6",
564 "G5 = 1 + D + D4 + D6"
565 ]
566 ),
567
568 # EDGE MCS2 definition
569 ConvolutionalCode(
570 238,
571 shared_polys["mcs"],
572 name = "mcs2",
573 description = [
574 "EDGE MCS-2 data convolutional code:",
575 "244 bits blocks, rate 1/3, k = 7",
576 "G4 = 1 + D2 + D3 + D5 + D6",
577 "G7 = 1 + D + D2 + D3 + D6",
578 "G5 = 1 + D + D4 + D6"
579 ]
580 ),
581
582 # EDGE MCS3 definition
583 ConvolutionalCode(
584 310,
585 shared_polys["mcs"],
586 name = "mcs3",
587 description = [
588 "EDGE MCS-3 data convolutional code:",
589 "316 bits blocks, rate 1/3, k = 7",
590 "G4 = 1 + D2 + D3 + D5 + D6",
591 "G7 = 1 + D + D2 + D3 + D6",
592 "G5 = 1 + D + D4 + D6"
593 ]
594 ),
595
596 # EDGE MCS4 definition
597 ConvolutionalCode(
598 366,
599 shared_polys["mcs"],
600 name = "mcs4",
601 description = [
602 "EDGE MCS-4 data convolutional code:",
603 "372 bits blocks, rate 1/3, k = 7",
604 "G4 = 1 + D2 + D3 + D5 + D6",
605 "G7 = 1 + D + D2 + D3 + D6",
606 "G5 = 1 + D + D4 + D6"
607 ]
608 ),
609
610 # EDGE MCS5_DL_HDR definition
611 ConvolutionalCode(
612 33,
613 shared_polys["mcs"],
614 name = "mcs5_dl_hdr",
615 term_type = "CONV_TERM_TAIL_BITING",
616 description = [
617 "EDGE MCS-5 DL header convolutional code:",
618 "39 bits blocks, rate 1/3, k = 7",
619 "G4 = 1 + D2 + D3 + D5 + D6",
620 "G7 = 1 + D + D2 + D3 + D6",
621 "G5 = 1 + D + D4 + D6"
622 ]
623 ),
624
625 # EDGE MCS5_UL_HDR definition
626 ConvolutionalCode(
627 45,
628 shared_polys["mcs"],
629 name = "mcs5_ul_hdr",
630 term_type = "CONV_TERM_TAIL_BITING",
631 description = [
632 "EDGE MCS-5 UL header convolutional code:",
633 "51 bits blocks, rate 1/3, k = 7",
634 "G4 = 1 + D2 + D3 + D5 + D6",
635 "G7 = 1 + D + D2 + D3 + D6",
636 "G5 = 1 + D + D4 + D6"
637 ]
638 ),
639
640 # EDGE MCS5 definition
641 ConvolutionalCode(
642 462,
643 shared_polys["mcs"],
644 name = "mcs5",
645 description = [
646 "EDGE MCS-5 data convolutional code:",
647 "468 bits blocks, rate 1/3, k = 7",
648 "G4 = 1 + D2 + D3 + D5 + D6",
649 "G7 = 1 + D + D2 + D3 + D6",
650 "G5 = 1 + D + D4 + D6"
651 ]
652 ),
653
654 # EDGE MCS6 definition
655 ConvolutionalCode(
656 606,
657 shared_polys["mcs"],
658 name = "mcs6",
659 description = [
660 "EDGE MCS-6 data convolutional code:",
661 "612 bits blocks, rate 1/3, k = 7",
662 "G4 = 1 + D2 + D3 + D5 + D6",
663 "G7 = 1 + D + D2 + D3 + D6",
664 "G5 = 1 + D + D4 + D6"
665 ]
666 ),
667
668 # EDGE MCS7_DL_HDR definition
669 ConvolutionalCode(
670 45,
671 shared_polys["mcs"],
672 name = "mcs7_dl_hdr",
673 term_type = "CONV_TERM_TAIL_BITING",
674 description = [
675 "EDGE MCS-7 DL header convolutional code:",
676 "51 bits blocks, rate 1/3, k = 7",
677 "G4 = 1 + D2 + D3 + D5 + D6",
678 "G7 = 1 + D + D2 + D3 + D6",
679 "G5 = 1 + D + D4 + D6"
680 ]
681 ),
682
683 # EDGE MCS7_UL_HDR definition
684 ConvolutionalCode(
685 54,
686 shared_polys["mcs"],
687 name = "mcs7_ul_hdr",
688 term_type = "CONV_TERM_TAIL_BITING",
689 description = [
690 "EDGE MCS-7 UL header convolutional code:",
691 "60 bits blocks, rate 1/3, k = 7",
692 "G4 = 1 + D2 + D3 + D5 + D6",
693 "G7 = 1 + D + D2 + D3 + D6",
694 "G5 = 1 + D + D4 + D6"
695 ]
696 ),
697
698 # EDGE MCS7 definition
699 ConvolutionalCode(
700 462,
701 shared_polys["mcs"],
702 name = "mcs7",
703 description = [
704 "EDGE MCS-7 data convolutional code:",
705 "468 bits blocks, rate 1/3, k = 7",
706 "G4 = 1 + D2 + D3 + D5 + D6",
707 "G7 = 1 + D + D2 + D3 + D6",
708 "G5 = 1 + D + D4 + D6"
709 ]
710 ),
711
712 # EDGE MCS8 definition
713 ConvolutionalCode(
714 558,
715 shared_polys["mcs"],
716 name = "mcs8",
717 description = [
718 "EDGE MCS-8 data convolutional code:",
719 "564 bits blocks, rate 1/3, k = 7",
720 "G4 = 1 + D2 + D3 + D5 + D6",
721 "G7 = 1 + D + D2 + D3 + D6",
722 "G5 = 1 + D + D4 + D6"
723 ]
724 ),
725
726 # EDGE MCS9 definition
727 ConvolutionalCode(
728 606,
729 shared_polys["mcs"],
730 name = "mcs9",
731 description = [
732 "EDGE MCS-9 data convolutional code:",
733 "612 bits blocks, rate 1/3, k = 7",
734 "G4 = 1 + D2 + D3 + D5 + D6",
735 "G7 = 1 + D + D2 + D3 + D6",
736 "G5 = 1 + D + D4 + D6"
737 ]
738 ),
739]