<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/17670">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tests/coding: check return value of encoding / decoding functions<br><br>Change-Id: I78850a4ab2fb7cd63bb4a3789f934634b6fb2cb7<br>---<br>M tests/coding/coding_test.c<br>1 file changed, 74 insertions(+), 11 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/70/17670/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/coding/coding_test.c b/tests/coding/coding_test.c</span><br><span>index 2b0830f..bfdb8b9 100644</span><br><span>--- a/tests/coding/coding_test.c</span><br><span>+++ b/tests/coding/coding_test.c</span><br><span>@@ -76,10 +76,15 @@</span><br><span>  ubit_t bursts_u[116 * 4];</span><br><span>    sbit_t bursts_s[116 * 4];</span><br><span>    int n_errors, n_bits_total;</span><br><span style="color: hsl(120, 100%, 40%);">+   int rc;</span><br><span> </span><br><span>  /* Encode L2 message */</span><br><span>      printf("Encoding: %s\n", osmo_hexdump(l2, 23));</span><br><span style="color: hsl(0, 100%, 40%);">-       gsm0503_xcch_encode(bursts_u, l2);</span><br><span style="color: hsl(120, 100%, 40%);">+    rc = gsm0503_xcch_encode(bursts_u, l2);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 116 * 4);</span><br><span>@@ -91,7 +96,12 @@</span><br><span>    memset(bursts_s + 116, 0, 30);</span><br><span> </span><br><span>   /* Decode, correcting errors */</span><br><span style="color: hsl(0, 100%, 40%);">- gsm0503_xcch_decode(result, bursts_s, &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+      rc = gsm0503_xcch_decode(result, bursts_s, &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  printf("Decoded: %s\n", osmo_hexdump(result, 23));</span><br><span>         printf("xcch_decode: n_errors=%d n_bits_total=%d ber=%.2f\n",</span><br><span>              n_errors, n_bits_total, (float) n_errors / n_bits_total);</span><br><span>@@ -110,8 +120,12 @@</span><br><span>     sbit_t bursts_s[36];</span><br><span> </span><br><span>     /* Encode L2 message */</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("Encoding: %02x\n", ra);</span><br><span>    rc = gsm0503_rach_ext_encode(bursts_u, ra, bsic, false);</span><br><span style="color: hsl(0, 100%, 40%);">-        printf("Encoding: %02x%s\n", ra, (rc != 0) ? " FAIL" : "");</span><br><span style="color: hsl(120, 100%, 40%);">+     if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 36);</span><br><span>@@ -125,8 +139,12 @@</span><br><span> </span><br><span>   /* Decode, correcting errors */</span><br><span>      rc = gsm0503_rach_decode_ber(&result, bursts_s, bsic, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-  printf("Decoded: %02x%s\n", result, (rc != 0) ? " FAIL" : "");</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ printf("Decoded: %02x\n", result);</span><br><span>         if (ra != result)</span><br><span>            printf("FAIL [RACH]: encoded %u != %u decoded\n", ra, result);</span><br><span> </span><br><span>@@ -141,8 +159,12 @@</span><br><span>  sbit_t bursts_s[36];</span><br><span> </span><br><span>     /* Encode L2 message */</span><br><span style="color: hsl(120, 100%, 40%);">+       printf("Encoding: %02x\n", ra);</span><br><span>    rc = gsm0503_rach_ext_encode(bursts_u, ra, bsic, true);</span><br><span style="color: hsl(0, 100%, 40%);">- printf("Encoding: %02x%s\n", ra, (rc != 0) ? " FAIL" : "");</span><br><span style="color: hsl(120, 100%, 40%);">+     if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 36);</span><br><span>@@ -156,8 +178,12 @@</span><br><span> </span><br><span>   /* Decode, correcting errors */</span><br><span>      rc = gsm0503_rach_ext_decode_ber(&result, bursts_s, bsic, NULL, NULL);</span><br><span style="color: hsl(0, 100%, 40%);">-      printf("Decoded: %02x%s\n", result, (rc != 0) ? " FAIL" : "");</span><br><span style="color: hsl(120, 100%, 40%);">+  if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ printf("Decoded: %02x\n", result);</span><br><span>         if (ra != result)</span><br><span>            printf("FAIL [RACH ext]: encoded %u != %u decoded\n", ra, result);</span><br><span> </span><br><span>@@ -169,6 +195,7 @@</span><br><span>       uint8_t result[4];</span><br><span>   ubit_t bursts_u[78];</span><br><span>         sbit_t bursts_s[78];</span><br><span style="color: hsl(120, 100%, 40%);">+  int rc;</span><br><span> </span><br><span>  /* Zero bits 25 and above */</span><br><span>         info[3] &= 1;</span><br><span>@@ -176,7 +203,11 @@</span><br><span> </span><br><span>         /* Encode L2 message */</span><br><span>      printf("Encoding: %s\n", osmo_hexdump(info, 4));</span><br><span style="color: hsl(0, 100%, 40%);">-      gsm0503_sch_encode(bursts_u, info);</span><br><span style="color: hsl(120, 100%, 40%);">+   rc = gsm0503_sch_encode(bursts_u, info);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 78);</span><br><span>@@ -189,7 +220,12 @@</span><br><span>       memset(bursts_s + 6, 0, 10);</span><br><span> </span><br><span>     /* Decode, correcting errors */</span><br><span style="color: hsl(0, 100%, 40%);">- gsm0503_sch_decode(result, bursts_s);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = gsm0503_sch_decode(result, bursts_s);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  printf("Decoded: %s\n", osmo_hexdump(result, 4));</span><br><span> </span><br><span>      OSMO_ASSERT(!memcmp(info, result, 4));</span><br><span>@@ -210,7 +246,11 @@</span><br><span> </span><br><span>    /* Encode L2 message */</span><br><span>      printf("Encoding: %s\n", osmo_hexdump(speech, len));</span><br><span style="color: hsl(0, 100%, 40%);">-  gsm0503_tch_fr_encode(bursts_u, speech, len, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+      rc = gsm0503_tch_fr_encode(bursts_u, speech, len, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 116 * 8);</span><br><span>@@ -224,6 +264,11 @@</span><br><span>  /* Decode, correcting errors */</span><br><span>      rc = gsm0503_tch_fr_decode(result, bursts_s, 1, len == 31,</span><br><span>           &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  printf("Decoded: %s\n", osmo_hexdump(result, len));</span><br><span>        printf("tch_fr_decode: n_errors=%d n_bits_total=%d ber=%.2f\n",</span><br><span>            n_errors, n_bits_total, (float)n_errors/n_bits_total);</span><br><span>@@ -247,7 +292,11 @@</span><br><span> </span><br><span>    /* Encode L2 message */</span><br><span>      printf("Encoding: %s\n", osmo_hexdump(speech, len));</span><br><span style="color: hsl(0, 100%, 40%);">-  gsm0503_tch_hr_encode(bursts_u, speech, len);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = gsm0503_tch_hr_encode(bursts_u, speech, len);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 116 * 6);</span><br><span>@@ -261,6 +310,11 @@</span><br><span>  /* Decode, correcting errors */</span><br><span>      rc = gsm0503_tch_hr_decode(result, bursts_s, 0,</span><br><span>              &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  printf("Decoded: %s\n", osmo_hexdump(result, len));</span><br><span>        printf("tch_hr_decode: n_errors=%d n_bits_total=%d ber=%.2f\n",</span><br><span>            n_errors, n_bits_total, (float)n_errors/n_bits_total);</span><br><span>@@ -294,7 +348,11 @@</span><br><span> </span><br><span>    /* Encode L2 message */</span><br><span>      printf("Encoding: %s\n", osmo_hexdump(l2, len));</span><br><span style="color: hsl(0, 100%, 40%);">-      gsm0503_pdtch_encode(bursts_u, l2, len);</span><br><span style="color: hsl(120, 100%, 40%);">+      rc = gsm0503_pdtch_encode(bursts_u, l2, len);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("%s(): encoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span> </span><br><span>        /* Prepare soft-bits */</span><br><span>      osmo_ubit2sbit(bursts_s, bursts_u, 116 * 4);</span><br><span>@@ -305,6 +363,11 @@</span><br><span>  /* Decode */</span><br><span>         rc = gsm0503_pdtch_decode(result, bursts_s, NULL,</span><br><span>            &n_errors, &n_bits_total);</span><br><span style="color: hsl(120, 100%, 40%);">+    if (rc < 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("%s(): decoding failed (rc=%d)\n", __func__, rc);</span><br><span style="color: hsl(120, 100%, 40%);">+            return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  printf("Decoded: %s\n", osmo_hexdump(result, len));</span><br><span>        printf("pdtch_decode: n_errors=%d n_bits_total=%d ber=%.2f\n",</span><br><span>             n_errors, n_bits_total, (float)n_errors/n_bits_total);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/17670">change 17670</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/17670"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I78850a4ab2fb7cd63bb4a3789f934634b6fb2cb7 </div>
<div style="display:none"> Gerrit-Change-Number: 17670 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>