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

module  MobileL3_SS_Types
{

import from General_Types all;
import from MobileL3_CommonIE_Types all;

//****************************************************************************
// 24.080/2.3 Facility
// see also 9.3.9.1 (NW->MS) and 9.3.9.2 (MS->NW) Facility  
//****************************************************************************
type record PDU_ML3_SS_Facility
{
  BIT6  messageType, // '111010'B; facilityIEI 
  BIT2  nsd,
  Facility_LV facility  // see 24.008/10.5.4.15 in Mobility_L3_CommonIE_Types and
                        // see 24.080/3.6 how to extract
} 

//****************************************************************************************
//24.080/2.4.1 Register (NW->MS)
//****************************************************************************************
type record PDU_ML3_SS_Register_NW_MS
{
  BIT6 messageType,  //    '111011'B Register
  BIT2 nsd,
  Facility_TLV facility 
};

//****************************************************************************************
//24.080/2.4.1 Register ( MS->NW)
//****************************************************************************************
type record PDU_ML3_SS_Register_MS_NW
{
  BIT6  messageType,  //    '111011'B Register
  BIT2  nsd,
  Facility_TLV  facility,
  SS_VersionIndicator ss_version optional
} with { variant "TAG (
               ss_version,   elementIdentifier = '7F'O;)"};


//****************************************************************************
// 2.5 Release Complete
// see also 24.008/9.3.19.1
//****************************************************************************
type record PDU_ML3_SS_ReleaseComplete
{
  BIT6  messageType, //    '101010'B ReleaseComplete  
  BIT2  nsd, // sent by the NW: '00'B
  ML3_Cause_TLV      cause      optional,
  Facility_TLV       facility   optional
} with { variant "TAG (
                cause,      elementIdentifier = '08'O;
                facility,   elementIdentifier = '1C'O;)"};
 
/****************************************************************************************
  MobileL3   Supplementary Service Management
  TS 24.080 / 2.2
 ****************************************************************************************/
type union PDU_ML3_SS_MS_NW
{
  PDU_ML3_SS_Facility                 facility,
  PDU_ML3_SS_Register_MS_NW           register,
  PDU_ML3_SS_ReleaseComplete          releaseComplete_MS_NW
} with { variant "TAG (
               facility,               messageType ='111010'B;
               register,               messageType ='111011'B;
               releaseComplete_MS_NW,  messageType ='101010'B;)"};
 
type union PDU_ML3_SS_NW_MS
{
  PDU_ML3_SS_Facility                 facility,
  PDU_ML3_SS_Register_NW_MS           register,
  PDU_ML3_SS_ReleaseComplete          releaseComplete_NW_MS
} with { variant "TAG (
               facility,               messageType ='111010'B;
               register,               messageType ='111011'B;
               releaseComplete_NW_MS,  messageType ='101010'B;)"};

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

