blob: d9fd60491640b6f38696f360d26b72f57d604b8e [file] [log] [blame]
piotrfaacc722014-07-20 23:48:32 +02001#include <stdlib.h>
2#include <stdio.h>
3#include "interleave.h"
4
5int
6interleave_init(INTERLEAVE_CTX *ictx, int size, int block_size)
7{
8 ictx->trans_size = size;
9 ictx->trans = (unsigned short *)malloc(size * sizeof *ictx->trans);
10
11// DEBUGF("size: %d\n", size);
12// DEBUGF("Block size: %d\n", block_size);
13 int j, k, B;
14 for (k = 0; k < size; k++)
15 {
16 B = k % 4;
17 j = 2 * ((49 * k) % 57) + ((k % 8) / 4);
18 ictx->trans[k] = B * block_size + j;
19 /* Mapping: pos1 goes to pos2: pos1 -> pos2 */
20 //printf("%d -> %d\n", ictx->trans[k], k);
21 }
22// exit(0);
23 return 0;
24}
25
26int
27interleave_init_facch_f(INTERLEAVE_CTX *ictx, int size, int block_size, int block_offset)
28{
29 ictx->trans_size = size;
30 ictx->trans = (unsigned short *)malloc(size * sizeof *ictx->trans);
31
32// DEBUGF("size: %d\n", size);
33// DEBUGF("Block size: %d\n", block_size);
34 int j, k, B;
35 for (k = 0; k < size; k++)
36 {
37 B = (k + block_offset) % 8;
38 j = 2 * ((49 * k) % 57) + ((k % 8) / 4);
39 ictx->trans[k] = B * block_size + j;
40 /* Mapping: pos1 goes to pos2: pos1 -> pos2 */
41// DEBUGF("%d -> %d\n", ictx->trans[k], k);
42 }
43// exit(0);
44 return 0;
45}
46
47int
48interleave_deinit(INTERLEAVE_CTX *ictx)
49{
50 if (ictx->trans != NULL)
51 {
52 free(ictx->trans);
53 ictx->trans = NULL;
54 }
55
56 return 0;
57}
58
59void
60interleave_decode(INTERLEAVE_CTX *ictx, unsigned char *dst, unsigned char *src)
61{
62 printf("Lol\n");
63 int k;
64 for (k = 0; k < ictx->trans_size; k++)
65 {
66 printf("k=%d, ictx->trans[k]=%d\n", k, ictx->trans[k]);
67 dst[k] = src[ictx->trans[k]];
68 }
69}
70