BSSMAP_Templates: Add templates to receive CellID IE

Change-Id: I42d52d871c8011db7e0897dfe752afeefa6d9662
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index c564cfd..fca051a 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -349,6 +349,14 @@
 	cellIdentification := ?
 }
 
+template BSSMAP_IE_CellIdentifier tr_BSSMAP_IE_CellID := {
+	elementIdentifier := '05'O,
+	lengthIndicator := ?,
+	cellIdentifierDiscriminator := ?,
+	spare1_4 := '0000'B,
+	cellIdentification := ?
+}
+
 type uint16_t BssmapLAC;
 type uint16_t BssmapCI;
 type uint16_t BssmapSAC;
@@ -360,6 +368,15 @@
 	}
 }
 
+template (present) BSSMAP_IE_CellIdentifier tr_CellId_CGI(template (present) OCT3 mcc_mnc,
+							  template (present) BssmapLAC lac,
+							  template (present) BssmapCI ci)
+modifies tr_BSSMAP_IE_CellID := {
+	cellIdentification := {
+		cI_CGI := tr_BSSMAP_CI_CGI(mcc_mnc, lac, ci)
+	}
+}
+
 template (value) BSSMAP_IE_CellIdentifier ts_CellID_LAC_CI(BssmapLAC lac, BssmapCI ci)
 modifies ts_BSSMAP_IE_CellID := {
 	cellIdentification := {
@@ -370,6 +387,17 @@
 	}
 }
 
+template (present) BSSMAP_IE_CellIdentifier tr_CellID_LAC_CI(template (present) BssmapLAC lac,
+							     template (present) BssmapCI ci)
+modifies tr_BSSMAP_IE_CellID := {
+	cellIdentification := {
+		cI_LAC_CI := {
+			lac := f_tr_LAC(lac),
+			ci := f_tr_CI(ci)
+		}
+	}
+}
+
 template BSSMAP_IE_CellIdentifier ts_CellId_CI(BssmapCI ci)
 modifies ts_BSSMAP_IE_CellID := {
 	cellIdentification := {
@@ -377,6 +405,13 @@
 	}
 }
 
+template (present) BSSMAP_IE_CellIdentifier tr_CellId_CI(template (present) BssmapCI ci)
+modifies tr_BSSMAP_IE_CellID := {
+	cellIdentification := {
+		cI_CI := f_tr_CI(ci)
+	}
+}
+
 template BSSMAP_IE_CellIdentifier ts_CellId_none
 modifies ts_BSSMAP_IE_CellID := {
 	cellIdentification := {
@@ -384,6 +419,13 @@
 	}
 }
 
+template BSSMAP_IE_CellIdentifier tr_CellId_none
+modifies tr_BSSMAP_IE_CellID := {
+	cellIdentification := {
+		cI_noCell := ''O
+	}
+}
+
 template (value) BSSMAP_IE_CellIdentifier ts_CellID_SAI(OCT3 mcc_mnc, BssmapLAC lac, BssmapSAC sac)
 modifies ts_BSSMAP_IE_CellID := {
 	cellIdentification := {
@@ -395,6 +437,46 @@
 	}
 }
 
+template (present) BSSMAP_IE_CellIdentifier tr_CellID_SAI(template (present) OCT3 mcc_mnc,
+							  template (present) BssmapLAC lac,
+							  template (present) BssmapSAC sac)
+modifies tr_BSSMAP_IE_CellID := {
+	cellIdentification := {
+		cI_SAI := {
+			mcc_mnc := mcc_mnc,
+			lac := f_tr_LAC(lac),
+			sac := f_tr_SAC(sac)
+		}
+	}
+}
+
+private function f_tr_LAC(template (present) BssmapLAC lac)
+return template (present) OCT2 {
+	if (istemplatekind(lac, "?")) {
+		return ?;
+	} else {
+		return int2oct(valueof(lac), 2);
+	}
+}
+
+private function f_tr_SAC(template (present) BssmapSAC sac)
+return template (present) OCT2 {
+	if (istemplatekind(sac, "?")) {
+		return ?;
+	} else {
+		return int2oct(valueof(sac), 2);
+	}
+}
+
+private function f_tr_CI(template (present) BssmapCI ci)
+return template (present) OCT2 {
+	if (istemplatekind(ci, "?")) {
+		return ?;
+	} else {
+		return int2oct(valueof(ci), 2);
+	}
+}
+
 
 template (value) BSSMAP_IE_Layer3Information ts_BSSMAP_IE_L3Info(template (value) octetstring l3info) := {
 	elementIdentifier := '17'O,
@@ -1381,6 +1463,14 @@
 	ci := int2oct(ci, 2)
 }
 
+template (present) BSSMAP_FIELD_CellIdentification_CGI tr_BSSMAP_CI_CGI(template (present) OCT3 mcc_mnc,
+									template (present) GsmLac lac,
+									template (present) GsmCellId ci) := {
+	mcc_mnc := mcc_mnc,
+	lac := f_tr_LAC(lac),
+	ci := f_tr_CI(ci)
+}
+
 template (value) BSSMAP_FIELD_CellIdentification_LAC_CI ts_BSSMAP_CI_LAC_CI(GsmLac lac, GsmCellId ci) := {
 	lac := int2oct(lac, 2),
 	ci := int2oct(ci, 2)