From b6db913eeb1a037510e9f1fa74c9dad9ecf29d93 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 29 Jul 2010 20:35:13 +0200 Subject: Add FACCH decoder --- gsm-receiver/src/lib/decoder/interleave.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'gsm-receiver/src/lib/decoder/interleave.c') diff --git a/gsm-receiver/src/lib/decoder/interleave.c b/gsm-receiver/src/lib/decoder/interleave.c index 7b45927..8d11286 100644 --- a/gsm-receiver/src/lib/decoder/interleave.c +++ b/gsm-receiver/src/lib/decoder/interleave.c @@ -24,6 +24,27 @@ interleave_init(INTERLEAVE_CTX *ictx, int size, int block_size) return 0; } +int +interleave_init_facch_f(INTERLEAVE_CTX *ictx, int size, int block_size, int block_offset) +{ + ictx->trans_size = size; + ictx->trans = (unsigned short *)malloc(size * sizeof *ictx->trans); + +// DEBUGF("size: %d\n", size); +// DEBUGF("Block size: %d\n", block_size); + int j, k, B; + for (k = 0; k < size; k++) + { + B = (k + block_offset) % 8; + j = 2 * ((49 * k) % 57) + ((k % 8) / 4); + ictx->trans[k] = B * block_size + j; + /* Mapping: pos1 goes to pos2: pos1 -> pos2 */ +// DEBUGF("%d -> %d\n", ictx->trans[k], k); + } +// exit(0); + return 0; +} + int interleave_deinit(INTERLEAVE_CTX *ictx) { -- cgit v1.2.3