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