<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19082">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">library/GSM_RestOctets: initial SI2quater Rest Octets definition<br><br>Change-Id: I6a12c9ee12f8df8b4fc0976dd593152dc1195718<br>Related: SYS#4870<br>---<br>M library/GSM_RestOctets.ttcn<br>1 file changed, 342 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/82/19082/1</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..73059de 100644</span><br><span>--- a/library/GSM_RestOctets.ttcn</span><br><span>+++ b/library/GSM_RestOctets.ttcn</span><br><span>@@ -1,7 +1,9 @@</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 style="color: hsl(120, 100%, 40%);">+ *</span><br><span> * All rights reserved.</span><br><span> *</span><br><span> * Released under the terms of GNU General Public License, Version 2 or</span><br><span>@@ -15,6 +17,346 @@</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 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%);">+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%);">+/* 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%);">+ // TODO: GPRS_RealTimeDiffDesc desc optional</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 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%);">+ // TODO: GPRS_BSICDesc desc optional</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 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%);">+ // TODO: GPRS_ReportPrioDesc desc optional</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%);">+/* 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 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%);">+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%);">+/* SI2quater Extersion Information */</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%);">+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%);">+/* CCN Support Description */</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%);">+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%);">+/* 3G Neighbour Cell Description */</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%);">+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%);">+/* 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%);">+ // UTRAN_FDDDesc desc optional</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%);">+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%);">+ // UTRAN_TDDDesc desc optional</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 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%);">+ // TODO: UTRAN_MeasParamsDesc desc optional</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 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%);">+ // TODO: UTRAN_GPRSMeasParamsDesc desc optional</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-{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_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%);">+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%);">+/* 3G Additional Measurement Parameters Description 2 */</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%);">+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%);">+/* 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 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%);">+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%);">+/* 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%);">+ BIT1 rel9_presence // L/H</span><br><span style="color: hsl(120, 100%, 40%);">+ // TODO: SI2quaterR9Additions rel9 optional</span><br><span style="color: hsl(120, 100%, 40%);">+} with {</span><br><span style="color: hsl(120, 100%, 40%);">+ variant (rel9_presence) "CSN.1 L/H"</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: Priority and E-UTRAN Parameters Description */</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%);">+ UTRANPrioParamsDescOpt utran_prio_params_desc,</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRANParamsDescOpt 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%);">+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%);">+/* Serving Cell Priority Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record ServingCellPrioParamsDesc {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT3 geran_priority,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT4 thresh_priority_search,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT4 thresh_gsm_low,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT2 h_prio,</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT2 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%);">+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%);">+/* 3G Priority Parameters Description (not implemented) */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record UTRANPrioParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ // TODO: UTRANPrioParamsDesc desc optional</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%);">+/* TODO: E-UTRAN Parameters Description */</span><br><span style="color: hsl(120, 100%, 40%);">+private type record EUTRANParamsDesc {</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%);">+ /* TODO: 0 | 1 << E-UTRAN Measurement Parameters Description >> */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* TODO: 0 | 1 << GPRS E-UTRAN Measurement Parameters Description >> */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* TODO: 1 << Repeated E-UTRAN Neighbour Cells >> ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* TODO: 1 << Repeated E-UTRAN Not Allowed Cells >> ** 0 */</span><br><span style="color: hsl(120, 100%, 40%);">+ /* TODO: 1 << Repeated E-UTRAN PCID to TA mapping >> ** 0 */</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%);">+private type record EUTRANParamsDescOpt {</span><br><span style="color: hsl(120, 100%, 40%);">+ BIT1 presence, // 0/1</span><br><span style="color: hsl(120, 100%, 40%);">+ EUTRANParamsDesc 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%);">+/* 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%);">+ // TODO: Rel8UTRANCSGDesc desc optional</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: 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%);">+ // TODO: Rel8EUTRANCSGDesc desc optional</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%);">+</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 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></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: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>