diff --git a/src/coding/gsm0503_coding.c b/src/coding/gsm0503_coding.c index a4b820d..00f11d4 100644 --- a/src/coding/gsm0503_coding.c +++ b/src/coding/gsm0503_coding.c @@ -1841,12 +1841,22 @@ int gsm0503_tch_hr_encode(ubit_t *bursts, uint8_t *tch_data, int len) ubit_t conv[98], b[112], d[112], p[3]; int i; + printf("[i] Before memset:\n"); + for (i = 0; i < 912; i++) + printf("%02X ", iB[i]); + printf("\n"); + /** * Fix valgrind warnings: * "Uninitialised value was created by a stack allocation" * "Conditional jump or move depends on uninitialised value(s)" */ - memset(iB, 0x00, sizeof(iB)); + memset(iB, 0x41, sizeof(iB)); + + printf("[i] After memset:\n"); + for (i = 0; i < 912; i++) + printf("%02X ", iB[i]); + printf("\n"); switch (len) { case 15: /* TCH HR */ @@ -1866,11 +1876,21 @@ int gsm0503_tch_hr_encode(ubit_t *bursts, uint8_t *tch_data, int len) gsm0503_tch_hr_interleave(cB, iB); + printf("[i] After gsm0503_tch_hr_interleave():\n"); + for (i = 0; i < 912; i++) + printf("%02X ", iB[i]); + printf("\n"); + for (i = 0; i < 4; i++) { gsm0503_tch_burst_map(&iB[i * 114], &bursts[i * 116], &h, i >> 1); } + printf("[i] After gsm0503_tch_burst_map():\n"); + for (i = 0; i < 912; i++) + printf("%02X ", iB[i]); + printf("\n"); + break; case GSM_MACBLOCK_LEN: /* FACCH */ _xcch_encode_cB(cB, tch_data); diff --git a/src/coding/gsm0503_interleaving.c b/src/coding/gsm0503_interleaving.c index 22ad6f6..3290beb 100644 --- a/src/coding/gsm0503_interleaving.c +++ b/src/coding/gsm0503_interleaving.c @@ -568,6 +568,7 @@ void gsm0503_tch_hr_interleave(ubit_t *cB, ubit_t *iB) for (k = 0; k < 228; k++) { B = gsm0503_tch_hr_interleaving[k][1]; j = gsm0503_tch_hr_interleaving[k][0]; - iB[B * 114 + j] = cB[k]; + // iB[B * 114 + j] = cB[k]; + iB[B * 114 + j] = 0x00; } } diff --git a/src/coding/gsm0503_mapping.c b/src/coding/gsm0503_mapping.c index 366eeb4..87478c0 100644 --- a/src/coding/gsm0503_mapping.c +++ b/src/coding/gsm0503_mapping.c @@ -72,16 +72,36 @@ void gsm0503_tch_burst_unmap(sbit_t *iB, sbit_t *eB, sbit_t *h, int odd) void gsm0503_tch_burst_map(ubit_t *iB, ubit_t *eB, const ubit_t *h, int odd) { - int i; + int i, j = -1; + static n = 0; /* brainfuck: only copy even or odd bits */ if (eB) { - for (i = odd; i < 57; i += 2) + for (i = odd; i < 57; i += 2) { eB[i] = iB[i]; - for (i = 58 - odd; i < 114; i += 2) + printf("[%d] %02X\n", n * 114 + i, iB[i]); + + if (iB[i] == 0x41) + j = i; + } + + for (i = 58 - odd; i < 114; i += 2) { eB[i + 2] = iB[i]; + printf("[%d] %02X\n", n * 114 + i, iB[i]); + + if (iB[i] == 0x41) + j = i; + } + + if (j != -1) + printf("\n[i] Uninitialized value at %d!\n", 3 * 114 + j); } + if (n == 4) + n = 0; + else + n++; + if (h) { if (!odd) eB[58] = *h; diff --git a/tests/coding/coding_test.c b/tests/coding/coding_test.c index 9a00f0d..148d428 100644 --- a/tests/coding/coding_test.c +++ b/tests/coding/coding_test.c @@ -485,8 +485,8 @@ int main(int argc, char **argv) test_speech_hr[0] = 0x00; test_hr(test_speech_hr, sizeof(test_speech_hr)); - for (i = 0; i < len_l2; i++) - test_hr(test_l2[i], sizeof(test_l2[0])); + /*for (i = 0; i < len_l2; i++) + test_hr(test_l2[i], sizeof(test_l2[0]));*/ for (i = 0; i < len_mb; i++) { test_pdtch(test_macblock[i], 23);