<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/23324">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pcu: Set up PCU TDMA clock by sending initial DATA.ind<br><br>In recent osmo-pcu commits, initial fn was changed to invalid value -1,<br>in order to be able to detect FN jumps. previously, the initial value<br>was set randomly to 0, which was wrong anyway because first FN received<br>from the BTS could be any other FN counted by the BTS at that time.<br><br>This makes some tests fail because they send RACH.ind + RTS.ind to<br>receive the Imm Assignment, and the Request reference in the Imm Assign<br>was calculated on the invalid unset FN "-1", hence it won't match test<br>expectancies.<br><br>In order to fix it, simply make sure the TDMA clock is initiated by<br>sending a DATA.ind to the PCU before tests start doing stuff<br>(f_init_raw() is blocked waiting for BTS_EV_SI13_NEGO).<br><br>Related: osmo-pcu.git Change-Id I29fb27981597edc69abb976049ba41aa840488cb<br>Related: OS#5020<br>Change-Id: I00c4dd9133ec9a236bf28fb8cb0afd0615791012<br>---<br>M pcu/PCUIF_Components.ttcn<br>1 file changed, 33 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/24/23324/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pcu/PCUIF_Components.ttcn b/pcu/PCUIF_Components.ttcn</span><br><span>index 6b0a412..47c65c7 100644</span><br><span>--- a/pcu/PCUIF_Components.ttcn</span><br><span>+++ b/pcu/PCUIF_Components.ttcn</span><br><span>@@ -216,10 +216,12 @@</span><br><span>         return ss;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_ClckGen_CT_handler()</span><br><span style="color: hsl(120, 100%, 40%);">+function f_ClckGen_CT_handler(integer start_fn := 0)</span><br><span> runs on RAW_PCU_ClckGen_CT {</span><br><span>     var integer fn104, fn52, fn13;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    fn := start_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    while (true) {</span><br><span>               fn104 := fn mod 104;</span><br><span>                 fn52 := fn mod 52;</span><br><span>@@ -343,6 +345,32 @@</span><br><span>            }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* Submit empty data on any available TS, to set up initial TDMA clock */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_tx_first_data_ind(integer bts_nr, PCUIF_info_ind info_ind, integer start_fn)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on RAW_PCU_BTS_CT</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     var PCUIF_Message pcu_msg;</span><br><span style="color: hsl(120, 100%, 40%);">+    var PCUIF_InfoV10TrxList trx_list := g_info_ind.trx.v10;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Find an active TS: */</span><br><span style="color: hsl(120, 100%, 40%);">+      for (var uint8_t ts_nr := 0; ts_nr < 8; ts_nr := ts_nr + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+              for (var integer trx_nr := 0; trx_nr < lengthof(trx_list); trx_nr := trx_nr + 1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 if (trx_list[trx_nr].pdch_mask[ts_nr] == '0'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+                              continue; /* TRX+TS not activated */</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%);">+                   /* Send empty DATA.ind to set up FN */</span><br><span style="color: hsl(120, 100%, 40%);">+                        pcu_msg := valueof(ts_PCUIF_DATA_IND(bts_nr, trx_nr, ts_nr, 0 /* FIXME */,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                         PCU_IF_SAPI_PDTCH, ''O, start_fn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                             trx_list[trx_nr].arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       rssi := -80, ber10k := 0,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                             ta_offs_qbits := 0, lqual_cb := 10));</span><br><span style="color: hsl(120, 100%, 40%);">+                    PCUIF.send(pcu_msg);</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%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Get first message from queue. true if non-empty, false otherwise */</span><br><span> private function f_tx_data_ind_fn(integer bts_nr, integer fn)</span><br><span> runs on RAW_PCU_BTS_CT</span><br><span>@@ -477,11 +505,14 @@</span><br><span>                  u := { info_ind := info_ind }</span><br><span>                });</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+               var integer start_fn := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+            f_tx_first_data_ind(bts_nr, info_ind, start_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>           /* Notify the test case that we're done with SI13 */</span><br><span>             TC.send(ts_RAW_PCU_EV(BTS_EV_SI13_NEGO));</span><br><span> </span><br><span>                /* Start feeding clock to the PCU */</span><br><span style="color: hsl(0, 100%, 40%);">-            vc_CLCK_GEN.start(f_ClckGen_CT_handler());</span><br><span style="color: hsl(120, 100%, 40%);">+            vc_CLCK_GEN.start(f_ClckGen_CT_handler(start_fn));</span><br><span>           repeat;</span><br><span>              }</span><br><span>    /* PCU -> TS becomes active */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/23324">change 23324</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/osmo-ttcn3-hacks/+/23324"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I00c4dd9133ec9a236bf28fb8cb0afd0615791012 </div>
<div style="display:none"> Gerrit-Change-Number: 23324 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>