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 */