Advertisement
Guest User

GSM 05.03

a guest
Feb 10th, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.42 KB | None | 0 0
  1. diff --git a/src/coding/gsm0503_coding.c b/src/coding/gsm0503_coding.c
  2. index a4b820d..00f11d4 100644
  3. --- a/src/coding/gsm0503_coding.c
  4. +++ b/src/coding/gsm0503_coding.c
  5. @@ -1841,12 +1841,22 @@ int gsm0503_tch_hr_encode(ubit_t *bursts, uint8_t *tch_data, int len)
  6.     ubit_t conv[98], b[112], d[112], p[3];
  7.     int i;
  8.  
  9. +   printf("[i] Before memset:\n");
  10. +   for (i = 0; i < 912; i++)
  11. +       printf("%02X ", iB[i]);
  12. +   printf("\n");
  13. +
  14.     /**
  15.      * Fix valgrind warnings:
  16.      * "Uninitialised value was created by a stack allocation"
  17.      * "Conditional jump or move depends on uninitialised value(s)"
  18.      */
  19. -   memset(iB, 0x00, sizeof(iB));
  20. +   memset(iB, 0x41, sizeof(iB));
  21. +
  22. +   printf("[i] After memset:\n");
  23. +   for (i = 0; i < 912; i++)
  24. +       printf("%02X ", iB[i]);
  25. +   printf("\n");
  26.  
  27.     switch (len) {
  28.     case 15: /* TCH HR */
  29. @@ -1866,11 +1876,21 @@ int gsm0503_tch_hr_encode(ubit_t *bursts, uint8_t *tch_data, int len)
  30.  
  31.         gsm0503_tch_hr_interleave(cB, iB);
  32.  
  33. +       printf("[i] After gsm0503_tch_hr_interleave():\n");
  34. +       for (i = 0; i < 912; i++)
  35. +           printf("%02X ", iB[i]);
  36. +       printf("\n");
  37. +
  38.         for (i = 0; i < 4; i++) {
  39.             gsm0503_tch_burst_map(&iB[i * 114],
  40.                 &bursts[i * 116], &h, i >> 1);
  41.         }
  42.  
  43. +       printf("[i] After gsm0503_tch_burst_map():\n");
  44. +       for (i = 0; i < 912; i++)
  45. +           printf("%02X ", iB[i]);
  46. +       printf("\n");
  47. +
  48.         break;
  49.     case GSM_MACBLOCK_LEN: /* FACCH */
  50.         _xcch_encode_cB(cB, tch_data);
  51. diff --git a/src/coding/gsm0503_interleaving.c b/src/coding/gsm0503_interleaving.c
  52. index 22ad6f6..3290beb 100644
  53. --- a/src/coding/gsm0503_interleaving.c
  54. +++ b/src/coding/gsm0503_interleaving.c
  55. @@ -568,6 +568,7 @@ void gsm0503_tch_hr_interleave(ubit_t *cB, ubit_t *iB)
  56.     for (k = 0; k < 228; k++) {
  57.         B = gsm0503_tch_hr_interleaving[k][1];
  58.         j = gsm0503_tch_hr_interleaving[k][0];
  59. -       iB[B * 114 + j] = cB[k];
  60. +       // iB[B * 114 + j] = cB[k];
  61. +       iB[B * 114 + j] = 0x00;
  62.     }
  63.  }
  64. diff --git a/src/coding/gsm0503_mapping.c b/src/coding/gsm0503_mapping.c
  65. index 366eeb4..87478c0 100644
  66. --- a/src/coding/gsm0503_mapping.c
  67. +++ b/src/coding/gsm0503_mapping.c
  68. @@ -72,16 +72,36 @@ void gsm0503_tch_burst_unmap(sbit_t *iB, sbit_t *eB, sbit_t *h, int odd)
  69.  
  70.  void gsm0503_tch_burst_map(ubit_t *iB, ubit_t *eB, const ubit_t *h, int odd)
  71.  {
  72. -   int i;
  73. +   int i, j = -1;
  74. +   static n = 0;
  75.  
  76.     /* brainfuck: only copy even or odd bits */
  77.     if (eB) {
  78. -       for (i = odd; i < 57; i += 2)
  79. +       for (i = odd; i < 57; i += 2) {
  80.             eB[i] = iB[i];
  81. -       for (i = 58 - odd; i < 114; i += 2)
  82. +           printf("[%d] %02X\n", n * 114 + i, iB[i]);
  83. +
  84. +           if (iB[i] == 0x41)
  85. +               j = i;
  86. +       }
  87. +
  88. +       for (i = 58 - odd; i < 114; i += 2) {
  89.             eB[i + 2] = iB[i];
  90. +           printf("[%d] %02X\n", n * 114 + i, iB[i]);
  91. +
  92. +           if (iB[i] == 0x41)
  93. +               j = i;
  94. +       }
  95. +
  96. +       if (j != -1)
  97. +           printf("\n[i] Uninitialized value at %d!\n", 3 * 114 + j);
  98.     }
  99.  
  100. +   if (n == 4)
  101. +       n = 0;
  102. +   else
  103. +       n++;
  104. +
  105.     if (h) {
  106.         if (!odd)
  107.             eB[58] = *h;
  108. diff --git a/tests/coding/coding_test.c b/tests/coding/coding_test.c
  109. index 9a00f0d..148d428 100644
  110. --- a/tests/coding/coding_test.c
  111. +++ b/tests/coding/coding_test.c
  112. @@ -485,8 +485,8 @@ int main(int argc, char **argv)
  113.     test_speech_hr[0] = 0x00;
  114.     test_hr(test_speech_hr, sizeof(test_speech_hr));
  115.  
  116. -   for (i = 0; i < len_l2; i++)
  117. -       test_hr(test_l2[i], sizeof(test_l2[0]));
  118. +   /*for (i = 0; i < len_l2; i++)
  119. +       test_hr(test_l2[i], sizeof(test_l2[0]));*/
  120.  
  121.     for (i = 0; i < len_mb; i++) {
  122.         test_pdtch(test_macblock[i], 23);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement