<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19082">View Change</a></p><div style="white-space:pre-wrap">Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library/GSM_RestOctets: initial SI2quater Rest Octets definition<br><br>This is a very minimalistic (incomplete) implementation of SI2quater<br>Rest Octets as per 3GPP TS 44.018, table 10.5.2.33b.1. Should be<br>enough to decode some of the E-UTRAN specific parameters though.<br><br>Some BITn fields might need to be replaced with more specific<br>enumerated or integer types. Beware [1], the bit ordering rules<br>are different for integer and bitstring (sub-)types if a field<br>ends up on boundary of the two octets!<br><br>[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488<br><br>Change-Id: I6a12c9ee12f8df8b4fc0976dd593152dc1195718<br>Related: SYS#4870<br>---<br>M library/GSM_RestOctets.ttcn<br>1 file changed, 505 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn</span><br><span>index 531528c..3bc9349 100644</span><br><span>--- a/library/GSM_RestOctets.ttcn</span><br><span>+++ b/library/GSM_RestOctets.ttcn</span><br><span>@@ -1,6 +1,7 @@</span><br><span> /**</span><br><span> * GSM Rest Octets definitions as per 3GPP TS 44.018.</span><br><span> *</span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2020 by sysmocom s.f.m.c. GmbH <info@sysmocom.de></span><br><span> * (C) 2020 Vadim Yanitskiy <axilirator@gmail.com></span><br><span> * All rights reserved.</span><br><span> *</span><br><span>@@ -15,6 +16,504 @@</span><br><span> import from General_Types all;</span><br><span> import from Osmocom_Types all;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* 10.5.2.33b SI 2quater Rest Octets */</span><br><span style="color: hsl(120, 100%, 40%);">+type record SI2quaterRestOctets {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 ba_ind,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 ba_3g_ind,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 mp_change_mark,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint4_t si2quater_index,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint4_t si2quater_count,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ MeasParamsDescOpt meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* GPRS specific parameters */</span><br><span style="color: hsl(120, 100%, 40%);">+ record {</span><br><span style="color: hsl(120, 100%, 40%);">+ GPRS_RealTimeDiffDescOpt rt_diff_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ GPRS_BSICDescOpt bsic_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ GPRS_ReportPrioDescOpt rep_prio_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ MeasParamsDescOpt meas_params_desc</span><br><span style="color: hsl(120, 100%, 40%);">+ } gprs,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* NC Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ NCMeasParamsOpt nc_meas_params,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* SI2quater Extension Information */</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterExtInfoOpt ext_info,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 3G Neighbour Cell Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_NeighDescOpt utran_neigh_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* 3G Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_MeasParamsDescOpt utran_meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* GPRS 3G Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_GPRSMeasParamsDescOpt utran_gprs_meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* SI2quater Rel-{5,6,7,8,9,10} Additions (Matrioshka!) */</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterAdditions rel_additions</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* The TITAN's RAW encoder generates an octet-aligned octetstring,</span><br><span style="color: hsl(120, 100%, 40%);">+ * so we should make sure that unused bits contain proper padding. */</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PADDING(yes), PADDING_PATTERN('00101011'B)"</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%);">+/* Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record MeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ MeasParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record MeasParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 report_type,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT2 serving_band_reporting</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* GPRS Real Time Difference Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record GPRS_RealTimeDiffDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* GPRS BSIC Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record GPRS_BSICDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* GPRS Report Priority Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record GPRS_ReportPrioDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* NC (Network Controlled?) Measurement Parameters */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record NCMeasParams {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Network Control Order */</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT2 nco,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 p_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+ NCMeasPeriods p optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (p) "PRESENCE(p_presence = '1'B)"</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%);">+/* NC Measurement Periods */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record NCMeasParamsOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ NCMeasParams params optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (params) "PRESENCE(presence = '1'B)"</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%);">+private type record NCMeasPeriods {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 non_drx_period,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 rep_period_i,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 rep_period_t</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* SI2quater Extersion Information */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterExtInfoOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterExtInfo info optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (info) "PRESENCE(presence = '1'B)"</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%);">+private type record SI2quaterExtInfo {</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t len,</span><br><span style="color: hsl(120, 100%, 40%);">+ CCNSupportDescOpt ccn_supp_desc optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring padding /* Octet alignment? */</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (len) "LENGTHTO(ccn_supp_desc,padding) + 1"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (len) "UNIT(bits)"</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%);">+/* CCN Support Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record CCNSupportDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ CCNSupportDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record CCNSupportDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ uint7_t nr_of_cells,</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring ccn_supported</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (nr_of_cells) "LENGTHTO(ccn_supported)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (nr_of_cells) "UNIT(bits)"</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%);">+/* 3G Neighbour Cell Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRAN_NeighDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_NeighDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record UTRAN_NeighDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 idx_start_3g_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint7_t idx_start_3g optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 abs_idx_start_emr_presence,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint7_t abs_idx_start_emr optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_FDDDescOpt fdd_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_TDDDescOpt tdd_desc</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (idx_start_3g) "PRESENCE(idx_start_3g_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (abs_idx_start_emr) "PRESENCE(abs_idx_start_emr_presence = '1'B)"</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%);">+/* UTRAN (3G) FDD/TDD Description (not implementaed).</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * TODO: Repeated UTRAN FDD/TDD Neighbour Cells structure contains a variable length</span><br><span style="color: hsl(120, 100%, 40%);">+ * field, that needs to be computed using tables (see 9.1.54.1a and 9.1.54.1b) with</span><br><span style="color: hsl(120, 100%, 40%);">+ * magic numbers. This cannot be described uing TITAN's RAW codec attributes. */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRAN_FDDDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record UTRAN_TDDDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* 3G Measurement Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRAN_MeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* GPRS 3G Measurement Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRAN_GPRSMeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence ('0'B), // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* SI2quater Rel-{5,6,7,8,9,10} Additions */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterAdditions {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 rel5_presence, // L/H</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterR5Additions rel5 optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel5_presence) "CSN.1 L/H"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel5) "PRESENCE(rel5_presence = '1'B)"</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%);">+/* SI2quater Rel-5 and Rel-{6,7,8,9,10} Additions */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterR5Additions {</span><br><span style="color: hsl(120, 100%, 40%);">+ UMTS_AddMeasParamsDescOpt umts_add_meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ UMTS_AddMeasParamsDesc2Opt umts_add_meas_params_desc2,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 rel6_presence, // L/H</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterR6Additions rel6 optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel6_presence) "CSN.1 L/H"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel6) "PRESENCE(rel6_presence = '1'B)"</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%);">+/* 3G Additional Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UMTS_AddMeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ UMTS_AddMeasParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record UMTS_AddMeasParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 fdd_qmin_offset,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT4 fdd_rscpmin</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* 3G Additional Measurement Parameters Description 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UMTS_AddMeasParamsDesc2Opt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ UMTS_AddMeasParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record UMTS_AddMeasParamsDesc2 {</span><br><span style="color: hsl(120, 100%, 40%);">+ /* FDD Reporting Threshold 2 */</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ uint6_t threshold optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (threshold) "PRESENCE(presence = '1'B)"</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%);">+/* SI2quater Rel-6 and Rel-{7,8,9,10} Additions */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterR6Additions {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 umts_ccn_active,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 rel7_presence, // L/H</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterR7Additions rel7 optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel7_presence) "CSN.1 L/H"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel7) "PRESENCE(rel7_presence = '1'B)"</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%);">+/* SI2quater Rel-7 and Rel-{8,9,10} Additions */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterR7Additions {</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel7RepOffseThresholdOpt rep700,</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel7RepOffseThresholdOpt rep810,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 rel8_presence, // L/H</span><br><span style="color: hsl(120, 100%, 40%);">+ SI2quaterR8Additions rel8 optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel8_presence) "CSN.1 L/H"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel8) "PRESENCE(rel8_presence = '1'B)"</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%);">+/* Additions in Rel-7: Reporting Offset & Threshold */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record Rel7RepOffseThresholdOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel7RepOffseThreshold val optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (val) "PRESENCE(presence = '1'B)"</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%);">+private type record Rel7RepOffseThreshold {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 offset,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 threshold</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* SI2quater Rel-8 and Rel-{9,10} Additions */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record SI2quaterR8Additions {</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel8PrioEUTRANParamsDescOpt prio_eutran_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel8UTRANCSGDescOpt utran_csg_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel8EUTRANCSGDescOpt eutran_csg_desc</span><br><span style="color: hsl(120, 100%, 40%);">+ // TODO: Rel9 Additions (not implemented)</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Additions in Rel-8: Priority and E-UTRAN Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record Rel8PrioEUTRANParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ Rel8PrioEUTRANParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record Rel8PrioEUTRANParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ ServingCellPrioParamsDescOpt sc_prio_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ UTRAN_PrioParamsDescOpt utran_prio_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_ParamsDescOpt eutran_params_desc</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Serving Cell Priority Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record ServingCellPrioParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ ServingCellPrioParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record ServingCellPrioParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ uint3_t geran_priority,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint4_t thresh_priority_search,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint4_t thresh_gsm_low,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint2_t h_prio,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint2_t t_reselection</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* 3G Priority Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRAN_PrioParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* E-UTRAN Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_ParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_ParamsDesc desc optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+private type record EUTRAN_ParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 ccn_active,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 e_start,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 e_stop,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* E-UTRAN Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_MeasParamsDescOpt meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ /* GPRS E-UTRAN Measurement Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_GPRSMeasParamsDescOpt gprs_meas_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN Neighbour Cells > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_NeighbourCells neigh_cell_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 neigh_cell_list_term ('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN Not Allowed Cells > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_NotAllowedCells not_allowed_cell_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 not_allowed_cell_list_term ('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN PCID to TA mapping > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_PCID2TAMaps pcid2ta_map_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 pcid2ta_map_list_term ('0'B)</span><br><span style="color: hsl(120, 100%, 40%);">+} with { variant "" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* E-UTRAN Measurement Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_MeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* GPRS E-UTRAN Measurement Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_GPRSMeasParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* Repeated E-UTRAN Neighbour Cell List */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record of EUTRAN_NeighbourCell EUTRAN_NeighbourCells;</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_NeighbourCell {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 item_ind ('1'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN Neighbour Cells > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_CellDescs cell_desc_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 cell_desc_list_term ('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 prio_presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ uint3_t prio optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ uint5_t thresh_high,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 thresh_low_presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ uint5_t thresh_low optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 qrxlevmin_presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ uint5_t qrxlevmin optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PRESENCE(item_ind = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (prio) "PRESENCE(prio_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (thresh_low) "PRESENCE(thresh_low_presence = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (qrxlevmin) "PRESENCE(qrxlevmin_presence = '1'B)"</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%);">+/* Repeated E-UTRAN Cell Description (E-ARFCN & Measurement Bandwidth) List */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record of EUTRAN_CellDesc EUTRAN_CellDescs;</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_CellDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 item_ind ('1'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ uint16_t e_arfcn,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 meas_bw_presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ uint3_t meas_bw optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PRESENCE(item_ind = '1'B)"</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (meas_bw) "PRESENCE(meas_bw_presence = '1'B)"</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%);">+/* Repeated E-UTRAN Not Allowed Cell List */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record of EUTRAN_NotAllowedCell EUTRAN_NotAllowedCells;</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_NotAllowedCell {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 item_ind ('1'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* FIXME: Not Allowed Cells : < PCID Group IE > (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 pcid_group_presence ('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN_FREQUENCY_INDEX > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_FreqIndexes freq_idx_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 freq_idx_list_term ('0'B)</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PRESENCE(item_ind = '1'B)"</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%);">+/* Repeated E-UTRAN PCID to TA mapping List */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record of EUTRAN_PCID2TAMap EUTRAN_PCID2TAMaps;</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_PCID2TAMap {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 item_ind ('1'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* FIXME: PCID to TA mapping : < PCID Group IE > (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 pcid_group_presence ('0'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ /* { 1 < Repeated E-UTRAN_FREQUENCY_INDEX > } ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRAN_FreqIndexes freq_idx_list optional,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 freq_idx_list_term ('0'B)</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PRESENCE(item_ind = '1'B)"</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%);">+/* Repeated E-UTRAN Frequency Index List */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record of EUTRAN_FreqIndex EUTRAN_FreqIndexes;</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRAN_FreqIndex {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 item_ind ('1'B),</span><br><span style="color: hsl(120, 100%, 40%);">+ uint3_t idx</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant "PRESENCE(item_ind = '1'B)"</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%);">+/* Additions in Rel-8: 3G CSG Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record Rel8UTRANCSGDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* Additions in Rel-8: E-UTRAN CSG Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record Rel8EUTRANCSGDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ bitstring desc optional // TODO</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (desc) "PRESENCE(presence = '1'B)"</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%);">+/* Basic any-/omit-matching templates. To be inherited by other templates (see below).</span><br><span style="color: hsl(120, 100%, 40%);">+ * The point is that you cannot fit everything into 20 octets, so usually several kinds</span><br><span style="color: hsl(120, 100%, 40%);">+ * of SI2quater are being sub-multiplexed by the BTS. This is achieved using both</span><br><span style="color: hsl(120, 100%, 40%);">+ * 'si2quater_index' and 'si2quater_count' fields. */</span><br><span style="color: hsl(120, 100%, 40%);">+template SI2quaterRestOctets tra_SI2quaterRestOctets_base := {</span><br><span style="color: hsl(120, 100%, 40%);">+ ba_ind := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ ba_3g_ind := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ mp_change_mark := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ si2quater_index := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ si2quater_count := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ meas_params_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ gprs := {</span><br><span style="color: hsl(120, 100%, 40%);">+ rt_diff_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ bsic_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ rep_prio_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ meas_params_desc := { presence := ?, desc := * }</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ nc_meas_params := { presence := ?, params := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ ext_info := { presence := ?, info := * },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_neigh_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_meas_params_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_gprs_meas_params_desc := { presence := ?, desc := * },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ rel_additions := ?</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 SI2quaterRestOctets tro_SI2quaterRestOctets_base := {</span><br><span style="color: hsl(120, 100%, 40%);">+ ba_ind := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ ba_3g_ind := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ mp_change_mark := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ si2quater_index := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+ si2quater_count := ?,</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ meas_params_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ gprs := {</span><br><span style="color: hsl(120, 100%, 40%);">+ rt_diff_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ bsic_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ rep_prio_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ meas_params_desc := { presence := '0'B, desc := omit }</span><br><span style="color: hsl(120, 100%, 40%);">+ },</span><br><span style="color: hsl(120, 100%, 40%);">+ nc_meas_params := { presence := '0'B, params := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ ext_info := { presence := '0'B, info := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_neigh_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_meas_params_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+ utran_gprs_meas_params_desc := { presence := '0'B, desc := omit },</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ rel_additions := { rel5_presence := CSN1_L, rel5 := 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> /* 10.5.2.34 SI 3 Rest Octets */</span><br><span> type record SI3RestOctets {</span><br><span> SelectionParamsOpt sel_params,</span><br><span>@@ -131,6 +630,12 @@</span><br><span> variant (pos) "PRESENCE(presence = '1'B)"</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+external function enc_SI2quaterRestOctets(in SI2quaterRestOctets ro) return octetstring</span><br><span style="color: hsl(120, 100%, 40%);">+ with { extension "prototype(convert) encode(RAW)" };</span><br><span style="color: hsl(120, 100%, 40%);">+external function dec_SI2quaterRestOctets(in octetstring stream) return SI2quaterRestOctets</span><br><span style="color: hsl(120, 100%, 40%);">+ with { extension "prototype(convert) decode(RAW)" };</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> external function enc_SI3RestOctets(in SI3RestOctets ro) return octetstring</span><br><span> with { extension "prototype(convert) encode(RAW)" };</span><br><span> external function dec_SI3RestOctets(in octetstring stream) return SI3RestOctets</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19082">change 19082</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/+/19082"/><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: I6a12c9ee12f8df8b4fc0976dd593152dc1195718 </div>
<div style="display:none"> Gerrit-Change-Number: 19082 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>