///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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_MM_Types.ttcn
//  Rev:                R1B
//  Prodnr:             CNL 113 832
//  Contact:            http://ttcn.ericsson.se
//  Reference:          3GPP TS 24.008 v13.4.0


module  MobileL3_MM_Types
{

import from General_Types           all;
import from MobileL3_CommonIE_Types all;

//============================================================================
// 24.008/ 10.5.3  Mobility Management information elements
//============================================================================

//10.5.3.1  AuthenticationParRAND
//**********************************************************************
type record AuthenticationParameterRANDTV
{
  OCT1               elementIdentifier,
  OCT16              randValue
} with { variant "PRESENCE (elementIdentifier = '21'O)"; };

//10.5.3.1.1 Authentication Par AUTN (UMTS auth. ch. only)
//**********************************************************************
type record AuthenticationParameterAUTNTLV
{
  OCT1               elementIdentifier,
  LIN1               lengthIndicator,
  OCT16              autnValue
} with { variant (lengthIndicator) "LENGTHTO (autnValue)"};

//10.5.3.2 Authentication Response parameter
//**********************************************************************
type record  AuthenticationResponseParameterTV
{
  OCT1               elementIdentifier,
  OCT4               valueField   length (4)
} with { variant "PRESENCE (elementIdentifier = '22'O)"; };

//10.5.3.2.1 Authentication Response parameter (extension)
//**********************************************************************
type record AuthenticationResponseParameterUMTSTLV
{
  OCT1               elementIdentifier,
  LIN1               lengthIndicator,
  octetstring        valueField     length (1..12)
} with { variant (lengthIndicator) "LENGTHTO (valueField)"};


//10.5.3.2.2 Authentication Failure parameter (UMTS authentication challenge only)
//**********************************************************************
type record AuthenticationFailureParametersTLV
{
  OCT1               elementIdentifier,
  LIN1               lengthIndicator,
  octetstring        valueField     length (14)
} with { variant "PRESENCE (elementIdentifier = '30'O)";
         variant (lengthIndicator) "LENGTHTO (valueField)"};

//10.5.3.5 Location Update Type
//****************************************************************************
type record LocationUpdatingType
{
  BIT2               lut, // LU  Normal  (00)
                          // LU  Periodic  (01)
                          // Attach  IMSI  (10)
                          // reserved    (11)
  BIT1               spare1_1, // 0
  BIT1               fop   // Follow Pending on (1), not (0)
};

//10.5.3.5a Network Name
//****************************************************************************
type record  NetworkNameTLV
{
  BIT7               elementIdentifier,
  BIT1               spare1,
  LIN1               lengthIndicator,
  NetworkNameV       valueField
} with { variant (lengthIndicator) "LENGTHTO (valueField)"};


type record  NetworkNameV
{
  BIT3               nSpareBits,
  BIT1               addCI,
  BIT3               codingScheme,
  BIT1               ext1, //'1'B
  octetstring        textString //     length (0..infinity)
  // actually the upper limit depends on the max size of the PDU, see 44.006
};

//10.5.3.7 Follow-on Proceed
//****************************************************************************
type Type2 FollowOnProceed; //'A1'O

//10.5.3.8 TimeZone
//****************************************************************************
type record TimeZoneTV
{
  BIT7               elementIdentifier,
  BIT1               spare,
  TimeZoneV          valueField
} with { variant "PRESENCE (elementIdentifier = '1000110'B)"; };  //'46'O  7 bits

type record TimeZoneV
{
  OCT1               timeZone
};

//10.5.3.9 Time Zone And Time
//****************************************************************************
type record TimeZoneAndTimeTV
{
  BIT7               elementIdentifier,
  BIT1               spare,
  TimeZoneAndTimeV   valueField
} with { variant "PRESENCE (elementIdentifier = '1000111'B)"; };  //'47'O  7 bits;


type record TimeZoneAndTimeV
{
  OCT1               year,
  OCT1               month,
  OCT1               day,
  OCT1               hour,
  OCT1               minute,
  OCT1               second,
  OCT1               timeZone
};

//10.5.3.10 CTS permission
//**********************************************************************
type Type2 CTS_Permission;

//10.5.3.11 LSA identifier (Localised Service Area)
//**********************************************************************
type record  LSA_IdentifierTLV
{
  BIT7               elementIdentifier,
  BIT1               spare,
  LIN1               lengthIndicator,
  LSA_IdentifierV    valueField
} with { variant "PRESENCE (elementIdentifier = '1001000'B)";  //'48'O  7 bits
         variant (lengthIndicator) "LENGTHTO (valueField)"};

type record LSA_IdentifierV
{
  octetstring lsa_id length (0..3)
};

//10.5.3.12 Daylight Saving Time
//**********************************************************************
type record DaylightSavingTimeTLV
{
  OCT1               elementIdentifier,
  LIN1               lengthIndicator,
  DaylightSavingTimeV valueField
} with { variant "PRESENCE (elementIdentifier = '49'O)";
         variant (lengthIndicator) "LENGTHTO (valueField)"};

type record DaylightSavingTimeV
{
  BIT2               valueField,
  BIT6               spare     // Shall be set to 000000
};

//10.5.3.13 Emergency Number List
//**********************************************************************
type record EmergencyNumberListTLV
{
  OCT1                 elementIdentifier,
  LIN1                 lengthIndicator,
  EmergencyNumberListV emergencyNumberListV
} with { variant "PRESENCE (elementIdentifier = '34'O)";
         variant (lengthIndicator) "LENGTHTO (emergencyNumberListV)"};

type record of EmergencyNumber EmergencyNumberListV

type record EmergencyNumber
{
  LIN1                     lengthIndicator,
  EmergencyServiceCategory emergencyServiceCategory,
  hexstring                emergencyNumber        length (1..44)
} with { variant (lengthIndicator) "LENGTHTO (emergencyServiceCategory,emergencyNumber)";
         variant "PADDING(yes)";
         variant "PADDING_PATTERN('1111'B)"};

type record EmergencyServiceCategory
{
  BIT5               valueFiled,
  BIT3               spare   //'000'B
};

//10.5.3.14 Additional Update Parameter
//moved into MobileL3_CommonIE_Types


//10.5.3.16 MM Timer
//**********************************************************************
type record MM_TimerTLV
{
  OCT1                 elementIdentifier,
  LIN1                 lengthIndicator,
  MM_TimerV            valueField
} with { variant "PRESENCE (elementIdentifier = '36'O)";
         variant (lengthIndicator) "LENGTHTO (valueField)"};

type record MM_TimerV
{
  BIT5               timerValue,
  BIT3               unit
}

//============================================================================
// 24.008/9.2 Messages for mobility management (MM)
//============================================================================

//**********************************************************************
// Security Messages
//**********************************************************************

// 9.2.1 Authentication Reject
//**********************************************************************
type record PDU_ML3_AuthenticationReject
{
  BIT6  messageType, // '010001'B  (AuthenticationReject)
  BIT2  nsd
};

// 9.2.2 Authentication Request
//**********************************************************************
type record PDU_ML3_AuthenticationRequest
{
  BIT6  messageType, // '010010'B
  BIT2  nsd,
  CipheringKeySequenceNumberV   cipheringKeySequenceNumber,
  BIT4                          spare2_4, // B'0000
  OCT16                         authenticationParRAND,
  AuthenticationParameterAUTNTLV  authenticationParAUTN    optional
      // added by ethcky acc to 10/155 17_1/APT 210 26/1 Uen Rev A
} with { variant "TAG (
                authenticationParAUTN, elementIdentifier = '20'O ) "};

// 9.2.3 Authentication Response
//****************************************************************************
type record PDU_ML3_AuthenticationResponse
{
  BIT6  messageType, // '010100'B  (AuthenticationResponse)
  BIT2  nsd,
  OCT4  authenticationParSRES, //10.5.3.2
  AuthenticationResponseParameterUMTSTLV  authenticationParSRESext  optional
} with { variant "TAG (authenticationParSRESext, elementIdentifier = '21'O )"};

// 9.2.3a Authentication Failure
//****************************************************************************
type record PDU_ML3_AuthenticationFailure
{
  BIT6  messageType, // '011100'B  (AuthenticationFailure)
  BIT2  nsd,
  OCT1  rejectCause, //10.5.3.6
  AuthenticationFailureParametersTLV  authenticationParFailure  optional
} with { variant "TAG (authenticationParFailure , elementIdentifier = '22'O ) " };

//**********************************************************************
// Mobility Management Message Types (TS 24.008/ chapter 9)
// Connection management (CM) messages
//**********************************************************************

// 9.2.4 CM Re-establishment Request
//**********************************************************************
type record PDU_ML3_CMReestablishmentRequest
{
  BIT6                          messageType,      // '101000'B
  BIT2                          nsd,
  CipheringKeySequenceNumberV   cipheringKeySequenceNumber,
  BIT4                          spare,
  MobileStationClassmark2_LV    mobileStationClassmark2,
  MobileIdentityLV              mobileIdentityLV,
  LocationAreaIdentification_TV locationAreaIdentification optional,
  DevicePropertiesTV            deviceProperties  optional  
} with { variant "TAG (locationAreaIdentification, elementIdentifier = '13'O;
                       deviceProperties,           elementIdentifier = '1101'B;) 
"};

// 9.2.5 CM Service Accept (NW->MS)
//**********************************************************************
type record PDU_ML3_CMServiceAccept
{
  BIT6  messageType, //    '100001'B
  BIT2  nsd
};

// 9.2.5a CMServicePrompt (NW->MS)
//**********************************************************************
type record PDU_ML3_CMServicePrompt
{
  BIT6  messageType, //    '100101'B
  BIT2  nsd,
  PdAndSapi pd_sapi
};

// 9.2.6 CMServiceReject (NW->MS)
//**********************************************************************
type record PDU_ML3_CMServiceReject
{
  BIT6  messageType, //    '100010'B
  BIT2  nsd,
  OCT1  rejectCause, //10.5.3.6
  MM_TimerTLV t3246_Value optional     
};

// 9.2.7 CM Service Abort (MS->NW to request the abortion)
//**********************************************************************
type record PDU_ML3_CMServiceAbort
{
  BIT6  messageType, //   '100011'B
  BIT2  nsd
};

// 9.2.8  Abort (NW->MS to initiate the abortion)
//**********************************************************************
type record PDU_ML3_Abort
{
  BIT6  messageType, //    '100010'B
  BIT2  nsd,
  OCT1  rejectCause //10.5.3.6
};

// 9.2.9 CM Service Request (MS->NW)
//**********************************************************************
type record PDU_ML3_CMServiceRequest
{
  BIT6  messageType,//    '100100'B
  BIT2  nsd,
  BIT4  cm_ServiceType,  // '0001'B establishment  MOC
                         // '0010'B Emergency Call
                         // '0100'SMS  B
                         // '1000'B SS activation
  CipheringKeySequenceNumberV cipheringKeySequenceNumber,
  MobileStationClassmark2_LV  mobileStationClassmark2,
  MobileIdentityLV            mobileIdentity,
  PriorityLevel_ML3           priorityLevel   optional,
  AdditionalUpdateParameterTV additionalUpdateParameterTV optional,
  DevicePropertiesTV          deviceProperties optional
} with { variant "TAG (priorityLevel,    elementIdentifier = '1000'B; 
                       deviceProperties, elementIdentifier = '1101'B;) 
"};

//9.2.10 Identity Request
//**********************************************************************
type record PDU_ML3_IdentityRequest
{
  BIT6  messageType, //   '011000'B ( IdentityRequest )
  BIT2  nsd,
  BIT3  identityType,  // IMSI:'001'B IMEI:'010'B IMEISV:'011'B
                       //(TMSI:'100'B not allowed?) 10.5.3.4
  BIT5  spare1_5       // '00000'B
};

//9.2.11 Identity Response
//**********************************************************************
type record PDU_ML3_IdentityResponse
{
  BIT6  messageType,  //    '011001'B (IdentityResponse)
  BIT2  nsd,
  MobileIdentityLV  mobileIdentityLV,
  P_TMSI_TypeTV     p_TMSI_TypeTV optional,
  RoutingAreaIdentification2TLV routingAreaIdentification2TLV optional,
  P_TMSISignature2TLV p_TMSISignature2TLV optional
};

//9.2.12 IMSI Detach Indication
//**********************************************************************
type record PDU_ML3_IMSI_DetachIndication
{
   BIT6  messageType, //    '000001'IMSI Detach Indication
   BIT2  nsd,
   MobileStationClassmark1_V    mobileStationClassmark1,
   MobileIdentityLV             mobileIdentityLV
};

//****************************************************************************
// 24.008/9 Mobility Management message contents
//****************************************************************************

// 9.2.13 Location Update Accept
//****************************************************************************
type record PDU_ML3_LocationUpdateAccept
{
  BIT6  messageType, // '000010'B  (LocationUpdateRequest)
  BIT2  nsd,
  LocationAreaIdentification_V  locationAreaIdentification,
  MobileIdentityTLV             mobileIdentityTLV           optional,
  Type2                         followOnProceed             optional,
  CTS_Permission                cTS_Permission              optional,
  PLMNListTLV                   equivalentPLMNs             optional,
  EmergencyNumberListTLV        emergencyNumberList         optional,
  GPRSTimer3TLV                 perMS_T3212                 optional
} with { variant "TAG ( mobileIdentityTLV,  elementIdentifier = '0010111'B;  //'17'O;
                        followOnProceed,    elementIdentifier = 'A1'O;
                        cTS_Permission,     elementIdentifier = 'A2'O;
                        equivalentPLMNs,    elementIdentifier = '1001010'B;  //'4A'O;
                        emergencyNumberList,  elementIdentifier = '34'O;) "};

// 9.2.14 Location Update Reject (NW->MS)
//****************************************************************************
type record PDU_ML3_LocationUpdateReject
{
  BIT6  messageType,  // '000100'B (LocationUpdateReject)
  BIT2  nsd,
  OCT1  rejectCause,   // see 10.5.3.6
  MM_TimerTLV  t3246_Value optional
};

//9.2.15 Location Update Request (MS->NW)
//****************************************************************************
type record PDU_ML3_LocationUpdateRequest
{
  BIT6  messageType, // B'_001000  (LocationUpdateRequest)
  BIT2  nsd,
  LocationUpdatingType               locationUpdatingType,
  CipheringKeySequenceNumberV        cipheringKeySequenceNumber,
  LocationAreaIdentification_V       locationAreaIdentification,
  MobileStationClassmark1_V          mobileStationClassmark1,
  MobileIdentityLV                   mobileIdentityLV,
  ClassmarkInformationType2_forUMTS  classmarkInformationType2_forUMTS  optional,
  AdditionalUpdateParameterTV        additionalUpdateParameterTV        optional,
  DevicePropertiesTV                 deviceProperties                   optional,
  MS_NetworkFeatureSupportTV         mS_NetworkFeatureSupport           optional
} with {
  variant "TAG (
    deviceProperties,                elementIdentifier = '1101'B;
    mS_NetworkFeatureSupport,        elementIdentifier = '1110'B;  //E
  )"
};

