L3_Templates: Add various GMM related templates
... needed for upcoming SGSN testing
Change-Id: I2026c5db3d709566dc3764515d3711b361d82a06
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index b506865..a3db409 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -10,12 +10,13 @@
*/
import from General_Types all;
+import from Osmocom_Types all;
import from MobileL3_Types all;
import from MobileL3_CommonIE_Types all;
import from MobileL3_MM_Types all;
import from MobileL3_RRM_Types all;
import from MobileL3_CC_Types all;
-//import from MobileL3_GMM_SM_Types all;
+import from MobileL3_GMM_SM_Types all;
//import from MobileL3_SMS_Types all;
@@ -63,6 +64,13 @@
}
}
+/* send template fro Mobile Identity (TMSI) */
+template MobileIdentityTLV ts_MI_TMSI_TLV(OCT4 tmsi) := {
+ elementIdentifier := '0000000'B, /* overwritten */
+ spare1 := '0'B,
+ mobileIdentityLV := ts_MI_TMSI_LV(tmsi)
+}
+
private function f_enc_IMSI_L3(hexstring digits) return IMSI_L3 {
var IMSI_L3 l3;
var integer len := lengthof(digits);
@@ -1155,6 +1163,314 @@
}
}
+/***********************************************************************
+ * GPRS Mobility Management
+ ***********************************************************************/
+
+template (value) MSNetworkCapabilityV ts_GMM_MsNetCapV := {
+ gea1bit := '1'B,
+ smCapabilitiesviaDedicatedChannels := '1'B,
+ smCapabilitiesviaGPRSChannels := '0'B,
+ ucs2Support := '1'B,
+ ssScreeningIndicator := '01'B,
+ solSACapability := omit,
+ revisionLevelIndicatior := omit,
+ pFCFeatureMode := omit,
+ extendedGEAbits := omit,
+ lcsVAcapability := omit,
+ pSInterRATHOtoUTRANIuModeCapability := omit,
+ pSInterRATHOtoEUTRANS1ModeCapability := omit,
+ eMMCombinedProceduresCapability := omit,
+ iSRSupport := omit,
+ sRVCCtoGERANUTRANCapability := omit,
+ ePCCapability := omit,
+ nFCapability := omit,
+ gERANNertworkSharingCapability := omit,
+ spare_octets := omit
+};
+
+template (value) MSNetworkCapabilityLV ts_GMM_MsNetCapLV := {
+ lengthIndicator := 0, /* overwritten */
+ msNetworkCapabilityV := ts_GMM_MsNetCapV
+};
+
+type enumerated GprsAttachType {
+ GPRS_ATT_T_GPRS,
+ GPRS_ATT_T_GPRS_IMSI_COMBINED
+};
+
+function ts_GMM_AttachType(boolean combined := false, boolean follow_on_pending := false)
+return AttachTypeV {
+ var AttachTypeV att;
+ if (combined) {
+ att.attachType := '011'B;
+ } else {
+ att.attachType := '001'B;
+ }
+ att.for_l3 := bool2bit(combined);
+ return att;
+}
+
+type enumerated GprsUpdateType {
+ GPRS_UPD_T_RA ('000'B),
+ GPRS_UPD_T_RA_LA_COMBINED ('001'B),
+ GPRS_UPD_T_RA_LA_COMBINED_IMSI_ATT ('010'B),
+ GPRS_UPD_T_PERIODIC ('011'B)
+};
+
+/* 10.5.5.18 Update Type */
+template UpdateTypeV ts_GMM_UpdateType(GprsUpdateType upd_t, boolean combined := false,
+ boolean follow_on_pending := false) := {
+ valueField := int2bit(enum2int(upd_t), 3),
+ for_l3 := bool2bit(combined)
+}
+
+template (value) DRXParameterV ts_DrxParameterV := {
+ splitPGCycleCode := '00'O, /* no DRX */
+ nonDRXTimer := '000'B, /* no non-DRX mode */
+ splitOnCCCH := '0'B, /* not supported */
+ cnSpecificDRXCycleLength := '0000'B /* SI value used */
+};
+
+template (value) AccessCapabilitiesStruct ts_AccesssCap := {
+ lengthIndicator := 0, /* overwritten */
+ accessCapabilities := {
+ rfPowerCapability := '001'B, /* FIXME */
+ presenceBitA5 := '0'B,
+ a5bits := omit,
+ esind := '1'B,
+ psbit := '0'B,
+ vgcs := '0'B,
+ vbs := '0'B,
+ presenceBitMultislot := '0'B,
+ multislotcap := omit,
+ accessCapAdditionsAfterRel97 := omit
+ },
+ spare_bits := omit
+}
+
+template (value) MSRACapabilityValuesRecord ts_RaCapRec(BIT4 att) := {
+ mSRACapabilityValues := {
+ mSRACapabilityValuesExclude1111 := {
+ accessTechnType := '0001'B, /* E-GSM */
+ accessCapabilities := ts_AccesssCap
+ }
+ },
+ presenceBitMSRACap := '0'B
+};
+
+template (value) MSRadioAccessCapabilityLV ts_MS_RaCapa := {
+ lengthIndicator := 0, /* overwritten */
+ msRadioAccessCapabilityV := {
+ ts_RaCapRec('0001'B) /* E-GSM */
+ }
+}
+
+template (value) PDU_L3_MS_SGSN
+ ts_GMM_ATTACH_REQ(MobileIdentityLV mi_lv, RoutingAreaIdentificationV old_ra,
+ boolean combined := false, boolean follow_on_pending := false,
+ template (omit) MobileStationClassmark2_TLV cm2_tlv,
+ template (omit) MobileStationClassmark3_TLV cm3_tlv
+ ) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ attachRequest := {
+ messageType := '00000000'B, /* overwritten */
+ msNetworkCapability := ts_GMM_MsNetCapLV,
+ attachType := valueof(ts_GMM_AttachType(combined, follow_on_pending)),
+ gprsCKSN := { '111'B, '0'B },
+ drxParam := ts_DrxParameterV,
+ mobileIdentity := mi_lv,
+ oldRoutingAreaID := old_ra,
+ msRACap := ts_MS_RaCapa,
+ ptmsiSignature := omit, /* TODO */
+ reqGPRStimer := omit,
+ tmsiStatus := omit,
+ pC_LCSCapability := omit,
+ mobileStationClassmark2 := cm2_tlv,
+ mobileStationClassmark3 := cm3_tlv,
+ supportedCodecs := omit,
+ uENetworkCapability := omit,
+ additionalMobileIdentity := omit,
+ routingAreaIdentification2 := omit,
+ voiceDomainandUEsUsageSetting := omit,
+ deviceProperties := omit,
+ p_TMSI_Type := omit,
+ mS_NetworkFeatureSupport := omit,
+ oldLocationAreaIdentification := omit,
+ additionalUpdateType := omit,
+ tMSIBasedNRIcontainer := omit,
+ t3324 := omit,
+ t3312_ExtendedValue := omit,
+ extendedDRXParameters := omit
+ }
+ }
+ }
+}
+
+
+template (value) PDU_L3_MS_SGSN ts_GMM_ATTACH_COMPL := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ attachComplete := {
+ messageType := '00000000'B, /* overwritten */
+ interRATHandoverInformation := omit,
+ eUTRANinterRATHandoverInformation := omit
+ }
+ }
+ }
+}
+
+template (value) PDU_L3_MS_SGSN
+ ts_GMM_RAU_REQ(MobileIdentityLV mi_lv, GprsUpdateType upd_type,
+ RoutingAreaIdentificationV old_ra,
+ boolean follow_on_pending := false,
+ template (omit) MobileStationClassmark2_TLV cm2_tlv,
+ template (omit) MobileStationClassmark3_TLV cm3_tlv
+ ) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ routingAreaUpdateRequest := {
+ messageType := '00000000'B, /* overwritten */
+ updateType := ts_GMM_UpdateType(upd_type, follow_on_pending),
+ gprsCKSN := { '111'B, '0'B },
+ oldRoutingAreaId := old_ra,
+ msRACap := ts_MS_RaCapa,
+ oldPTMSISignature := omit, /* TODO */
+ readyTimerValue := omit,
+ drxParameter := omit,
+ tmsiStatus := omit,
+ ptmsi := omit,
+ mSNetworkCapability := omit,
+ pdpContextStatus := omit, /* TODO */
+ pC_LCSCapability := omit,
+ uENetworkCapability := omit,
+ additionalMobileIdentity := omit,
+ oldRoutingAreaIdentification2 := omit,
+ mobileStationClassmark2 := cm2_tlv,
+ mobileStationClassmark3 := cm3_tlv,
+ supportedCodecs := omit,
+ voiceDomainUEUsageSetting := omit,
+ p_TMSI_Type := omit,
+ deviceProperties := omit,
+ mS_NetworkFeatureSupport := omit,
+ oldLocationAreaIdentification := omit,
+ additionalUpdateType := omit,
+ tMSIBasedNRIcontainer := omit,
+ t3324 := omit,
+ t3312_ExtendedValue := omit,
+ extendedDRXParameters := omit
+ }
+ }
+ }
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_RAU_COMPL := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ routingAreaUpdateComplete := {
+ messageType := '00000000'B, /* overwritten */
+ receiveNPDUNumbers := omit,
+ interRATHandoverInformation := omit,
+ eUTRANinterRATHandoverInformation := omit
+ }
+ }
+ }
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_PTMSI_REALL_COMPL := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ p_TMSIReallocationComplete := {
+ messageType := '00000000'B /* overwritten */
+ }
+ }
+ }
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_AUTH_CIPH_COMPL(ACReferenceNumberV ref, OCT4 res) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ authenticationAndCipheringResponse := {
+ messageType := '00000000'B, /* overwritten */
+ acReferenceNumber := ref,
+ spare := '0000'B,
+ authenticationParResp := {
+ elementIdentifier := '22'O,
+ valueField := res
+ },
+ imeisv := omit,
+ authenticationRespParExt := omit
+ }
+ }
+ }
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_ID_RESP(MobileIdentityLV mi_lv) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ identityResponse := {
+ messageType := '00000000'B, /* overwritten */
+ mobileIdentity := mi_lv
+ }
+ }
+ }
+}
+
+const BIT3 c_GMM_DTT_MO_GPRS := '001'B;
+const BIT3 c_GMM_DTT_MO_IMSI := '010'B;
+const BIT3 c_GMM_DTT_MO_GPRS_IMSI_COMBINED := '011'B;
+
+template (value) DetachTypeV ts_GMM_DetType(BIT3 dtt) := {
+ detachType := dtt,
+ powerOffFlag := '0'B
+}
+
+template (value) PDU_L3_MS_SGSN ts_GMM_DET_REQ_MO(BIT3 dtt := c_GMM_DTT_MO_GPRS) := {
+ discriminator := '0000'B, /* overwritten */
+ tiOrSkip := {
+ skipIndicator := '0000'B
+ },
+ msgs := {
+ gprs_mm := {
+ detachRequest_MS_SGSN := {
+ messageType := '00000000'B, /* overwritten */
+ detachType := valueof(ts_GMM_DetType(dtt)),
+ spare := '0000'B,
+ ptmsi := omit, /* TODO */
+ ptmsiSignature := omit /* TODO */
+ }
+ }
+ }
+}
}