library/GSM_RestOctets: add SI2quater EUTRAN templates

Will be used in upcoming System Information tests.

Change-Id: I4162cc39ad351f5e96f5941116a424adc44efaa2
diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn
index 39f15bb..2b43751 100644
--- a/library/GSM_RestOctets.ttcn
+++ b/library/GSM_RestOctets.ttcn
@@ -378,7 +378,7 @@
 
 /* Repeated E-UTRAN Neighbour Cells */
 private type record of EUTRAN_NeighbourCells EUTRAN_RepeatedNeighbourCells;
-private type record EUTRAN_NeighbourCells {
+type record EUTRAN_NeighbourCells {
 	BIT1				item_ind ('1'B),
 	/* { 1 < Repeated E-UTRAN Neighbour Cells > } ** 0 */
 	EUTRAN_CellDescs		cell_desc_list optional,
@@ -398,8 +398,8 @@
 };
 
 /* Repeated E-UTRAN Cell Description (E-ARFCN & Measurement Bandwidth) List */
-private type record of EUTRAN_CellDesc EUTRAN_CellDescs;
-private type record EUTRAN_CellDesc {
+type record of EUTRAN_CellDesc EUTRAN_CellDescs;
+type record EUTRAN_CellDesc {
 	BIT1				item_ind ('1'B),
 	uint16_t			e_arfcn,
 	BIT1				meas_bw_presence, // 0/1
@@ -513,6 +513,136 @@
 	rel_additions := { rel5_presence := CSN1_L, rel5 := omit }
 };
 
+template SI2quaterRestOctets tro_SI2quaterRestOctets_rel8_EUTRAN
+modifies tro_SI2quaterRestOctets_base
+:= {
+	ba_ind := ?,
+	ba_3g_ind := ?,
+	mp_change_mark := ?,
+	si2quater_index := ?,
+	si2quater_count := ?,
+
+	rel_additions := {
+		rel5_presence := CSN1_H,
+		rel5 := {
+			umts_add_meas_params_desc := { presence := '0'B, desc := omit },
+			umts_add_meas_params_desc2 := { presence := '0'B, desc := omit },
+			rel6_presence := CSN1_H,
+			rel6 := {
+				umts_ccn_active := '0'B,
+				rel7_presence := CSN1_H,
+				rel7 := {
+					rep700 := { presence := '0'B, val := omit },
+					rep810 := { presence := '0'B, val := omit },
+					rel8_presence := CSN1_H,
+					rel8 := {
+						prio_eutran_params_desc := {
+							presence := '1'B,
+							desc := {
+								sc_prio_params_desc := { presence := '0'B, desc := omit },
+								utran_prio_params_desc := { presence := '0'B, desc := omit },
+								eutran_params_desc := {
+									presence := '1'B,
+									desc := {
+										ccn_active := ?,
+										e_start := ?,
+										e_stop := ?,
+										meas_params_desc := { presence := '0'B, desc := omit },
+										gprs_meas_params_desc := { presence := '0'B, desc := omit },
+										repeated_neigh_cells := *,
+										repeated_neigh_cells_term := '0'B,
+										repeated_not_allowed_cells := omit,
+										repeated_not_allowed_cells_term := '0'B,
+										pcid2ta_map_list := omit,
+										pcid2ta_map_list_term := '0'B
+									}
+								}
+							}
+						},
+						utran_csg_desc := { presence := '0'B, desc := omit },
+						eutran_csg_desc := { presence := '0'B, desc := omit }
+					}
+				}
+			}
+		}
+	}
+};
+
+template EUTRAN_CellDesc tr_EUTRAN_CellDesc(template (present) uint16_t e_arfcn := ?,
+					    template (present) BIT1 meas_bw_presence := ?,
+					    template uint3_t meas_bw := *)
+:= {
+	item_ind := '1'B,
+	e_arfcn := e_arfcn,
+	meas_bw_presence := meas_bw_presence,
+	meas_bw := meas_bw
+}
+
+/* Defaults correspond to osmo-bsc cfg:
+ *   si2quater neighbor-list add earfcn 111 thresh-hi 20 thresh-lo 10 prio 3 qrxlv 22 meas 3
+ */
+template EUTRAN_NeighbourCells tr_EUTRAN_NeighbourCells(template (present) EUTRAN_CellDescs cell_desc_list := { tr_EUTRAN_CellDesc },
+							template (present) BIT1 prio_presence := ?,
+							template uint3_t prio := *,
+							template (present) uint5_t thresh_high := ?,
+							template (present) BIT1 thresh_low_presence := ?,
+							template uint5_t thresh_low := *,
+							template (present) BIT1 qrxlevmin_presence := ?,
+							template uint5_t qrxlevmin := *)
+:= {
+	item_ind := '1'B,
+	cell_desc_list := cell_desc_list,
+	cell_desc_list_term := '0'B,
+	prio_presence := prio_presence,
+	prio := prio,
+	thresh_high := thresh_high,
+	thresh_low_presence := thresh_low_presence,
+	thresh_low := thresh_low,
+	qrxlevmin_presence := qrxlevmin_presence,
+	qrxlevmin := qrxlevmin
+};
+
+template SI2quaterRestOctets tr_SI2quaterRestOctets_EUTRAN(
+	template integer index := 0,
+	template integer count := 0,
+	template EUTRAN_RepeatedNeighbourCells repeated_neigh_cells := { tr_EUTRAN_NeighbourCells }
+) modifies tro_SI2quaterRestOctets_rel8_EUTRAN := {
+	si2quater_index := index,
+	si2quater_count := count,
+	rel_additions := {
+		rel5 := {
+			rel6 := {
+				rel7 := {
+					rel8 := {
+						prio_eutran_params_desc := {
+							desc := {
+								sc_prio_params_desc := {
+									presence := '1'B,
+									desc := {
+										geran_priority := 0,
+										thresh_priority_search := 0,
+										thresh_gsm_low := 0,
+										h_prio := 0,
+										t_reselection := 0
+									}
+								},
+								eutran_params_desc := {
+									desc := {
+										ccn_active := '0'B,
+										e_start := '1'B,
+										e_stop := '1'B,
+										repeated_neigh_cells := repeated_neigh_cells
+									}
+								}
+							}
+						}
+					}
+				}
+			}
+		}
+	}
+};
+
 
 /* 10.5.2.34 SI 3 Rest Octets */
 type record SI3RestOctets {