library/L3_Templates: add more templates for Mobile Identity IE

Change-Id: Ife954becab8c51605da05618a721541e7a4de319
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index af4a573..7e53709 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -63,6 +63,67 @@
 }
 
 
+/* 3GPP TS 24.008, section 10.5.1.4 "Mobile Identity" */
+template (value) MobileIdentityTLV ts_MI_TLV(template (value) MobileIdentityV mi) := {
+	elementIdentifier := '0010111'B,
+	spare1 := '0'B,
+	mobileIdentityLV := ts_MI_LV(mi)
+};
+template MobileIdentityTLV tr_MI_TLV(template MobileIdentityV mi) := {
+	elementIdentifier := '0010111'B,
+	spare1 := '0'B,
+	mobileIdentityLV := tr_MI_LV(mi)
+};
+
+template (value) MobileIdentityLV ts_MI_LV(template (value) MobileIdentityV mi) := {
+	lengthIndicator := 0, /* overwritten */
+	mobileIdentityV := mi
+};
+template MobileIdentityLV tr_MI_LV(template MobileIdentityV mi) := {
+	lengthIndicator := ?,
+	mobileIdentityV := mi
+};
+
+/* Universal (send & receive) template for No Identity */
+template MobileIdentityV t_MI_NoIdentity(template (present) hexstring filler := 'F'H) := {
+	typeOfIdentity := '000'B,
+	oddEvenInd_identity := {
+		no_identity := {
+			/* Always old, since length can be 1, 3, or 5 */
+			oddevenIndicator := '0'B,
+			fillerDigits := filler
+		}
+	}
+};
+
+/* Universal (send & receive) template for TMSI/P-TMSI */
+template MobileIdentityV t_MI_TMSI(template (present) OCT4 tmsi) := {
+	typeOfIdentity := '100'B,
+	oddEvenInd_identity := {
+		tmsi_ptmsi := {
+			oddevenIndicator := '0'B,
+			fillerDigit := '1111'B,
+			octets := tmsi
+		}
+	}
+};
+
+private function f_tr_MI_IMSI(template (present) hexstring digits)
+return template (present) IMSI_L3 {
+	if (istemplatekind(digits, "?")) {
+		return ?;
+	} else {
+		return f_enc_IMSI_L3(valueof(digits))
+	}
+}
+template MobileIdentityV tr_MI_IMSI(template hexstring imsi) := {
+	typeOfIdentity := '001'B,
+	oddEvenInd_identity := {
+		imsi := f_tr_MI_IMSI(imsi)
+	}
+};
+
+
 /* send template for Mobile Identity (TMSI) */
 template MobileIdentityLV ts_MI_TMSI_LV(OCT4 tmsi) := {
 	lengthIndicator := 0, /* overwritten */