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