/////////////////////////////////////////////////////////////////////////////// // // // Copyright Test Competence Center (TCC) ETH 2016 // // // // The copyright to the computer program(s) herein is the property of TCC. // // The program(s) may be used and/or copied only with the written permission // // of TCC or in accordance with the terms and conditions stipulated in the // // agreement/contract under which the program(s) has been supplied. // // // /////////////////////////////////////////////////////////////////////////////// // // File: MobileL3_CommonIE_Types.ttcn // Rev: R1B // Prodnr: CNL 113 832 // Contact: http://ttcn.ericsson.se // Reference: 3GPP TS 24.008 v13.4.0 module MobileL3_CommonIE_Types { import from General_Types all; // This type is a container for all necessary MS related parameters type record MS_parameters { integer imsi_length, //in BIT4 imsi_firstdigit, octetstring imsi, octetstring number, integer SCCP_connId, //connection Id of currently used SCCP connection integer L3_NSD, // actual value of L3 NSD BIT1 tiFlag // '0'B for call originator, '1' for call destination // this is an example how to set the value // tsp_imsi_1_firstdigit := '0010'B // tsp_imsi_1 := '26200103000015'O; // '262021030000051'O; // tsp_calledPartyBCD_Number_digits := '7112300020'O ; // '1721030002'O } // Use these Types instead of repeating it ! type record Type1_V { BIT4 dummy, BIT4 valuePart }; type record Type1_TV { BIT4 valuePart, BIT4 elementIdentifier }; type record Type2 { OCT1 elementIdentifier }; type record Type3_V { OCTN valuePart }; type record Type3_TV { OCT1 elementIdentifier, OCTN valuePart }; type record Type4_LV { LIN1 lengthIndicator, OCTN valuePart } with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; type record Type4_TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, OCTN valuePart } with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; /////////////////////////////////////// // IE Type definitions /////////////////////////////////////// type record ML3_NotifySS_Arg { OCT1 sequenceTag, OCT1 sequenceLength, OCT1 ssCodeTag, OCT1 ssCodeLength, OCT1 ssCodeValue, OCT1 ssIndicatorTag, OCT1 ssIndicatorLength, OCT1 ssIndicatorValue }; //============================================================================ // 10.5.1 Common Information elements //============================================================================ // 10.5.1.1 Cell Identity type record CellIdentity { OCT1 elementIdentifier, OCT2 cIvalue }; // 10.5.1.2 CipheringKeySequenceNumber type record CipheringKeySequenceNumberTV { CipheringKeySequenceNumberV keySequence, BIT4 elementIdentifier } with { variant "PRESENCE (elementIdentifier = '1000'B)"; }; type record CipheringKeySequenceNumberV { BIT3 keySequence, BIT1 spare }; //24.008/10.5.1.3 Location Area Identification type record LocationAreaIdentification_V { OCT3 mcc_mnc, OCT2 lac }; type record LocationAreaIdentification_TV { OCT1 elementIdentifier, OCT3 mcc_mnc, OCT2 lac }; // 24.008/ 10.5.1.4 Mobile Identity type record MobileIdentityTLV { BIT7 elementIdentifier, BIT1 spare1, MobileIdentityLV mobileIdentityLV }; type record MobileIdentityLV { LIN1 lengthIndicator, MobileIdentityV mobileIdentityV } with { variant (lengthIndicator) "LENGTHTO (mobileIdentityV)"}; type record MobileIdentityV { BIT3 typeOfIdentity, OddEvenInd_Identity oddEvenInd_identity } with { variant (oddEvenInd_identity) "CROSSTAG ( imei, typeOfIdentity ='010'B; imsi, typeOfIdentity ='001'B; imei_sv, typeOfIdentity ='011'B; tmsi_ptmsi, typeOfIdentity ='100'B; tmgi_and_MBMS_SessionID, typeOfIdentity ='101'B; no_identity, typeOfIdentity ='000'B; )"}; type union OddEvenInd_Identity { IMSI_L3 imsi, // avoid name conflict with RANAP IMEI_L3 imei, // avoid name conflict with RANAP IMEI_SV imei_sv, TMSI_PTMSI tmsi_ptmsi, TMGI_and_MBMS_SessionID tmgi_and_MBMS_SessionID, No_Identity no_identity }; type record IMSI_L3 { BIT1 oddevenIndicator, // '1'B or '0'B hexstring digits length(5..15), BIT4 fillerDigit optional // B'1111, fillerDigit is present // if oddevenIndicator=0 } with { variant (fillerDigit) "PRESENCE (oddevenIndicator = '0'B) ";}; type record IMEI_L3 { BIT1 oddevenIndicator, // '1'B hexstring digits length(15) }; type record TMSI_PTMSI { BIT1 oddevenIndicator, // '0'B BIT4 fillerDigit, // B'1111 OCT4 octets }; type record IMEI_SV { BIT1 oddevenIndicator, // '0'B hexstring digits length(16), BIT4 fillerDigit // filler '1111'B }; type record TMGI_and_MBMS_SessionID { BIT1 oddevenIndicator, BIT1 mCC_MNCIndicator, // 1: present BIT1 mBMS_SessionIdentityIndicator, // 1: present BIT2 spare, OCT3 mBMS_ServiceID, HEX1 mccDigit1, HEX1 mccDigit2, HEX1 mccDigit3, HEX1 mncDigit3, HEX1 mncDigit1, HEX1 mncDigit2, OCT1 mBMS_SessionIdentity } type record No_Identity { BIT1 oddevenIndicator, // '0'B (guessed) hexstring fillerDigits length(5) // length to be "3" if the GMM identification procedure is used }; // 24.008/ 10.5.1.5 MobileStationClassmark1 type record MobileStationClassmark1_TV { OCT1 elementIdentifier, //'???'H BIT3 rf_PowerCapability, BIT1 a5_1, BIT1 esind, BIT2 revisionLevel, BIT1 spare1_1 }; type record MobileStationClassmark1_V { BIT3 rf_PowerCapability, // class1 (000) (for GSM+DCS+PCS) // class2 (001) (for GSM+DCS+PCS) // class3 (010) (for GSM+DCS+PCS) // class4 (011) (only for GSM) // class5 (100) (only for GSM) BIT1 a5_1, // encryption algor. A5/available 1 (1) // encryption algor. A5/1 available not (0) BIT1 esind, BIT2 revisionLevel, BIT1 spare1_1 }; // 24.008/ 10.5.1.6 MobileStationClassmark2 //4th octet: type record MobileStationClassmark2_oct4 { BIT1 fc, // '0'B no MS support of E/R_GSM // '1'B MS support of E/R_GSM ////BIT2 spare1_2, // '00'B removed by ethbaat BIT1 vgcs,//'0'B no VGCS capability //'1'B VGCS capability and notifications wanted BIT1 vbs, //'0'B no VBS capability, // '1'B VBS capability and notifications wanted BIT1 sm_Capability, // '0'B SM capbility present not // '1'B SM capbility present BIT2 ss_ScreenIndicator, // '00'B default value of phase1 (GSM+DCS) reserved or (PCS) // '01'B capability of notation ellipsis // '10'B for future use // '11'B for use future BIT1 ps_Capability, // 'x'B ignored, received if BIT1 spare2_1 // '0'B }; //5th octet ( Table 10.5.6a ): type record MobileStationClassmark2_oct5 { BIT1 a5_2, // '0'B encryption algorithm A5/2 available not(0) // '1'B encryption algorithm A5/available 2 (1) BIT1 a5_3, // '0'B encryption algorithm A5/3 available not(0) // '1'B encryption algorithm A5/available 3 (1) //removed by ethbaat: BIT5 spare3_5, // '00000'B BIT1 cmsp, BIT1 solsa, BIT1 ucs2, BIT1 lcsva_cap, BIT1 spare5_7, BIT1 cm3 // '0'B no additional capability info // '1'B The MS supports options that are indicated in classmark 3 IE // (additional info capability) }; type record MobileStationClassmark2_LV { LIN1 lengthIndicator, // '01'O..'03'O BIT3 rf_PowerCapability, // '000'B class1 (for GSM+DCS+PCS) // '001'B class2 (for GSM+DCS+PCS) // '010'B class3 (for GSM+DCS+PCS) // '011'class4 B (only for GSM) // '100'class5 B (only for GSM) BIT1 a5_1, // '0'B encryption algorithm A5/1 available (0) // '1'B encryption algorithm A5/1 not available 1 (1) BIT1 esind, // '0'B controlled early classmark sending option implemented not (0) // '1'B controlled early classmark sending implemented option (1) BIT2 revisionLevel, // '00'B reserved for phase1 (GSM+DCS) // '00'B reserved for GSM phase 1 (PCS) // '01'B used by phase2 MSs (GSM+DCS) // '01'B used by PCS1900 MSs phase1 (PCS) // '10'B used by MSs R99 supporting // '11'B reserved for future use BIT1 spare1_1, // '0'B MobileStationClassmark2_oct4 mobileStationClassmark2_oct4 optional, MobileStationClassmark2_oct5 mobileStationClassmark2_oct5 optional } with { variant (lengthIndicator) "LENGTHTO (rf_PowerCapability, a5_1, esind, revisionLevel, spare1_1, mobileStationClassmark2_oct4, mobileStationClassmark2_oct5)"}; type record MobileStationClassmark2_TLV { OCT1 elementIdentifier, MobileStationClassmark2_LV mobileStationClassmark2LV } with { variant "PRESENCE (elementIdentifier = '11'O)"; }; //********************************************************************** // 24.008/ 10.5.1.6 5th octet ( Table 10.5.6a ): // almost the same as MobileStationClassmark2_LV, but // _TLV ie elementIdentifier is present // oct4 and oct5 is mandatory // The record name is inherited from (and used in) old test cases //********************************************************************** type record ClassmarkInformationType2_forUMTS { OCT1 elementIdentifier, //'33'O instead of '12'O (normal Classmark2) LIN1 lengthIndicator, //always '03'O (unlike normal ClassMark2, which can be 2 or 3) BIT3 rf_PowerCapability, // '000'B class1 (for GSM+DCS+PCS) // '001'B class2 (for GSM+DCS+PCS) // '010'B class3 (for GSM+DCS+PCS) // '011'class4 B (only for GSM) // '100'class5 B (only for GSM) BIT1 a5_1, // '0'B encryption algorithm A5/1 available not (0) // '1'B encryption algorithm A5/available 1 (1) BIT1 esind, //'0'B controlled early classmark sending option implemented not (0) // '1'B controlled early classmark sending implemented option (1) BIT2 revisionLevel, // '00'B reserved for phase1 (GSM+DCS) // '00'reserved B (PCS) // '01'B used by phase2 MSs (GSM+DCS) // '01'B used by PCS1900 MSs phase1 (PCS) BIT1 spare1_1, // '0'B BIT1 fc, // '0'B no MS' support of E/R_GSM // '1'B MS' support of E/R_GSM BIT1 vgcs,//'0'B no VGCS capability //'1'B VGCS capability and notifications wanted BIT1 vbs, //'0'B no VBS capability, // '1'B VBS capability and notifications wanted BIT1 sm_Capability, // '0'B SM capbility present not // '1'B SM capability present BIT2 ss_ScreenIndicator, // '00'B default value of phase1 (GSM+DCS) // '00'reserved B (PCS) // '01'B capability of notation ellipsis // '10'B for future use // '11'B for use future BIT1 ps_Capability, // '0'B or '1'B ignored, received if BIT1 spare2_1, // '0'B, BIT1 a5_2, // '0'B encryption algorithm A5/2 available not (0) // '1'B encryption algorithm A5/available 2 (1) BIT1 a5_3, // '0'B encryption algorithm A5/3 available not (0) // '1'B encryption algorithm A5/available 3 (1) //BIT5 spare3_5, // '00000'B BIT1 cmsp, BIT1 solsa, BIT1 ucs2, BIT1 lcsva_cap, BIT1 spare5_7, BIT1 cm3 // '0'B no additional capability info // '1'B additional info capability } with { variant (lengthIndicator) "LENGTHTO (rf_PowerCapability, a5_1, esind, revisionLevel, spare1_1, fc, vgcs, vbs, sm_Capability, ss_ScreenIndicator, ps_Capability, spare2_1, a5_2, a5_3, //spare3_5, cmsp,solsa,ucs2,lcsva_cap,spare5_7, cm3)"}; //24.008/ 10.5.1.7 type record MobileStationClassmark3_TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, OCTN valuePart } with { variant "PRESENCE (elementIdentifier = '20'O)" variant (lengthIndicator) "LENGTHTO (valuePart)" }; type record MobileStationClassmark3_LV { LIN1 lengthIndicator, OCTN valuePart } with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; // used in: PDU_ML3_Setup_MSC_MS, PDU_ML3_CallProceeding, // PDU_ML3_CMServiceRequest type record UTRACSGCellsReporting { BIT1 reportingofUTRANCSGCellsSupport } with { variant "FIELDORDER(msb)" } type record VAMOSLevel { BIT2 vAMOSSupport } with { variant "FIELDORDER(msb)" } //24.008/ 10.5.1.8 Spare half octet ---- not used //24.008/ 10.5.1.9 Descriptive group or broadcast call reference type record DescriptiveGroupOrBroadcastCallReference_V { bitstring binaryCodingOfGroupOrBroadcastCallReference length (27), BIT1 sF, BIT1 aF, BIT3 callPriority, BIT4 cipheringInformation, BIT4 spare } with { variant (binaryCodingOfGroupOrBroadcastCallReference,sF,aF, callPriority,cipheringInformation,spare) "FIELDORDER(msb)"}; //10.5.1.10 Group Cipher Key Number type record groupCipherKeyNumber_TV { BIT4 valuePart, BIT4 elementIdentifier }; type BIT4 groupCipherKeyNumber_V; //24.008/10.5.1.10a type record PdAndSapi { BIT4 protocolDiscriminator, BIT2 sapi, BIT2 spare2 }; //10.5.1.11 Priority Level type record PriorityLevel_ML3 { BIT3 callPriority, // B'...._000 no applied priority // B'...._001 call priority level 4 // B'...._010 call priority level 3 // B'...._011 call priority level 2 // B'...._100 call priority level 1 // B'...._101 call priority level 0 // B'...._110 call priority level B // B'...._111 call priority level A BIT1 spare1_1, // B'....0.._ // modified by ethbaat:OCT1 elementIdentifier for... BIT4 elementIdentifier // B'1000' type 1 IEI Priority level }; //ending "_ML3" added, because ambiguities of (RANAP is also using this name) //10.5.1.12 Core Network System Information // not implemented yet //10.5.1.13 PLMN List type record PLMNListTLV { BIT7 elementIdentifier, BIT1 spare1, LIN1 lengthIndicator, octetstring digits length(3..45) // collapsed into one octetstring // instead of digits } with { variant "PRESENCE (elementIdentifier = '1001010'B)"; variant (lengthIndicator) "LENGTHTO (digits)"}; //10.5.1.15 type record MS_NetworkFeatureSupportTV { BIT1 extendedPeriodicTimers, BIT3 spare, BIT4 elementIdentifier } // GPRS Timer3 - 10.5.7.4a type record GPRSTimer3TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, GPRSTimer3V gprsTimer3V } with { variant (lengthIndicator) "LENGTHTO (gprsTimer3V)" }; type record GPRSTimer3V { BIT5 timerValue, BIT3 unit }; //**************************************************************************** // Common elements in CC and SS: //**************************************************************************** //24.008/10.5.4.11 Cause type record Diagnostics { octetstring data // to split into pieces???? } with { variant "EXTENSION_BIT (yes)"}; // This type is added for handling extension bit in octet 3 of Cause IE type record ML3_Cause_oct3 { BIT4 location, // '0000'user B // '0001'B private network, local user // '0010'B public network, user local // '0011'B transit network // '0100'B public network, user remote // '0101'B private network, remote user // '0111'B network international // '1010'B Network beyond interworking pt. BIT1 spare1_1, // '0'B BIT2 codingStandard, // '00'B coding according Q.931 // '01'B reserved for standards other // '10'B National standard // '11'B standard other (e.g. one defined for GSM PLMNs) BIT1 ext1, // '0'B or '1'B //octet3a: BIT7 recommendation optional, BIT1 ext2 optional // B'1...... } with { variant "EXTENSION_BIT (yes)"}; type record ML3_Cause_oct4 { BIT7 causeValue, // see 12/FS BIT1 ext3 // B'1...... } with { variant "EXTENSION_BIT (yes)"}; type record ML3_Cause_LV { LIN1 lengthIndicator, // 2..30 ML3_Cause_oct3 oct3, ML3_Cause_oct4 oct4, Diagnostics diagnostics optional // size: 1..27 } with { variant (lengthIndicator) "LENGTHTO (oct3, oct4, diagnostics) "}; //24.008/10.5.4.11 type record ML3_Cause_TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, // 2..30 ML3_Cause_oct3 oct3, ML3_Cause_oct4 oct4, Diagnostics diagnostics optional // size: 1..27 } with { variant (lengthIndicator) "LENGTHTO (oct3, oct4, diagnostics) "}; //10.5.4.15 Facility IE (see also 24.080/3.6) type record Facility_TLV { OCT1 elementIdentifier, // H'1C LIN1 lengthIndicator, // 0..? OCTN facilityInformation optional //see 24.080/3.6 } with { variant (lengthIndicator) "LENGTHTO (facilityInformation)"}; type record Facility_LV { LIN1 lengthIndicator, // 0..? OCTN facilityInformation optional //see 24.080/3.6 } with { variant (lengthIndicator) "LENGTHTO (facilityInformation)"}; //24.008/10.5.4.24 SS Version Indicator // used by SS and CC type record SS_VersionIndicator { OCT1 elementIdentifier, // H'7F LIN1 lengthIndicator, // 0..? OCTN ss_VersionIndicatorContents optional //see 24.080 !!! } with { variant (lengthIndicator) "LENGTHTO (ss_VersionIndicatorContents)"}; //10.5.4.32 Supported Codec List type record codec { OCT1 systemIdentification1, OCT1 lengthOfBitmap1, OCT1 codecBitmap1_bits1to8, OCT1 codecBitmap1_bits9to16 }; type record of codec CodecList_ML3; type record SupportedCodecList { OCT1 elementIdentifier, LIN1 lengthIndicator, // CodecList_ML3 codecList } with { variant "PRESENCE (elementIdentifier = '40'O)"; variant (lengthIndicator) "LENGTHTO( codecList )" }; // 10.5.7.8 type record DevicePropertiesTV { BIT1 lowPriority, BIT3 spare, BIT4 elementIdentifier } //**************************************************************************** // Common elements in GMM and MM: //**************************************************************************** // 10.5.5.8a - P-TMSI Signature 2 type record P_TMSISignature2TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, OCT3 valueField } with { variant "PRESENCE (elementIdentifier = '19'O)"; variant (lengthIndicator) "LENGTHTO (valueField)" }; // 10.5.5.29 - P-TMSI Type type record P_TMSI_TypeTV { BIT1 pTMSI_TypeValue, BIT3 spare, BIT4 elementIdentifier } with { variant "PRESENCE (elementIdentifier = '1110'B)" }; //10.5.5.15a - Routing Area Identification type record RoutingAreaIdentification2TLV { OCT1 elementIdentifier, LIN1 lengthIndicator, OCT6 routingAreaIdentification2 } with { variant "PRESENCE (elementIdentifier = '1B'O)"; variant (lengthIndicator) "LENGTHTO (routingAreaIdentification2)" }; //**************************************************************************** // Common elements in RRM and MM: //**************************************************************************** //10.5.3.14 Additional Update Parameter type record AdditionalUpdateParameterTV { BIT1 cSMT, BIT1 cSMO, BIT1 spare2, BIT1 spare3, BIT4 elementIdentifier } with { variant "PRESENCE (elementIdentifier = '1100'B)" } }//end of module with { extension "version R1B" encode "RAW" }