<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/19514">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">i460: Fix bit- and subslots ordering of I.460 mux + demux<br><br>When I wrote the new I.460 mux + demux code, I failed to realize that<br>* bit numbers in relevant ITU specs start with 1 as MSB ... 8 as LSB<br>* sub-slot 0 is bits 1+2, i.e. the two MSBs of a byte<br>* bit-ordering within each sub-slot is also MSB first<br><br>As a result, the code and test data was broken.<br><br>Change-Id: I6df7dbf411efbdeaf516e72ac552432bf5a569d0<br>---<br>M src/gsm/i460_mux.c<br>M tests/i460_mux/i460_mux_test.c<br>M tests/i460_mux/i460_mux_test.ok<br>3 files changed, 103 insertions(+), 98 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/14/19514/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gsm/i460_mux.c b/src/gsm/i460_mux.c</span><br><span>index 320e781..91ab2a1 100644</span><br><span>--- a/src/gsm/i460_mux.c</span><br><span>+++ b/src/gsm/i460_mux.c</span><br><span>@@ -89,32 +89,34 @@</span><br><span> </span><br><span>       for (i = 0; i < data_len; i++) {</span><br><span>          uint8_t inbyte = data[i];</span><br><span style="color: hsl(0, 100%, 40%);">-               uint8_t inbits = inbyte >> schan->bit_offset;</span><br><span style="color: hsl(120, 100%, 40%);">+                /* I.460 defines sub-channel 0 is using bit positions 1+2 (the two</span><br><span style="color: hsl(120, 100%, 40%);">+             * most significant bits, hence we extract msb-first */</span><br><span style="color: hsl(120, 100%, 40%);">+               uint8_t inbits = inbyte << schan->bit_offset;</span><br><span> </span><br><span>           /* extract the bits relevant to the given schan */</span><br><span>           switch (schan->rate) {</span><br><span>            case OSMO_I460_RATE_8k:</span><br><span style="color: hsl(0, 100%, 40%);">-                 demux_subchan_append_bit(schan, inbits & 0x01);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x80);</span><br><span>                  break;</span><br><span>               case OSMO_I460_RATE_16k:</span><br><span style="color: hsl(0, 100%, 40%);">-                        demux_subchan_append_bit(schan, inbits & 0x01);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x02);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x40);</span><br><span>                  break;</span><br><span>               case OSMO_I460_RATE_32k:</span><br><span style="color: hsl(0, 100%, 40%);">-                        demux_subchan_append_bit(schan, inbits & 0x01);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x02);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x04);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x08);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x20);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x10);</span><br><span>                  break;</span><br><span>               case OSMO_I460_RATE_64k:</span><br><span style="color: hsl(0, 100%, 40%);">-                        demux_subchan_append_bit(schan, inbits & 0x01);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x02);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x04);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x08);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x10);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x20);</span><br><span style="color: hsl(0, 100%, 40%);">-                     demux_subchan_append_bit(schan, inbits & 0x40);</span><br><span>                  demux_subchan_append_bit(schan, inbits & 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x20);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x10);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x08);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x04);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x02);</span><br><span style="color: hsl(120, 100%, 40%);">+                   demux_subchan_append_bit(schan, inbits & 0x01);</span><br><span>                  break;</span><br><span>               default:</span><br><span>                     OSMO_ASSERT(0);</span><br><span>@@ -205,22 +207,25 @@</span><br><span>      uint8_t outbits = 0;</span><br><span>         uint8_t outmask;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  /* I.460 defines sub-channel 0 is using bit positions 1+2 (the two</span><br><span style="color: hsl(120, 100%, 40%);">+     * most significant bits, hence we provide msb-first */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    switch (schan->rate) {</span><br><span>    case OSMO_I460_RATE_8k:</span><br><span style="color: hsl(0, 100%, 40%);">-         outbits = mux_schan_provide_bit(schan);</span><br><span style="color: hsl(0, 100%, 40%);">-         outmask = 0x01;</span><br><span style="color: hsl(120, 100%, 40%);">+               outbits = mux_schan_provide_bit(schan) << 7;</span><br><span style="color: hsl(120, 100%, 40%);">+            outmask = 0x80;</span><br><span>              break;</span><br><span>       case OSMO_I460_RATE_16k:</span><br><span style="color: hsl(0, 100%, 40%);">-                outbits |= mux_schan_provide_bit(schan) << 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             outbits |= mux_schan_provide_bit(schan) << 0;</span><br><span style="color: hsl(0, 100%, 40%);">-             outmask = 0x03;</span><br><span style="color: hsl(120, 100%, 40%);">+               outbits |= mux_schan_provide_bit(schan) << 7;</span><br><span style="color: hsl(120, 100%, 40%);">+           outbits |= mux_schan_provide_bit(schan) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+           outmask = 0xC0;</span><br><span>              break;</span><br><span>       case OSMO_I460_RATE_32k:</span><br><span style="color: hsl(0, 100%, 40%);">-                outbits |= mux_schan_provide_bit(schan) << 3;</span><br><span style="color: hsl(0, 100%, 40%);">-             outbits |= mux_schan_provide_bit(schan) << 2;</span><br><span style="color: hsl(0, 100%, 40%);">-             outbits |= mux_schan_provide_bit(schan) << 1;</span><br><span style="color: hsl(0, 100%, 40%);">-             outbits |= mux_schan_provide_bit(schan) << 0;</span><br><span style="color: hsl(0, 100%, 40%);">-             outmask = 0x0F;</span><br><span style="color: hsl(120, 100%, 40%);">+               outbits |= mux_schan_provide_bit(schan) << 7;</span><br><span style="color: hsl(120, 100%, 40%);">+           outbits |= mux_schan_provide_bit(schan) << 6;</span><br><span style="color: hsl(120, 100%, 40%);">+           outbits |= mux_schan_provide_bit(schan) << 5;</span><br><span style="color: hsl(120, 100%, 40%);">+           outbits |= mux_schan_provide_bit(schan) << 4;</span><br><span style="color: hsl(120, 100%, 40%);">+           outmask = 0xF0;</span><br><span>              break;</span><br><span>       case OSMO_I460_RATE_64k:</span><br><span>             outbits |= mux_schan_provide_bit(schan) << 7;</span><br><span>@@ -236,8 +241,8 @@</span><br><span>    default:</span><br><span>             OSMO_ASSERT(0);</span><br><span>      }</span><br><span style="color: hsl(0, 100%, 40%);">-       *mask = outmask << schan->bit_offset;</span><br><span style="color: hsl(0, 100%, 40%);">-  return outbits << schan->bit_offset;</span><br><span style="color: hsl(120, 100%, 40%);">+ *mask = outmask >> schan->bit_offset;</span><br><span style="color: hsl(120, 100%, 40%);">+        return outbits >> schan->bit_offset;</span><br><span> }</span><br><span> </span><br><span> /* provide one byte of multiplexed I.460 bits */</span><br><span>diff --git a/tests/i460_mux/i460_mux_test.c b/tests/i460_mux/i460_mux_test.c</span><br><span>index d63b2ae..9d5fcf7 100644</span><br><span>--- a/tests/i460_mux/i460_mux_test.c</span><br><span>+++ b/tests/i460_mux/i460_mux_test.c</span><br><span>@@ -234,8 +234,8 @@</span><br><span>        int i;</span><br><span>       for (i = 0; i < sizeof(sequence); i++)</span><br><span>            sequence[i] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        sequence[0] = 0x0f;</span><br><span>  sequence[1] = 0xf0;</span><br><span style="color: hsl(120, 100%, 40%);">+   sequence[0] = 0x0f;</span><br><span>  sequence[2] = 0xff;</span><br><span>  osmo_i460_demux_in(ts, sequence, sizeof(sequence));</span><br><span> </span><br><span>@@ -278,10 +278,10 @@</span><br><span>      int i;</span><br><span>       for (i = 0; i < sizeof(sequence); i++)</span><br><span>            sequence[i] = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-        sequence[0] = 0x03;</span><br><span style="color: hsl(0, 100%, 40%);">-     sequence[1] = 0x0c;</span><br><span style="color: hsl(0, 100%, 40%);">-     sequence[2] = 0x30;</span><br><span style="color: hsl(0, 100%, 40%);">-     sequence[3] = 0xc0;</span><br><span style="color: hsl(120, 100%, 40%);">+   sequence[0] = 0xC0;</span><br><span style="color: hsl(120, 100%, 40%);">+   sequence[1] = 0x30;</span><br><span style="color: hsl(120, 100%, 40%);">+   sequence[2] = 0x0c;</span><br><span style="color: hsl(120, 100%, 40%);">+   sequence[3] = 0x03;</span><br><span>  sequence[4] = 0xff;</span><br><span>  osmo_i460_demux_in(ts, sequence, sizeof(sequence));</span><br><span> </span><br><span>@@ -328,16 +328,16 @@</span><br><span>      for (i = 0; i < sizeof(sequence); i++)</span><br><span>            sequence[i] = 0;</span><br><span>     i = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-  sequence[i++] = 0x01;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x02;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x04;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x08;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x0f;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x10;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x20;</span><br><span style="color: hsl(0, 100%, 40%);">-   sequence[i++] = 0x40;</span><br><span>        sequence[i++] = 0x80;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x40;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x20;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x10;</span><br><span>        sequence[i++] = 0xf0;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x08;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x04;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x02;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x01;</span><br><span style="color: hsl(120, 100%, 40%);">+ sequence[i++] = 0x0f;</span><br><span>        sequence[i++] = 0xff;</span><br><span>        osmo_i460_demux_in(ts, sequence, sizeof(sequence));</span><br><span> </span><br><span>diff --git a/tests/i460_mux/i460_mux_test.ok b/tests/i460_mux/i460_mux_test.ok</span><br><span>index b94fb7b..79c55ed 100644</span><br><span>--- a/tests/i460_mux/i460_mux_test.ok</span><br><span>+++ b/tests/i460_mux/i460_mux_test.ok</span><br><span>@@ -7,15 +7,15 @@</span><br><span> mux_out: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 </span><br><span> </span><br><span> ==> test_32k_subchan</span><br><span style="color: hsl(0, 100%, 40%);">-demux_bits_cb '32k_0': 1111000011110000000000000000000000000000</span><br><span style="color: hsl(0, 100%, 40%);">-demux_bits_cb '32k_4': 0000111111110000000000000000000000000000</span><br><span style="color: hsl(120, 100%, 40%);">+demux_bits_cb '32k_0': 0000111111110000000000000000000000000000</span><br><span style="color: hsl(120, 100%, 40%);">+demux_bits_cb '32k_4': 1111000011110000000000000000000000000000</span><br><span> test_32k_subchan-single-0</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_32k_subchan-single-1</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f 5f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> </span><br><span> ==> test_16k_subchan</span><br><span>@@ -24,28 +24,28 @@</span><br><span> demux_bits_cb '16k_4': 0000110011000000000000000000000000000000</span><br><span> demux_bits_cb '16k_6': 0000001111000000000000000000000000000000</span><br><span> test_16k_subchan-single-0</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_16k_subchan-single-1</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df df df df df df df df df df df df df df df df </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_16k_subchan-single-2</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df df df df df df df df df df df df df df df df </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_16k_subchan-single-3</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> </span><br><span> ==> test_8k_subchan</span><br><span>@@ -58,58 +58,58 @@</span><br><span> demux_bits_cb '8k_6': 0000000101100000000000000000000000000000</span><br><span> demux_bits_cb '8k_7': 0000000011100000000000000000000000000000</span><br><span> test_8k_subchan-single-0</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-1</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-2</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-3</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-4</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: ef ff ef ff ef ff ef ff ef ff ef ff ef ff ef ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff f7 ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-5</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: df ff df ff df ff df ff df ff df ff df ff df ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fb ff fb ff fb ff fb ff fb ff fb ff fb ff fb ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-6</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: bf ff bf ff bf ff bf ff bf ff bf ff bf ff bf ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fd ff fd ff fd ff fd ff fd ff fd ff fd ff fd ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> test_8k_subchan-single-7</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff 7f ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: fe ff fe ff fe ff fe ff fe ff fe ff fe ff fe ff </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span> </span><br><span> ==> test_unused_subchan</span><br><span> test_unused_subchan-single</span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc </span><br><span style="color: hsl(0, 100%, 40%);">-mux_out: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f </span><br><span style="color: hsl(120, 100%, 40%);">+mux_out: 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f 3f </span><br><span> mux_out: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/19514">change 19514</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/+/19514"/><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: I6df7dbf411efbdeaf516e72ac552432bf5a569d0 </div>
<div style="display:none"> Gerrit-Change-Number: 19514 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>