BSSMAP_Templates: add tr_BSSMAP_IE_Cause and tr_BSSMAP_SAPInReject

Change-Id: Ibf80419df4d198a1aa6f52087bd9356231de65f5
Related: SYS#5047, OS#4728
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index 2496a1b..694e3e8 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -148,6 +148,22 @@
 	extensionCauseValue := '0'B,
 	spare1 := omit
 }
+template BSSMAP_IE_Cause tr_BSSMAP_IE_Cause(template (present) myBSSMAP_Cause val) := {
+	elementIdentifier := '04'O,
+	lengthIndicator := ?,
+	causeValue := f_tr_causeValue(val),
+	extensionCauseValue := ?,
+	spare1 := *
+}
+private function f_tr_causeValue(template (present) myBSSMAP_Cause val)
+return template (present) BIT7 {
+	if (istemplatekind(val, "?")) {
+		return ?;
+	} else {
+		var integer int_val := enum2int(valueof(val));
+		return int2bit(valueof(int_val), 7);
+	}
+}
 
 template (value) BSSMAP_IE_SpeechVersion ts_BSSMAP_IE_SpeechVersion(SpeechVersion val) := {
 	elementIdentifier := '40'O,
@@ -1625,6 +1641,34 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_SAPInReject(template (present) GsmSapi sapi := ?,
+					 template BSSMAP_IE_Cause cause := ?)
+modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			sAPInReject := {
+				messageType := '25'O,
+				dLCI := {
+					elementIdentifier := '18'O,
+					sapiValue := f_tr_SAPI(sapi),
+					spare := ?,
+					c1 := ?, c2 := ?
+				},
+				cause := cause
+			}
+		}
+	}
+}
+
+private function f_tr_SAPI(template (present) GsmSapi sapi)
+return template (present) BIT3 {
+	if (istemplatekind(sapi, "?")) {
+		return ?;
+	} else {
+		return int2bit(valueof(sapi), 3);
+	}
+}
+
 
 
 } with { encode "RAW" };