<p>ptrkrysik <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/gr-gsm/+/14948">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  ptrkrysik: Looks good to me, approved; Verified
  laforge: Looks good to me, but someone else must approve

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Fix uplink sub_slot and sub_types assignment in the sdcch4 and bcch_ccch demappers blocks<br><br>Add support for RACH bursts although they are not yet supported in the<br>receiver and control channel decoder blocks.<br><br>3GPP TS 45.002 version 15.1.0 Release 15<br>Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)<br>Figure 8a: TDMA frame mapping for FCCH + SCH + BCCH + CCCH<br><br>Fixes the following tests:<br>qa_gsm_bcch_ccch_demapper.test_uplink<br>qa_gsm_bcch_ccch_sdcch4_demapper.test_uplink<br><br>Change-Id: Ia6b3070c1085bcdda6d98fd94a89c6e0982e2aec<br>---<br>M hier_blocks/demapping/gsm_bcch_ccch_demapper.grc<br>M hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc<br>M lib/demapping/universal_ctrl_chans_demapper_impl.cc<br>M python/demapping/gsm_bcch_ccch_demapper.py<br>M python/demapping/gsm_bcch_ccch_sdcch4_demapper.py<br>M python/qa_gsm_bcch_ccch_demapper.py<br>M python/qa_gsm_bcch_ccch_sdcch4_demapper.py<br>7 files changed, 300 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/hier_blocks/demapping/gsm_bcch_ccch_demapper.grc b/hier_blocks/demapping/gsm_bcch_ccch_demapper.grc</span><br><span>index 79033ef..5f751b1 100644</span><br><span>--- a/hier_blocks/demapping/gsm_bcch_ccch_demapper.grc</span><br><span>+++ b/hier_blocks/demapping/gsm_bcch_ccch_demapper.grc</span><br><span>@@ -137,15 +137,15 @@</span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_channel_types</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,]</value></span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_starts_fn_mod51</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,]</value></span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_subslots</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,0,0,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]</value></span><br><span>     </param></span><br><span>   </block></span><br><span>   <block></span><br><span>diff --git a/hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc b/hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc</span><br><span>index 9d722ba..235feb2 100644</span><br><span>--- a/hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc</span><br><span>+++ b/hier_blocks/demapping/gsm_bcch_ccch_sdcch4_demapper.grc</span><br><span>@@ -137,15 +137,15 @@</span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_channel_types</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[7,7,7,7,0,0,135,135,135,135,135,135,135,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,7,7,7,7]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[7,7,7,7,3,3,135,135,135,135,135,135,135,135,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,3,3,7,7,7,7]</value></span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_starts_fn_mod51</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[0,0,0,0,4,5,6,6,6,6,10,10,10,10,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,37,37,37,41,41,41,41,45,46,47,47,47,47,]</value></span><br><span>     </param></span><br><span>     <param></span><br><span>       <key>uplink_subslots</key></span><br><span style="color: hsl(0, 100%, 40%);">-      <value>[0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,0,0,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3]</value></span><br><span style="color: hsl(120, 100%, 40%);">+      <value>[3,3,3,3,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,2,2,2,2,]</value></span><br><span>     </param></span><br><span>   </block></span><br><span>   <block></span><br><span>diff --git a/lib/demapping/universal_ctrl_chans_demapper_impl.cc b/lib/demapping/universal_ctrl_chans_demapper_impl.cc</span><br><span>index a6ab956..94e8648 100644</span><br><span>--- a/lib/demapping/universal_ctrl_chans_demapper_impl.cc</span><br><span>+++ b/lib/demapping/universal_ctrl_chans_demapper_impl.cc</span><br><span>@@ -128,9 +128,6 @@</span><br><span>                 frame_numbers = d_downlink_frame_numbers;</span><br><span>                 bursts = d_downlink_bursts;</span><br><span>             }</span><br><span style="color: hsl(0, 100%, 40%);">-                      </span><br><span style="color: hsl(0, 100%, 40%);">-            uint32_t fn51_start = starts_fn_mod51[fn_mod51];</span><br><span style="color: hsl(0, 100%, 40%);">-            uint32_t fn51_stop = fn51_start + 3;</span><br><span> </span><br><span>             //set type</span><br><span>             new_header->type = GSMTAP_TYPE_UM;</span><br><span>@@ -141,7 +138,16 @@</span><br><span>                 new_header->sub_type = ch_type;</span><br><span>             }</span><br><span>             new_header->sub_slot = subslots[fn_mod102];</span><br><span style="color: hsl(0, 100%, 40%);">-            </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            if (ch_type == GSMTAP_CHANNEL_RACH)</span><br><span style="color: hsl(120, 100%, 40%);">+            {</span><br><span style="color: hsl(120, 100%, 40%);">+                message_port_pub(pmt::mp("bursts"), burst_out);</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 style="color: hsl(120, 100%, 40%);">+            uint32_t fn51_start = starts_fn_mod51[fn_mod51];</span><br><span style="color: hsl(120, 100%, 40%);">+            uint32_t fn51_stop = fn51_start + 3;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>             if(fn_mod51>=fn51_start && fn_mod51<=fn51_stop)</span><br><span>             {</span><br><span>                 uint32_t ii = fn_mod51 - fn51_start;</span><br><span>diff --git a/python/demapping/gsm_bcch_ccch_demapper.py b/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>index 5bafba7..e036831 100644</span><br><span>--- a/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>+++ b/python/demapping/gsm_bcch_ccch_demapper.py</span><br><span>@@ -51,7 +51,135 @@</span><br><span>         ##################################################</span><br><span>         # Blocks</span><br><span>         ##################################################</span><br><span style="color: hsl(0, 100%, 40%);">-        self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(timeslot_nr, ([0,0,2,2,2,2,6,6,6,6,0,0,12,12,12,12,16,16,16,16,0,0,22,22,22,22,26,26,26,26,0,0,32,32,32,32,36,36,36,36,0,0,42,42,42,42,46,46,46,46,0,]), ([0,0,1,1,1,1,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,]), ([0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,4,4,4,4,0,0,5,5,5,5,6,6,6,6,0,0,7,7,7,7,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,4,4,4,4,0,0,5,5,5,5,6,6,6,6,0,0,7,7,7,7,8,8,8,8,0]), ([0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]), ([2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,]), ([0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,0,0,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3]))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        # 3GPP TS 45.002 version 15.1.0 Release 15</span><br><span style="color: hsl(120, 100%, 40%);">+        # Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)</span><br><span style="color: hsl(120, 100%, 40%);">+        # BCCH Norm D 0,2,4,6 C0 NB 51 B(2..5)</span><br><span style="color: hsl(120, 100%, 40%);">+        # RACH U 0,2,4,6 C0 AB, Extended AB2 51 B0(0),B1(1)..B50(50)</span><br><span style="color: hsl(120, 100%, 40%);">+        # Figure 8a: TDMA frame mapping for FCCH + SCH + BCCH + CCCH</span><br><span style="color: hsl(120, 100%, 40%);">+        self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(</span><br><span style="color: hsl(120, 100%, 40%);">+                timeslot_nr, ([ #downlink</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    6,6,6,6,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    12,12,12,12,</span><br><span style="color: hsl(120, 100%, 40%);">+                    16,16,16,16,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    22,22,22,22,</span><br><span style="color: hsl(120, 100%, 40%);">+                    26,26,26,26,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    32,32,32,32,</span><br><span style="color: hsl(120, 100%, 40%);">+                    36,36,36,36,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    42,42,42,42,</span><br><span style="color: hsl(120, 100%, 40%);">+                    46,46,46,46,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    4,4,4,4,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    5,5,5,5,</span><br><span style="color: hsl(120, 100%, 40%);">+                    6,6,6,6,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    8,8,8,8,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    4,4,4,4,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    5,5,5,5,</span><br><span style="color: hsl(120, 100%, 40%);">+                    6,6,6,6,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    8,8,8,8,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([ #uplink</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,1,2,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    4,5,6,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    8,9,10,11,</span><br><span style="color: hsl(120, 100%, 40%);">+                    12,13,14,15,</span><br><span style="color: hsl(120, 100%, 40%);">+                    16,17,18,19,</span><br><span style="color: hsl(120, 100%, 40%);">+                    20,21,22,23,</span><br><span style="color: hsl(120, 100%, 40%);">+                    24,25,26,27,</span><br><span style="color: hsl(120, 100%, 40%);">+                    28,29,30,31,</span><br><span style="color: hsl(120, 100%, 40%);">+                    32,33,34,35,</span><br><span style="color: hsl(120, 100%, 40%);">+                    36,37,38,39,</span><br><span style="color: hsl(120, 100%, 40%);">+                    40,41,42,43,</span><br><span style="color: hsl(120, 100%, 40%);">+                    44,45,46,47,</span><br><span style="color: hsl(120, 100%, 40%);">+                    48,49,50,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]))</span><br><span> </span><br><span>         ##################################################</span><br><span>         # Connections</span><br><span>diff --git a/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py b/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>index 7b6a04d..bff67a4 100644</span><br><span>--- a/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>+++ b/python/demapping/gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>@@ -51,7 +51,161 @@</span><br><span>         ##################################################</span><br><span>         # Blocks</span><br><span>         ##################################################</span><br><span style="color: hsl(0, 100%, 40%);">-        self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(timeslot_nr, ([0,0,2,2,2,2,6,6,6,6,0,0,12,12,12,12,16,16,16,16,0,0,22,22,22,22,26,26,26,26,0,0,32,32,32,32,36,36,36,36,0,0,42,42,42,42,46,46,46,46,0]), ([0,0,1,1,1,1,2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,0,7,7,7,7,7,7,7,7,0,0,7,7,7,7,7,7,7,7,0,0,135,135,135,135,135,135,135,135,0]), ([0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,0,0,0,0,1,1,1,1,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,0,0,0,0,1,1,1,1,0,0,2,2,2,2,3,3,3,3,0,0,2,2,2,2,3,3,3,3,0]), ([0,0,0,0,0,0,6,6,6,6,10,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,37,37,37,41,41,41,41,0,0,47,47,47,47]), ([7,7,7,7,0,0,135,135,135,135,135,135,135,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,7,0,0,7,7,7,7]), ([0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3,0,0,0,0,0,0,2,2,2,2,3,3,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,0,0,3,3,3,3]))</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        # 3GPP TS 45.002 version 15.1.0 Release 15</span><br><span style="color: hsl(120, 100%, 40%);">+        # Table 3 : Mapping of logical channels onto physical channels (see subclauses 6.3, 6.4, 6.5)</span><br><span style="color: hsl(120, 100%, 40%);">+        #</span><br><span style="color: hsl(120, 100%, 40%);">+        # BCCH Norm D 0,2,4,6 C0 NB 51 B(2..5)</span><br><span style="color: hsl(120, 100%, 40%);">+        # SDCCH/4 0 D 0 C0 NB1 51 B(22..25)</span><br><span style="color: hsl(120, 100%, 40%);">+        #           U B(37..40)</span><br><span style="color: hsl(120, 100%, 40%);">+        #         1 D B(26..29)</span><br><span style="color: hsl(120, 100%, 40%);">+        #           U B(41..44)</span><br><span style="color: hsl(120, 100%, 40%);">+        #         2 D B(32..35)</span><br><span style="color: hsl(120, 100%, 40%);">+        #           U B(47..50)</span><br><span style="color: hsl(120, 100%, 40%);">+        #         3 D B(36..39)</span><br><span style="color: hsl(120, 100%, 40%);">+        #           U B(0..3)</span><br><span style="color: hsl(120, 100%, 40%);">+        # SACCH/C4 0 D 0 C0 NB3 102 B(42..45)</span><br><span style="color: hsl(120, 100%, 40%);">+        #            U B(57..60)</span><br><span style="color: hsl(120, 100%, 40%);">+        #          1 D B(46..49)</span><br><span style="color: hsl(120, 100%, 40%);">+        #            U B(61..64)</span><br><span style="color: hsl(120, 100%, 40%);">+        #          2 D B(93..96)</span><br><span style="color: hsl(120, 100%, 40%);">+        #            U B(6..9)</span><br><span style="color: hsl(120, 100%, 40%);">+        #          3 D B(97..100)</span><br><span style="color: hsl(120, 100%, 40%);">+        #            U B(10..13)</span><br><span style="color: hsl(120, 100%, 40%);">+        #</span><br><span style="color: hsl(120, 100%, 40%);">+        # Figure 8b: TDMA frame mapping for FCCH + SCH + BCCH + CCCH + SDCCH/4(0...3) + SACCH/4(0...3)</span><br><span style="color: hsl(120, 100%, 40%);">+        #</span><br><span style="color: hsl(120, 100%, 40%);">+        self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(</span><br><span style="color: hsl(120, 100%, 40%);">+                timeslot_nr, ([ #downlink</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    6,6,6,6,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    12,12,12,12,</span><br><span style="color: hsl(120, 100%, 40%);">+                    16,16,16,16,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    22,22,22,22,</span><br><span style="color: hsl(120, 100%, 40%);">+                    26,26,26,26,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    32,32,32,32,</span><br><span style="color: hsl(120, 100%, 40%);">+                    36,36,36,36,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    42,42,42,42,</span><br><span style="color: hsl(120, 100%, 40%);">+                    46,46,46,46,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    135,135,135,135,</span><br><span style="color: hsl(120, 100%, 40%);">+                    135,135,135,135,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([  #uplink</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    4,5,</span><br><span style="color: hsl(120, 100%, 40%);">+                    6,6,6,6,</span><br><span style="color: hsl(120, 100%, 40%);">+                    10,10,10,10,</span><br><span style="color: hsl(120, 100%, 40%);">+                    14,15,16,17,</span><br><span style="color: hsl(120, 100%, 40%);">+                    18,19,20,21,</span><br><span style="color: hsl(120, 100%, 40%);">+                    22,23,24,25,</span><br><span style="color: hsl(120, 100%, 40%);">+                    26,27,28,29,</span><br><span style="color: hsl(120, 100%, 40%);">+                    30,31,32,33,</span><br><span style="color: hsl(120, 100%, 40%);">+                    34,35,36,</span><br><span style="color: hsl(120, 100%, 40%);">+                    37,37,37,37,</span><br><span style="color: hsl(120, 100%, 40%);">+                    41,41,41,41,</span><br><span style="color: hsl(120, 100%, 40%);">+                    45,46,</span><br><span style="color: hsl(120, 100%, 40%);">+                    47,47,47,47,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    135,135,135,135,</span><br><span style="color: hsl(120, 100%, 40%);">+                    135,135,135,135,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    7,7,7,7,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]), ([</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                    3,3,3,3,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    1,1,1,1,</span><br><span style="color: hsl(120, 100%, 40%);">+                    0,0,</span><br><span style="color: hsl(120, 100%, 40%);">+                    2,2,2,2,</span><br><span style="color: hsl(120, 100%, 40%);">+                ]))</span><br><span> </span><br><span>         ##################################################</span><br><span>         # Connections</span><br><span>diff --git a/python/qa_gsm_bcch_ccch_demapper.py b/python/qa_gsm_bcch_ccch_demapper.py</span><br><span>index a57bc6b..14e1224 100644</span><br><span>--- a/python/qa_gsm_bcch_ccch_demapper.py</span><br><span>+++ b/python/qa_gsm_bcch_ccch_demapper.py</span><br><span>@@ -123,7 +123,6 @@</span><br><span>             0, 0, 0, 0, #BCCH</span><br><span>             ], list(dst.get_sub_slots()))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    @unittest.expectedFailure</span><br><span>     def test_uplink (self):</span><br><span>         """</span><br><span>            BCCH_CCCH demapper uplink test</span><br><span>diff --git a/python/qa_gsm_bcch_ccch_sdcch4_demapper.py b/python/qa_gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>index 76f8ecc..b57ef22 100644</span><br><span>--- a/python/qa_gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>+++ b/python/qa_gsm_bcch_ccch_sdcch4_demapper.py</span><br><span>@@ -123,7 +123,6 @@</span><br><span>             0, 0, 0, 0, #BCCH</span><br><span>             ], list(dst.get_sub_slots()))</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    @unittest.expectedFailure</span><br><span>     def test_uplink (self):</span><br><span>         """</span><br><span>            BCCH_CCCH_SDCCH4 demapper uplink test</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/gr-gsm/+/14948">change 14948</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/gr-gsm/+/14948"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: gr-gsm </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia6b3070c1085bcdda6d98fd94a89c6e0982e2aec </div>
<div style="display:none"> Gerrit-Change-Number: 14948 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: vvvelichkov <vvvelichkov@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: ptrkrysik <ptrkrysik@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: vvvelichkov <vvvelichkov@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>