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