//9.2.15a MM information
//****************************************************************************
type record PDU_ML3_MMInformation
{
  BIT6  messageType,    //
  BIT2  nsd,
  NetworkNameTLV        fullNetworkName     optional,
  NetworkNameTLV        shortNetworkName    optional,
  TimeZoneTV            localtimeZone       optional,
  TimeZoneAndTimeTV     univTime            optional,
  LSA_IdentifierTLV     lSAIdentity         optional,
  DaylightSavingTimeTLV networkDST          optional
} with { variant "TAG (
              fullNetworkName,  elementIdentifier = '1000011'B;   // '43'O;
              shortNetworkName, elementIdentifier = '1000101'B;   // '45'O;
              localtimeZone,    elementIdentifier = '1000110'B;   // '46'O;
              univTime,         elementIdentifier = '1000111'B;   // '47'O;
              lSAIdentity,      elementIdentifier = '1001000'B;   //' 48'O;
              networkDST,       elementIdentifier = '49'O;)"};

//9.2.16 MM Status
//****************************************************************************
type record PDU_ML3_MMStatus
{
  BIT6  messageType,
  BIT2  nsd,
  OCT1  rejectCause //10.5.3.6
 };

//9.2.17 TMSI reallocation command (NW->MS)
//****************************************************************************
type record PDU_ML3_TMSI_ReallocationCommand
{
  BIT6  messageType,    // '011010'B
  BIT2  nsd,
  LocationAreaIdentification_V  locationAreaIdentification,
  MobileIdentityLV              mobileIdentity
};

