<p>daniel <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21264">View Change</a></p><div style="white-space:pre-wrap">Approvals:
daniel: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Osmocom_Gb_Types: Fix indentation<br><br>Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a<br>---<br>M library/Osmocom_Gb_Types.ttcn<br>1 file changed, 360 insertions(+), 362 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn</span><br><span>index 8d48cb1..2c82437 100644</span><br><span>--- a/library/Osmocom_Gb_Types.ttcn</span><br><span>+++ b/library/Osmocom_Gb_Types.ttcn</span><br><span>@@ -929,41 +929,41 @@</span><br><span> return ret;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '1E'O,</span><br><span style="color: hsl(0, 100%, 40%);">- ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">- lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">- length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- unstructured_Value := tag</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ iEI := '1E'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+ length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ unstructured_Value := tag</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '1E'O,</span><br><span style="color: hsl(0, 100%, 40%);">- ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">- lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">- length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- unstructured_Value := tag</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ iEI := '1E'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+ length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ unstructured_Value := tag</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '1A'O,</span><br><span style="color: hsl(0, 100%, 40%);">- ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">- lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">- length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ iEI := '1A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+ length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '1A'O,</span><br><span style="color: hsl(0, 100%, 40%);">- ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">- lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">- length1 := 1</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ iEI := '1A'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+ length1 := 1</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ rA_CAP_UPD_Cause_value := cause</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> </span><br><span> template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci,</span><br><span>@@ -1683,362 +1683,360 @@</span><br><span> }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.2.3 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">- template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '02'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.2.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+ template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '02'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">- template MSRadioAccessCapabilityV_BSSGP racap) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '02'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+ template MSRadioAccessCapabilityV_BSSGP racap) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '02'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.3 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '08'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tag := ts_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.3.3 */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '08'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tag := ts_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,</span><br><span style="color: hsl(0, 100%, 40%);">- template OCT1 tag) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '08'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tag := tr_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,</span><br><span style="color: hsl(120, 100%, 40%);">+ template OCT1 tag) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY_UPDATE := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '08'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tag := tr_BSSGP_IE_Tag(tag)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.4 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,</span><br><span style="color: hsl(0, 100%, 40%);">- template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '09'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tag := ts_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(0, 100%, 40%);">- iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(0, 100%, 40%);">- mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.3.4 */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,</span><br><span style="color: hsl(120, 100%, 40%);">+ template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '09'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tag := ts_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(120, 100%, 40%);">+ iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(120, 100%, 40%);">+ mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,</span><br><span style="color: hsl(0, 100%, 40%);">- template MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '09'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tag := tr_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(0, 100%, 40%);">- iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(0, 100%, 40%);">- mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+ tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,</span><br><span style="color: hsl(120, 100%, 40%);">+ template MSRadioAccessCapabilityV_BSSGP racap := omit) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '09'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tag := tr_BSSGP_IE_Tag(tag),</span><br><span style="color: hsl(120, 100%, 40%);">+ iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),</span><br><span style="color: hsl(120, 100%, 40%);">+ mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-type enumerated BssgpRadioCause {</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),</span><br><span style="color: hsl(0, 100%, 40%);">- BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)</span><br><span style="color: hsl(0, 100%, 40%);">-} with { variant "FIELDLENGTH(8)" };</span><br><span style="color: hsl(120, 100%, 40%);">+ type enumerated BssgpRadioCause {</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),</span><br><span style="color: hsl(120, 100%, 40%);">+ BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)</span><br><span style="color: hsl(120, 100%, 40%);">+ } with { variant "FIELDLENGTH(8)" };</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {</span><br><span style="color: hsl(0, 100%, 40%);">- var template (omit) Radio_Cause ret;</span><br><span style="color: hsl(0, 100%, 40%);">- if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(0, 100%, 40%);">- ret := omit;</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (omit) Radio_Cause ret;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (istemplatekind(cause, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ret := omit;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.iEI := '19'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.ext := '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return ret;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template Radio_Cause ret;</span><br><span> ret.iEI := '19'O;</span><br><span> ret.ext := '1'B;</span><br><span> ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(0, 100%, 40%);">- ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (isvalue(cause)) {</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ ret.radio_Cause_Value := ?</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return ret;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- return ret;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(0, 100%, 40%);">-function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {</span><br><span style="color: hsl(0, 100%, 40%);">- var template Radio_Cause ret;</span><br><span style="color: hsl(0, 100%, 40%);">- ret.iEI := '19'O;</span><br><span style="color: hsl(0, 100%, 40%);">- ret.ext := '1'B;</span><br><span style="color: hsl(0, 100%, 40%);">- ret.lengthIndicator := { length1 := 1 };</span><br><span style="color: hsl(0, 100%, 40%);">- if (isvalue(cause)) {</span><br><span style="color: hsl(0, 100%, 40%);">- ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- ret.radio_Cause_Value := ?</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- return ret;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 10.3.5 */</span><br><span style="color: hsl(0, 100%, 40%);">-template (value) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '0a'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)</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 (present) PDU_BSSGP</span><br><span style="color: hsl(0, 100%, 40%);">-tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {</span><br><span style="color: hsl(0, 100%, 40%);">- pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(0, 100%, 40%);">- bssgpPduType := '0a'O,</span><br><span style="color: hsl(0, 100%, 40%);">- tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(0, 100%, 40%);">- tMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- iMSI := omit,</span><br><span style="color: hsl(0, 100%, 40%);">- radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)</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 style="color: hsl(0, 100%, 40%);">-/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DL_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_UL_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RA_CAPABILITY := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RADIO_STATUS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_BVC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_MS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_CREATE_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MODIFY_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DELETE_BSS_PFC := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PS_HANDOVER_CANCEL := ?}</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 (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (</span><br><span style="color: hsl(0, 100%, 40%);">- tr_BSSGP_PERMITTED_PTP_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_STATUS := ?}</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%);">-/* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SUSPEND_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SUSPEND_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RESUME := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RESUME_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RESUME_NACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLUSH_LL := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLUSH_LL_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_LLC_DISCARDED := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_BLOCK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_BLOCK_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_UNBLOCK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_UNBLOCK_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_RESET := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_RESET_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SGSN_INVOKE_TRACE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_POSITION_COMMAND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_POSITION_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION_ACK := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION_ERROR := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_MBMS_STOP_RESPONSE := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}</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 (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (</span><br><span style="color: hsl(0, 100%, 40%);">- tr_BSSGP_PERMITTED_SIGN_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_STATUS := ?}</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%);">-/* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_DL_MBMS_UNITDATA := ?},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_UL_MBMS_UNITDATA := ?}</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 (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (</span><br><span style="color: hsl(0, 100%, 40%);">- tr_BSSGP_PERMITTED_PTM_ONLY,</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_STATUS := ?}</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%);">-/* Template for any PTP BVCI IE */</span><br><span style="color: hsl(0, 100%, 40%);">-template (present) BVCI tr_BSSGP_IE_PtpBvci := {</span><br><span style="color: hsl(0, 100%, 40%);">- iEI := '04'O,</span><br><span style="color: hsl(0, 100%, 40%);">- ext := '1'B,</span><br><span style="color: hsl(0, 100%, 40%);">- lengthIndicator := {</span><br><span style="color: hsl(0, 100%, 40%);">- length1 := 2</span><br><span style="color: hsl(0, 100%, 40%);">- },</span><br><span style="color: hsl(0, 100%, 40%);">- unstructured_value := complement ('0000'O, '0001'O)</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%);">-/* message on signaling PTP but containing a ptp BVC */</span><br><span style="color: hsl(0, 100%, 40%);">-/*</span><br><span style="color: hsl(0, 100%, 40%);">-template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},</span><br><span style="color: hsl(0, 100%, 40%);">- {pDU_BSSGP_POSITION_COMMAND:{</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%);">-/* extract the BVCI IE of given PDU + return it */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {</span><br><span style="color: hsl(0, 100%, 40%);">- select (pdu) {</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_RESET.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_STATUS.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {</span><br><span style="color: hsl(0, 100%, 40%);">- return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(0, 100%, 40%);">- case else {</span><br><span style="color: hsl(0, 100%, 40%);">- return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 10.3.5 */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (value) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+ ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '0a'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)</span><br><span> }</span><br><span> }</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%);">-/* extract the BVCI IE of given PDU + convert it to integer value */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {</span><br><span style="color: hsl(0, 100%, 40%);">- var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);</span><br><span style="color: hsl(0, 100%, 40%);">- if (istemplatekind(bvci_raw, "omit")) {</span><br><span style="color: hsl(0, 100%, 40%);">- return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP</span><br><span style="color: hsl(120, 100%, 40%);">+ tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+ pDU_BSSGP_RADIO_STATUS := {</span><br><span style="color: hsl(120, 100%, 40%);">+ bssgpPduType := '0a'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ tLLI := ts_BSSGP_TLLI(tlli),</span><br><span style="color: hsl(120, 100%, 40%);">+ tMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ iMSI := omit,</span><br><span style="color: hsl(120, 100%, 40%);">+ radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">- return oct2int(valueof(bvci_raw.unstructured_value));</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(0, 100%, 40%);">-type enumerated TlliType {</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_LOCAL,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_FOREIGN,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_RANDOM,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_AUXILIARY,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_RESERVED,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_G_RNTI,</span><br><span style="color: hsl(0, 100%, 40%);">- TLLI_RAND_G_RNTI</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(0, 100%, 40%);">-function f_gprs_tlli_type(OCT4 tlli) return TlliType {</span><br><span style="color: hsl(0, 100%, 40%);">- var bitstring tllib := oct2bit(tlli);</span><br><span style="color: hsl(0, 100%, 40%);">- if (substr(tllib, 0, 2) == '11'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_LOCAL;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 2) == '10'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_FOREIGN;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 5) == '01111'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_RANDOM;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 4) == '0110'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 3) == '010'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_RESERVED;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 4) == '0000'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_G_RNTI;</span><br><span style="color: hsl(0, 100%, 40%);">- } else if (substr(tllib, 0, 4) == '0001'B) {</span><br><span style="color: hsl(0, 100%, 40%);">- return TLLI_RAND_G_RNTI;</span><br><span style="color: hsl(0, 100%, 40%);">- } else {</span><br><span style="color: hsl(0, 100%, 40%);">- setverdict(fail, "Unknonw TLLI Type ", tllib);</span><br><span style="color: hsl(0, 100%, 40%);">- mtc.stop;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DL_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_UL_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RA_CAPABILITY := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RADIO_STATUS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_BVC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_MS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_CREATE_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MODIFY_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DELETE_BSS_PFC := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PS_HANDOVER_CANCEL := ?}</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%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (</span><br><span style="color: hsl(120, 100%, 40%);">+ tr_BSSGP_PERMITTED_PTP_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_STATUS := ?}</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%);">+ /* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SUSPEND_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SUSPEND_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RESUME := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RESUME_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RESUME_NACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLUSH_LL := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLUSH_LL_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_LLC_DISCARDED := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_BLOCK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_BLOCK_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_UNBLOCK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_UNBLOCK_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_RESET := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_RESET_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SGSN_INVOKE_TRACE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_POSITION_COMMAND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_POSITION_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RAN_INFORMATION := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RAN_INFORMATION_ACK := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RAN_INFORMATION_ERROR := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_MBMS_STOP_RESPONSE := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}</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%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (</span><br><span style="color: hsl(120, 100%, 40%);">+ tr_BSSGP_PERMITTED_SIGN_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PAGING_PS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PAGING_CS := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_SUSPEND := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_STATUS := ?}</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%);">+ /* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_DL_MBMS_UNITDATA := ?},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_UL_MBMS_UNITDATA := ?}</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%);">+ template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (</span><br><span style="color: hsl(120, 100%, 40%);">+ tr_BSSGP_PERMITTED_PTM_ONLY,</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_STATUS := ?}</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%);">+ /* Template for any PTP BVCI IE */</span><br><span style="color: hsl(120, 100%, 40%);">+ template (present) BVCI tr_BSSGP_IE_PtpBvci := {</span><br><span style="color: hsl(120, 100%, 40%);">+ iEI := '04'O,</span><br><span style="color: hsl(120, 100%, 40%);">+ ext := '1'B,</span><br><span style="color: hsl(120, 100%, 40%);">+ lengthIndicator := {</span><br><span style="color: hsl(120, 100%, 40%);">+ length1 := 2</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ unstructured_value := complement ('0000'O, '0001'O)</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-function f_gprs_tlli_random() return OCT4 {</span><br><span style="color: hsl(0, 100%, 40%);">- var OCT4 tlli := f_rnd_octstring(4);</span><br><span style="color: hsl(0, 100%, 40%);">- return tlli or4b 'c0000000'O;</span><br><span style="color: hsl(0, 100%, 40%);">-}</span><br><span style="color: hsl(120, 100%, 40%);">+ /* message on signaling PTP but containing a ptp BVC */</span><br><span style="color: hsl(120, 100%, 40%);">+ /*</span><br><span style="color: hsl(120, 100%, 40%);">+ template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},</span><br><span style="color: hsl(120, 100%, 40%);">+ {pDU_BSSGP_POSITION_COMMAND:{</span><br><span style="color: hsl(120, 100%, 40%);">+ );</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* extract the BVCI IE of given PDU + return it */</span><br><span style="color: hsl(120, 100%, 40%);">+ function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {</span><br><span style="color: hsl(120, 100%, 40%);">+ select (pdu) {</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_RESET.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_STATUS.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ case else {</span><br><span style="color: hsl(120, 100%, 40%);">+ return omit;</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 style="color: hsl(120, 100%, 40%);">+ /* extract the BVCI IE of given PDU + convert it to integer value */</span><br><span style="color: hsl(120, 100%, 40%);">+ function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {</span><br><span style="color: hsl(120, 100%, 40%);">+ var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (istemplatekind(bvci_raw, "omit")) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return omit;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+ return oct2int(valueof(bvci_raw.unstructured_value));</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%);">+ /* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(120, 100%, 40%);">+ type enumerated TlliType {</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_LOCAL,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_FOREIGN,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_RANDOM,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_AUXILIARY,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_RESERVED,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_G_RNTI,</span><br><span style="color: hsl(120, 100%, 40%);">+ TLLI_RAND_G_RNTI</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%);">+ /* 3GPP TS 23.003 2.6 */</span><br><span style="color: hsl(120, 100%, 40%);">+ function f_gprs_tlli_type(OCT4 tlli) return TlliType {</span><br><span style="color: hsl(120, 100%, 40%);">+ var bitstring tllib := oct2bit(tlli);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (substr(tllib, 0, 2) == '11'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_LOCAL;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 2) == '10'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_FOREIGN;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 5) == '01111'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_RANDOM;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 4) == '0110'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_RESERVED;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 3) == '010'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_RESERVED;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 4) == '0000'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_G_RNTI;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else if (substr(tllib, 0, 4) == '0001'B) {</span><br><span style="color: hsl(120, 100%, 40%);">+ return TLLI_RAND_G_RNTI;</span><br><span style="color: hsl(120, 100%, 40%);">+ } else {</span><br><span style="color: hsl(120, 100%, 40%);">+ setverdict(fail, "Unknonw TLLI Type ", tllib);</span><br><span style="color: hsl(120, 100%, 40%);">+ mtc.stop;</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%);">+ function f_gprs_tlli_random() return OCT4 {</span><br><span style="color: hsl(120, 100%, 40%);">+ var OCT4 tlli := f_rnd_octstring(4);</span><br><span style="color: hsl(120, 100%, 40%);">+ return tlli or4b 'c0000000'O;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span> </span><br><span> } with { encode "RAW" };</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/21264">change 21264</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/+/21264"/><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: I4ca156b53dfe9daa190d52a7de46be56cf74099a </div>
<div style="display:none"> Gerrit-Change-Number: 21264 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>