Review at  https://gerrit.osmocom.org/6528

L3_Templates: Add various GMM related templates

... needed for upcoming SGSN testing

Change-Id: I2026c5db3d709566dc3764515d3711b361d82a06
---
M library/L3_Templates.ttcn
1 file changed, 317 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/28/6528/1

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;
 
 
@@ -61,6 +62,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 {
@@ -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 */
+                       }
+               }
+       }
+}
 
 
 }

-- 
To view, visit https://gerrit.osmocom.org/6528
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2026c5db3d709566dc3764515d3711b361d82a06
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <[email protected]>

Reply via email to