<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>