//9.2.18 TMSI reallocation complete (MS->NW)
//****************************************************************************
type record PDU_ML3_TMSI_ReallocationComplete
{
  BIT6  messageType,    //  '011011'B
  BIT2  nsd
};

//9.2.19 MM Null (MS->NW)
//****************************************************************************
type record PDU_ML3_MMNull
{
  BIT6  messageType,    //  '110000'B
  BIT2  nsd
};


// ***************************************************************************
// *     Mobility Management Messages
// ***************************************************************************
// 24.008/ Table 10.2
type union PDU_ML3_MM
{
  PDU_ML3_IMSI_DetachIndication    imsiDetachIndication,
  PDU_ML3_LocationUpdateAccept     locationUpdateAccept,
  PDU_ML3_LocationUpdateReject     locationUpdateReject,
  PDU_ML3_LocationUpdateRequest    locationUpdateRequest,

  PDU_ML3_AuthenticationReject       authenticationReject,
  PDU_ML3_AuthenticationRequest      authenticationRequest,
  PDU_ML3_AuthenticationResponse     authenticationResponse,
  PDU_ML3_AuthenticationFailure      authenticationFailure,
  PDU_ML3_IdentityRequest            identityRequest,
  PDU_ML3_IdentityResponse           identityResponse,
  PDU_ML3_TMSI_ReallocationCommand   tmsiReallocCommand,
  PDU_ML3_TMSI_ReallocationComplete  tmsiReallocComplete,

  PDU_ML3_CMServiceAbort           cMServiceAbort,
  PDU_ML3_CMServiceAccept          cMServiceAccept,
  PDU_ML3_CMServiceReject          cMServiceReject,
  PDU_ML3_CMServiceRequest         cMServiceRequest,
  PDU_ML3_CMServicePrompt          cMServicePrompt,
  PDU_ML3_CMReestablishmentRequest cMReEstablReq,
  PDU_ML3_Abort                    abort,

  PDU_ML3_MMNull                   mMNull,
  PDU_ML3_MMStatus                 mMStatus,
  PDU_ML3_MMInformation            mMInformation
} with { variant "TAG (
                imsiDetachIndication,   messageType ='000001'B; //registration msgs
                locationUpdateAccept,   messageType ='000010'B;
                locationUpdateReject,   messageType ='000100'B;
                locationUpdateRequest,  messageType ='001000'B;

                authenticationReject,   messageType ='010001'B;//security msgs
                authenticationRequest,  messageType ='010010'B;
                authenticationResponse, messageType ='010100'B;
                authenticationFailure,  messageType ='011100'B;
                identityRequest,        messageType ='011000'B;
                identityResponse,       messageType ='011001'B;
                tmsiReallocCommand,     messageType ='011010'B;
                tmsiReallocComplete,    messageType ='011011'B;

                cMServiceAbort,         messageType ='100011'B; //conn, mgmt
                cMServiceAccept,        messageType ='100001'B;
                cMServiceReject,        messageType ='100010'B;
                cMServiceRequest,       messageType ='100100'B;
                cMServicePrompt,        messageType ='100101'B;
                cMReEstablReq,          messageType ='101000'B;
                abort,                  messageType ='101001'B;

                mMNull,               messageType ='110000'B; //misc
                mMStatus,             messageType ='110001'B;
                mMInformation,        messageType ='110010'B;
              )"};

}//end of module
with {
extension "version R1B"
encode "RAW"
}

