<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15449">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library/GSM_RR_Types.ttcn: introduce generic tr_IMM_TBF_ASS<br><br>Both 't_IMM_ASS_TBF_DL' and 't_RR_IMM_ASS_TBF_DL' templates were<br>introduced for a specific task - matching Packet Immediate<br>Assignment (Downlink TBF) by TLLI.<br><br>In the upcoming changes we will also need to match Uplink TBF<br>assignment, and more generic fields such as Timing Advance.<br>Let's add a generic template for Packet Immediate Assignment<br>and allow passing IaRestOctets as a parameter.<br><br>Change-Id: I492cf990820ba153ea71469b8b623e56e031e549<br>---<br>M library/GSM_RR_Types.ttcn<br>M library/L1CTL_PortType.ttcn<br>M pcu/PCU_Tests.ttcn<br>3 files changed, 33 insertions(+), 35 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/49/15449/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn</span><br><span>index 480a12b..fee19c9 100644</span><br><span>--- a/library/GSM_RR_Types.ttcn</span><br><span>+++ b/library/GSM_RR_Types.ttcn</span><br><span>@@ -882,6 +882,32 @@</span><br><span>                }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+        /* TODO: implement send version of this template */</span><br><span style="color: hsl(120, 100%, 40%);">+   template GsmRrMessage tr_IMM_TBF_ASS(template boolean dl := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             template uint8_t ra := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                             template GsmFrameNumber fn := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                      template TimingAdvance ta := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       template PacketChannelDescription ch_desc := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       template IaRestOctets rest := ?) := {</span><br><span style="color: hsl(120, 100%, 40%);">+            header := t_RrHeader(IMMEDIATE_ASSIGNMENT, ?),</span><br><span style="color: hsl(120, 100%, 40%);">+                payload := {</span><br><span style="color: hsl(120, 100%, 40%);">+                  imm_ass := {</span><br><span style="color: hsl(120, 100%, 40%);">+                          ded_or_tbf := {</span><br><span style="color: hsl(120, 100%, 40%);">+                                       spare := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                   tma := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                                     downlink := dl,</span><br><span style="color: hsl(120, 100%, 40%);">+                                       tbf := true</span><br><span style="color: hsl(120, 100%, 40%);">+                           },</span><br><span style="color: hsl(120, 100%, 40%);">+                            page_mode := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                               chan_desc := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+                            pkt_chan_desc := ch_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+                             req_ref := tr_compute_ReqRef(ra, fn),</span><br><span style="color: hsl(120, 100%, 40%);">+                         timing_advance := ta,</span><br><span style="color: hsl(120, 100%, 40%);">+                         mobile_allocation := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+                               rest_octets := rest</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> </span><br><span>       template (value) GsmRrL3Message ts_MEAS_REP(boolean valid, uint6_t rxl_f, uint6_t rxl_s,</span><br><span>                                               uint3_t rxq_f, uint3_t rxq_s,</span><br><span>@@ -906,37 +932,4 @@</span><br><span>               }</span><br><span>    };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  /* TODO: introduce generic TBF Assignment template for DL and UL */</span><br><span style="color: hsl(0, 100%, 40%);">-     template ImmediateAssignment t_IMM_ASS_TBF_DL(template GprsTlli tlli) := {</span><br><span style="color: hsl(0, 100%, 40%);">-              ded_or_tbf := {</span><br><span style="color: hsl(0, 100%, 40%);">-                 spare := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                     tma := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                       downlink := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                  tbf := true</span><br><span style="color: hsl(0, 100%, 40%);">-             },</span><br><span style="color: hsl(0, 100%, 40%);">-              page_mode := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-         chan_desc := omit,</span><br><span style="color: hsl(0, 100%, 40%);">-              pkt_chan_desc := {</span><br><span style="color: hsl(0, 100%, 40%);">-                      channel_Type_spare := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                        tn := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                        tsc := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                       presence := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-                  zero := *,</span><br><span style="color: hsl(0, 100%, 40%);">-                      one := omit</span><br><span style="color: hsl(0, 100%, 40%);">-             },</span><br><span style="color: hsl(0, 100%, 40%);">-              req_ref := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-           timing_advance := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-            mobile_allocation := ?,</span><br><span style="color: hsl(0, 100%, 40%);">-         rest_octets := tr_IaRestOctets_DLAss(tr_PacketDlAssign(tlli))</span><br><span style="color: hsl(0, 100%, 40%);">-   };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-      template GsmRrMessage t_RR_IMM_ASS_TBF_DL(template GprsTlli tlli) := {</span><br><span style="color: hsl(0, 100%, 40%);">-          header := t_RrHeader(IMMEDIATE_ASSIGNMENT, ?),</span><br><span style="color: hsl(0, 100%, 40%);">-          payload := {</span><br><span style="color: hsl(0, 100%, 40%);">-                    imm_ass := t_IMM_ASS_TBF_DL(tlli)</span><br><span style="color: hsl(0, 100%, 40%);">-               }</span><br><span style="color: hsl(0, 100%, 40%);">-       };</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> } with { encode "RAW" ; variant "FIELDORDER(msb)" }</span><br><span>diff --git a/library/L1CTL_PortType.ttcn b/library/L1CTL_PortType.ttcn</span><br><span>index 2423715..3c83c3d 100644</span><br><span>--- a/library/L1CTL_PortType.ttcn</span><br><span>+++ b/library/L1CTL_PortType.ttcn</span><br><span>@@ -152,15 +152,18 @@</span><br><span>       }</span><br><span> </span><br><span>        function f_L1CTL_WAIT_IMM_ASS_TBF_DL(L1CTL_PT pt, GprsTlli tlli) return ImmediateAssignment {</span><br><span style="color: hsl(120, 100%, 40%);">+         var template PacketDlAssign dl_ass := tr_PacketDlAssign(tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+                var template IaRestOctets rest := tr_IaRestOctets_DLAss(dl_ass);</span><br><span>             var L1ctlDlMessage dl;</span><br><span>               var GsmRrMessage rr;</span><br><span>                 timer T := 10.0;</span><br><span>             T.start;</span><br><span>             alt {</span><br><span>                        [] pt.receive(tr_L1CTL_DATA_IND(t_RslChanNr_PCH_AGCH(0))) -> value dl {</span><br><span style="color: hsl(120, 100%, 40%);">+                            /* TODO: use decmatch tr_IaRestOctets_DLAss(...) instead */</span><br><span>                          rr := dec_GsmRrMessage(dl.payload.data_ind.payload);</span><br><span>                                 log("PCH/AGCN DL RR: ", rr);</span><br><span style="color: hsl(0, 100%, 40%);">-                          if (match(rr, t_RR_IMM_ASS_TBF_DL(tlli))) {</span><br><span style="color: hsl(120, 100%, 40%);">+                           if (match(rr, tr_IMM_TBF_ASS(dl := true, rest := rest))) {</span><br><span>                                   log("Received IMM.ASS for our TLLI!");</span><br><span>                             } else {</span><br><span>                                     repeat;</span><br><span>diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn</span><br><span>index 4ef71fa..838b6e1 100644</span><br><span>--- a/pcu/PCU_Tests.ttcn</span><br><span>+++ b/pcu/PCU_Tests.ttcn</span><br><span>@@ -591,6 +591,8 @@</span><br><span> }</span><br><span> </span><br><span> function f_wait_tbf_dl(TbfNr tbf_nr, GprsTlli tlli) runs on dummy_CT return ImmediateAssignment {</span><br><span style="color: hsl(120, 100%, 40%);">+      var template PacketDlAssign dl_ass := tr_PacketDlAssign(tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+        var template IaRestOctets rest := tr_IaRestOctets_DLAss(dl_ass);</span><br><span>     var LAPDm_ph_data ph_data;</span><br><span>   var GsmRrMessage rr;</span><br><span>         timer T := 10.0;</span><br><span>@@ -599,7 +601,7 @@</span><br><span>       [] L1.receive(LAPDm_ph_data:{sacch:=?,sapi:=0,lapdm:={bbis:=?}}) -> value ph_data {</span><br><span>               rr := dec_GsmRrMessage(ph_data.lapdm.bbis.payload);</span><br><span>          log("PCH/AGCH DL RR: ", rr);</span><br><span style="color: hsl(0, 100%, 40%);">-          if (match(rr, t_RR_IMM_ASS_TBF_DL(tlli))) {</span><br><span style="color: hsl(120, 100%, 40%);">+           if (match(rr, tr_IMM_TBF_ASS(dl := true, rest := rest))) {</span><br><span>                   var TbfPars tbf_pars := valueof(t_TbfParsInit);</span><br><span>                      log("Received IMM.ASS for our TLLI!");</span><br><span>                     tbf_pars.tfi[rr.payload.imm_ass.pkt_chan_desc.tn] :=</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15449">change 15449</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/+/15449"/><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: I492cf990820ba153ea71469b8b623e56e031e549 </div>
<div style="display:none"> Gerrit-Change-Number: 15449 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>