bsc: Introduce TC_srvcc_eutran_to_geran

Related: SYS#5337
Change-Id: If26cc9241b1b0eb4112f1227427008ece242bb41
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 458fa48..8049bb0 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -23,7 +23,16 @@
 type integer SpeechVersion;
 type integer Channel;
 type integer ChannelMode;
-type octetstring oldToNewBSSIEs;
+//type octetstring BSSMAP_oldToNewBSSIEs;
+
+// Old BSS to New BSS Information - 48.008 subclause 3.2.2.58
+type record BSSMAP_oldToNewBSSIEs
+{
+  BSSAMAP_IE_LastUsedEUTRANPLMNId LastUsedEUTRANPLMNId optional
+  /* TODO: add other FIELDS here from specs */
+}
+external function enc_BSSMAP_oldToNewBSSIEs(in BSSMAP_oldToNewBSSIEs val) return octetstring
+	with { extension "prototype(convert) encode(RAW)" };
 
 /* 48.008 3.2.2.5 - this actually belongs to BSSAP_Types.ttcn */
 type enumerated myBSSMAP_Cause {
@@ -198,10 +207,29 @@
 	channelMode := int2bit(cm, 4)
 }
 
-template (value) BSSMAP_IE_OldToNewBSSInfo ts_BSSMAP_IE_OldToNewBSSInfo(oldToNewBSSIEs val) := {
+template (value) BSSMAP_oldToNewBSSIEs ts_BSSMAP_oldToNewBSSIEs(template (omit) BSSAMAP_IE_LastUsedEUTRANPLMNId last_used_eutran_plmn) := {
+	LastUsedEUTRANPLMNId := last_used_eutran_plmn
+}
+function f_ts_BSSMAP_oldToNewBSSIEs(template (omit) BSSAMAP_IE_LastUsedEUTRANPLMNId last_used_eutran_plmn)
+	 return template (omit) BSSMAP_oldToNewBSSIEs {
+	if (istemplatekind(last_used_eutran_plmn, "omit")) {
+		return omit;
+	} else {
+		return ts_BSSMAP_oldToNewBSSIEs(last_used_eutran_plmn);
+	}
+}
+template (value) BSSMAP_IE_OldToNewBSSInfo ts_BSSMAP_IE_OldToNewBSSInfo(template (value) BSSMAP_oldToNewBSSIEs val) := {
 	elementIdentifier := '3A'O,
 	lengthIndicator := 0,	/* overwritten by codec */
-	oldToNewBSSIEs := val
+	oldToNewBSSIEs := enc_BSSMAP_oldToNewBSSIEs(valueof(val))
+}
+function f_ts_BSSMAP_IE_OldToNewBSSInfo(template (omit) BSSMAP_oldToNewBSSIEs val)
+	 return template (omit) BSSMAP_IE_OldToNewBSSInfo {
+	if (istemplatekind(val, "omit")) {
+		return omit;
+	} else {
+		return ts_BSSMAP_IE_OldToNewBSSInfo(val);
+	}
 }
 
 template (value) BSSMAP_IE_Osmo_OsmuxSupport tr_BSSMAP_IE_Osmo_OsmuxSupport := {
@@ -907,7 +935,8 @@
 		template BSSMAP_IE_CircuitIdentityCode cic := omit,
 		template BSSMAP_IE_AoIP_TransportLayerAddress aoip_tla := omit,
 		template BSSMAP_IE_CellIdentifier cell_id_target := ts_CellID_LAC_CI(1, 0),
-		template BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1)
+		template BSSMAP_IE_CellIdentifier cell_id_source := ts_CellID_LAC_CI(1, 1),
+		template (omit) BSSMAP_oldToNewBSSIEs oldToNewBSSIEs := omit
 		)
 modifies ts_BSSAP_BSSMAP := {
 	pdu := {
@@ -941,7 +970,7 @@
 				talkerFlag := omit,
 				configurationEvolutionIndication := omit,
 				chosenEncryptionAlgorithm := omit,
-				oldToNewBSSInfo := omit,
+				oldToNewBSSInfo := f_ts_BSSMAP_IE_OldToNewBSSInfo(oldToNewBSSIEs),
 				lSAInformation := omit,
 				lSAAccessControlSuppression := omit,
 				serviceHandover := omit,