From a814f263cc46d88736ef7cdb6466d78657855ca8 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 24 Jul 2017 13:21:35 +0200 Subject: Import BSSAP+, BSSGP, BSSMAP, GTP, GTPv2, LLC and MobileL3 this has been kindly provided by Ericsson and will soon (September-ish) be released officially as FOSS on the eclipse.org git server. --- .../doc/MobileL3_v13.4_Descr.doc | Bin 0 -> 90112 bytes .../doc/MobileL3_v13.4_PRI.doc | Bin 0 -> 68608 bytes .../src/MobileL3_CC_Types.ttcn | 1649 +++++++++++++ .../src/MobileL3_CommonIE_Types.ttcn | 680 ++++++ .../src/MobileL3_GMM_SM_Types.ttcn | 2532 ++++++++++++++++++++ .../src/MobileL3_MM_Types.ttcn | 572 +++++ .../src/MobileL3_RRM_Types.ttcn | 1834 ++++++++++++++ .../src/MobileL3_SMS_Types.ttcn | 765 ++++++ .../src/MobileL3_SS_Types.ttcn | 102 + .../src/MobileL3_Types.ttcn | 403 ++++ .../src/MobileL3_v13.4.0_ProtocolModule.grp | 38 + .../src/SS_DataTypes.asn | 502 ++++ MobileL3_v13.4.0_CNL113832_LATEST/src/SS_EncDec.cc | 438 ++++ .../src/SS_Errors.asn | 57 + .../src/SS_Operations.asn | 313 +++ .../src/SS_PDU_Defs.asn | 136 ++ .../src/SS_Protocol.asn | 67 + .../src/SS_Types.ttcn | 40 + 18 files changed, 10128 insertions(+) create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_Descr.doc create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_PRI.doc create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CC_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CommonIE_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_GMM_SM_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_MM_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_RRM_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SMS_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SS_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_Types.ttcn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_v13.4.0_ProtocolModule.grp create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_DataTypes.asn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_EncDec.cc create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Errors.asn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Operations.asn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_PDU_Defs.asn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Protocol.asn create mode 100644 MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Types.ttcn (limited to 'MobileL3_v13.4.0_CNL113832_LATEST') diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_Descr.doc b/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_Descr.doc new file mode 100644 index 00000000..ddbcb2f5 Binary files /dev/null and b/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_Descr.doc differ diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_PRI.doc b/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_PRI.doc new file mode 100644 index 00000000..c8358d16 Binary files /dev/null and b/MobileL3_v13.4.0_CNL113832_LATEST/doc/MobileL3_v13.4_PRI.doc differ diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CC_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CC_Types.ttcn new file mode 100644 index 00000000..d631abc1 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CC_Types.ttcn @@ -0,0 +1,1649 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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_CC_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.008 v13.4.0 + + +module MobileL3_CC_Types +{ + +import from General_Types all; +import from MobileL3_CommonIE_Types all; + +//============================================================================ +// 24.008/ 10.5.4 Call control information elements +//============================================================================ + +// 10.5.4.1 Extensions of codesets +//-- + +// 10.5.4.2 Locking shift procedure +//-- + +// 10.5.4.3 Non-locking shift procedure +//-- + +// 10.5.4.4 Auxiliary states +type record AuxiliaryStates_TLV +{ + OCT1 elementIdentifier, //24'O + LIN1 lengthIndicator, + BIT2 mPTYAuxiliaryState, + BIT2 holdAuxState, + BIT3 spare_3, + BIT1 ext //'1'B +} with { variant (lengthIndicator) "LENGTHTO(mPTYAuxiliaryState,holdAuxState, + spare_3,ext)"}; + +type record AuxiliaryStates_LV +{ + LIN1 lengthIndicator, + BIT2 mPTYAuxState, + BIT2 holdAuxiliaryState, + BIT3 spare_3, + BIT1 ext //'1'B +}with { variant (lengthIndicator) "LENGTHTO(mPTYAuxState,holdAuxiliaryState, + spare_3,ext)"}; + +//24.008/ 10.5.4.4a Backup Bearer Capacity (BBC) +type record BBC_octet3 +{ + BIT3 informationTransferCapability, // '000'speech B + // '001'B UDI + // '010'B 3.audio 1kHz + // '101'oITC B (see octet 5a) + // '110'B speech auxiliary + // '111'B reserved + BIT1 transferMode, // '0'B mode circuit + // '1'B packet mode + BIT1 codingStandard, // '0'B GSM/PCS coding standardized + // '1'B reserved + BIT2 radioChannelRequirement, // '01'B MSC/VLR to MS; + // '00'B MS (supports) towards MSC/VLR rate dual (half preferred) + // '01'B MS (supports) towards MSC/VLR full only rate + // '10'B rate dual (half preferred) + // '11'B rate dual (full preferred) + BIT1 extension_octet_3 + //'0'B or '1'B (THe RAW encoder will overwrite this bit) +} with { variant "EXTENSION_BIT (yes)"}; + +// "type record BC_octet4" is the same as "type record BC_octet4" + +type record BBC_octet5 +{ + BIT3 signallingAccessProtocol, // '001'B I.440/450 + // '010'B X.21 + // '011'B X.28 dedicated PID, ind. NUI + // '100'B X.28 dedicated PID, uni. NUI + // '101'B X.28 PID non_dedicated + // '110'B X.32 + BIT2 rateAdaptation, // '00'B no adaptation rate (RA) + // '01'B V.110/X.30 adaptation rate + // '10'B CCITT X.31 flag stuffing + // '11'B RA other (see octet 5a) + BIT2 accessId, // '00'B identifier octet + BIT1 extension_octet_5, // '0'B or '1'B (if no octet 5A following) + + //octet 5a + BIT3 spare2_3 optional, // B'...._000 + BIT2 otherRateAdaptation optional, // B'.._00.._ V.interworking 120 + BIT2 otherInformationTransferCapability optional, + // B'_00...._ interworking RDI + BIT1 extension_octet_5a optional // '1'B +} with { variant "EXTENSION_BIT (yes)"}; + +// BBC_octet6, BBC_octet7 not required + +type record BackupBearerCapacity +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + // the following octet fields representing an octet group + BBC_octet3 octet3, // 1- + BC_octet4 octet4 optional, //1 octet; opt. by def, but always fill in!!! + BBC_octet5 octet5 optional, //1-2 octets + BC_octet6 octet6 optional, //1-8 octets + BC_octet7 octet7 optional //1 octet +} with { variant (lengthIndicator) "LENGTHTO(octet3,octet4,octet5,octet6, + octet7)"}; + +// 10.5.4.5 Bearer Capacity +type record BC_octet7 +{ + BIT5 userInformationLayer2Protocol, //octet 7: + // '00110'B rec. X.25, level link + // '01000'B ISO 6429 + // '01001'B X.75 (teletex) + // '01010'B profile Videotext + // '01011'B FAX group 3 + // '01100'COPnoF1Ct B + // '01101'B X.75 (CAPI) + BIT2 layer2Id, // '10'B identifier octet + BIT1 extension_octet_7 // '1'B +} with { variant "EXTENSION_BIT (yes)"}; + +type record BC_octet6 +{ + BIT1 synchronous_asynchronous, // '0'synchronous B + // '1'B asynchronous + BIT4 userInformationLayer1Protocol, // '0000'B default layer protocol 1 + BIT2 layer1Id, // '01'B identifier octet + BIT1 extension_octet_6, // '0'B (octet 6a following) or '1'B + + // OCTET 6a: + BIT4 userRate optional, // '0001'B 0.kbps 3 (X.1 and V.110) + // '0010'B 1.kbps 2 (X.1 and V.110) + // '0011'B 2.kbps 4 (X.1 and V.110) + // '0100'B 4.kbps 8 (X.1 and V.110) + // '0101'B 9.kbps 6 (X.1 and V.110) + // '0110'B 12.0 transparent kbps + // '0111'B 1.2 kbps/75bps asymmetric + BIT1 numberDataBits optional, // '0'B bits 7 (data) + // '1'B bits 8 (data) + BIT1 negotiation optional, // '0'B inband negotiation possible not + BIT1 numberStopBits optional, // '0'B bit 1 + // '1'B 2 bits + BIT1 extension_octet_6a optional, // '0'B or '1'B + + // OCTET 6b: + BIT3 parity optional, // '000'odd B (number) + // '010'even B + // '011'B none + // '100'B forced 0 to + // '101'B forced to 1 + BIT1 nicOnRX optional, // '0'B no data accepted clock with + // '1'B data accepted with clock + BIT1 nicOnTX optional, // '0'B no data required clock with + // '1'B data required with clock + BIT2 intermediateRate optional, // '00'reserved B + // '01'B reserved + // '10'B kbps 8 + // '11'B 16 kbps + BIT1 extension_octet_6b optional, // '0'B or '1'B + + // OCTET 6c: + BIT5 modemType optional, // '00000'none B + // '00001'B V.21 + // '00010'B V.22 + // '00011'B V.22bis + // '00100'B V.23 + // '00101'B V.26ter + // '00110'B V.32 + // '00111'B modem for interfaces undefined + // '01000'B autobauding type 1 + // '11111'B V.42 + BIT2 connectionElement optional, // '00'transparent B (T) + // '01'non_transparent B (NT) + // '10'B both, preferred T + // '11'B both, NT preferred + BIT1 extension_octet_6c optional,//'0'B or '1'B no octet following 6d + + // OCTET 6d: + BIT5 fixedNetworkUserRate optional, // '00000'B FNUR applicable not + // '00001'B 9.kbps 6 (X.1 and V.110) + // '00010'B 14.kbps 4 (X.1 and V.110) + // '00011'B 19.kbps 2 (X.1 and V.110) + // '00100'B 28.kbps 8 (X.1 and V.110) + // '00101'B 38.kbps 4 (X.1 and V.110) + // '00110'B 48.kbps 0 (X.1 and V.110) + // '00111'B 56.kbps 0 (X.1 and V.110) + // '01000'B 64.0 transparent kbps + BIT2 otherModemType optional, //'00'B no other modem specified type + // '11'B V.34 + BIT1 extension_octet_6d optional,//'0'B or '1'B no octet following 6e + + // OCTET 6e: + BIT3 maxNumberOfTrafficChannels optional, // '000'B TCH 1 + // '001'B 2 TCH + // '010'B TCH 3 + // '011'B 4 TCH + // '100'B TCH 5 + // '110'B 6 TCH + // '101'B TCH 7 + // '111'B 8 TCH + BIT4 acceptableChannelCodings optional,//'0'B TCH/F4.8 not acceptable + // '1'B TCH/F4.8 acceptable + // '0'B TCH/F9.6 not acceptable + // '1'B TCH/F9.6 acceptable + // '0'spare B + // '0'B TCH/F14.4 not acceptable + // '1'B TCH/F14.acceptable 4 + BIT1 extension_octet_6e optional,//'0'B or '1'B _ no octet following 6d + + // OCTET 6f: + BIT4 wantedAirInterfaceUserRate optional, + //octet 6f (MS to MSC/VLR only): + // '0000'B WAIUR applicable not + // '0001'B 9.6 kbps + // '0010'B 14.kbps 4 + // '0011'B 19.2 kbps + // '0100'B 19.kbps 2 + // '0101'B 28.8 kbps + // '0110'B 38.kbps 4 + // '0111'B 43.2 kbps + // '1000'B 57.kbps 6 + // '1001'B 38.4 kbps + // '1010'B 38.kbps 4 + // '1011'B 38.4 kbps + // '1101'B 38.kbps 4 + BIT3 uimi optional, // '000'B user initiated mod. allowed not + // '001'B UIMI allowed upto 1 TCH/F + // '010'B UIMI allowed upto 2 TCH/F + // '011'B UIMI allowed upto 3 TCH/F + // '100'B UIMI allowed upto 4 TCH/F + BIT1 extension_octet_6f optional,// '0'B or '1'B _ no octet following 6f + + BIT2 spare optional, //'00'B + BIT2 asymetryIndication optional, // spare + BIT3 acceptableChannelCodingsExt optional, // spare, set to 0 + BIT1 extension_octet_6g optional // '1'B; +} with { variant "EXTENSION_BIT (yes)"}; + +type record BC_octet5 +{ + BIT3 signallingAccessProtocol, // '001'B I.440/450 + // '010'B X.21 + // '011'B X.28 dedicated PID, ind. NUI + // '100'B X.28 dedicated PID, uni. NUI + // '101'B X.28 PID non_dedicated + // '110'B X.32 + BIT2 rateAdaptation, // '00'B no adaptation rate (RA) + // '01'B V.110/X.30 adaptation rate + // '10'B CCITT X.31 flag stuffing + // '11'B RA other (see octet 5a) + BIT2 accessId, // '00'B identifier octet + BIT1 extension_octet_5, // '0'B or '1'B (if no octet 5A following) + + BIT3 spare2_3 optional, // B'...._000 + BIT2 otherRateAdaptation optional, // B'.._00.._ V.interworking 120 + BIT2 otherInformationTransferCapability optional, + // B'_00...._ interworking RDI + BIT1 extension_octet_5a optional, // B'x......_ + + BIT1 spare3_1 optional, // B'......_0 + BIT1 inbandNegotiation optional, + BIT1 assignor_assignee optional, + BIT1 lli optional, + BIT1 mode optional, + BIT1 multiframe optional, + BIT1 hdrNohdr optional, + BIT1 extension_octet_5b optional // B'x......_ +} with { variant "EXTENSION_BIT (yes)"}; + +type record BC_octet4 +{ + BIT1 establishment, // '0'demand B + BIT1 nirr, // '0'B no associated meaning + // '1'B data 4.8, FR, NT, 6.0 + BIT1 configuration, // '0'B point point to + BIT1 duplexMode, // '0'B duplex half + // '1'B full duplex + BIT2 structure, // '00'B service data integrity unit + // '11'B unstructured + BIT1 compresion, // '0'B no DC possible/allowed + // '1'B DC possible/allowed + BIT1 extension_octet_4 // '1'B +} with { variant "EXTENSION_BIT (yes)"}; + +type record Speech_AuxiliarySpeech +{ + BIT4 speechVersionIndication, //octet 3a (speech MS to MSC/VLR): + // B'....0000 speech full rate 1 version + // B'....0010 speech full rate version 2 + // B'....0100 speech full rate 3 version + // B'....0001 speech half rate version 1 + // B'....0011 speech half rate 2 version + // B'....0101 speech half rate version 3 + BIT1 spare1_1, // B'..00.... + BIT1 cTM_or_Spare, // CTM text telephony supported '1'B, not supported '0'B, or spare + BIT1 coding, // B'_0...... extension octet ITC + // B'_1...... other extension octet + BIT1 extension_octet_3a_3b // B'x......_ +} with { variant "EXTENSION_BIT (yes)"}; + +type set of Speech_AuxiliarySpeech Speech_AuxiliarySpeech_List with { variant "EXTENSION_BIT (yes)"}; + +type record BC_octet3 +{ + BIT3 informationTransferCapability, // '000'speech B + // '001'B UDI + // '010'B 3.audio 1kHz + // '101'oITC B (see octet 5a) + // '110'B speech auxiliary + // '111'B reserved + BIT1 transferMode, // '0'B mode circuit + // '1'B packet mode + BIT1 codingStandard, // '0'B GSM/PCS coding standardized + // '1'B reserved + BIT2 radioChannelRequirement, // '01'B MSC/VLR to MS; + // '00'B MS (supports) towards MSC/VLR rate dual (half preferred) + // '01'B MS (supports) towards MSC/VLR full only rate + // '10'B rate dual (half preferred) + // '11'B rate dual (full preferred) + BIT1 extension_octet_3, + //'0'B or '1'B (THe RAW encoder will overwrite this bit) + Speech_AuxiliarySpeech_List speech_aux_3a_3b optional +} with { variant "EXTENSION_BIT (yes)"}; + +type record BearerCapability_TLV +{ + OCT1 elementIdentifier, // '04'O + LIN1 lengthIndicator, // 1..12 + // the following octet fields representing an octet group + BC_octet3 octet3, // 1- + BC_octet4 octet4 optional, // 1 octet + BC_octet5 octet5 optional, // 1-3 octets + BC_octet6 octet6 optional, // 1-8 octets + BC_octet7 octet7 optional // 1 octet +} with { variant (lengthIndicator) "LENGTHTO (octet3, octet4, octet5, octet6, + octet7)"}; + +type record BearerCapability_LV +{ + LIN1 lengthIndicator, // 1..12 + // the following octet fields representing an octet group + BC_octet3 octet3, // 1- + BC_octet4 octet4 optional, // 1 octet + BC_octet5 octet5 optional, // 1-3 octets + BC_octet6 octet6 optional, // 1-8 octets + BC_octet7 octet7 optional // 1 octet +} with { variant (lengthIndicator) "LENGTHTO (octet3, octet4, octet5, octet6, + octet7)"}; + +//10.5.4.5a Call Control Capabilities +type record CallControlCapabilities +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT1 dTMF, + BIT1 pCP, + BIT1 eNICM, + BIT1 mcat, + BIT4 maxNumberOfSupportedBearers, + BIT4 maxNumberOfSpeechBearers, + BIT4 spare2 // '0000'B +} with { variant (lengthIndicator) "LENGTHTO (dTMF,pCP,eNICM,mcat, + maxNumberOfSupportedBearers,spare2)" }; + + +//10.5.4.6 Call State +type record CallState_V +{ + BIT6 callStateValue, + BIT2 codingStd +}; + +type record CallState_TV +{ + OCT1 elementIdentifier, + BIT6 callStateValue, + BIT2 codingStd +}; + +//24.008/10.5.4.7 Called Party BCD Number +type record CalledPartyBCD_Number +{ + OCT1 elementIdentifier, // '5E'O + LIN1 lengthIndicator, // 1..15 + BIT4 numberingPlanIdentification, // '0000'unknown B + // '0001'B ISDN/telephony + // '0011'data B + // '0100'B telex + // '1000'national B + // '1001'B private + // '1111'B reserved extension for + BIT3 typeOfNumber, // '000'unknown B + // '001'B international number + // '010'B number national + // '011'B network specific number + // '100'B dedicated access code short + // '101'B reserved + // '110'reserved B + // '111'B reserved for extension + BIT1 ext1, // '0'B or '1'B + hexstring digits optional +} with { variant (lengthIndicator) "LENGTHTO (numberingPlanIdentification, + typeOfNumber, ext1, digits)"; + variant (digits) "PADDING(yes)"; + variant (digits) "PADDING_PATTERN('1'B)"}; + +//24.008/10.5.4.8 Called Party SubAddress +type record CalledPartySubAddress +{ + OCT1 elementIdentifier, // H'6D + LIN1 lengthIndicator, // 0..21 + BIT3 spare1_3 optional, // B'...._000 + BIT1 odd_evenIndicator optional, + // B'....0.._ even number of digits address + // B'....1.._ odd number of address digits + BIT3 typeOfSubAddress optional, // B'_000.... NSAP + // B'_010.... specified user + BIT1 ext1 optional, // B'1......_ + OCTN subAddressInformation optional +} with { variant (lengthIndicator) "LENGTHTO (spare1_3, odd_evenIndicator, + typeOfSubAddress, ext1, subAddressInformation)"}; + + +//10.5.4.9 Calling Party BCD Number +type record CallingOrCalled_Number_oct3 +{ + BIT4 numberingPlanIdentification, // Applies for type number of + // = 000, 001, 010 and 100 + // B'....Unknown 0000 + // B'....0001 ISDN/telephony number plan + // B'....0011 data numbering plan + // B'....0100 telex numbering plan + // B'....1000 national numbering plan + // B'....1001 private numbering plan + // B'....1111 reserved for extension + BIT3 typeOfNumber, // B'_000.... Unknown + // B'_001.... international number + // B'_010.... national number + // B'_011.... network specific number + // B'_100.... dedicated access, short code + // B'_101.... reserved + // B'_110.... reserved + // B'_111.... reserved for extension + BIT1 ext1, // B'1......_ + BIT2 screeningIndicator optional, + // B'......00 User_provided, not screened + // B'......01 User_provided, verified and passed + // B'......10 User_provided, verified and failed + // B'......11 Network provided + BIT3 spare1_3 optional, // B'.._000.. + BIT2 presentationIndicator optional, + // B'_00 Presentation allowed + // B'_01 Presentation restricted + // B'_10 Number not available due to interworking + // B'_11 Reserved + BIT1 ext2 optional // B'1......_ +} with { variant "EXTENSION_BIT (yes)"}; + +type record CallingPartyBCD_Number { + OCT1 elementIdentifier, // '5C'O -table 9.70 + LIN1 lengthIndicator, // 1..12 + CallingOrCalled_Number_oct3 oct3, + hexstring digits optional +} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)"; + variant (digits) "PADDING(yes)"; + variant (digits) "PADDING_PATTERN('1'B)"}; + +//10.5.4.10 Calling Party SubAddress +type record CallingPartySubAddress +{ + OCT1 elementIdentifier, // H'5D + LIN1 lengthIndicator, // 0..21 + BIT3 spare1_3 optional, // B'...._000 + BIT1 odd_evenIndicator optional, + // B'....0.._ even number of digits address + // B'....1.._ odd number of address digits + BIT3 typeOfSubAddress optional, // B'_000.... NSAP + // B'_010.... specified user + BIT1 ext1 optional, // B'1......_ + OCTN subAddressInformation optional +} with { variant (lengthIndicator) "LENGTHTO (spare1_3, odd_evenIndicator, + typeOfSubAddress, ext1, subAddressInformation)"}; + +//24.008/10.5.4.11 Cause +//moved into MobileL3_CommonIE_Types + +//24.008/10.5.4.11a/b +type record CLIR +{ + OCT1 elementIdentifier +}; + +//24.008/10.5.4.12 Congestion level +type record CongestionLevel +{ + BIT4 congestionLevel, // '0000'B receiver ready + // '1111'B receiver not ready + BIT4 elementIdentifier +}; + +type BIT4 CongestionLevelV; + +//24.008/10.5.4.13 Connected Number +type record ConnectedNumber +{ + OCT1 elementIdentifier, // H'4C + LIN1 lengthIndicator, // 2..12 + CallingOrCalled_Number_oct3 oct3, + hexstring digits optional +} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)"; + variant (digits) "PADDING(yes)"; + variant (digits) "PADDING_PATTERN('1'B)"}; + +//**************************************************************************** +type record ConnectedSubAddress +{ + OCT1 elementIdentifier, // H'4D + LIN1 lengthIndicator, // 0..21 + BIT3 spare1_3 optional, // B'...._000 + BIT1 odd_evenIndicator optional, + // B'....0.._ even number of digits address + // B'....1.._ odd number of address digits + BIT3 typeOfSubAddress optional, // B'_000.... NSAP + // B'_010.... specified user + BIT1 ext1 optional, // B'1......_ + OCTN subAddressInformation optional +} with { variant (lengthIndicator) "LENGTHTO (spare1_3, odd_evenIndicator, + typeOfSubAddress, ext1, subAddressInformation)" }; + +//10.5.4.15 Facility IE (see also 24.080/3.6 +// moved to Mobile_L3_CommonIE_Types , because it is used by SS and CC + +// 10.5.4.16 HighLayerCompatibility +type record HLC_octet3 +{ + BIT2 presentationMethod, + BIT3 interpretation, + BIT2 codingStandard, + BIT1 extension_octet_3 // '1'B octet4 should follow +} with { variant "EXTENSION_BIT (yes)"}; + +type record HLC_octet4 +{ + BIT7 highLayerCharId, + BIT1 extension_octet_4, + //octet4a: + BIT7 extendedHighLayerCharId optional, + BIT1 extension_octet_4a optional // '1'B +} with { variant "EXTENSION_BIT (yes)"}; + +type record HighLayerCompatibility +{ + OCT1 elementIdentifier, // H'7D + LIN1 lengthIndicator, // 0..3 + HLC_octet3 octet3 optional, + HLC_octet4 octet4 optional // if octet3 used, octet4 should use, see 10.5.4.16.1 + //replaced this: octetstring highLayerCompatibilityContents length(1..3) optional +} with { variant (lengthIndicator) "LENGTHTO (octet3, octet4)"}; + +//10.5.4.17 Keypad Facility +type record KeypadFacility +{ + OCT1 elementIdentifier, // + BIT7 keypadInformation, //IA5 char + BIT1 spare_1 +}; + +//10.5.4.18 Low Layer Compatibility +// see also ITU Q.931 +type record LowLayerCompatibility +{ + OCT1 elementIdentifier, // H'7C + LIN1 lengthIndicator, // 0..13 + octetstring lowLayerCompatibilityContents length(2..16) optional + +//commented out to simplify the type +/* BIT5 informationTransferCapability optional, + BIT2 codingStandard optional, + BIT1 ext1 optional, // B'x........ + BIT6 spare1_6 optional, // B'..0000000 + BIT1 negotiationIndicator optional, + BIT1 ext2 optional, // B'x........ + BIT5 informationTransferRate optional, + BIT2 transferMode optional, + BIT1 ext3 optional, // B'x........ + BIT2 establishment optional, + BIT2 configuration optional, + BIT3 structure optional, + BIT1 ext4 optional, // B'x........ + BIT5 informationTransferRateDestOrig optional, + BIT2 symetry optional, + BIT1 ext5 optional, // B'x........ + BIT5 userInformationLayer1Protocol optional, + BIT2 layer1Identity optional, + BIT1 ext6 optional, // B'x........ + BIT5 userRate optional, + BIT1 negotiation optional, + BIT1 synchronous_asynchronous optional, + BIT1 ext7 optional, // B'x........ + BIT1 spare2_1 optional, // B'........0 + BIT1 flowControlOnRX optional, + BIT1 flowControlOnTX optional, + BIT1 nicOnRX optional, + BIT1 nicOnTX optional, + BIT2 intermediateRate optional, + BIT1 ext8 optional, // B'x........ + BIT1 spare3_1 optional, // B'........0 + BIT1 inband_outbandNegotiation optional, + BIT1 assignor_assignee optional, + BIT1 lliNegotiation optional, + BIT1 mode optional, + BIT1 multiFrameSupport optional, + BIT1 hdrNohdr optional, + BIT1 ext9 optional, // B'x........ + BIT3 parity optional, + BIT2 numberDataBits optional, + BIT2 numberStopBits optional, + BIT1 ext10 optional, // B'x........ + BIT6 modemType optional, + BIT1 duplexMode optional, + BIT1 ext11 optional, // B'x........ + BIT5 userInformationLayer2Protocol optional, + BIT2 layer2Id optional, + BIT1 ext12 optional, // B'x........ + BIT5 userInformationLayer3Protocol optional, + BIT2 layer3Id optional, + BIT1 ext13 optional, // B'x........ + BIT7 optionalLayer3ProtocolInformation optional, + BIT1 ext14 optional // B'x........ +*/ +} with { variant (lengthIndicator) "LENGTHTO (lowLayerCompatibilityContents)"}; + +//10.5.4.19 More Data +/* +type record MoreData +{ + OCT1 elementIdentifier //'A0'O +}; +*/ + +//10.5.4.20 NotificationIndicator +type record NotificationIndicator +{ +// OCT1 elementIdentifier, + OCT1 notificationDescription // '80'O : user suspended + // '81'O : user resumed + // '82'O : bearer change +}; + +//10.5.4.21 Progress Indicator +type record ProgressIndicator_LV +{ + LIN1 lengthIndicator, // '02'O + BIT4 location, // '0000'user B + // '0001'B private network, local user + // '0010'B public network, user local + // '0100'B public network, remote user + // '0101'B private network, user remote + // '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 + BIT1 ext1, // '1'B + BIT7 progressDescription, //'0000001'B call is not end_to_end PLMN/ISDN + // '0000010'B destination address is not PLMN/ISDN + // '0000011'B origination address is not PLMN/ISDN + // '0000100'B call has returned to the PLMN/ISDN + // '0001000'B inband info available PLMN/ISDN + // '0100000'B call is end_to_end PLMN/ISDN + BIT1 ext2 // '1'B +} with { variant (lengthIndicator) "LENGTHTO (location, spare1_1, + codingStandard, ext1, + progressDescription, ext2)"}; + +type record ProgressIndicator_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, // '02'O + BIT4 location, // '0000'user B + // '0001'B private network, local user + // '0010'B public network, user local + // '0100'B public network, remote user + // '0101'B private network, user remote + // '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 + BIT1 ext1, // '1'B + BIT7 progressDescription, //'0000001'B call is not end_to_end PLMN/ISDN + // '0000010'B destination address is not PLMN/ISDN + // '0000011'B origination address is not PLMN/ISDN + // '0000100'B call has returned to the PLMN/ISDN + // '0001000'B inband info available PLMN/ISDN + // '0100000'B call is end_to_end PLMN/ISDN + BIT1 ext2 // '1'B + // removed by ethbaat:ProgressIndicator_LV progressIndicator_LV +} with { variant (lengthIndicator) "LENGTHTO (location, spare1_1, + codingStandard, ext1, + progressDescription, ext2)"}; + +//24.008/10.5.4.21a Recall Type +type record RecallType +{ + OCT1 elementIdentifier, + BIT3 recallType, + BIT5 spare_5 +}; + +//24.008/10.5.4.21b Redirecting party BCD number +type record RedirectingPartyBCDNumberTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + CallingOrCalled_Number_oct3 oct3, + hexstring digits optional +} with { variant (lengthIndicator) "LENGTHTO (oct3,digits)"; + variant (digits) "PADDING(yes)"; + variant (digits) "PADDING_PATTERN('1'B)" + +}; + +//24.008/10.5.4.21c Redirecting party Subaddress +type record RedirectingPartySubaddressTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT3 spare1_3 optional, // B'...._000 + BIT1 odd_evenIndicator optional, + // B'....0.._ even number of digits address + // B'....1.._ odd number of address digits + BIT3 typeOfSubAddress optional, // B'_000.... NSAP + // B'_010.... specified user + BIT1 ext1 optional, // B'1......_ + OCTN subAddressInformation optional +} with { variant (lengthIndicator) "LENGTHTO (spare1_3, odd_evenIndicator, + typeOfSubAddress, ext1, subAddressInformation)"}; + +//24.008/10.5.4.22 Repeat Indicator +type record RepeatIndicator +{ + BIT4 RepeatIndication, + BIT4 elementIdentifier +}; + +//10.5.4.22a Reverse Call Setup Direction +type record ReverseCallSetupDirection +{ + OCT1 elementIdentifier +}; + +//10.5.4.22b Setup Contatiner CCBS +type record SetupContatinerCCBS +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCTN setupMessage +} with { variant (lengthIndicator) "LENGTHTO (setupMessage)"}; + +type record SetupContatinerCCBS_LV +{ + LIN1 lengthIndicator, + OCTN setupMessage +} with { variant (lengthIndicator) "LENGTHTO (setupMessage)"}; + +//10.5.4.23 Signal +type record ML3_Signal +{ + OCT1 elementIdentifier, // H'34 + OCT1 signalValue // B'00000000 0. Dial tone on + // B'00000001 1. Ring back on tone + // B'00000010 2. Intercept tone on + // B'00000011 3. Network congestion on tone + // B'00000100 4. Busy tone on + // B'00000101 5. Confirm on tone + // B'00000110 6. Answer tone on + // B'00000111 7. Call waiting on tone + // B'00001001 9. Off_hook warning tone on + // B'00111111 63. off Tones + // B'01001111 79. Alerting off +}; + +//10.5.4.24 SS Version Indicator +//moved to MobileL3_CommonIE_Types + +//10.5.4.25 User-user +type record User_user_LV +{ + LIN1 lengthIndicator, + OCT1 user_userProtocolDiscriminator, + octetstring user_userInformation length(0..129) //transparent +} with { variant (lengthIndicator) "LENGTHTO(user_userInformation)" }; + +type record User_user_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT1 user_userProtocolDiscriminator, + octetstring user_userInformation length(0..128) //transparent +} with { variant (lengthIndicator) "LENGTHTO(user_userInformation)" }; + +type record User_userShort +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT1 user_userProtocolDiscriminator, + octetstring user_userInformation length(0..32) +} with { variant (lengthIndicator) "LENGTHTO(user_userInformation)" }; + +//10.5.4.26 Alerting Pattern +type record AlertingPattern +{ + OCT1 elementIdentifier, //'19'O + LIN1 lengthIndicator, + BIT4 alertingPattern_FIELD, + BIT4 spare +} with { variant (lengthIndicator) "LENGTHTO (alertingPattern_FIELD,spare )"}; + +//10.5.4.27 Allowed Actions +type record AllowedActions +{ + OCT1 elementIdentifier, //'19'O + LIN1 lengthIndicator, + BIT7 spare_7, + BIT1 ccbsActivation //'0'B activation is not possible + //'1'B activation is possible +} with { variant (lengthIndicator) "LENGTHTO (spare_7,ccbsActivation)"}; + +//10.5.4.28 Stream Identifier +type record StreamIdentifier +{ + OCT1 elementIdentifier, // '2D'O + integer lengthf, // '01'O + OCT1 streamIdentifierValue // value 0..255 +} with { variant (lengthf) "LENGTHTO (streamIdentifierValue)"}; + +// 24.008/10.5.4.29 Network Call Control Capabilities +type record NetworkCallControlCapabilities +{ + OCT1 elementIdentifier, //'2F'O + LIN1 lengthIndicator, + BIT1 mcs, // multicall support '0'B: no support + // '1'B :support + BIT7 spare +} with { variant (lengthIndicator) "LENGTHTO (mcs,spare)"}; + +//10.5.4.30 CauseofNoCli +type record CauseofNoCli +{ + OCT1 elementIdentifier, //'3A'O + LIN1 lengthIndicator, + OCT1 causeofNoCli_FIELD +} with { variant (lengthIndicator) "LENGTHTO (causeofNoCli_FIELD)"}; + +//10.5.4.31 Immediate Modification Indicator +// VOID + +// 10.5.4.33 Service Category (TLV) +type record ServiceCategory +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT7 emergencyServiceCategory, + BIT1 spare_1 +} with { variant (lengthIndicator) "LENGTHTO( emergencyServiceCategory, spare_1 )"}; + +// 10.5.4.34 REDIAL (T) +type Type2 Redial; + +//10.5.4.35 Network Initiated Service Upgrade Indicator +type record NetworkInitiatedServiceUpgradeIndicator +{ + OCT1 elementIdentifier +}; + +//============================================================================ +// 20.008/9.3 Messages for circuit-switched call control (CC) +//============================================================================ + +// 9.3.1.1 Alerting (NW->MS) +//**************************************************************************** +type record PDU_ML3_Alerting_NW_MS +{ + BIT6 messageType, // '000001'Alerting B + BIT2 nsd, + Facility_TLV facility optional, + ProgressIndicator_TLV progressIndicator optional, + User_user_TLV user_user optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + progressIndicator, elementIdentifier = '1E'O; + user_user, elementIdentifier = '7E'O ) "} + +// 9.3.1.2 Alerting (MS->NW) +//**************************************************************************** +type record PDU_ML3_Alerting_MS_NW +{ + BIT6 messageType, // B'..000001 (Alerting) + BIT2 nsd, + Facility_TLV facility optional, + User_user_TLV user_user optional, + SS_VersionIndicator ss_VersionIndicator optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O ) "}; + +// 9.3.2 Call confirmed (MS->NW) +//**************************************************************************** +type record PDU_ML3_CallConfirmed +{ + BIT6 messageType, // '001000'CallConfirmed B + BIT2 nsd, + RepeatIndicator repeatIndicator optional, // successive selection: + //only present also if + //BC1&BC2 are present + // H'circular D1 + // H'D3 sequential + BearerCapability_TLV bearerCapability1 optional, + BearerCapability_TLV bearerCapability2 optional, + ML3_Cause_TLV cause optional, + CallControlCapabilities cC_Capabilities optional, + StreamIdentifier streamIdentifier optional, + SupportedCodecList supportedCodecs optional +} with { variant "TAG ( + repeatIndicator, elementIdentifier = '1101'B; + bearerCapability1, elementIdentifier = '04'O; + bearerCapability2, elementIdentifier = '04'O; + cause, elementIdentifier = '08'O; + cC_Capabilities, elementIdentifier = '15'O; + streamIdentifier, elementIdentifier = '2D'O;) "}; + +// 9.3.3 Call Proceeding (NW->MS) +//**************************************************************************** +type record PDU_ML3_CallProceeding +{ + BIT6 messageType, // '000010'CallProceeding B + BIT2 nsd, + RepeatIndicator repeatIndicator optional, //successive selection: + //only present also if + //BC1&BC2 are present + // H'circular D1 + // H'D3 sequential + BearerCapability_TLV bearerCapability1 optional, + BearerCapability_TLV bearerCapability2 optional, + Facility_TLV facility optional, + ProgressIndicator_TLV progressIndicator optional, + PriorityLevel_ML3 priorityGranted optional, + NetworkCallControlCapabilities networkCCCapabilities optional //10.5.4.29 +} with { variant "TAG ( + repeatIndicator, elementIdentifier = '1101'B; + bearerCapability1, elementIdentifier = '04'O; + bearerCapability2, elementIdentifier = '04'O; + facility, elementIdentifier = '1C'O; + progressIndicator, elementIdentifier = '1E'O; + priorityGranted, elementIdentifier = '1000'B; + networkCCCapabilities, elementIdentifier = '2F'O;) "}; + +// 9.3.4 Congestion Control (NW->MS) +//**************************************************************************** +type record PDU_ML3_CongestionControl +{ + BIT6 messageType, // '111001'B CongestionControl + BIT2 nsd, + CongestionLevelV congestionLevel, + BIT4 spare_4, + ML3_Cause_TLV cause optional + } with { variant "TAG ( cause, elementIdentifier = '08'O )"}; + + +// 9.3.5 Connect +//**************************************************************************** +// 9.3.5.1 Connect (NW->MS) +type record PDU_ML3_Connect_NW_MS +{ + BIT6 messageType, // '000111'B (Connect) + BIT2 nsd, + Facility_TLV facility optional, + ProgressIndicator_TLV progressIndicator optional, + ConnectedNumber connectedNumber optional, + ConnectedSubAddress connectedSubAddress optional, + User_user_TLV user_user optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + progressIndicator, elementIdentifier = '1E'O; + connectedNumber, elementIdentifier = '4C'O; + connectedSubAddress, elementIdentifier = '4D'O; + user_user, elementIdentifier = '7E'O ) "}; + +// 9.3.5.2 Connect (MS->NW) + +type record PDU_ML3_Connect_MS_NW +{ + BIT6 messageType, // '000111'B (Connect) + BIT2 nsd, + Facility_TLV facility optional, + ConnectedSubAddress connectedSubAddress optional, + User_user_TLV user_user optional, + SS_VersionIndicator ss_VersionIndicator optional, + StreamIdentifier streamIdentifier optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + connectedSubAddress, elementIdentifier = '4D'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O; + streamIdentifier, elementIdentifier = '2D'O ) "}; + +// 9.3.6 Connect Ack (NW->MS) (MS->NW) +//**************************************************************************** +type record PDU_ML3_ConnectAck +{ + BIT6 messageType, // '001111'B (ConnectAck) + BIT2 nsd +}; + +// 9.3.7 Disconnect +//**************************************************************************** +// 9.3.7.1 Disconnect (NW-MS) +type record PDU_ML3_Disconnect_NW_MS +{ + BIT6 messageType, // '100101'B (Disconnect) + BIT2 nsd, + ML3_Cause_LV cause, + Facility_TLV facility optional, + ProgressIndicator_TLV progressIndicator optional, + User_user_TLV user_user optional, + AllowedActions allowedActions optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + progressIndicator, elementIdentifier = '1E'O; + user_user, elementIdentifier = '7E'O; + allowedActions, elementIdentifier = '7B'O ) "}; + +// 9.3.7.2 Disconnect (MS->NW) +type record PDU_ML3_Disconnect_MS_NW +{ + BIT6 messageType, // '100101'B (Disconnect) + BIT2 nsd, + ML3_Cause_LV cause, + Facility_TLV facility optional, + User_user_TLV user_user optional, + SS_VersionIndicator ss_VersionIndicator optional +} with { variant "TAG ( + facility, elementIdentifier = '1C'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O ) "}; + +// 9.3.8 Emergency Setup (MS->NW ) +//**************************************************************************** +type record PDU_ML3_EmergencySetup +{ + BIT6 messageType, // '001110'B + BIT2 nsd, + BearerCapability_TLV bearerCapability optional, + StreamIdentifier streamIdentifier optional, + SupportedCodecList supportedCodecs optional, + ServiceCategory emergencyCategory optional +} with { variant "TAG ( + bearerCapability, elementIdentifier = '04'O; + streamIdentifier, elementIdentifier = '2D'O; + emergencyCategory, elementIdentifier = '2E'O; ) "}; + +// 9.3.9.1 (NW->MS) and 9.3.9.2 (MS->NW) Facility (CallControl!!!) +//**************************************************************************** +type record PDU_ML3_Facility +{ + BIT6 messageType, // facilityIEI + BIT2 nsd, + Facility_LV facility, //10.5.4.15 + SS_VersionIndicator ss_version optional // only for MS->NW +} with { variant "TAG ( ss_version, elementIdentifier = '7F'O ) "}; + +//9.3.10 Hold (MS->NW) +//**************************************************************************** +type record PDU_ML3_Hold +{ + BIT6 messageType, // '011000'Hold B + BIT2 nsd +}; + +//9.3.11 Hold Acknowledge (NW->MS) +//**************************************************************************** +type record PDU_ML3_HoldAcknowledge +{ + BIT6 messageType, // '011001'B Acknowledge Hold + BIT2 nsd +}; + +//9.3.12 Hold Reject (NW->MS) +//**************************************************************************** +type record PDU_ML3_HoldReject +{ + BIT6 messageType, //'011010'B + BIT2 nsd, + ML3_Cause_LV cause +}; + +//9.3.13 Modify (MS->NW) (NW->MS) +//**************************************************************************** +type record PDU_ML3_Modify +{ + BIT6 messageType, //'010111'B + BIT2 nsd, + BearerCapability_LV bearerCapability, + LowLayerCompatibility lowLayerCompatibility optional, + HighLayerCompatibility highLayerCompatibility optional, + ReverseCallSetupDirection reverseCallSetupDirection optional, + NetworkInitiatedServiceUpgradeIndicator networkInitiatedServiceUpgradeIndicator optional +} with { variant "TAG ( + lowLayerCompatibility, elementIdentifier = '7C'O; + highLayerCompatibility, elementIdentifier = '7D'O; + reverseCallSetupDirection, elementIdentifier = 'A3'O; + networkInitiatedServiceUpgradeIndicator, elementIdentifier = 'A4'O ) "}; + +//9.3.14 Modify Complete (MS->NW) (NW->MS) +//**************************************************************************** +type record PDU_ML3_ModifyComplete +{ + BIT6 messageType, //'011111'B + BIT2 nsd, + BearerCapability_LV bearerCapability, + LowLayerCompatibility lowLayerCompatibility optional, + HighLayerCompatibility highLayerCompatibility optional, + ReverseCallSetupDirection reverseCallSetupDirection optional +} with { variant "TAG ( + lowLayerCompatibility, elementIdentifier = '7C'O; + highLayerCompatibility, elementIdentifier = '7D'O; + reverseCallSetupDirection, elementIdentifier = 'A3'O;) "}; + +//9.3.15 Modify Reject (MS->NW) (NW->MS) +//**************************************************************************** +type record PDU_ML3_ModifyReject +{ + BIT6 messageType, //'010011'B + BIT2 nsd, + BearerCapability_LV bearerCapability, + ML3_Cause_LV cause, + LowLayerCompatibility lowLayerCompatibility optional, + HighLayerCompatibility highLayerCompatibility optional +} with { variant "TAG ( + lowLayerCompatibility, elementIdentifier = '7C'O; + highLayerCompatibility, elementIdentifier = '7D'O;) "}; + +//9.3.16 Notify (MS->NW) (NW->MS) +//**************************************************************************** +type record PDU_ML3_Notify +{ + BIT6 messageType, //'111110'B + BIT2 nsd, + NotificationIndicator notificationIndicator +}; + +// 9.3.17 Progress (NW->MS) +//**************************************************************************** +type record PDU_ML3_Progress +{ + BIT6 messageType, // '000011'Progress B + BIT2 nsd, + ProgressIndicator_LV progressIndicator, + User_user_TLV user_user optional +} with { variant "TAG (user_user, elementIdentifier = '7E'O; ) "}; + +// 9.3.17a CC Establishment (NW->MS) +//**************************************************************************** +type record PDU_ML3_CC_Establishment +{ + BIT6 messageType, // '000100' + BIT2 nsd, + SetupContatinerCCBS_LV container +} + +// 9.3.17b CC Establishment Confirmed (MS->NW) +//**************************************************************************** +type record PDU_ML3_CC_EstablishmentConf +{ + BIT6 messageType, // 'CC_EstablishmentConf' + BIT2 nsd, + RepeatIndicator repeatIndicator optional, + BearerCapability_TLV bearerCapability1, + BearerCapability_TLV bearerCapability2 optional, + ML3_Cause_TLV cause optional, + SupportedCodecList supportedCodecs optional +} with { variant "TAG ( + repeatIndicator, elementIdentifier = '1101'B; + bearerCapability2, elementIdentifier = '04'O; + cause, elementIdentifier = '08'O; ) "}; + +// 9.3.18.1 Release (NW->MS) +//**************************************************************************** +type record PDU_ML3_Release_NW_MS +{ + BIT6 messageType, // '101101'Release B + BIT2 nsd, + ML3_Cause_TLV cause optional, + ML3_Cause_TLV secondCause optional, + Facility_TLV facility optional, + User_user_TLV user_user optional +} with { variant "TAG ( + cause, elementIdentifier = '08'O; + secondCause, elementIdentifier = '08'O; + facility, elementIdentifier = '1C'O; + user_user, elementIdentifier = '7E'O ) "}; + +// 9.3.18.2 Release (MS->NW) +//**************************************************************************** +type record PDU_ML3_Release_MS_NW +{ + BIT6 messageType, // '101101'Release B + BIT2 nsd, + ML3_Cause_TLV cause optional, + ML3_Cause_TLV secondCause optional, + Facility_TLV facility optional, + User_user_TLV user_user optional, + SS_VersionIndicator ss_VersionIndicator optional +} with { variant "TAG ( + cause, elementIdentifier = '08'O; + secondCause, elementIdentifier = '08'O; + facility, elementIdentifier = '1C'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O ) "}; + +// 9.3.18a Recall (CCBS) (NW->MS) +//**************************************************************************** +type record PDU_ML3_Recall +{ + BIT6 messageType, // '001011'Recall + BIT2 nsd, + RecallType recallType, + Facility_LV facility +}; + +// 9.3.19.1 Release Complete (NW->MS) +//**************************************************************************** +type record PDU_ML3_ReleaseComplete_NW_MS +{ + BIT6 messageType, // '101010'B ReleaseComplete + BIT2 nsd, + ML3_Cause_TLV cause optional, + Facility_TLV facility optional, + User_user_TLV user_user optional +} with { variant "TAG ( + cause, elementIdentifier = '08'O; + facility, elementIdentifier = '1C'O ; + user_user, elementIdentifier = '7E'O ) "}; + +// 9.3.19.2 Release Complete (MS->NW) +//**************************************************************************** +type record PDU_ML3_ReleaseComplete_MS_NW +{ + BIT6 messageType, // '101010'B (ReleaseComplete) + BIT2 nsd, + ML3_Cause_TLV cause optional, + Facility_TLV facility optional, + User_user_TLV user_user optional, + SS_VersionIndicator ss_VersionIndicator optional +} with { variant "TAG ( + cause, elementIdentifier = '08'O; + facility, elementIdentifier = '1C'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O ) "}; + +//9.3.20 Retrieve (MS->NW) +//**************************************************************************** +type record PDU_ML3_Retrieve +{ + BIT6 messageType, //'011100'B + BIT2 nsd +}; + +//9.3.21 Retrieve Acknowledge (NW->MS) +//**************************************************************************** +type record PDU_ML3_RetrieveAck +{ + BIT6 messageType, //'011101'B + BIT2 nsd +}; + +//9.3.22 Retrieve Reject (NW->MS) +//**************************************************************************** +type record PDU_ML3_RetrieveRej +{ + BIT6 messageType, //'011110'B + BIT2 nsd, + ML3_Cause_LV cause +}; + +// 9.3.23.1 Setup NW->MS +//**************************************************************************** +type record PDU_ML3_Setup_NW_MS +{ + BIT6 messageType, // '000101'B (Setup) + BIT2 nsd, + RepeatIndicator bcRepeatIndicator optional, // successive selection: + // only present also if + // BC1&BC2 are present + // H'circular D1 + // H'D3 sequential + BearerCapability_TLV bearerCapability1 optional, + BearerCapability_TLV bearerCapability2 optional, + Facility_TLV facility optional, + ProgressIndicator_TLV progressIndicator optional, + ML3_Signal signal optional, + CallingPartyBCD_Number callingPartyBCD_Number optional, + CallingPartySubAddress callingPartySubAddress optional, + CalledPartyBCD_Number calledPartyBCD_Number optional, + CalledPartySubAddress calledPartySubAddress optional, + RedirectingPartyBCDNumberTLV redirectingPartyBCDNumber optional, + RedirectingPartySubaddressTLV redirectingPartySubaddress optional, + RepeatIndicator llc_RepeatIndicator optional, // H'circular D1 + // H'D3 sequential + LowLayerCompatibility lowLayerCompatibility1 optional, + LowLayerCompatibility lowLayerCompatibility2 optional, + RepeatIndicator hlc_RepeatIndicator optional, // H'circular D1 + // H'D3 sequential + HighLayerCompatibility highLayerCompatibility1 optional, + HighLayerCompatibility highLayerCompatibility2 optional, + User_userShort user_user optional, + PriorityLevel_ML3 priority optional, + AlertingPattern alert optional, //10.5.4.26 + NetworkCallControlCapabilities networkCCCapabilities optional, //10.5.4.29 + CauseofNoCli causeofNoCli optional, //10.5.4.30 + BackupBearerCapacity backupBearerCapacity optional //10.5.4.4a +} with { variant "TAG ( + bcRepeatIndicator, elementIdentifier = '1101'B; + bearerCapability1, elementIdentifier = '04'O; + bearerCapability2, elementIdentifier = '04'O; + facility, elementIdentifier = '1C'O; + progressIndicator, elementIdentifier = '1E'O; + signal, elementIdentifier = '34'O; + callingPartyBCD_Number, elementIdentifier = '5C'O; + callingPartySubAddress, elementIdentifier = '5D'O; + calledPartyBCD_Number, elementIdentifier = '5E'O; + calledPartySubAddress, elementIdentifier = '6D'O; + redirectingPartyBCDNumber, elementIdentifier = '74'O; + redirectingPartySubaddress, elementIdentifier = '75'O; + llc_RepeatIndicator, elementIdentifier = '1101'B; + lowLayerCompatibility1, elementIdentifier = '7C'O; + lowLayerCompatibility2, elementIdentifier = '7C'O; + hlc_RepeatIndicator, elementIdentifier = '1101'B; + highLayerCompatibility1, elementIdentifier = '7D'O; + highLayerCompatibility2, elementIdentifier = '7D'O; + user_user, elementIdentifier = '7E'O; + priority, elementIdentifier = '1000'B; + alert, elementIdentifier = '19'O; + networkCCCapabilities, elementIdentifier = '2F'O; + causeofNoCli, elementIdentifier = '3A'O; + backupBearerCapacity, elementIdentifier = '41'O ) "}; + +// 9.3.23.2 Setup MS->NW +//**************************************************************************** +type record PDU_ML3_Setup_MS_NW +{ + BIT6 messageType, // '000101'B (Setup) + BIT2 nsd, + RepeatIndicator bcRepeatIndicator optional, // successive selection: + // only present also if + // BC1&BC2 are present + // H'circular D1 + // H'D3 sequential + BearerCapability_TLV bearerCapability1, //mandatory!! + BearerCapability_TLV bearerCapability2 optional, + Facility_TLV facility optional, + CallingPartySubAddress callingPartySubAddress optional, + CalledPartyBCD_Number calledPartyBCD_Number, //mandatory!! + CalledPartySubAddress calledPartySubAddress optional, + RepeatIndicator llc_RepeatIndicator optional, // H'circular D1 + // H'D3 sequential + LowLayerCompatibility lowLayerCompatibility1 optional, + LowLayerCompatibility lowLayerCompatibility2 optional, + RepeatIndicator hlc_RepeatIndicator optional, // H'circular D1 + // H'D3 sequential + HighLayerCompatibility highLayerCompatibility1 optional, + HighLayerCompatibility highLayerCompatibility2 optional, + User_userShort user_user optional, + SS_VersionIndicator ss_VersionIndicator optional, + CLIR clir_Suppression optional, // H'A1 + CLIR clir_Invocation optional, // H'A2 + CallControlCapabilities cC_Capabilities optional, + Facility_TLV facility_ccbs1 optional, + Facility_TLV facility_ccbs2 optional, + StreamIdentifier streamIdentifier optional, + SupportedCodecList supportedCodecs optional, + Redial redial optional +} with { variant "TAG ( + bcRepeatIndicator, elementIdentifier = '1101'B; + //bearerCapability1, elementIdentifier = '04'O; + bearerCapability2, elementIdentifier = '04'O; + facility, elementIdentifier = '1C'O; + callingPartySubAddress, elementIdentifier = '5D'O; + //calledPartyBCD_Number, elementIdentifier = '5E'O; + calledPartySubAddress, elementIdentifier = '6D'O; + llc_RepeatIndicator, elementIdentifier = '1101'B; + lowLayerCompatibility1, elementIdentifier = '7C'O; + lowLayerCompatibility2, elementIdentifier = '7C'O; + hlc_RepeatIndicator, elementIdentifier = '1101'B; + highLayerCompatibility1, elementIdentifier = '7D'O; + highLayerCompatibility2, elementIdentifier = '7D'O; + user_user, elementIdentifier = '7E'O; + ss_VersionIndicator, elementIdentifier = '7F'O; + clir_Suppression, elementIdentifier = 'A1'O; + clir_Invocation, elementIdentifier = 'A2'O; + cC_Capabilities, elementIdentifier = '15'O; + facility_ccbs1, elementIdentifier = '1D'O; + facility_ccbs2, elementIdentifier = '1B'O; + streamIdentifier, elementIdentifier = '2D'O; + redial, elementIdentifier = 'A3'O; ) "}; + +//9.3.23a StartCC (MS->NW) +//**************************************************************************** +type record PDU_ML3_StartCC +{ + BIT6 messageType, //''B; + BIT2 nsd, + CallControlCapabilities cC_Capabilities optional +} with { variant "TAG (cC_Capabilities, elementIdentifier = '15'O;) "}; + +// 9.3.24 Start DTMF (MS->NW) +//**************************************************************************** +type record PDU_ML3_StartDTMF +{ + BIT6 messageType, //'110101'B; + BIT2 nsd, + KeypadFacility keypadFacility +}; + +// 9.3.25 Start DTMF Acknowledge (NW->MS) +//**************************************************************************** +type record PDU_ML3_StartDTMFAck +{ + BIT6 messageType, //'110110'B; + BIT2 nsd, + KeypadFacility keypadFacility +}; + +// 9.3.26 Start DTMF Reject (NW->MS) +//**************************************************************************** +type record PDU_ML3_StartDTMFRej +{ + BIT6 messageType, //'110111'B; + BIT2 nsd, + ML3_Cause_LV cause +}; + +// 9.3.27 Status (NW->MS) (MS->NW) +//**************************************************************************** +type record PDU_ML3_Status +{ + BIT6 messageType, //'111101'B; + BIT2 nsd, + ML3_Cause_LV cause, + CallState_V callState, + AuxiliaryStates_TLV auxiliaryStates optional //'24'O +} with { variant "TAG (auxiliaryStates,elementIdentifier ='24'O ) " }; + +// 9.3.28 Status enquiry (NW->MS) (MS->NW) +//**************************************************************************** +type record PDU_ML3_StatusEnquiry +{ + BIT6 messageType, //'110100'B; + BIT2 nsd +}; + +// 9.3.29 Stop DTMF (MS->NW) +//**************************************************************************** +type record PDU_ML3_StopDTMF +{ + BIT6 messageType, //'110001'B; + BIT2 nsd +}; + +// 9.3.30 Stop DTMF Ack (NW->MS) +//**************************************************************************** +type record PDU_ML3_StopDTMFAck +{ + BIT6 messageType, //'110010'B; + BIT2 nsd +}; + +// 9.3.31.1 User Information +//**************************************************************************** +type record PDU_ML3_UserInformation +{ + BIT6 messageType, //'010000'B; + BIT2 nsd, + User_user_LV user_user, + OCT1 moreData optional +}; + + +// ************************************************************************** +// * 9.3 Call Control Messages (MS->MSC) +// * Ref:(24.008/Table 9.54 (order) and Table 10.3(messageType values) ) +// ************************************************************************** +type union PDU_ML3_CC_MS_NW +{ + PDU_ML3_Alerting_MS_NW alerting_MS_NW, //Call establishment + PDU_ML3_CallConfirmed callConfirmed, + PDU_ML3_Connect_MS_NW connect_MS_NW, + PDU_ML3_ConnectAck connectAck, + PDU_ML3_EmergencySetup emergencySetup, + PDU_ML3_CC_EstablishmentConf cc_EstablishmentConf, + PDU_ML3_StartCC startCC, + PDU_ML3_Setup_MS_NW setup_MS_NW, + + PDU_ML3_Modify modify, //call information phase msg + PDU_ML3_ModifyComplete modifyComplete, + PDU_ML3_ModifyReject modifyReject, + PDU_ML3_UserInformation userInformation, + + PDU_ML3_Disconnect_MS_NW disconnect_MS_NW,//call clearing + PDU_ML3_Release_MS_NW release_MS_NW, + PDU_ML3_ReleaseComplete_MS_NW releaseComplete_MS_NW, + + PDU_ML3_Facility facility,//for Suppl.Service contr. + PDU_ML3_Hold hold, + PDU_ML3_Retrieve retrieve, + + PDU_ML3_Notify notify,//misc + PDU_ML3_StartDTMF startDTMF, + PDU_ML3_Status status, + PDU_ML3_StatusEnquiry statusEnquiry, + PDU_ML3_StopDTMF stopDTMF +} with { variant "TAG ( + alerting_MS_NW, messageType ='000001'B;//call establish + callConfirmed, messageType ='001000'B; + connect_MS_NW, messageType ='000111'B; + connectAck, messageType ='001111'B; + emergencySetup, messageType ='001110'B; + cc_EstablishmentConf, messageType ='000110'B; + startCC, messageType ='001001'B; + setup_MS_NW, messageType ='000101'B; + + modify, messageType ='010111'B;//call inf.ph.msg + modifyComplete, messageType ='011111'B; + modifyReject, messageType ='010011'B; + userInformation, messageType ='010000'B; + + disconnect_MS_NW, messageType ='100101'B;//call clearing + release_MS_NW, messageType ='101101'B; + releaseComplete_MS_NW, messageType ='101010'B; + + facility, messageType ='111010'B;//messages for SS + hold, messageType ='011000'B; + retrieve, messageType ='011100'B; + + notify, messageType ='111110'B; //misc + startDTMF, messageType ='110101'B; + status, messageType ='111101'B; + statusEnquiry, messageType ='110100'B; + stopDTMF, messageType ='110001'B; + )" }; + +// *************************************************************************** +// * 9.3 Call Control Messages MSC -> MS (24.008/Table 9.54 and Table 10.3) +// *************************************************************************** +type union PDU_ML3_CC_NW_MS +{ + PDU_ML3_Alerting_NW_MS alerting_NW_MS, //call establish + PDU_ML3_CallConfirmed callConfirmed, + PDU_ML3_CallProceeding callProceeding, + PDU_ML3_Connect_NW_MS connect_NW_MS, + PDU_ML3_ConnectAck connectAck, + PDU_ML3_Progress progress, + PDU_ML3_CC_Establishment cc_Establishment, + //PDU_ML3_Recall recall, + PDU_ML3_Setup_NW_MS setup_NW_MS, + + PDU_ML3_Modify modify, //call information phase msg + PDU_ML3_ModifyComplete modifyComplete, + PDU_ML3_ModifyReject modifyReject, + PDU_ML3_UserInformation userInformation, + + PDU_ML3_Disconnect_NW_MS disconnect_NW_MS, + PDU_ML3_Release_NW_MS release_NW_MS, + PDU_ML3_ReleaseComplete_NW_MS releaseComplete_NW_MS, + + PDU_ML3_Facility facility, //for Suppl.Service contr. + PDU_ML3_HoldAcknowledge holdAcknowledge, + PDU_ML3_HoldReject holdReject, + PDU_ML3_RetrieveAck retrieveAck, + PDU_ML3_RetrieveRej retrieveRej, + + PDU_ML3_CongestionControl congestionControl, //misc + PDU_ML3_Notify notify, + PDU_ML3_StartDTMFAck startDTMFAck, + PDU_ML3_StartDTMFRej startDTMFRej, + PDU_ML3_Status status, + PDU_ML3_StatusEnquiry statusEnquiry, + PDU_ML3_StopDTMFAck stopDTMFAck +} with { variant "TAG ( + alerting_NW_MS, messageType ='000001'B;//Call establishment + callConfirmed, messageType ='001000'B; + callProceeding, messageType ='000010'B; + connect_NW_MS, messageType ='000111'B; + connectAck, messageType ='001111'B; + progress, messageType ='000011'B; + cc_Establishment, messageType ='000100'B; + //recall, messageType ='001011'B; + setup_NW_MS, messageType ='000101'B; + + modify, messageType ='010111'B;//call inf.ph.msg + modifyComplete, messageType ='011111'B; + modifyReject, messageType ='010011'B; + userInformation, messageType ='010000'B; + + disconnect_NW_MS, messageType ='100101'B;//call clearing + release_NW_MS, messageType ='101101'B; + releaseComplete_NW_MS, messageType ='101010'B; + + facility, messageType ='111010'B;//for SS contr. + holdAcknowledge, messageType ='011001'B; + holdReject, messageType ='011010'B; + retrieveAck, messageType ='011101'B; + retrieveRej, messageType ='011110'B; + + congestionControl, messageType ='111001'B;//misc + notify, messageType ='111110'B; + startDTMFAck, messageType ='110110'B; + startDTMFRej, messageType ='110111'B; + status, messageType ='111101'B; + statusEnquiry, messageType ='110100'B; + stopDTMFAck, messageType ='110010'B; + )" +}; + +}//end of module +with { +extension "version R1B" +encode "RAW" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CommonIE_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CommonIE_Types.ttcn new file mode 100644 index 00000000..9d890281 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_CommonIE_Types.ttcn @@ -0,0 +1,680 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_GMM_SM_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_GMM_SM_Types.ttcn new file mode 100644 index 00000000..5148608c --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_GMM_SM_Types.ttcn @@ -0,0 +1,2532 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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_GMM_SM_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.008 v13.4.0 + +module MobileL3_GMM_SM_Types +{ + +// This module contains the GPRS Mobility Management Messages and +// GPRS Session Management Messages of Mobile Radio Interface Layer 3 protocol +// (DTAP) version 24.008 v13.4.0 with attributes for RAW encoding/decoding. +// +// Protocol discriminators and other general parts are defined in 24.007 v6.5.0 +// Some deviations added in order to make the module compatible with +// V97 version of L3. These changes are indicated by 'V97' in comments + +import from General_Types all; +import from MobileL3_CommonIE_Types all; +import from MobileL3_MM_Types all; + +// ============================================================= +// GPRS Mobilty management information elements (chapter 10.5.5) +// ============================================================= + +// Additional Update Type - 10.5.5.0, TS 24.301 v13.4.0/9.9.3.0B +type record AdditionalUpdateTypeTV +{ + AdditionalUpdateTypeV additionalUpdateType, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '0111'B)" }; + +type record AdditionalUpdateTypeV +{ + BIT1 aUTV, + BIT3 spare +}; + +// Attach Result - 10.5.5.1 +type record AttachResultV +{ + BIT3 resultOfAttach, + BIT1 fop_l3 +}; + + +// Attach Type - 10.5.5.2 +type record AttachTypeV +{ + BIT3 attachType, + BIT1 for_l3 +}; + + +// Ciphering Algorithm - 10.5.5.3 +type record CipheringAlgorithmTV +{ + CipheringAlgorithmV cipheringAlgorithm, + BIT4 cipheringAlgorithmIEI +}; + + +type record CipheringAlgorithmV +{ + BIT3 valueField, + BIT1 spare +}; + + +// TMSI status - 10.5.5.4 +type record TMSIStatusTV +{ + TMSIStatusV tmsiStatusV, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1001'B)" }; + + +type record TMSIStatusV +{ + BIT1 tmsiFlag, + BIT3 spare // '000'B +}; + + +// Detach Type - 10.5.5.5 +type record DetachTypeTV +{ + DetachTypeV detachTypeV, + BIT4 detachTypeIEI +}; + + +type record DetachTypeV +{ + BIT3 detachType, + BIT1 powerOffFlag +}; + + +// DRX Parameter - 10.5.5.6 +type record DRXParameterTV +{ + OCT1 elementIdentifier, + DRXParameterV drxParameter +} with { variant "PRESENCE (elementIdentifier = '27'O)"; }; + + +type record DRXParameterV +{ + OCT1 splitPGCycleCode, + BIT3 nonDRXTimer, + BIT1 splitOnCCCH, + BIT4 cnSpecificDRXCycleLength +}; + + +//Force To Standby - 10.5.5.7 +type record ForceToStandbyTV +{ + ForceToStandbyV valueField, + BIT4 forceToStandbyIEI +}; + + +type record ForceToStandbyV{ + BIT3 forceToStandbyValue, + BIT1 spare // '0'B +}; + + +// P-TMSI Signature - 10.5.5.8 +type record P_TMSISignatureTV +{ + OCT1 elementIdentifier, + OCT3 valueField +} with { variant "PRESENCE (elementIdentifier = '19'O)"; } + + +//P-TMSI Signature 2 - 10.5.5.8a +//moved into MobileL3_CommonIE_Types + + +// Identity Type 2 - 10.5.5.9 +type record IdentityType2TV +{ + IdentityType2V valueField, + BIT4 identityType2IEI +}; + + +type record IdentityType2V +{ + BIT3 valueField, + BIT1 spare +}; + + +// IMEISV request - 10.5.5.10 +type record IMEISVRequestTV +{ + IMEISVRequestV imeisvRequest, + BIT4 imeisvRequestIEI +}; + + +type record IMEISVRequestV +{ + BIT3 valueField, + BIT1 spare //'0'B +}; + + +// Receive N-PDU Numbers list - 10.5.5.11 +type record ReceiveNPDUNumbersListTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + ReceiveNPDUNumbersListV numberList +} with { + variant "PRESENCE (elementIdentifier = '26'O)"; + variant (lengthIndicator) "LENGTHTO (numberList)"; + variant (numberList) "PADDING(yes)"// Padding is needed when odd + // number of ReceiveNPDUNumber is used +}; + +type record length(1..11) of ReceiveNPDUNumber ReceiveNPDUNumbersListV; + +type record ReceiveNPDUNumber +{ + BIT4 sapi, + BIT8 numberValue +} with { variant "FIELDORDER(msb)" }; + + +// MS network capability - 10.5.5.12 +type record MSNetworkCapabilityTLV +{ + OCT1 elementIdentifier, + MSNetworkCapabilityLV mSNetworkCapabilityLV +} with { variant "PRESENCE (elementIdentifier = '31'O)"; }; + + +type record MSNetworkCapabilityLV +{ + LIN1 lengthIndicator, + MSNetworkCapabilityV msNetworkCapabilityV +} with { variant (lengthIndicator) "LENGTHTO (msNetworkCapabilityV)"; + variant (msNetworkCapabilityV) "PADDING(yes)" +}; + + +type record MSNetworkCapabilityV //length 3-10 octets +{ + BIT1 gea1bit, + BIT1 smCapabilitiesviaDedicatedChannels, + BIT1 smCapabilitiesviaGPRSChannels, + BIT1 ucs2Support, + BIT2 ssScreeningIndicator, + BIT1 solSACapability optional, //spare in V97 + BIT1 revisionLevelIndicatior optional, //spare in V97 + BIT1 pFCFeatureMode optional, //spare in V97(opt) + BIT6 extendedGEAbits optional, //spare in V97(opt) + BIT1 lcsVAcapability optional, //spare in V97(opt) + BIT1 pSInterRATHOtoUTRANIuModeCapability optional, + BIT1 pSInterRATHOtoEUTRANS1ModeCapability optional, + BIT1 eMMCombinedProceduresCapability optional, + BIT1 iSRSupport optional, + BIT1 sRVCCtoGERANUTRANCapability optional, + BIT1 ePCCapability optional, + BIT1 nFCapability optional, + BIT1 gERANNertworkSharingCapability optional, + octetstring spare_octets length (0..3) optional +} with { variant "FIELDORDER(msb)" }; + + +//MS Radio Access capability - 10.5.5.12a + +// Note: specification allows application of spare bits (even the forming of +// spare octets), The only limitation is that the MS Radio Access capability IE +// has maximum length of 51 octets +type record MSRadioAccessCapabilityLV +{ + LIN1 lengthIndicator, + MSRadioAccessCapabilityV msRadioAccessCapabilityV + // Note that spareBits is automatically handled/calculated as padding + // so that MSRadioAccessCapabilityLV will be octet aligned when encoded + // even if the padding (spareBits) is not visible for the tester. + // lengthIndicator value = MSRadioAccessCapabilityV + (virtual) padding. +} with { + variant "FIELDORDER(msb)"; + variant (lengthIndicator) "LENGTHTO (msRadioAccessCapabilityV )"; + variant "PADDING(yes)" +}; + +type record of MSRACapabilityValuesRecord MSRadioAccessCapabilityV +with { variant "EXTENSION_BIT(reverse)";variant "FIELDORDER(msb)" }; + + +type record MSRACapabilityValuesRecord +{ + MSRACapabilityValues mSRACapabilityValues, + BIT1 presenceBitMSRACap +} with { variant "FIELDORDER(msb)" }; + + +type union MSRACapabilityValues +{ + MSRACapabilityValuesExclude1111 mSRACapabilityValuesExclude1111, + MSRACapabilityValues1111 mSRACapabilityValues1111 +}; + + +type record MSRACapabilityValuesExclude1111 +{ + BIT4 accessTechnType, + AccessCapabilitiesStruct accessCapabilities +} with { + variant "PRESENCE ( + accessTechnType = '0000'B, // GSM P + accessTechnType = '0001'B, // GSM E + accessTechnType = '0010'B, // GSM R + accessTechnType = '0011'B, // GSM 1800 + accessTechnType = '0100'B, // GSM190 + accessTechnType = '0101'B, // GSM 450 + accessTechnType = '0110'B, // GSM480 + accessTechnType = '0111'B, // GSM 480 + accessTechnType = '1000'B, // GSM 700 + accessTechnType = '1001'B, // GSM T 310 + accessTechnType = '1010'B, // GSM T 410 + accessTechnType = '1011'B // GSM T 900 + )" + variant "FIELDORDER(msb)" +}; + + +// Access Capabilities Struct +type record AccessCapabilitiesStruct +{ + integer lengthIndicator, + AccessCapabilities accessCapabilities, + // spare_bits "expands to the indicated length", + // i.e. 24.008 spec puts no restriction on number + // of spare_bits. The only restriction is that the whole + // MS Radio Access Capability IE is less than 52 octets + bitstring spare_bits optional +} with { + variant (lengthIndicator) "FIELDLENGTH(7)"; + variant (lengthIndicator) "LENGTHTO(accessCapabilities,spare_bits)"; + variant (lengthIndicator) "UNIT(bits)"; + variant "FIELDORDER(msb)"; + variant (lengthIndicator) "BYTEORDER(last)"; +} + + +//Access Capabilities +type record AccessCapabilities +{ + BIT3 rfPowerCapability, + BIT1 presenceBitA5, + A5BITS a5bits optional, + BIT1 esind, + BIT1 psbit, + BIT1 vgcs, + BIT1 vbs, + BIT1 presenceBitMultislot, + MultislotCap multislotcap optional, + AccessCapAdditionsAfterRel97 accessCapAdditionsAfterRel97 optional //opt because of V97 + //Note: AccessCapAdditionsAfterRel97 can include: + // Rel99 or + // Rel99 + Rel4 or + // Rel99 + Rel4 + Rel5 or + // Rel99 + Rel4 + Rel5 + Rel6 +} with { + variant "FIELDORDER(msb)"; + variant (a5bits) "PRESENCE(presenceBitA5 = '1'B)"; + variant (multislotcap) "PRESENCE(presenceBitMultislot = '1'B)"; +} + + +type record AccessCapAdditionsAfterRel97 +{ + AccessCapAdditionsRel99 accessCapAdditionsRel99, + AccessCapAdditionsAfterRel99 accessCapAdditionsAfterRel99 optional +} with { + variant "FIELDORDER(msb)"; +} + + +type record AccessCapAdditionsRel99 +{ + BIT1 presenceBitPskpow, + BIT2 pskpowercap optional, + BIT1 compactIntMeasurCap, + BIT1 revisionLevelInd, + BIT1 umtsfddRadAccTechCap, + BIT1 umtstddRadAccTechCap, + BIT1 cdma2kRadAccTechCap +} with { + variant "FIELDORDER(msb)"; + variant (pskpowercap) "PRESENCE(presenceBitPskpow = '1'B)"; +} + + +type record AccessCapAdditionsAfterRel99 +{ + AccessCapAdditionsRel4 accessCapAdditionsRel4, + AccessCapAdditionsAfterRel4 accessCapAdditionsAfterRel4 optional +} with { + variant "FIELDORDER(msb)"; +} + + +type record AccessCapAdditionsRel4 +{ + BIT1 umts128RadAccTechCap, + BIT1 geranFeaturePackage, + BIT1 presenceBitExtendedDTM, + ExtendedDTM extendedDTM optional, + BIT1 modulationBasedMultislotClass +} with { + variant "FIELDORDER(msb)"; + variant (extendedDTM) "PRESENCE(presenceBitExtendedDTM = '1'B)"; +} + + +type record AccessCapAdditionsAfterRel4 +{ + AccessCapAdditionsRel5 accessCapAdditionsRel5, + AccessCapAdditionsAfterRel5 accessCapAdditionsAfterRel5 optional +} with { + variant "FIELDORDER(msb)"; +} + + +type record AccessCapAdditionsRel5 +{ + BIT1 presenceBitHighMultislotCapability, + BIT2 highMultislotCapability optional, + BIT1 presenceBitGeranIuModeCapability, // this field is present to make the module compatible with earlier versions; it always must be set to 0, + BIT2 gMSKMultislotPowerProfile, + BIT2 eightPSKMultislotPowerProfile +} with { + variant "FIELDORDER(msb)"; + variant (highMultislotCapability) + "PRESENCE(presenceBitHighMultislotCapability = '1'B)" +} + + +type record AccessCapAdditionsAfterRel5 +{ + AccessCapAdditionsRel6 accessCapAdditionsRel6, + AccessCapAdditionsAfterRel6 accessCapAdditionsAfterRel6 optional +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsAfterRel6 +{ + AccessCapAdditionsRel7 accessCapAdditionsRel7, + //AccessCapAdditionsRel8 accessCapAdditionsAfterRel7 optional + AccessCapAdditionsAfterRel7 accessCapAdditionsAfterRel7 optional +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsRel6 +{ + BIT1 multipleTBFCapability, + BIT2 downlinkAdvancedReceiverPerformance, + BIT1 extendedRLCMACCtrlMsgSegmentationCap, + BIT1 dTMEnhancementsCapability, + BIT1 presenceBitDTMGPRSHighMultiSlotClass, + DTMGPRSHighMultiSlotClass dTMGPRSHighMultiSlotClass optional, + BIT1 pSHandoverCapability +} with { + variant "FIELDORDER(msb)"; + variant (dTMGPRSHighMultiSlotClass) + "PRESENCE(presenceBitDTMGPRSHighMultiSlotClass = '1'B)" +} + + +type record DTMGPRSHighMultiSlotClass +{ + BIT3 dTMGPRSHighMultiSlotClassValue, + BIT1 presenceBitDTMEGPRSHighMultiSlotClass, + BIT3 dTMEGPRSHighMultiSlotClassValue optional +} with { + variant "FIELDORDER(msb)"; + variant (dTMEGPRSHighMultiSlotClassValue) + "PRESENCE(presenceBitDTMEGPRSHighMultiSlotClass = '1'B)" + +} + + +type record AccessCapAdditionsRel7 +{ + BIT1 dTMHandoverCapability, + BIT1 presenceBitDownlinkDualCarrier, + DownlinkDualCarrier downlinkDualCarrier, + BIT1 flexibleTimeslotAssignment, + BIT1 gANPSHandoverCapability, + BIT1 rLCNonPersistentMode, + BIT1 reducedLatencyCapability, + BIT2 uplinkEGPRS2, + BIT2 downlinkEGPRS2 +} with { + variant "FIELDORDER(msb)"; + variant (downlinkDualCarrier) "PRESENCE(presenceBitDownlinkDualCarrier = '1'B)" +} + +type record AccessCapAdditionsAfterRel7 +{ + AccessCapAdditionsRel8 accessCapAdditionsRel8, + AccessCapAdditionsAfterRel8 accessCapAdditionsAfterRel8 +} + + +type record AccessCapAdditionsRel8 +{ + BIT1 eUTRAFDDsupport , + BIT1 eUTRATDDsupport, + BIT2 gERANToEUTRASupportInGERANPacketTransferMode, + BIT1 priorityBasedReselectionSupport +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsAfterRel8 +{ + AccessCapAdditionsRel9 accessCapAdditionsRel9, + AccessCapAdditionsAfterRel9 accessCapAdditionsAfterRel9 +} + +type record AccessCapAdditionsRel9 +{ + EnhancedFlexTimeslotAssignment enhancedFlexTimeslotAssignment, + BIT1 indicationofUpperLayerPDUStartCapabilityforRLCUM, + BIT1 eMSTCapability, + BIT1 mTTICapability, + BIT1 uTRACSGCellsReporting, + BIT1 eUTRACSGCellsReporting +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsAfterRel9 +{ + AccessCapAdditionsRel10 accessCapAdditionsRel10, + AccessCapAdditionsAfterRel10 accessCapAdditionsAfterRel10 +} + +type record AccessCapAdditionsRel10 +{ + BIT1 dTRCapability, + BIT1 eMSRCapability, + BIT1 fastDownlinkFrequencySwitchingCapability, + BIT2 tIGHTER_Capability +} + +type record AccessCapAdditionsAfterRel10 +{ + AccessCapAdditionsRel11 accessCapAdditionsRel11, + AccessCapAdditionsAfterRel11 accessCapAdditionsAfterRel11 +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsRel11 +{ + BIT1 fANRCapability, + BIT1 iPACapability, + BIT1 gERANNetworkSharingSupport, + BIT1 eUTRAWidebandRSRQMeasurementsSupport +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsAfterRel11 +{ + AccessCapAdditionsRel12 accessCapAdditionsRel12, + AccessCapAdditionsAfterRel12 accessCapAdditionsAfterRel12 +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsRel12 +{ + BIT1 uTRAMultipleFrequencyBandIndicatorsSupport, + BIT1 eUTRAMultipleFrequencyBandIndicatorsSupport, + BIT1 presenceBitDLMCCapability, + DLMCCapability dLMCCapability optional, + BIT1 extendedTSCSetCapabilitySupport +} with { + variant "FIELDORDER(msb)"; + variant (dLMCCapability) "PRESENCE(presenceBitDLMCCapability = '1'B)" +} + +type record DLMCCapability +{ + BIT1 presenceDLMC, + DLMCBandReception dLMCBandReception optional, + BIT2 dLMCMaxBandwidth, + BIT6 dLMCMaxNumOfDownlinkTimeslots, + BIT3 dLMCMaxNumOfDownlinkCarriers +} with { + variant "FIELDORDER(msb)"; + variant (dLMCBandReception) "PRESENCE(presenceDLMC = '1'B)" +} + +type record DLMCBandReception +{ + BIT2 dLMCNonContiguousIntraBandReception, + BIT1 dLMCInterBandReception +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapAdditionsAfterRel12 +{ + AccessCapLateAdditionsRel11 accessCapLateAdditionsRel11, + octetstring accessCapLateAdditionsAfterRel11 +} with { + variant "FIELDORDER(msb)"; +} + +type record AccessCapLateAdditionsRel11 +{ + BIT1 extendedEARFCNValueRange +} + +type record EnhancedFlexTimeslotAssignment +{ + BIT1 presenceBitalternativeEFTAMultislotClass, + BIT4 alternativeEFTAMultislotClass, + BIT3 eFTAMultislotCapabilityReductionforDownlinkDualCarrier +} with { + variant "FIELDORDER(msb)" +}; + + +type record DownlinkDualCarrier +{ + BIT3 multislotCapReductionforDownLinkDualCarrier, + BIT1 downlinkDualCarrierforDTMCapability +} with { variant "FIELDORDER(msb)" }; + + +type record ExtendedDTM +{ + BIT2 ExtendedDTM_GPRSMultislot, + BIT2 ExtendedDTM_EGPRSMultislot +} with { variant "FIELDORDER(msb)" }; + + +//MultislotCap +type record MultislotCap +{ + BIT1 presenceBitHscsd, + BIT5 hscsdmultislotclass optional, + BIT1 presenceBitGprs, + MultislotCap_GPRS gprsmultislot optional, + BIT1 presenceBitSms, + MultislotCap_SMS multislotCap_SMS optional, + MultislotCapAdditionsAfterRel97 multislotCapAdditionsAfterRel97 optional +} with { + variant "FIELDORDER(msb)"; + variant (hscsdmultislotclass) "PRESENCE(presenceBitHscsd = '1'B)"; + variant (gprsmultislot) "PRESENCE(presenceBitGprs = '1'B)"; + variant (multislotCap_SMS) "PRESENCE(presenceBitSms = '1'B)"; + +} + + +type record MultislotCapAdditionsAfterRel97 +{ + BIT1 presenceBitEcsdmulti, + BIT5 ecsdmultislotclass optional, + BIT1 presenceBitEgprsmulti, + MultislotCap_EGPRS multislotCap_EGPRS optional, + BIT1 presenceBitDtmGprsmulti, + MultislotCap_dtmgprsmultislotsubclass multislotCapdtmgprsmultislotsubclass optional +} with { + variant "FIELDORDER(msb)"; + variant (ecsdmultislotclass) "PRESENCE(presenceBitEcsdmulti = '1'B)"; + variant (multislotCap_EGPRS) "PRESENCE(presenceBitEgprsmulti = '1'B)" ; + variant (multislotCapdtmgprsmultislotsubclass) + "PRESENCE(presenceBitDtmGprsmulti = '1'B)" +} + + +type record MultislotCap_GPRS +{ + BIT5 gprsmultislotclass, + BIT1 gprsextendeddynalloccap +} with { variant "FIELDORDER(msb)" }; + + +type record MultislotCap_SMS +{ + BIT4 smsValue, + BIT4 smValue +} with { variant "FIELDORDER(msb)" }; + + +type record MultislotCap_EGPRS +{ + BIT5 egprsmultislotclass, + BIT1 egprsextendeddynalloccap +} with { variant "FIELDORDER(msb)" }; + +type record MultislotCap_dtmgprsmultislotsubclass +{ + BIT2 dtmgprsmultislotsubclass, + BIT1 singleSlotDTM, + BIT1 presenceBitDTM_EGPRSMultiSlot, + BIT2 dTM_EGPRSMultiSlot optional +} with { + variant "FIELDORDER(msb)"; + variant (dTM_EGPRSMultiSlot) "PRESENCE(presenceBitDTM_EGPRSMultiSlot = '1'B)" +}; + + +//A5BITS +type record A5BITS +{ + BIT1 a51 , + BIT1 a52 , + BIT1 a53 , + BIT1 a54 , + BIT1 a55 , + BIT1 a56 , + BIT1 a57 +} with { variant "FIELDORDER(msb)" }; + + +type record MSRACapabilityValues1111 +{ + BIT4 accessTechnType, //1111 + integer lengthIndicator, + BIT1 presenceIndicator_AdditionalAccessTechnologiesRepetition, + AdditionalAccessTechnologiesRepetition // coded '1'B if list is not empty + additionalAccessTechnologiesRepetition optional, + bitstring spare_bits +} with { + variant "PRESENCE (accessTechnType = '1111'B)"; + variant "FIELDORDER(msb)"; + variant (lengthIndicator) "FIELDLENGTH(7)"; + variant (lengthIndicator) "UNIT(bits)"; + variant (lengthIndicator) "BYTEORDER(last)"; + variant (additionalAccessTechnologiesRepetition) + "PRESENCE(presenceIndicator_AdditionalAccessTechnologiesRepetition = '1'B)"; + variant (lengthIndicator) + "LENGTHTO(presenceIndicator_AdditionalAccessTechnologiesRepetition, + additionalAccessTechnologiesRepetition,spare_bits)"; +}; + + +type record of AdditionalAccessTechnologiesRecord +AdditionalAccessTechnologiesRepetition +with { variant "EXTENSION_BIT(reverse)" }; + + +type record AdditionalAccessTechnologiesRecord +{ + AdditionalAccessTechnologies additionalAccessTechnologies, + BIT1 extensionBit +} with { variant "FIELDORDER(msb)" }; + + +type record AdditionalAccessTechnologies +{ + BIT4 accessTechnType, + BIT3 gMSKPowerClass, + BIT2 psk8PowerClass +} with { variant "FIELDORDER(msb)" }; + + +// GMM Cause - 10.5.5.14 +type record GMM_CauseTV +{ + OCT1 elementIdentifier, + GMM_CauseV causeValue +} with { variant "PRESENCE (elementIdentifier = '25'O)"; }; + +type record GMM_CauseV +{ + OCT1 causeValue +}; + + +// Routing Area identification - 10.5.5.15 +type record RoutingAreaIdentificationV +{ + HEX1 mccDigit1, + HEX1 mccDigit2, + HEX1 mccDigit3, + HEX1 mncDigit3, + HEX1 mncDigit1, + HEX1 mncDigit2, + OCT2 lac, + OCT1 rac +}; + +// Routing Area identification - 10.5.5.15a +// moved into MobileL3_CommonIE_Types + +//Update Result - 10.5.5.17 +type record UpdateResultTV +{ + UpdateResultV valueField, + BIT4 elementIdentifier +}; + +type record UpdateResultV +{ + BIT3 valueField, + BIT1 fOP_l3 +}; + + +// Update Type - 10.5.5.18 +type record UpdateTypeTV +{ + UpdateTypeV valueField, + BIT4 elementIdentifier +}; + +type record UpdateTypeV +{ + BIT3 valueField, + BIT1 for_l3 +}; + + +// ACReferenceNumber - 10.5.5.19 +type record ACReferenceNumberTV +{ + ACReferenceNumberV acReferenceNumber, + BIT4 acReferenceNumberIEI +}; + +type record ACReferenceNumberV +{ + BIT4 valueField +}; + + +// Service type - 10.5.5.20 +type record ServiceTypeV +{ + BIT3 serviceType, + BIT1 spare //'0'B +}; + + +// Cell Notification - 10.5.5.21 +type record CellNotificationT +{ + OCT1 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '8C'O)"; }; + + +// PC_LCSCapability - 10.5.5.22 +type record PC_LCSCapability +{ + OCT1 elementIdentifier, + PC_LCSCapabilityLV pC_LCSCapabilityLV +} with { variant "PRESENCE (elementIdentifier = '33'O)"; }; + + +type record PC_LCSCapabilityLV +{ + LIN1 lengthIndicator, // 3 octets + PC_LCSCapabilityV pC_LCSCapabilityV +} with { variant (lengthIndicator) "LENGTHTO (pC_LCSCapabilityV)"}; + + +type record PC_LCSCapabilityV +{ + BIT1 gPS_C, + BIT1 gPS_B, + BIT1 gPS_A, + BIT1 oTD_B, + BIT1 oTD_A, + BIT1 aPC, + BIT2 spare //'00'B +}; + + +// NetworkFeatureSupportTV - 10.5.5.23 +type record NetworkFeatureSupportTV +{ + NetworkFeatureSupportV networkFeatureSupportV, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1011'B)"; }; + + +type record NetworkFeatureSupportV +{ + BIT1 eMCBS, // 24.008 v9.5.0 + BIT1 iMSVoPS, + BIT1 mBMS, + BIT1 lCS_MOLR +}; + +// AdditionalNetworkFeatureSupportTLV - 10.5.5.23A +type record AdditionalNetworkFeatureSupportTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + AdditionalNetworkFeatureSupportV additionalNetworkFeatureSupportV +} with { + variant "PRESENCE (elementIdentifier = '66'O)"; + variant (lengthIndicator) "LENGTHTO (additionalNetworkFeatureSupportV)" +}; + + +type record AdditionalNetworkFeatureSupportV +{ + BIT1 gPRS_SMS, + BIT7 spare +}; + +// 10.5.5.24 Inter RAT information container +type record InterRATInformationContainerTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring interRATInformationContainerV length(0..248) +} with { + variant "PRESENCE (elementIdentifier = '27'O)"; + variant (lengthIndicator) "LENGTHTO (interRATInformationContainerV)" +}; + + +// 10.5.5.25 Requested MS information +type record RequestedMSInformationTV +{ + BIT2 spare, //'00'B + BIT1 i_RAT2, + BIT1 i_RAT, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1010'B)"; }; + +// 10.5.5.26 UE network capability TS 24.301 v13.4.0 / 9.9.3.34 +type record UENetworkCapabilityTLV +{ + OCT1 elementIdentifier, + UENetworkCapabilityLV uENetworkCapabilityLV +}with { + variant "PRESENCE (elementIdentifier = '58'O)" +} + +type record UENetworkCapabilityLV +{ + LIN1 lengthIndicator, //2..13 + UENetworkCapabilityV uENetworkCapabilityV +} with { + variant (lengthIndicator) "LENGTHTO (uENetworkCapabilityV)" +} + +type record UENetworkCapabilityV +{ + BIT8 eEA, + BIT8 eIA, + BIT8 uEA optional, + BIT7 uIA optional, + BIT1 uCS2 optional,//4. octet + BIT1 nF optional, + BIT1 sRVCC optional, + BIT1 lCS optional, + BIT1 lPP optional, + BIT1 aCC_CSFB optional, + BIT1 h245_ASH optional, + BIT1 proSe optional, + BIT1 proSe_dd optional, + BIT1 proSe_dc optional, + BIT7 spare optional,//6. octet + octetstring spare4 length (0..7) optional +} + +// 10.5.5.27 E-UTRAN inter RAT information container +type record EUTRANinterRATInformationContainerTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring eUTRANinterRATInformationContainerV length(0..255) +} with { + variant "PRESENCE (elementIdentifier = '2B'O)"; + variant (lengthIndicator) "LENGTHTO (eUTRANinterRATInformationContainerV)" +}; + +// 10.5.5.28 Voice Domain Preference and UE's Usage Setting +type record VoiceDomainPreferenceandUEsUsageSettingTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + VDPaUEsUS_V informationElement +} with { + variant "PRESENCE (elementIdentifier = '5D'O)" + variant (lengthIndicator) "LENGTHTO (informationElement)" +}; + +type record VDPaUEsUS_V +{ + BIT2 voiceDomainPreferenceforEUTRAN, + BIT1 uEsUsageSetting, + BIT1 spare1, + BIT1 spare2, + BIT1 spare3, + BIT1 spare4, + BIT1 spare5 +}; + +// P_TMSI Type 10.5.5.29 +//moved into MobileL3_CommonIE_Types + +// 10.5.5.30 +type record LocationAreaIdentification2_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT5 locationAreaIdentificationValue +} with { + variant "PRESENCE (elementIdentifier = '14'O)"; + variant (lengthIndicator) "LENGTHTO (locationAreaIdentificationValue)" +}; + +// 10.5.5.31 +type record NetworkResourceIdentifierContainerTLV +{ + OCT1 elementIdentifier, + NetworkResourceIdentifierContainerLV networkResourceIdentifierContainerLV +} with { + variant "PRESENCE (elementIdentifier = '10'O)"; +}; + +type record NetworkResourceIdentifierContainerLV +{ + LIN1 lengthIndicator, + NetworkResourceIdentifierContainerV networkResourceIdentifierContainerV +} with { + variant (lengthIndicator) "LENGTHTO (networkResourceIdentifierContainerV)" +}; + +type record NetworkResourceIdentifierContainerV +{ + BIT10 nRIContainerValue, + BIT6 spare +} with { + variant (nRIContainerValue) "BITORDER (msb)"; + variant (nRIContainerValue,spare) "FIELDORDER (msb)"; +}; + +// 10.5.5.32 +type record ExtendedDRXParametersTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT4 eDRXValue, + BIT4 pagingTimeWindow +} with { + variant "PRESENCE (elementIdentifier = '6E'O)"; + variant (lengthIndicator) "LENGTHTO (eDRXValue,pagingTimeWindow)" +}; +// ======================================================== +// Session management information elements (chapter 10.5.6) +// ======================================================== + +// Access Point Name - 10.5.6.1 + +type record AccessPointNameTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, // 3-102 octets , + AccessPointNameV accessPointNameValue +} with { + variant "PRESENCE (elementIdentifier = '28'O)"; + variant (lengthIndicator) "LENGTHTO (accessPointNameValue)" +}; + +type record AccessPointNameLV +{ + LIN1 lengthIndicator, // 3-102 octets , + AccessPointNameV accessPointNameValue +} with { variant (lengthIndicator) "LENGTHTO (accessPointNameValue)"}; + +type octetstring AccessPointNameV; + + +//NSAPI - 10.5.6.2 +type record NSAPITV +{ + OCT1 elementIdentifier, + NSAPIV valueField +}; + +type record NSAPIV +{ + BIT4 valueField, + BIT4 spare //'0000'B +}; + + +//Protocol Configuration Options - 10.5.6.3 +type record ProtocolConfigOptionsTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + ProtocolConfigOptionsV protocolConfigOptionsV +} with { + variant "PRESENCE (elementIdentifier = '27'O)"; + variant (lengthIndicator) "LENGTHTO (protocolConfigOptionsV)" +}; + +type record ProtocolConfigOptionsV +{ + BIT3 configProtocol, + BIT4 spare , //'0000'B + BIT1 extensionField, //'1'B + ProtocolIDs_and_ContainerIDs protocolIDs_and_ContainerIDs optional +}; + +type record of ProtocolID_or_ContainerID ProtocolIDs_and_ContainerIDs; + +type record ProtocolID_or_ContainerID +{ + OCT2 protocolID_or_ContainerID, + LIN1 lengthIndicator, + octetstring protID_orContID_Contents +} with { variant (lengthIndicator) "LENGTHTO (protID_orContID_Contents)"}; + + +// PDP Address - 10.5.6.4 +type record PDPAddressTLV +{ + OCT1 elementIdentifier, + PDPAddressLV pDPAddressLV +} with { variant "PRESENCE (elementIdentifier = '2B'O)"; }; + + +type record PDPAddressLV +{ + LIN1 lengthIndicator, + PDPAddressV pdpAddressV +} with { variant (lengthIndicator) "LENGTHTO (pdpAddressV)"}; + + +type record PDPAddressV +{ + BIT4 pdpTypeOrg, + BIT4 spare, //'0000'B + OCT1 pdpTypeNum, + octetstring addressInfo optional +}; + + +// QoS - 10.5.6.5 +type record QoSTLV +{ + OCT1 elementIdentifier, + QoSLV qoSLV +} with { variant "PRESENCE (elementIdentifier = '30'O)"; }; + + +type record QoSLV +{ + LIN1 lengthIndicator, + QoSV qoSV +} with { variant (lengthIndicator) "LENGTHTO (qoSV)"}; + + +type record QoSV +{ + BIT3 reliabilityClass, + BIT3 delayClass, + BIT2 spare1, // '00'B + BIT3 precedenceClass, + BIT1 spare2, //'0'B + BIT4 peakThroughput, + BIT5 meanThroughput, + BIT3 spare3, //'000'B + BIT3 deliverErroneusSDU optional, //opt because of V97 + BIT2 deliveryOrder optional, //opt because of V97 + BIT3 trafficClass optional, //opt because of V97 + OCT1 maxSDUSize optional, //opt because of V97 + OCT1 maxBitrateUplink optional, //opt because of V97 + OCT1 maxBitrateDownlink optional, //opt because of V97 + BIT4 sduErrorRatio optional, //opt because of V97 + BIT4 residualBER optional, //opt because of V97 + BIT2 trafficHandlingPriority optional, //opt because of V97 + BIT6 transferDelay optional, //opt because of V97 + OCT1 guaranteedBitRateUplink optional, //opt because of V97 + OCT1 guaranteedBitRateDownlink optional, //opt because of V97 + BIT4 sourceStatisticsDescriptor optional, //opt because of V97 + BIT1 signallingIndication optional, //opt because of V97 + BIT3 spare4 optional, //opt because of V97 + // '000'B + OCT1 maxBitrateDownlinkExt optional, //opt because of V97 + OCT1 guaranteedBitRateDownlinkExt optional, //opt because of V97 + OCT1 maxBitrateUplinkExt optional, //opt because of V97 + OCT1 guaranteedBitRateUplinkExt optional, //opt because of V97 + OCT1 maxBitrateDownlinkExt2 optional, //opt because of V97 + OCT1 guaranteedBitRateDownlinkExt2 optional, //opt because of V97 + OCT1 maxBitrateUplinkExt2 optional, //opt because of V97 + OCT1 guaranteedBitRateUplinkExt2 optional //opt because of V97 +}; + +// ReAttemptIndicator - 10.5.6.5a +type record ReAttemptIndicatorTLV +{ + OCT1 elementIdentifier, + ReAttemptIndicatorLV reAttemptIndicatorLV +} with { variant "PRESENCE (elementIdentifier = '6B'O)"; }; + +type record ReAttemptIndicatorLV +{ + LIN1 lengthIndicator, + ReAttemptIndicatorV reAttemptIndicatorV +} with { variant (lengthIndicator) "LENGTHTO (reAttemptIndicatorV)"}; + +type record ReAttemptIndicatorV +{ + BIT1 rATCValue, + BIT1 ePLMNCValue, + BIT6 spare +} + +// SM Cause - 10.5.6.6 +type OCT1 SMCauseV; + +// SM Cause2 - 10.5.6.6a +type record SMCause2TLV +{ + OCT1 elementIdentifier, + SMCause2LV sMCause2LV +} with { variant "PRESENCE (elementIdentifier = '39'O)"; }; + +type record SMCause2LV +{ + LIN1 lengthIndicator, + OCT1 sMCause2V +} with { variant (lengthIndicator) "LENGTHTO (sMCause2V)"}; + +// Linked TI - 10.5.6.7 +type record LinkedTITLV +{ + OCT1 elementIdentifier, + LinkedTILV linkedTILV +} + +type record LinkedTILV +{ + LIN1 lengthIndicator, + LinkedTIV valueField +} with { variant (lengthIndicator) "LENGTHTO (valueField)"}; + + +type record LinkedTIV +{ + BIT4 spare, //'0000'B + BIT3 tio, + BIT1 tiFlag, + TI_Extension tIExtension optional +} with { variant (tIExtension)"PRESENCE(tio = '111'B)"}; + + +type record TI_Extension +{ + BIT7 tI_Value, + BIT1 tI_ExtBit //'1'B +}; + + +// LLC SAPI - 10.5.6.9 +type record LLC_SAPITV +{ + OCT1 elementIdentifier, + LLC_SAPIV valueField +} with { variant "PRESENCE (elementIdentifier = '32'O)"; }; + + +type record LLC_SAPIV +{ + BIT4 valueField, + BIT4 spare //'0000'B +}; + + +// Tear down indicator - 10.5.6.10 +type record TearDownIndicatorTV +{ + TearDownIndicatorV tearDownIndicatorV, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1001'B)"; }; + +type record TearDownIndicatorV +{ + BIT1 tdi_flag, + BIT3 spare //'000'B +}; + + +// Packet Flow Identifier - 10.5.6.11 +type record PacketFlowIDTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + PacketFlowIDV valueField +} with { + variant "PRESENCE (elementIdentifier = '34'O)"; + variant (lengthIndicator) "LENGTHTO (valueField)" +}; + + +type record PacketFlowIDV +{ + BIT7 valueField, + BIT1 spare // '0'B +}; + + +// Traffic Flow Template - 10.5.6.12 +// when TFT operation is "delete packet filters from existing TFT" +// NOTE: will need to use "TAG" variant if both IEI is present within a PDU +type record TrafficFlowTemplateTLV +{ + OCT1 elementIdentifier, + TrafficFlowTemplateLV trafficFlowTemplateLV +} with { variant "PRESENCE (elementIdentifier = '31'O, + elementIdentifier = '36'O)"; +}; + +type record TrafficFlowTemplateLV +{ + LIN1 lengthIndicator, + TrafficFlowTemplateV valueField +} with { variant (lengthIndicator) "LENGTHTO(valueField)"}; + + +type union TrafficFlowTemplateV +{ + TrafficFlowTemplateV_CreateAddReplaceTFT + trafficFlowTemplateV_CreateAddReplaceTFT, + TrafficFlowTemplateV_DeletePacketFilter + trafficFlowTemplateV_DeletePacketFilter, + TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation + trafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation +}; + + +type record TrafficFlowTemplateV_CreateAddReplaceTFT +{ + integer numberOfPacketFilters, + BIT1 eBIT, + BIT3 operationCodeTFT, //'001'B or + PacketFilterList_CreateAddReplaceTFT packetFilterList_CreateAddReplaceTFT, + ParametersList parametersList optional +} with { + variant "PRESENCE (operationCodeTFT = '001'B, // Create New TFT + operationCodeTFT = '011'B, // Add packet filters to existing TFT + operationCodeTFT = '100'B // Replace packet filters in existing TFT + )"; + variant(parametersList) "PRESENCE(eBIT = '1'B)"; + variant(numberOfPacketFilters)"FIELDLENGTH(4)"; + variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_CreateAddReplaceTFT)"; + variant(numberOfPacketFilters)"UNIT(elements)"; +}; + + +type record TrafficFlowTemplateV_DeletePacketFilter +{ + integer numberOfPacketFilters, + BIT1 eBIT, + BIT3 operationCodeTFT, + //'101'B or '011'B or '100'B + PacketFilterList_DeletePacketFilter packetFilterList_DeletePacketFilter, + ParametersList parametersList optional +} with { + variant "PRESENCE (operationCodeTFT = '101'B)" // Delete packet filters from existing TFT + variant(parametersList) "PRESENCE(eBIT = '1'B)"; + variant(numberOfPacketFilters)"FIELDLENGTH(4)"; + variant(numberOfPacketFilters)"LENGTHTO(packetFilterList_DeletePacketFilter)"; + variant (numberOfPacketFilters)"UNIT(elements)"; +}; + + +type record TrafficFlowTemplateV_Delete_Existing_TFT_or_No_TFT_Operation +{ + BIT4 numberOfPacketFilters, //'0000'B + // numberOfPacketFilters is meaningless here since there is no PacketFilterList + BIT1 eBIT, + BIT3 operationCodeTFT, // '010'B or '110'B + ParametersList parametersList optional +} with { + variant "PRESENCE (operationCodeTFT = '010'B, // delete existing TFT + operationCodeTFT = '110'B // No TFT Operation + )"; + variant (parametersList) "PRESENCE(eBIT = '1'B)" +}; + + +type record of PacketFilter PacketFilterList_CreateAddReplaceTFT; + + +type record PacketFilter +{ + PacketFilterIdentifier_CreateAddReplaceTFT identifier, + OCT1 evaluationPrecedence, + LIN1 lengthIndicator, + octetstring contents +} with { variant (lengthIndicator) "LENGTHTO (contents)"}; + +type record PacketFilterIdentifier_CreateAddReplaceTFT +{ + BIT4 packetFilterIdentifier, + BIT2 packetFilterDirection, + BIT2 spare +} + +type record of PacketFilterIdentifier PacketFilterList_DeletePacketFilter; + + +type record PacketFilterIdentifier +{ + BIT4 packetFilterIdentifier, + BIT4 spare +} + + +type record of Parameter ParametersList; + + +type record Parameter +{ + OCT1 parameterIdentifier, + LIN1 lengthIndicator, + octetstring contents +} with { variant (lengthIndicator) "LENGTHTO (contents)"}; + + +// Temporary Mobile Group Identity - 10.5.6.13 +type record TemporaryMobileGroupIDLV +{ + LIN1 lengthIndicator, + OCT3 mBMSServiceID, + HEX1 mccDigit1, + HEX1 mccDigit2, + HEX1 mccDigit3, + HEX1 mncDigit3, + HEX1 mncDigit1, + HEX1 mncDigit2 +} with { variant (lengthIndicator) "LENGTHTO + (mBMSServiceID,mccDigit1,mccDigit2,mccDigit3, + mccDigit3,mncDigit1,mncDigit2)"}; + + +// MBMS Bearer Capabilities - 10.5.6.14 +type record MBMSBearerCapabilitiesLV +{ + LIN1 lengthIndicator, + OCT1 maxBitrateDownlink, + OCT1 maxBitrateDownlinkExtended optional +} with { variant (lengthIndicator) "LENGTHTO (maxBitrateDownlink, + maxBitrateDownlinkExtended)"}; + +// MBMS Protocol Configuration Options - 10.5.6.15 +type record MBMSProtocolConfigOptionsTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT1 spare, // '00'O + octetstring valueField +} with { + variant "PRESENCE (elementIdentifier = '35'O)"; + variant (lengthIndicator) "LENGTHTO (spare,valueField)" +}; + + +//10.5.6.16 +type record EnhancedNetworkSeviveAccessPointIDV //(V) +{ + OCT1 enhancedNetworkSeviveAccessPointIDValue +} + +// 10.5.6.17 Request type +type record RequestTypeTV { + RequestTypeV requestTypeV, + BIT1 spare, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1010'B)" }; + +//001 initial request +//010 Handover +//011 Unused. If received, the network shall interpret this as "initial request". +//100 Emergency +type BIT3 RequestTypeV; + +// 10.5.6.18 Notification Indicator +type record NotificationIndicatorLV +{ + LIN1 lengthIndicator, + OCT1 valueField +} with { + variant (lengthIndicator) "LENGTHTO (valueField)" +}; + +// 10.5.6.19 Connectivity Type +type record ConnectivityTypeTV +{ + BIT4 connectivityTypeValue, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1011'B)" }; + +// 10.5.6.20 WLAN Offload Acceptability +type record WLANOffloadAcceptabilityTV +{ + BIT1 eUTRANOffloadAcceptabilityValue, + BIT1 uTRANOffloadAcceptabilityValue, + BIT2 spare, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1100'B)" }; + +// 10.5.6.21 NBIFOM container +type record NBIFOM_ContainerTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + NBIFOM_ParameterList contents +} with { variant "PRESENCE (elementIdentifier = '33'O)"; + variant (lengthIndicator) "LENGTHTO (contents)" }; + +// 6.1.1 - TS 24.161 v2.0.0 +type record of NBIFOM_Parameter NBIFOM_ParameterList; + +type record NBIFOM_Parameter +{ + OCT1 parameterIdentifier, + LIN1 lengthIndicator, + NBIFOM_ParameterContents parameterContents +} with { variant (lengthIndicator) "LENGTHTO (parameterContents)"; + variant (parameterContents) "CROSSTAG( + nBIFOM_Mode, parameterIdentifier = '01'O; + nBIFOM_DefaultAccess, parameterIdentifier = '02'O; + nBIFOM_Status, parameterIdentifier = '03'O; + nBIFOM_RoutingRules, parameterIdentifier = '04'O; + nBIFOM_IPFlowMapping, parameterIdentifier = '05'O; + nBIFOM_RANRulesHandling, parameterIdentifier = '06'O; + nBIFOM_RANRulesStatus, parameterIdentifier = '07'O; + nBIFOM_AccessUsabilityIndication, parameterIdentifier = '08'O; + unknownParameter, OTHERWISE)"}; + +type union NBIFOM_ParameterContents +{ + OCT1 nBIFOM_Mode, + OCT1 nBIFOM_DefaultAccess, + OCT1 nBIFOM_Status, + NBIFOM_RoutingRules nBIFOM_RoutingRules, + NBIFOM_RoutingRules nBIFOM_IPFlowMapping, + OCT1 nBIFOM_RANRulesHandling, + OCT1 nBIFOM_RANRulesStatus, + NBIFOM_AccessUsabilityIndication nBIFOM_AccessUsabilityIndication, + octetstring unknownParameter +}; + +type record of NBIFOM_RoutingRule NBIFOM_RoutingRules +type record NBIFOM_RoutingRule +{ + LIN1 lengthIndicator, + OCT1 routingRuleIdentifier, + BIT3 operationCode, + BIT3 spare, + BIT2 routingAccess, + OCT1 routingRulePrioroty, + RoutingFilter routingFilter +} with { variant (lengthIndicator) "LENGTHTO (routingRuleIdentifier,operationCode, + spare,routingAccess,routingRulePrioroty,routingFilter)";} + +type record RoutingFilter +{ + BIT1 flagA, + BIT1 flagB, + BIT1 flagC, + BIT1 flagD, + BIT1 flagE, + BIT1 flagF, + BIT1 flagG, + BIT1 flagH, + BIT1 flagI, + BIT1 flagJ, + BIT1 flagK, + BIT1 flagL, + BIT1 flagM, + BIT1 flagN, + bitstring flagsZ length(18), + OCT4 sourceIPv4Address optional, + OCT4 destinationIPv4Address optional, + OCT16 sourceIPv6Address optional, + OCT16 destinationIPv6Address optional, + OCT1 sourceAddressPrefixLength optional, + OCT1 destinationAddressPrefixLength optional, + OCT4 iPSecSecurityParameterIndex optional, + OCT1 protocolTypeNextHeader optional, + OCT4 startSourcePortRange optional, + OCT4 endSourcePortRange optional, + OCT4 startDestinationPortRange optional, + OCT4 endDestinationPortRange optional, + OCT1 typeOfService optional, + OCT4 flowLabel optional +} with { variant (sourceIPv4Address) "PRESENCE(flagA = '1'B)"; + variant (destinationIPv4Address) "PRESENCE(flagB = '1'B)"; + variant (sourceIPv6Address) "PRESENCE(flagC = '1'B)"; + variant (destinationIPv6Address) "PRESENCE(flagD = '1'B)"; + variant (sourceAddressPrefixLength) "PRESENCE(flagE = '1'B)"; + variant (destinationAddressPrefixLength) "PRESENCE(flagF = '1'B)"; + variant (iPSecSecurityParameterIndex) "PRESENCE(flagG = '1'B)"; + variant (protocolTypeNextHeader) "PRESENCE(flagH = '1'B)"; + variant (startSourcePortRange) "PRESENCE(flagI = '1'B)"; + variant (endSourcePortRange) "PRESENCE(flagJ = '1'B)"; + variant (startDestinationPortRange) "PRESENCE(flagK = '1'B)"; + variant (endDestinationPortRange) "PRESENCE(flagL = '1'B)"; + variant (typeOfService) "PRESENCE(flagM = '1'B)"; + variant (flowLabel) "PRESENCE(flagN = '1'B)"; +} + +type record NBIFOM_AccessUsabilityIndication +{ + BIT2 threeGPPAccessUsableValue, + BIT2 wLANAccessUsableValue, + BIT4 spare +} +// ================================================= +// GPRS Common information elements (chapter 10.5.7) +// ================================================= + +//PDPContextStatus - 10.5.7.1 +type record PDPContextStatusTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT2 valueField +} with { + variant "PRESENCE (elementIdentifier = '32'O)"; + variant (lengthIndicator) "LENGTHTO (valueField)" +}; + + +// Radio priority - 10.5.7.2 +type record RadioPriorityTV +{ + RadioPriorityV valueField, + BIT4 elementIdentifier +} with { variant "PRESENCE (elementIdentifier = '1000'B)"; }; + + +type record RadioPriorityV +{ + BIT3 priorityLevelValue, + BIT1 spare // '0'B +}; + + +//GPRS Timer - 10.5.7.3 +type record GPRSTimerTV +{ + OCT1 elementIdentifier, + GPRSTimerV gprsTimerV +} with { variant "PRESENCE (elementIdentifier = '17'O)"; }; + + +type record GPRSTimerV +{ + BIT5 timerValue, + BIT3 unit +}; + +// GPRS Timer2 - 10.5.7.4 +type record GPRSTimer2TLV +{ + OCT1 elementIdentifier, //'2A'O or '37'O + LIN1 lengthIndicator, + GPRSTimerV gprsTimer2V // the same as GPRSTimerV +} with { + variant (lengthIndicator) "LENGTHTO (gprsTimer2V)" +}; + +// GPRS Timer3 - 10.5.7.4a +// GPRSTimer3TLV See MobileL3_CommonIE_Types.ttcn + +// Radio priority2 - 10.5.7.5 +type record RadioPriority2TV +{ + RadioPriority2V valueField, + BIT4 elementIdentifier +}; + + +type record RadioPriority2V +{ + BIT3 priorityLevelValue, + BIT1 spare // '0'B +}; + + +// 10.5.7.6 MBMS context status +type record MBMS_ContextStatusTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring mBMSContextStatusInformation length (0..16) +} with { + variant "PRESENCE (elementIdentifier = '35'O)"; + variant (lengthIndicator) "LENGTHTO (mBMSContextStatusInformation)" +}; + + +// 10.5.7.7 +type record UplinkDataStatusTLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + UplinkDataStatusV valueField +} with { + variant "PRESENCE (elementIdentifier = '36'O)"; + variant (lengthIndicator) "LENGTHTO (valueField)" +}; + +type record UplinkDataStatusV +{ + BIT5 spare, + BIT3 nSAPI_5_to_7, + BIT8 nSAPI_8_to_15 +}; + +// 10.5.7.8 +// DevicePropertiesTV -> See MobileL3_CommonIE_Types.ttcn + + +// ============================================== +// GPRS Mobility Management Messages (chapter 9.4) +// ============================================== + +// GMM Attach Request - 9.4.1 +type record PDU_GMM_AttachRequest +{ + BIT8 messageType, // '00000001'B + MSNetworkCapabilityLV msNetworkCapability, + AttachTypeV attachType, + CipheringKeySequenceNumberV gprsCKSN, + DRXParameterV drxParam, + MobileIdentityLV mobileIdentity, + RoutingAreaIdentificationV oldRoutingAreaID, + MSRadioAccessCapabilityLV msRACap, + P_TMSISignatureTV ptmsiSignature optional, + GPRSTimerTV reqGPRStimer optional, + TMSIStatusTV tmsiStatus optional, + PC_LCSCapability pC_LCSCapability optional, + MobileStationClassmark2_TLV mobileStationClassmark2 optional, + MobileStationClassmark3_TLV mobileStationClassmark3 optional, + SupportedCodecList supportedCodecs optional, + UENetworkCapabilityTLV uENetworkCapability optional, + MobileIdentityTLV additionalMobileIdentity optional, + RoutingAreaIdentification2TLV routingAreaIdentification2 optional, + VoiceDomainPreferenceandUEsUsageSettingTLV voiceDomainandUEsUsageSetting optional, + DevicePropertiesTV deviceProperties optional, + P_TMSI_TypeTV p_TMSI_Type optional, + MS_NetworkFeatureSupportTV mS_NetworkFeatureSupport optional, + LocationAreaIdentification2_TLV oldLocationAreaIdentification optional, + AdditionalUpdateTypeTV additionalUpdateType optional, + NetworkResourceIdentifierContainerTLV tMSIBasedNRIcontainer optional, + GPRSTimer2TLV t3324 optional, + GPRSTimer3TLV t3312_ExtendedValue optional, + ExtendedDRXParametersTLV extendedDRXParameters optional +} with { + variant "PRESENCE (messageType = '00000001'B)"; + variant "TAG + ( + additionalMobileIdentity, elementIdentifier = '0011010'B; + deviceProperties, elementIdentifier = '1101'B; //D + mS_NetworkFeatureSupport, elementIdentifier = '1100'B; //C + t3324, elementIdentifier = '6a'O; + t3312_ExtendedValue, elementIdentifier = '39'O + )" +}; + +// GMM Attach Accept - 9.4.2 +type record PDU_GMM_AttachAccept +{ + BIT8 messageType, + AttachResultV attachResult, + ForceToStandbyV forceToStandby, + GPRSTimerV updateTimer, + RadioPriorityV radioPriority, //SMS + RadioPriority2V radioPriorityTOM8, // TOM8 + RoutingAreaIdentificationV routingAreaIdentification, + P_TMSISignatureTV ptmsiSignature optional, + GPRSTimerTV readyTimer optional, + MobileIdentityTLV allocatedPTMSI optional, + MobileIdentityTLV msIdentity optional, + GMM_CauseTV gmmCause optional, + GPRSTimer2TLV t3302 optional, + CellNotificationT cellNotification optional, + PLMNListTLV equivalentPLMNs optional, + NetworkFeatureSupportTV networkFeatureSupport optional, + EmergencyNumberListTLV emergencyNumberList optional, + RequestedMSInformationTV requestedMSInformation optional, + GPRSTimer2TLV t3319 optional, + GPRSTimer2TLV t3323 optional, + GPRSTimer3TLV t3312_ExtendedValue optional, + AdditionalNetworkFeatureSupportTLV additionalNetworkFeatureSupport optional, + GPRSTimer2TLV t3324 optional, + ExtendedDRXParametersTLV extendedDRXParameters optional +} with { + variant "PRESENCE (messageType = '00000010'B)"; + variant "TAG + ( + allocatedPTMSI, elementIdentifier = '0011000'B; //'18'O 7 bits + msIdentity, elementIdentifier = '0100011'B; //'23'O 7 bits + t3302, elementIdentifier = '2A'O; + t3319, elementIdentifier = '37'O; + t3323, elementIdentifier = '38'O; + t3312_ExtendedValue, elementIdentifier = '39'O; + t3324, elementIdentifier = '6a'O; + )" +}; + + +// GMM Attach Complete - 9.4.3 +type record PDU_GMM_AttachComplete +{ + BIT8 messageType, + InterRATInformationContainerTLV interRATHandoverInformation optional, + EUTRANinterRATInformationContainerTLV eUTRANinterRATHandoverInformation optional +} with { variant "PRESENCE (messageType = '00000011'B)"; }; + + +// GMM Attach Reject - 9.4.4 +type record PDU_GMM_AttachReject +{ + BIT8 messageType, + GMM_CauseV gmmCause, + GPRSTimer2TLV t3302 optional, + GPRSTimer2TLV t3346 optional + +} with { variant "PRESENCE (messageType = '00000100'B)"; + variant "TAG + ( + t3302, elementIdentifier = '2A'O; + t3346, elementIdentifier = '3A'O; + )" +}; + +// GMM Detach Request - 9.4.5 + +// GMM Detach Request (mobile terminated detach) - 9.4.5.1 +type record PDU_GMM_DetachRequest_SGSN_MS +{ + BIT8 messageType, + DetachTypeV detachType, + ForceToStandbyV forceToStandby, + GMM_CauseTV gmmCause optional +} with { variant "PRESENCE (messageType = '00000101'B)"; }; + +// GMM Detach Request (mobile originating detach) - 9.4.5.2 +type record PDU_GMM_DetachRequest_MS_SGSN +{ + BIT8 messageType, + DetachTypeV detachType, + BIT4 spare, + MobileIdentityTLV ptmsi optional, + P_TMSISignature2TLV ptmsiSignature optional +} with { + variant "PRESENCE (messageType = '00000101'B)"; + variant "TAG (ptmsi, elementIdentifier = '0011000'B;)" //'18'O 7 bits +}; + +// GMM Detach Accept - 9.4.6 + +// GMM Detach Accept (mobile terminated detach) 9.4.6.1 +type record PDU_GMM_DetachAccept_MS_SGSN +{ + BIT8 messageType +} with { variant "PRESENCE (messageType = '00000110'B)"; }; + +// GMM Detach Accept (mobile originating detach) 9.4.6.2 +type record PDU_GMM_DetachAccept_SGSN_MS +{ + BIT8 messageType, + ForceToStandbyV forceToStandby, + BIT4 spare +} with { variant "PRESENCE (messageType = '00000110'B)"; }; + +// GMM P-TMSI reallocation command - 9.4.7 +type record PDU_GMM_P_TMSIReallocationCommand +{ + BIT8 messageType, + MobileIdentityLV allocatedPTMSI, + RoutingAreaIdentificationV routingAreaIdentification, + ForceToStandbyV forceToStandby, + BIT4 spare, + P_TMSISignatureTV ptmsiSignature optional +} with { variant "PRESENCE (messageType = '00010000'B)"; }; + +// GMM P-TMSI reallocation complete - 9.4.8 +type record PDU_GMM_P_TMSIReallocationComplete +{ + BIT8 messageType +} with { variant "PRESENCE (messageType = '00010001'B)"; }; + +// GMM Authentication and ciphering request - 9.4.9 +type record PDU_GMM_AuthenticationAndCipheringRequest +{ + BIT8 messageType, + CipheringAlgorithmV cipheringAlgorithm, + IMEISVRequestV imeisvRequest, + ForceToStandbyV forceToStandby, + ACReferenceNumberV acReferenceNumber, + AuthenticationParameterRANDTV authenticationParameterRAND optional, + CipheringKeySequenceNumberTV cipheringKeySequenceNumber optional, + AuthenticationParameterAUTNTLV authenticationParameterAUTN optional +} with { variant "PRESENCE (messageType = '00010010'B)"; + variant "TAG (authenticationParameterAUTN, elementIdentifier = '28'O)"; +}; + +// GMM Authentication and ciphering response - 9.4.10 +type record PDU_GMM_AuthenticationAndCipheringResponse +{ + BIT8 messageType, + ACReferenceNumberV acReferenceNumber, + BIT4 spare, + AuthenticationResponseParameterTV authenticationParResp optional, + MobileIdentityTLV imeisv optional, + AuthenticationResponseParameterUMTSTLV authenticationRespParExt optional +} with { + variant "PRESENCE (messageType = '00010011'B)"; + variant "TAG (imeisv, elementIdentifier = '0100011'B;)" + variant "TAG (authenticationRespParExt, elementIdentifier = '29'O)"; +}; + +// GMM Authentication and Ciphering Failure - 9.4.10a +type record PDU_GMM_AuthenticationAndCipheringFailure +{ + BIT8 messageType, + GMM_CauseV gmmCause, + AuthenticationFailureParametersTLV authenticationFailureParam optional +} with { variant "PRESENCE (messageType = '00011100'B)"; + variant "TAG (authenticationFailureParam, elementIdentifier = '30'O)"; +}; + +// GMM Authentication and ciphering reject - 9.4.11 +type record PDU_GMM_AuthenticationAndCipheringReject +{ + BIT8 messageType +} with { variant "PRESENCE (messageType = '00010100'B)"; }; + +// GMM Identity Request - 9.4.12 +type record PDU_GMM_IdentityRequest +{ + BIT8 messageType, + IdentityType2V identityType, + ForceToStandbyV forceToStandby +} with { variant "PRESENCE (messageType = '00010101'B)"; }; + +// GMM Identity response - 9.4.13 +type record PDU_GMM_IdentityResponse +{ + BIT8 messageType, + MobileIdentityLV mobileIdentity +} with { variant "PRESENCE (messageType = '00010110'B)"; }; + +// GMM Routing area update request - 9.4.14 +type record PDU_GMM_RoutingAreaUpdateRequest +{ + BIT8 messageType, + UpdateTypeV updateType, + CipheringKeySequenceNumberV gprsCKSN, + RoutingAreaIdentificationV oldRoutingAreaId, + MSRadioAccessCapabilityLV msRACap, + P_TMSISignatureTV oldPTMSISignature optional, + GPRSTimerTV readyTimerValue optional, + DRXParameterTV drxParameter optional, + TMSIStatusTV tmsiStatus optional, + MobileIdentityTLV ptmsi optional, + MSNetworkCapabilityTLV mSNetworkCapability optional, + PDPContextStatusTLV pdpContextStatus optional, + PC_LCSCapability pC_LCSCapability optional, + MBMS_ContextStatusTLV mBMS_ContextStatus optional, + UENetworkCapabilityTLV uENetworkCapability optional, + MobileIdentityTLV additionalMobileIdentity optional, + RoutingAreaIdentification2TLV oldRoutingAreaIdentification2 optional, + MobileStationClassmark2_TLV mobileStationClassmark2 optional, + MobileStationClassmark3_TLV mobileStationClassmark3 optional, + SupportedCodecList supportedCodecs optional, + VoiceDomainPreferenceandUEsUsageSettingTLV voiceDomainUEUsageSetting optional, + P_TMSI_TypeTV p_TMSI_Type optional, + DevicePropertiesTV deviceProperties optional, + MS_NetworkFeatureSupportTV mS_NetworkFeatureSupport optional, + LocationAreaIdentification2_TLV oldLocationAreaIdentification optional, + AdditionalUpdateTypeTV additionalUpdateType optional, + NetworkResourceIdentifierContainerTLV tMSIBasedNRIcontainer optional, + GPRSTimer2TLV t3324 optional, + GPRSTimer3TLV t3312_ExtendedValue optional, + ExtendedDRXParametersTLV extendedDRXParameters optional +} with { + variant "PRESENCE (messageType = '00001000'B)"; + variant "TAG ( + ptmsi, elementIdentifier = '0011000'B; //'18'O 7 bits + additionalMobileIdentity, elementIdentifier = '0011010'B; + deviceProperties, elementIdentifier = '1101'B; //D + mS_NetworkFeatureSupport, elementIdentifier = '1100'B; //C + t3324, elementIdentifier = '6a'O; + t3312_ExtendedValue, elementIdentifier = '39'O + )" +}; + +// GMM Routing Area update accept - 9.4.15 +type record PDU_GMM_RoutingAreaUpdateAccept +{ + BIT8 messageType, + ForceToStandbyV forceToStandby, + UpdateResultV updateResult, + GPRSTimerV raUpdateTimer, + RoutingAreaIdentificationV routingAreaId, + P_TMSISignatureTV ptmsiSignature optional, + MobileIdentityTLV allocatedPTMSI optional, + MobileIdentityTLV msIdentity optional, + ReceiveNPDUNumbersListTLV receiveNPDUNumbers optional, + GPRSTimerTV readyTimer optional, + GMM_CauseTV gmmCause optional, + GPRSTimer2TLV t3302 optional, + CellNotificationT cellNotification optional, + PLMNListTLV equivalentPLMNs optional, + PDPContextStatusTLV pdpContextStatus optional, + NetworkFeatureSupportTV networkFeatureSupport optional, + EmergencyNumberListTLV emergencyNumberList optional, + MBMS_ContextStatusTLV mBMS_ContextStatus optional, + RequestedMSInformationTV requestedMSInformation optional, + GPRSTimer2TLV t3319 optional, + GPRSTimer2TLV t3323 optional, + GPRSTimer3TLV t3312_ExtendedValue optional, + AdditionalNetworkFeatureSupportTLV additionalNetworkFeatureSupport optional, + GPRSTimer2TLV t3324 optional, + ExtendedDRXParametersTLV extendedDRXParameters optional +} with { + variant "PRESENCE (messageType = '00001001'B)"; + variant "TAG + ( + allocatedPTMSI, elementIdentifier = '0011000'B; //'18'O 7 bits + msIdentity, elementIdentifier = '0100011'B; //'23'O 7 bits + t3302, elementIdentifier = '2A'O; + t3319, elementIdentifier = '37'O; + t3323, elementIdentifier = '38'O; + t3312_ExtendedValue, elementIdentifier = '39'O; + t3324, elementIdentifier = '6a'O; + )" +}; + +// GMM Routing area update complete - 9.4.16 +type record PDU_GMM_RoutingAreaUpdateComplete +{ + BIT8 messageType, + ReceiveNPDUNumbersListTLV receiveNPDUNumbers optional, + InterRATInformationContainerTLV interRATHandoverInformation optional, + EUTRANinterRATInformationContainerTLV eUTRANinterRATHandoverInformation optional +} with { variant "PRESENCE (messageType = '00001010'B)"; }; + +// GMM Routing area update reject - 9.4.17 +type record PDU_GMM_RoutingAreaUpdateReject +{ + BIT8 messageType, + GMM_CauseV gmmCause, + ForceToStandbyV forceToStandby, + BIT4 spare, + GPRSTimer2TLV t3302 optional, + GPRSTimer2TLV t3346 optional +} with { + variant "PRESENCE (messageType = '00001011'B)"; + variant "TAG + ( + t3302, elementIdentifier = '2A'O; + t3346, elementIdentifier = '3A'O; + )" +}; + +// GMM GMM Status - 9.4.18 +type record PDU_GMM_GMM_Status +{ + BIT8 messageType, + GMM_CauseV gmmCause +} with { variant "PRESENCE (messageType = '00100000'B)"; }; + + +// GMM GMM Information - 9.4.19 +type record PDU_GMM_GMM_Information +{ + BIT8 messageType, + NetworkNameTLV fullNetworkName optional, + NetworkNameTLV shortNetworkName optional, + TimeZoneTV networkTimeZone optional, + TimeZoneAndTimeTV networkTimeAndTimeZone optional, + LSA_IdentifierTLV lsaIdentity optional, + DaylightSavingTimeTLV networkDaylightSavingTime optional +} with { + variant "PRESENCE (messageType = '00100001'B)"; + variant "TAG + ( + fullNetworkName, elementIdentifier = '1000011'B;//'43'O 7 bits + shortNetworkName, elementIdentifier = '1000101'B;//'45'O 7 bits + )" +}; + +// GMM Service Request - 9.4.20 +type record PDU_GMM_ServiceRequest +{ + BIT8 messageType, + CipheringKeySequenceNumberV cipheringKeySeqNum, + ServiceTypeV serviceType, + MobileIdentityLV ptmsi, + PDPContextStatusTLV pdpContextStatus optional, // this IE shall be included by the MS + MBMS_ContextStatusTLV mBMS_ContextStatus optional, + UplinkDataStatusTLV uplinkDataStatus optional, + DevicePropertiesTV deviceProperties optional +} with { variant "PRESENCE (messageType = '00001100'B)"; + variant "TAG (deviceProperties, elementIdentifier = '1101'B; //D + )" +}; + +// GMM Service Accept - 9.4.21 +type record PDU_GMM_ServiceAccept +{ + BIT8 messageType, + PDPContextStatusTLV pdpContextStatus optional, + MBMS_ContextStatusTLV mBMS_ContextStatus optional +} with { variant "PRESENCE (messageType = '00001101'B)"; }; + +// GMM Service Reject - 9.4.22 +type record PDU_GMM_ServiceReject +{ + BIT8 messageType, + GMM_CauseV gmmCause, + GPRSTimer2TLV t3346 optional +} with { variant "PRESENCE (messageType = '00001110'B)"; }; + + +// ============================================== +// GPRS Session Management Messages (chapter 9.5) +// ============================================== + +// SM Activate PDP Context Request - 9.5.1 +type record PDU_SM_ActivatePDPContextRequest +{ + BIT8 messageType, + NSAPIV requestedNSAPI, + LLC_SAPIV requestedLLCSAPI, + QoSLV requestedQoS, + PDPAddressLV requestedPDPaddress, + AccessPointNameTLV accessPointName optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + RequestTypeTV requestType optional, + DevicePropertiesTV deviceProperties optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000001'B)"; + variant "TAG ( deviceProperties, elementIdentifier = '1100'B; //C + )" +}; + + +// SM Activate PDP Context Accept - 9.5.2 +type record PDU_SM_ActivatePDPContextAccept +{ + BIT8 messageType, + LLC_SAPIV negotiatedLLCSAPI, + QoSLV negotiatedQoS, + RadioPriorityV radioPriority, + BIT4 spare, + PDPAddressTLV pdpAddress optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + PacketFlowIDTLV packetFlowID optional, + SMCause2TLV sMCause2 optional, + ConnectivityTypeTV connectivityType optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000010'B)"; }; + + +// SM Activate PDP Context Reject - 9.5.3 +type record PDU_SM_ActivatePDPContextReject +{ + BIT8 messageType, + SMCauseV smCause, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + GPRSTimer3TLV backOffTimer optional, + ReAttemptIndicatorTLV reAttemptIndicator optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000011'B)"; + variant "TAG (backOffTimer, elementIdentifier = '37'O)" +}; + + +// SM Activate Secondary PDP Context - 9.5.4 +type record PDU_SM_ActivateSecondaryPDPContextRequest +{ + BIT8 messageType, + NSAPIV requestedNSAPI, + LLC_SAPIV requestedLLC_SAPI, + QoSLV requestedQoS, + LinkedTILV linkedTI, + TrafficFlowTemplateTLV tft optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + DevicePropertiesTV deviceProperties optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001101'B)"; + variant "TAG (deviceProperties, elementIdentifier = '1100'B; //C + )" +}; +// SM Activate Secondary PDP Context Accept - 9.5.5 +type record PDU_SM_ActivateSecondaryPDPContextAccept +{ + BIT8 messageType, + LLC_SAPIV negotiatedLLC_SAPI, + QoSLV negotiatedQoS, + RadioPriorityV radioPriority, + BIT4 spare, + PacketFlowIDTLV packetFlowIdentifier optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001110'B)"; }; + + +// SM Activate Secondary PDP Context Reject - 9.5.6 +type record PDU_SM_ActivateSecondaryPDPContextReject +{ + BIT8 messageType, + SMCauseV smCause, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + GPRSTimer3TLV backOffTimer optional, + ReAttemptIndicatorTLV reAttemptIndicator optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001111'B)"; + variant "TAG (backOffTimer, elementIdentifier = '37'O)" +}; + + +// SM Request PDP context activation - 9.5.7 +type record PDU_SM_RequestPDPContextActivation +{ + BIT8 messageType, + PDPAddressLV offeredPDPAdress, + AccessPointNameTLV accessPointName optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000100'B)"; }; + + +// SM Request PDP context activation reject - 9.5.8 +type record PDU_SM_RequestPDPContextActivationReject +{ + BIT8 messageType, + SMCauseV smCause, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000101'B)"; }; + + +// SM Modify PDP context request (Network to MS direction) - 9.5.9 +type record PDU_SM_ModifyPDPContextRequest_SGSN_MS +{ + BIT8 messageType , + RadioPriorityV radioPriority, + BIT4 spare, + LLC_SAPIV requestedLLC_SAPI, + QoSLV newQoS, + PDPAddressTLV pdpAddress optional, + PacketFlowIDTLV packetFlowIdentifier optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + TrafficFlowTemplateTLV tFT optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001000'B)"; }; + + +// SM Modify PDP context request (MS to network direction) - 9.5.10 +type record PDU_SM_ModifyPDPContextRequest_MS_SGSN +{ + BIT8 messageType, + LLC_SAPITV requestedLLC_SAPI optional, + QoSTLV requestedNewQoS optional, + TrafficFlowTemplateTLV newTFT optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + DevicePropertiesTV deviceProperties optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001010'B)"; + variant "TAG (deviceProperties, elementIdentifier = '1100'B; //C + )" +}; + + +// SM Modify PDP context accept (MS to network direction) - 9.5.11 +type record PDU_SM_ModifyPDPContextAccept_MS_SGSN +{ + BIT8 messageType, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001001'B)"; }; + + +// SM Modify PDP context accept (Network to MS direction) - 9.5.12 +type record PDU_SM_ModifyPDPContextAccept_SGSN_MS +{ + BIT8 messageType, + QoSTLV negotiatedQoS optional, + LLC_SAPITV negotiatedLLC_SAPI optional, + RadioPriorityTV newRadioPriority optional, + PacketFlowIDTLV packetFlowIdentifier optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001011'B)"; }; + + +// SM Modify PDP Context reject - 9.5.13 +type record PDU_SM_ModifyPDPContextReject +{ + BIT8 messageType, + SMCauseV smCause, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + GPRSTimer3TLV backOffTimer optional, + ReAttemptIndicatorTLV reAttemptIndicator optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01001100'B)"; + variant "TAG (backOffTimer, elementIdentifier = '37'O)" +}; + + +// SM Deactivate PDP Context Request - 9.5.14 +type record PDU_SM_DeactivatePDPContextRequest +{ + BIT8 messageType, + SMCauseV smCause, + TearDownIndicatorTV tearDownIndicator optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional, + GPRSTimer3TLV t3396 optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000110'B)"; + variant "TAG (t3396, elementIdentifier = '37'O)" +}; + + +// SM Deactivate PDP Context Accept 3GPP - 9.5.15 +type record PDU_SM_DeactivatePDPContextAccept +{ + BIT8 messageType, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01000111'B)"; }; + + +// Request Secondary PDP Context Activation - 9.5.15a +type record PDU_SM_RequestSecondaryPDPContextActivation +{ + BIT8 messageType, + QoSLV requiredQoS, + LinkedTILV linkedTI, + TrafficFlowTemplateTLV tFT optional, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + WLANOffloadAcceptabilityTV wLANOffloadIndication optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01011011'B)"; }; + + +// Request Secondary PDP Context Activation Reject - 9.5.15b +type record PDU_SM_RequestSecondaryPDPContextActivationReject +{ + BIT8 messageType, + SMCauseV smCause, + ProtocolConfigOptionsTLV protocolConfigOpts optional, + NBIFOM_ContainerTLV nBIFOM_Container optional +} with { variant "PRESENCE (messageType = '01011100'B)"; }; + +// Notification - 9.5.16a +type record PDU_SM_Notification +{ + BIT8 messageType, + NotificationIndicatorLV notificationIndicator +} with { variant "PRESENCE (messageType = '01011101'B)"; }; + +// SM SM Status - 9.5.21 +type record PDU_SM_SM_Status +{ + BIT8 messageType, + SMCauseV smCause +} with { variant "PRESENCE (messageType = '01010101'B)"; }; + + +// Activate MBMS Context Request - 9.5.22 +type record PDU_SM_ActivateMBMSContextRequest +{ + BIT8 messageType, + EnhancedNetworkSeviveAccessPointIDV requestedMBMS_NSAPI, + LLC_SAPIV requestedLLCSAPI, + MBMSBearerCapabilitiesLV supportdMBMSBearerCapabilities, + PDPAddressLV requestedMulticastAddress, + AccessPointNameLV accessPointName, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional, + DevicePropertiesTV deviceProperties optional +} with { variant "PRESENCE (messageType = '01010110'B)"; + variant "TAG(deviceProperties, elementIdentifier = '1100'B; //C + )" +}; + + +// Activate MBMS Context Accept - 9.5.23 +type record PDU_SM_ActivateMBMSContextAccept +{ + BIT8 messageType, + TemporaryMobileGroupIDLV temporaryMobileGroupIDLV, + LLC_SAPIV negotiatedLLCSAPI, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional +} with { variant "PRESENCE (messageType = '01010111'B)"; }; + + +// Activate MBMS Context Reject - 9.5.24 +type record PDU_SM_ActivateMBMSContextReject +{ + BIT8 messageType, + SMCauseV smCause, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional, + GPRSTimer3TLV backOffTimer optional, + ReAttemptIndicatorTLV reAttemptIndicator optional +} with { variant "PRESENCE (messageType = '01011000'B)"; + variant "TAG (backOffTimer, elementIdentifier = '37'O)" +}; + + +// Request MBMS Context Activation - 9.5.25 +type record PDU_SM_RequestMBMSContextActivation +{ + BIT8 messageType, + NSAPIV linkedNSAPI, + PDPAddressLV offeredMulticastAddress, + AccessPointNameLV accessPointName, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional +} with { variant "PRESENCE (messageType = '01011001'B)"; }; + + +// Request MBMS Context Activation Reject - 9.5.26 +type record PDU_SM_RequestMBMSContextActivationReject +{ + BIT8 messageType, + SMCauseV smCause, + MBMSProtocolConfigOptionsTLV mBMSprotocolConfigOptions optional +} with { variant "PRESENCE (messageType = '01011010'B)"; }; + + +//============================================================================== +//============================================================================== +// GPRS SESSION MANAGEMENT MESSAGES Messages MS TO SGSN +//============================================================================== +//============================================================================== +type union L3_GSM_MS_SGSN +{ + PDU_SM_ActivatePDPContextRequest activatePDPContextRequest, + PDU_SM_ActivateSecondaryPDPContextRequest activateSecondaryPDPContextRequest, + PDU_SM_RequestPDPContextActivationReject requestPDPContextActivationReject, + PDU_SM_ModifyPDPContextRequest_MS_SGSN modifyPDPContextRequest_MS_SGSN, + PDU_SM_ModifyPDPContextAccept_MS_SGSN modifyPDPContextAccept_MS_SGSN, + //SGSN_MS, MS_SGSN + PDU_SM_DeactivatePDPContextRequest deactivatePDPContextRequest, + //SGSN_MS, MS_SGSN + PDU_SM_DeactivatePDPContextAccept deactivatePDPContextAccept, + //SGSN_MS, MS_SGSN + PDU_SM_SM_Status sM_Status, + PDU_SM_ActivateMBMSContextRequest activateMBMSContextRequest, + PDU_SM_RequestMBMSContextActivationReject requestMBMSContextActivationReject, + PDU_SM_RequestSecondaryPDPContextActivationReject requestSecondaryPDPContextActivationReject, + PDU_SM_Notification notification +}; + +//============================================================================== +//============================================================================== +// GPRS SESSION MANAGEMENT MESSAGES Messages SGSN -> MS +//============================================================================== +//============================================================================== +type union L3_GSM_SGSN_MS +{ + PDU_SM_ActivatePDPContextAccept activatePDPContextAccept, + PDU_SM_ActivatePDPContextReject activatePDPContextReject, + PDU_SM_ActivateSecondaryPDPContextAccept activateSecondaryPDPContextAccept, + PDU_SM_ActivateSecondaryPDPContextReject activateSecondaryPDPContextReject, + PDU_SM_RequestPDPContextActivation requestPDPContextActivation, + PDU_SM_ModifyPDPContextRequest_SGSN_MS modifyPDPContextRequest_SGSN_MS, + PDU_SM_ModifyPDPContextAccept_SGSN_MS modifyPDPContextAccept_SGSN_MS, + PDU_SM_ModifyPDPContextReject modifyPDPContextReject, + //SGSN_MS, MS_SGSN + PDU_SM_DeactivatePDPContextRequest deactivatePDPContextRequest, + //SGSN_MS, MS_SGSN + PDU_SM_DeactivatePDPContextAccept deactivatePDPContextAccept, + //SGSN_MS, MS_SGSN + PDU_SM_SM_Status sM_Status, + PDU_SM_ActivateMBMSContextAccept activateMBMSContextAccept, + PDU_SM_ActivateMBMSContextReject activateMBMSContextReject, + PDU_SM_RequestMBMSContextActivation requestMBMSContextActivation, + PDU_SM_RequestSecondaryPDPContextActivation requestSecondaryPDPContextActivation +}; + +//============================================================================== +//============================================================================== +// GPRS Mobility Management Messages MS TO SGSN +//============================================================================== +//============================================================================== +type union L3_GMM_MS_SGSN +{ + PDU_GMM_AttachRequest attachRequest, + PDU_GMM_AttachComplete attachComplete, + PDU_GMM_DetachRequest_MS_SGSN detachRequest_MS_SGSN, + PDU_GMM_DetachAccept_MS_SGSN detachAccept_MS_SGSN, + PDU_GMM_P_TMSIReallocationComplete p_TMSIReallocationComplete, + PDU_GMM_AuthenticationAndCipheringResponse authenticationAndCipheringResponse, + PDU_GMM_AuthenticationAndCipheringFailure authenticationAndCipheringFailure, + PDU_GMM_IdentityResponse identityResponse, + PDU_GMM_RoutingAreaUpdateRequest routingAreaUpdateRequest, + PDU_GMM_RoutingAreaUpdateComplete routingAreaUpdateComplete, + //SGSN_MS, MS_SGSN + PDU_GMM_GMM_Status gMM_Status, + PDU_GMM_ServiceRequest serviceRequest +}; + +//============================================================================== +//============================================================================== +// GPRS Mobility Management Messages SGSN TO MS +//============================================================================== +//============================================================================== +type union L3_GMM_SGSN_MS +{ + PDU_GMM_AttachAccept attachAccept, + PDU_GMM_AttachReject attachReject, + PDU_GMM_DetachRequest_SGSN_MS detachRequest_SGSN_MS, + PDU_GMM_DetachAccept_SGSN_MS detachAccept_SGSN_MS, + PDU_GMM_P_TMSIReallocationCommand p_TMSIReallocationCommand, + PDU_GMM_AuthenticationAndCipheringRequest authenticationAndCipheringRequest, + PDU_GMM_AuthenticationAndCipheringReject authenticationAndCipheringReject, + PDU_GMM_IdentityRequest identityRequest, + PDU_GMM_RoutingAreaUpdateAccept routingAreaUpdateAccept, + PDU_GMM_RoutingAreaUpdateReject routingAreaUpdateReject, + //SGSN_MS, MS_SGSN + PDU_GMM_GMM_Status gMM_Status, + PDU_GMM_GMM_Information gMM_Information, + PDU_GMM_ServiceAccept serviceAccept, + PDU_GMM_ServiceReject serviceReject +}; + +}//end of module +with { +extension "version R1B" +encode "RAW" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_MM_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_MM_Types.ttcn new file mode 100644 index 00000000..56f8553b --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_MM_Types.ttcn @@ -0,0 +1,572 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_RRM_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_RRM_Types.ttcn new file mode 100644 index 00000000..93b1b0fa --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_RRM_Types.ttcn @@ -0,0 +1,1834 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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_RRM_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 44.018 v13.0.0 + + +module MobileL3_RRM_Types +{ + +import from General_Types all; +import from MobileL3_CommonIE_Types all; +import from MobileL3_GMM_SM_Types all; + +// *************************************************************************** +// * Radio Resource Management messages +// *************************************************************************** +// The messages below defined in 44.018 v13.0.0 +// Some IEs used from 24.008 and some IEs are defined in 44.018 + +//============================================================================ +// 44.018//10.5 Radio Resource management (RRM) information elements +//============================================================================ + +//**************************************************************************** +// 10.5.1 Common information elements +//**************************************************************************** +// see DTAP_Common.ttcn + +//**************************************************************************** +// 10.5.2 Radio Resource Management Information Elements +//**************************************************************************** + +//10.5.2.1a BA Range +//**************************************************************************** +type record BARange_TLV +{ + OCT1 elementIdentifier, //'73'O + LIN1 lengthIndicator, + OCT1 numberOfRanges, + OCTN ranges +} with { variant (lengthIndicator) "LENGTHTO ( numberOfRanges,ranges)"}; + + +//10.5.2.1b Cell Channel Description +//**************************************************************************** +type record CellChannelDescription_TV +{ + OCT1 elementIdentifier, //'62'O + OCT16 octet2_17 +}; + +//10.5.2.1c BA List Pref +//**************************************************************************** +type record BAListPref_TLV +{ + OCT1 elementIdentifier, //'75'O + LIN1 lengthIndicator, + OCTN range_bafreq_info +} with { variant (lengthIndicator) "LENGTHTO ( range_bafreq_info )"}; + +//10.5.2.1d UTRAN Frequency List +//**************************************************************************** +type record UTRANFrequencyList_TLV +{ + OCT1 elementIdentifier, //'75'O + LIN1 lengthIndicator, + OCTN fdd_tdd +} with { variant (lengthIndicator) "LENGTHTO ( fdd_tdd )"}; + +//10.5.2.1e +//**************************************************************************** +type record CellSelectionIndicatorAfterReleaseOfAll_TCH_and_SDCCH_IE +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring cellSelectionIndicatorValue +} with { variant (lengthIndicator) "LENGTHTO (cellSelectionIndicatorValue)"}; + +// 10.5.2.2 Cell Description +//**************************************************************************** +type record CellDescription_V +{ + BIT3 bcc, // '001'B + BIT3 ncc, // '010'B + BIT2 BCCHArfcn_HighPart, // '11'B + OCT1 BCCHArfcn_LowPart // '04'O +}; + +// 10.5.2.5 Channel Description +//**************************************************************************** +type record ChannelDescription_V +{ + BIT3 timeslotNumber, // '110'B + BIT5 channelTypeandTDMAOffset, // '00001'B send or '00111'B rcv + OCT1 octet3, // '00'O not structured yet + OCT1 octet4 // '09'O +}; + +type record ChannelDescription_TV +{ + OCT1 elementIdentifier, + BIT3 timeslotNumber, // '110'B + BIT5 channelTypeandTDMAOffset, // '00001'B send or '00111'B rcv + OCT1 octet3, // '00'O not structured yet + OCT1 octet4 // '09'O +}; + +// 10.5.2.5a Channel Description 2 +//**************************************************************************** +type record ChannelDescription2_V +{ + BIT3 timeslotNumber, // '110'B + BIT5 channelTypeandTDMAOffset, // '00001'B send or '00111'B rcv + OCT1 octet3, // '00'O + OCT1 octet4 // '09'O +}; + +type record ChannelDescription2_TV +{ + OCT1 elementIdentifier, + BIT3 timeslotNumber, // '110'B + BIT5 channelTypeandTDMAOffset, // '00001'B send or '00111'B rcv + OCT1 octet3, // '00'O + OCT1 octet4 // '09'O +}; + +// 10.5.2.5c Channel Description 3 +//**************************************************************************** +type record ChannelDescription3_TV +{ + OCT1 elementIdentifier, + OCT1 octet2, + OCT1 octet3 +}; + +// 10.5.2.6 Channel Mode +//**************************************************************************** +type record ChannelMode_TV +{ + OCT1 elementIdentifier, + OCT1 mode +}; + +type record ChannelMode_V +{ + OCT1 mode +}; + +// 10.5.2.7 Channel Mode 2 +//**************************************************************************** +type record ChannelMode2_TV +{ + OCT1 elementIdentifier, + OCT1 mode +}; + +// 10.5.2.7a +//**************************************************************************** +type record UTRAN_Classmark_LV +{ + LIN1 lengthIndicator, + octetstring uTRAN_ClassmarkValue //ASN.1 definition in 25.331 +} with { variant (lengthIndicator) "LENGTHTO (uTRAN_ClassmarkValue)"}; + +// 10.5.2.7c Classmark Enquiry Mask +//**************************************************************************** +type record ClassmarkEnquiryMask_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT1 valuePart +} with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; + +// 10.5.2.7d +//**************************************************************************** +type record GERAN_IU_ModeClassmark_LV +{ + LIN1 lengthIndicator, + OCT1 valuePart +} with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; + +// 10.5.2.8 Channel Needed +//**************************************************************************** +type record ChannelNeeded_TV +{ + BIT2 channel1, + BIT2 channel2, + BIT4 elementIdentifier +}; + +type record ChannelNeeded_V +{ + BIT2 channel1, + BIT2 channel2 +}; + +// 10.5.2.8b Channel Request Description +//**************************************************************************** +type record ChannelRequestDescription2_LV +{ + LIN1 lengthIndicator, + octetstring valuePart +} with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; + +// 10.5.2.9 Cipher Mode Setting +//**************************************************************************** +type record CipherModeSetting_TV +{ + BIT1 sC, + BIT3 algorithmIdentifier, + BIT4 elementIdentifier +}; + +type record CipherModeSetting_V +{ + BIT1 sC, + BIT3 algorithmIdentifier +}; + +// 10.5.2.10 Cipher Mode Response +//**************************************************************************** +type record CipherModeResponse_TV +{ + BIT1 cR, + BIT3 spare, + BIT4 elementIdentifier +}; + +type record CipherModeResponse_V +{ + BIT1 cR, + BIT3 spare +}; + +// 10.5.2.11a +//**************************************************************************** +type record DTM_InformationDetails_LV +{ + LIN1 lengthIndicator, + octetstring valuePart +} with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; + + +// 10.5.2.11b +//**************************************************************************** +type record DynamicARFCN_Mapping_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring valuePart +} with { variant (lengthIndicator) "LENGTHTO (valuePart)"}; + +// 10.5.2.12 Frequency Channel Sequence before time +//**************************************************************************** +type record FrequencyChannelSequence_TV +{ + OCT1 elementIdentifier, + BIT7 lowestARFCN, + BIT1 spare, + BIT4 incSkipARFCN02, + BIT4 incSkipARFCN01, + BIT4 incSkipARFCN04, + BIT4 incSkipARFCN03, + BIT4 incSkipARFCN06, + BIT4 incSkipARFCN05, + BIT4 incSkipARFCN08, + BIT4 incSkipARFCN07, + BIT4 incSkipARFCN10, + BIT4 incSkipARFCN09, + BIT4 incSkipARFCN12, + BIT4 incSkipARFCN11, + BIT4 incSkipARFCN14, + BIT4 incSkipARFCN13, + BIT4 incSkipARFCN16, + BIT4 incSkipARFCN15 +} + +//10.5.2.13 Frequency List +//**************************************************************************** +type Type4_TLV FrequencyList_TLV; + +//10.5.2.14 Frequency Short List +//**************************************************************************** +type record FrequencyShortList_TV +{ + OCT1 elementIdentifier, + OCT9 frequencyShortListValue +} + +//10.5.2.14b GroupChannel Description +//**************************************************************************** +type record GroupChannelDescription_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT3 tN, + BIT5 channelType_tDMAoffset, + OCTN oct4_13 +} with { variant (lengthIndicator) "LENGTHTO (tN,channelType_tDMAoffset,oct4_13 )"}; + +//10.5.2.14d GPRS Broadcast Information +//**************************************************************************** +type record GPRS_BroadcastInformation_LV +{ + LIN1 lengthIndicator, + octetstring gPRS_BroadcastInformationValue +} with { variant (lengthIndicator) "LENGTHTO (gPRS_BroadcastInformationValue )"}; + +//10.5.2.14e Enhanced DTM CS Release Indication +//**************************************************************************** +type record Enhanced_DTM_CS_Release_Indication +{ + BIT1 iND, + BIT3 spare, + BIT4 elementIdentifier +} + +//10.5.2.14f Group Channel Description 2 +//**************************************************************************** +type record Group_Channel_Description_2_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT3 tN, + BIT5 channelTypeandTDMAOffset, + BIT3 tSC, + BIT1 spare, + BIT6 mAIO, + BIT6 hSN, + OCT8 frequencyShortList +} with { variant (lengthIndicator) "LENGTHTO (tN,channelTypeandTDMAOffset,tSC, + spare,mAIO,hSN,frequencyShortList)" + variant (tSC,spare,mAIO,hSN,frequencyShortList) "FIELDORDER(msb)";}; + +// 10.5.2.15 +//**************************************************************************** +type record HandoverReference_V +{ + OCT1 handoverReferenceValue //'00'O +}; + +// 10.5.2.21 Mobile Allocation +//**************************************************************************** +type Type4_TLV MobileAllocation_TLV; // see DTAP_Types.ttcn + +type Type4_LV MobileAllocation_LV; + +// 10.5.2.21a Mobile Time difference +//**************************************************************************** +type record MobileTimeDifference_TLV +{ + OCT1 elementIdentifier, // '03'O + LIN1 lengthIndicator, + OCT3 mobileTimeDifferenceAndSpare //is the ordering correct???? +} with { variant (lengthIndicator) "LENGTHTO (mobileTimeDifferenceAndSpare)"}; + +// 10.5.2.21aa MultiRate configuration +//**************************************************************************** +type octetstring RRM_OCT1_5 length(1..5); + +type record MultiRateConfiguration_TLV +{ + OCT1 elementIdentifier, // '03'O + LIN1 lengthIndicator, + BIT2 startMode, + BIT1 spare3_1, + BIT1 iCMI, + BIT1 nSCB, + BIT3 multirateSpeechVersion, + RRM_OCT1_5 params +} with { variant (lengthIndicator) "LENGTHTO (startMode,spare3_1, + iCMI,nSCB,multirateSpeechVersion,params)"}; + +// 10.5.2.21b Multislot Allocation +//**************************************************************************** +type record MultislotAllocation_octet3_11 +{ + BIT7 dA1_7, //downlink assignment + BIT1 ext1, //extension bit + BIT7 uA1_7, //uplink assignment + BIT1 ext2, //1 extension bit + OCT1_8 channelset optional +} with { variant "EXTENSION_BIT (yes)"}; + +type record MultislotAllocation_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + MultislotAllocation_octet3_11 octet3_11 +} with { variant (lengthIndicator) "LENGTHTO (octet3_11)"}; + +type record MultislotAllocation_LV +{ + LIN1 lengthIndicator, + MultislotAllocation_octet3_11 octet3_11 +} with { variant (lengthIndicator) "LENGTHTO (octet3_11)"}; + + +// 10.5.2.21ab Mobile Time Difference on Hyperframe level +//**************************************************************************** +type record MobileTimeDifferenceHyperframe_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCT5 MTDHValueAndSpare // Mobile Time Difference Hyperframe Value And Spare +} with { variant (lengthIndicator) "LENGTHTO (MTDHValueAndSpare)"}; + + +// 10.5.2.23 P1 Rest Octets +//**************************************************************************** +type octetstring P1RestOctets length(0..17); + +// 10.5.2.24 P2 Rest Octets +//**************************************************************************** +type octetstring P2RestOctets length(1..11); + +// 10.5.2.25 P3 Rest Octets +//**************************************************************************** +type OCT3 P3RestOctets; + +// 10.5.2.25b +//**************************************************************************** +type record DedicatedModeOrTBF_V +{ + BIT3 tMA_dL_tD, + BIT1 spare +} + +// 10.5.2.25c +//**************************************************************************** +type record RR_PacketUplinkAssignment_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring rR_PacketUplinkAssignment +} with { variant (lengthIndicator) "LENGTHTO (rR_PacketUplinkAssignment)"}; + +// 10.5.2.25d +//**************************************************************************** +type record RR_PacketDownlinkAssignment_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring rR_PacketDownlinkAssignment +} with { variant (lengthIndicator) "LENGTHTO (rR_PacketDownlinkAssignment)"}; + +// 10.5.2.25e - RR Packet Downlink Assignment Type 2 +//**************************************************************************** +type record RR_DualCarrierPacketDownlinkAssignment_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring rR_DualCarrierPacketDownlinkAssignment +} with { variant (lengthIndicator) "LENGTHTO (rR_DualCarrierPacketDownlinkAssignment)"}; + +// 10.5.2.26 Page Mode +//**************************************************************************** +type record PageMode_TV +{ + BIT2 pM, + BIT2 spare1_2, + BIT4 elementIdentifier +}; + +type record PageMode_V +{ + BIT2 pM, + BIT2 spare1_2 + }; + +// 10.5.2.28 Power Command +//**************************************************************************** +type record PowerCommand_V +{ + BIT5 powerlevel, // 00000 + BIT1 fPC_EP, // 0 + BIT1 ePC_Mode, // 0 + BIT1 spare_1 // 0 +}; + +// 10.5.2.28a Power Command And Accesstype +//**************************************************************************** +type record PowerCommandAndAccesstype_V +{ + BIT5 powerlevel, // 00000 + BIT1 fPC_EP, // 0 + BIT1 ePC_Mode, // 0 + BIT1 aTC // 0 +}; + +// 10.5.2.30 Request Reference +//**************************************************************************** +type record RequestReference_V +{ + BIT5 t1, + BIT6 t3, + BIT5 t2 +} with { variant (t1,t3,t2) "FIELDORDER(msb)"; }; + +// 10.5.2.31 RR Cause +//**************************************************************************** +type record RR_Cause_TV +{ + OCT1 elementIdentifier, + OCT1 valuePart +}; + +type record RR_Cause_V +{ + OCT1 valuePart +}; + +// 10.5.2.38 Starting Time +//**************************************************************************** +type record StartingTime_TV +{ + OCT1 elementIdentifier, + BIT5 t1, + BIT6 t3, + BIT5 t2 +} with { variant (t1,t3,t2) "FIELDORDER(msb)"; }; + +type record StartingTime_V +{ + BIT5 t1, + BIT6 t3, + BIT5 t2 +} with { variant (t1,t3,t2) "FIELDORDER(msb)"; }; + +// 10.5.2.39 Synchronization Indication +//**************************************************************************** +type record SynchronizationIndication_TV +{ + BIT2 sI, + BIT1 rOT, + BIT1 nCI, + BIT4 elementIdentifier +} + +// 10.5.2.40 Timing Advance +//**************************************************************************** +type record TimingAdvance_TV +{ + OCT1 elementIdentifier, + OCT1 valuePart +}; + +// 10.5.2.41 Real Time Difference +//**************************************************************************** +type Type4_TLV RealTimeDifference_TLV; + +// 10.5.2.42 TMSIP_TMSI +//**************************************************************************** +type record TMSIP_TMSI_TV +{ + OCT1 elementIdentifier, + OCT4 octet2_5 +}; + +type OCT4 TMSIP_TMSI_V; + +// 10.5.2.42a +//**************************************************************************** +type record VGCS_TargetModeIndication_TLV +{ + OCT1 elementIdentifier, //'01'O + LIN1 lengthIndicator, + BIT2 spare3_2, + BIT4 groupCipherKeyNumber, + BIT2 targetMode +} with { variant (lengthIndicator) "LENGTHTO (spare3_2,groupCipherKeyNumber,targetMode)"}; + +// 10.5.2.42b VGCS Ciphering Parameters +//**************************************************************************** +type hexstring HEX9 length(9); + +type record VGCS_Ciphering_Parameters_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT2 cellGlobalCount, + BIT1 b22_Count, + BIT1 cELL_Ind, + BIT1 lAC_Ind, + BIT1 rAND_Ind, + BIT2 spare, + OCT2 cellIdentity optional, + OCT5 lAI optional, + HEX9 vSTK_RAND optional, + BIT4 spare2 optional +} with { variant (lengthIndicator) "LENGTHTO (cellGlobalCount,b22_Count,cELL_Ind,lAC_Ind,rAND_Ind, + spare,cellIdentity,lAI,vSTK_RAND,spare2)" + variant (cellIdentity) "PRESENCE(cELL_Ind = '1'B)"; + variant (lAI) "PRESENCE(lAC_Ind = '1'B)"; + variant (vSTK_RAND) "PRESENCE(rAND_Ind = '1'B)"; + variant (spare2) "PRESENCE(rAND_Ind = '1'B)"; + variant (vSTK_RAND,spare2) "FIELDORDER(msb)";}; + +// 10.5.2.43 DTM Wait Indication +//**************************************************************************** +type record WaitIndication_V +{ + integer t3122_3142TimeoutValue +} + +// 10.5.2.49 APDU Flags +//**************************************************************************** +type record APDU_Flags_V +{ + BIT1 lastSeg, + BIT1 firstSeg, + BIT1 cR, + BIT1 spare +} + +// 10.5.2.50 APDU Data +//**************************************************************************** +type record APDU_Data_LV +{ + LIN1 lengthIndicator, + octetstring aPDU_DataValue +} with { variant (lengthIndicator) "LENGTHTO (aPDU_DataValue)"}; + +// 10.5.2.51 Handover To UTRAN Command +//**************************************************************************** +type record HandoverToUTRANCommand_LV +{ + LIN1 lengthIndicator, + octetstring handoverToUTRANCommandValue // unaligned PER encoded ASN.1 value, 25.331 +} with { variant (lengthIndicator) "LENGTHTO (handoverToUTRANCommandValue)"}; + +// 10.5.2.51 Handover To UTRAN Command +//**************************************************************************** +type record HandoverToCDMA2000Command_LV +{ + LIN1 lengthIndicator, + octetstring handoverToCDMA2000CommandValue + // TIA/EIA/IS-2000-4-A, TIA/EIA/IS-2000-5-A, TIA/EIA/IS-833 +} with { variant (lengthIndicator) "LENGTHTO (handoverToCDMA2000CommandValue)"}; + +// Handover To UTRAN Command +//**************************************************************************** +type record RadioBearerReconfiguration_LV +{ + LIN1 lengthIndicator, + octetstring radioBearerReconfiguration44118 // See 44.118 9.2.28 +} with { variant (lengthIndicator) "LENGTHTO (radioBearerReconfiguration44118)"}; + +// 10.5.2.57 Service Support +//**************************************************************************** +type record ServiceSupport_TV +{ + OCT1 elementIdentifier, + BIT1 mBMS_Broadcast, + BIT1 mBMS_Multicast, + BIT6 spare +} + +type record ServiceSupport_V +{ + BIT1 mBMS_Broadcast, + BIT1 mBMS_Multicast, + BIT6 spare +} + +// 10.5.2.58 MBMS ptm Channel Description +//**************************************************************************** +type record MBMS_ptm_ChannelDescription_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring mMS_ptm_ChannelDescriptionValue +} with { variant (lengthIndicator) "LENGTHTO (mMS_ptm_ChannelDescriptionValue)"}; + +// 10.5.2.58a MBMS Session Parameter List +//**************************************************************************** +type record MBMS_SessionParameterList_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring mBMS_SessionParameterListValue +} with { variant (lengthIndicator) "LENGTHTO (mBMS_SessionParameterListValue)"}; + +// 10.5.2.59 Dedicated Service Information +//**************************************************************************** +type record DedicatedServiceInformation_TV +{ + OCT1 elementIdentifier, + BIT1 sIS, + BIT7 spare +} + +// 10.5.2.60 MPRACH Description +//**************************************************************************** +type record MPRACH_Description_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring mPRACH_DescriptionValue +} with { variant (lengthIndicator) "LENGTHTO (mPRACH_DescriptionValue)"}; + +// 10.5.2.61 Restriction Timer +//**************************************************************************** +type record RestrictionTimer_TV +{ + OCT1 elementIdentifier, + OCT1 restrictionTimerValue +} + + +// 10.5.2.62 MBMS Session Identity +//**************************************************************************** +type record MBMS_SessionIdentity_TV +{ + OCT1 elementIdentifier, + OCT1 mBMS_SessionIdentityValue +} + +// 10.5.2.64 Talker Priority Status +//**************************************************************************** +type record TalkerPriorityStatus_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT3 priority, + BIT1 uAI, + BIT3 spare, + BIT1 eS +} with { variant (lengthIndicator) "LENGTHTO (priority,uAI,spare,eS)"}; + +// 10.5.2.65 Talker Identity +//**************************************************************************** +type record TalkerIdentity_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT3 fillerBits, + BIT5 spare, + OCT17 talkerIdentityField optional +} with { variant (lengthIndicator) "LENGTHTO (fillerBits,spare,talkerIdentityField)"}; + +// 10.5.2.66 Token +//**************************************************************************** +type record Token_TV +{ + OCT1 elementIdentifier, + OCT4 tokenValue +}; + +// 10.5.2.67 +//**************************************************************************** +type record PS_Cause_TV +{ + BIT4 causeValue, + BIT4 elementIdentifier +} + +// 10.5.2.68 +//**************************************************************************** +type record VGCS_AMR_Configuration_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + BIT4 spare, + BIT4 aMR_ConfigurationValue +} with { variant (lengthIndicator) "LENGTHTO (spare,aMR_ConfigurationValue)"}; + +// 10.5.2.69 Carrier Indication +//**************************************************************************** +type record CarrierIndication_TV +{ + BIT1 cI, + BIT3 spare1_3, + BIT4 elementIdentifier +} + +// 10.5.2.74 Uplink Access Indication +//*************************************************************************** +type record UplinkAccessIndication_TV +{ + BIT1 uA_Ind, + BIT3 spare, + BIT4 elementIdentifier +} + +// 10.5.2.75 +//*************************************************************************** +type record Individual_Priorities_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + OCTN individualPrioritiesValue +} with { variant (lengthIndicator) "LENGTHTO (individualPrioritiesValue)"}; + +// 10.5.2.76 +//*************************************************************************** +type record FeatureIndicator_V +{ + BIT1 pS_IR, + BIT1 cs_IR, + BIT1 spare, + BIT1 pEO_BCCH_CHANGE_MARK +} + +// 10.5.2.79 +//*************************************************************************** +type record DL_DCCH_Message_LV +{ + LIN1 lengthIndicator, + octetstring dL_DCCH_MessageValue +} with { variant (lengthIndicator) "LENGTHTO (dL_DCCH_MessageValue)"}; + +// 10.5.2.80 +//*************************************************************************** +type record CNToMSTransparentInformation_TLV +{ + OCT1 elementIdentifier, + LIN1 lengthIndicator, + octetstring cNToMSTransparentInformationValue +} with { variant (lengthIndicator) "LENGTHTO (cNToMSTransparentInformationValue)"}; + +// 10.5.2.81 +//*************************************************************************** +type record PLMNIndex_TV +{ + BIT4 pLMNIndex, + BIT4 elementIdentifier +}; + +// 10.5.2.82 +//*************************************************************************** +type record ExtendedTSCSet_TV +{ + OCT1 elementIdentifier, + BIT2 cSDomainTSCSet, + BIT1 secondPSDomainTSCAssigned, + BIT1 primaryPSDomainTSCSet, + BIT1 secondaryPSDomainTSCSet, + BIT3 secondaryPSDomainTSCValue +}; + +//============================================================================ +// 44.018//9.1 Messages for Radio Resource management (RRM) +//============================================================================ + +// 44.018/9.1.1 Additional assignment (NW->MS) +//**************************************************************************** +type record PDU_RRM_AdditionalAssignment_NW_MS +{ + BIT8 messageType, //'00111011'B, + ChannelDescription_V channelDescription, + MobileAllocation_TLV mobileAllocation optional, + StartingTime_TV startingTime optional, + ExtendedTSCSet_TV extendedTSCSet optional + +} with { variant "TAG ( mobileAllocation, elementIdentifier = '72'O; + startingTime, elementIdentifier = '7C'O; + extendedTSCSet, elementIdentifier = '6D'O;)"}; + +// 44.018/9.1.2 Assignment Command (NW->MS) +//**************************************************************************** +type record PDU_RRM_AssignmentCommand_NW_MS +{ + BIT8 messageType, // '00101110'B; + ChannelDescription2_V descrOf1stChAfterTime, + PowerCommand_V PowerCommand, + FrequencyList_TLV frequencyList_at optional, + CellChannelDescription_TV cellChannelDescr optional, + MultislotAllocation_TLV descrMultislotAllocation optional, + ChannelMode_TV modeOf1stChannel optional, + ChannelMode_TV channelSet2 optional, + ChannelMode_TV channelSet3 optional, + ChannelMode_TV channelSet4 optional, + ChannelMode_TV channelSet5 optional, + ChannelMode_TV channelSet6 optional, + ChannelMode_TV channelSet7 optional, + ChannelMode_TV channelSet8 optional, + ChannelDescription_TV descrOf2ndChAfterTime optional, + ChannelMode2_TV modeOf2ndChannel optional, + MobileAllocation_TLV mobileAllocation_at optional, + StartingTime_TV startingTime optional, + FrequencyList_TLV frequencyList_bt optional, + ChannelDescription2_TV descrOf1stCh_bt optional, + ChannelDescription_TV descrOf2ndCh_bt optional, + FrequencyChannelSequence_TV frequencyChannelSequence optional, + MobileAllocation_TLV mobileAllocation_bt optional, + CipherModeSetting_TV cipherModeSetting optional, + VGCS_TargetModeIndication_TLV vGCS_TargetModeIndication optional, + MultiRateConfiguration_TLV multiRateConfiguration optional, + VGCS_Ciphering_Parameters_TLV vGCS_Ciphering_Parameters optional, + ExtendedTSCSet_TV extendedTSCSet_afterTime optional, + ExtendedTSCSet_TV extendedTSCSet_beforeTime optional +} with { variant "TAG ( frequencyList_at, elementIdentifier = '05'O; + cellChannelDescr, elementIdentifier = '62'O; + descrMultislotAllocation, elementIdentifier = '10'O; + modeOf1stChannel, elementIdentifier = '63'O; + channelSet2, elementIdentifier = '11'O; + channelSet3, elementIdentifier = '13'O; + channelSet4, elementIdentifier = '14'O; + channelSet5, elementIdentifier = '15'O; + channelSet6, elementIdentifier = '16'O; + channelSet7, elementIdentifier = '17'O; + channelSet8, elementIdentifier = '18'O; + descrOf2ndChAfterTime, elementIdentifier = '64'O; + modeOf2ndChannel, elementIdentifier = '66'O; + mobileAllocation_at, elementIdentifier = '72'O; + startingTime, elementIdentifier = '7C'O; + frequencyList_bt, elementIdentifier = '19'O; + descrOf1stCh_bt, elementIdentifier = '1C'O; + descrOf2ndCh_bt, elementIdentifier = '1D'O; + frequencyChannelSequence, elementIdentifier = '1E'O; + mobileAllocation_bt, elementIdentifier = '21'O; + cipherModeSetting, elementIdentifier = '1001'B; + vGCS_TargetModeIndication,elementIdentifier = '01'O; + multiRateConfiguration, elementIdentifier = '03'O; + vGCS_Ciphering_Parameters,elementIdentifier = '04'O; + extendedTSCSet_afterTime, elementIdentifier = '6D'O; + extendedTSCSet_beforeTime,elementIdentifier = '6E'O; + )"}; + +// 44.018/9.1.3 Assignment complete (MS->NW) +//**************************************************************************** +type record PDU_RRM_AssignmentComplete_MS_NW +{ + BIT8 messageType, // '00101001'B; + RR_Cause_V rR_Cause +}; + +// 44.018/9.1.4 Assignment failure (MS->NW) +//**************************************************************************** +type record PDU_RRM_AssignmentFailure_MS_NW +{ + BIT8 messageType, // '00101111'B; + RR_Cause_V rR_Cause +}; + +// 44.018/9.1.5 Channel Mode Modify (NW_MS) +//**************************************************************************** +type record PDU_RRM_ChannelModeModify_NW_MS +{ + BIT8 messageType, // '00010000'B; + ChannelDescription2_V channelDescription, + ChannelMode_V channelMode, + VGCS_TargetModeIndication_TLV vGCS_TargetModeIndication optional, + MultiRateConfiguration_TLV multiRateConfiguration optional, + VGCS_Ciphering_Parameters_TLV vGCS_Ciphering_Parameters optional, + ExtendedTSCSet_TV extendedTSCSet optional +}with {variant "TAG( vGCS_TargetModeIndication, elementIdentifier = '01'O; + multiRateConfiguration, elementIdentifier = '03'O; + vGCS_Ciphering_Parameters,elementIdentifier = '04'O; + extendedTSCSet, elementIdentifier = '6D'O; )" + }; + +// 44.018/9.1.6 Channel Mode Modify Acknowledge(MS_NW) +//**************************************************************************** +type record PDU_RRM_ChannelModeModifyAck_MS_NW +{ + BIT8 messageType, // '00010111'B; + ChannelDescription2_V channelDescription, + ChannelMode_V channelMode, + ExtendedTSCSet_TV extendedTSCSet optional +}with {variant "TAG(extendedTSCSet, elementIdentifier = '6D'O; )"}; + +// 44.018/9.1.7 Channel Release(NW_MS) +//**************************************************************************** +type record PDU_RRM_ChannelRelease_NW_MS +{ + BIT8 messageType, // '00001101'B; + RR_Cause_V rRCause, + BARange_TLV bARange optional, + GroupChannelDescription_TLV groupChannelDescription optional, + Type1_TV groupCipherKeyNumber optional, // 1byte, see DTAP_Types + Type1_TV gPRSResumption optional, + BAListPref_TLV bAListPref optional, + UTRANFrequencyList_TLV uTRANFrequencyList optional, + CellChannelDescription_TV cellChannelDescr optional, + CellSelectionIndicatorAfterReleaseOfAll_TCH_and_SDCCH_IE cellSelectionIndicator optional, + Enhanced_DTM_CS_Release_Indication enhanced_DTM_CS_Release_Indication optional, + VGCS_Ciphering_Parameters_TLV vGCS_Ciphering_Parameters optional, + Group_Channel_Description_2_TLV group_Channel_Description_2 optional, + TalkerIdentity_TLV talkerIdentity optional, + TalkerPriorityStatus_TLV talkerPriorityStatus optional, + VGCS_AMR_Configuration_TLV vGCS_AMR_Configuration optional, + Individual_Priorities_TLV individual_Priorities optional +} with {variant "TAG(bARange, elementIdentifier ='73'O; + groupChannelDescription, elementIdentifier ='74'O; + groupCipherKeyNumber, elementIdentifier ='1000'B; + gPRSResumption, elementIdentifier ='1100'B; + bAListPref, elementIdentifier ='75'O; + uTRANFrequencyList, elementIdentifier ='76'O; + cellChannelDescr, elementIdentifier ='62'O; + cellSelectionIndicator, elementIdentifier ='77'O; + enhanced_DTM_CS_Release_Indication, elementIdentifier ='1010'B; + vGCS_Ciphering_Parameters, elementIdentifier = '04'O; + group_Channel_Description_2, elementIdentifier = '78'O; + talkerIdentity, elementIdentifier = '79'O; + talkerPriorityStatus, elementIdentifier = '7A'O; + vGCS_AMR_Configuration, elementIdentifier = '7B'O; + individual_Priorities, elementIdentifier = '7C'O; + )"}; + +// 44.018/9.1.8 ChannelRequest +//**************************************************************************** +// Not implemented, 1 byte long msg on RACH + + +// 44.018/9.1.9 Ciphering mode command +//**************************************************************************** +type record PDU_RRM_CipheringModeCommand_NW_MS +{ + BIT8 messageType, // '00110101'B; + CipherModeSetting_V cipherModeSetting, + CipherModeResponse_V cipherModeResponse +}; + +// 44.018/9.1.10 Ciphering mode complete +//**************************************************************************** +type record PDU_RRM_CipheringModeComplete_MS_NW +{ + BIT8 messageType, // '00110010'B; + MobileIdentityTLV mobileEquipmentIdentity optional +} with {variant "TAG(mobileEquipmentIdentity, elementIdentifier='0010111'B)"}; //'17'O + +// 44.018/9.1.11 Classmark Change +//**************************************************************************** +type record PDU_RRM_ClassmarkChange_MS_NW +{ + BIT8 messageType, // '00010110'B; + MobileStationClassmark2_LV mobileStationClassmark2, + MobileStationClassmark3_TLV mobileStationClassmark3 optional +} with {variant "TAG(mobileStationClassmark3, elementIdentifier = '20'O)"}; + +// 44.018/9.1.11a UTRAN Classmark Change +//**************************************************************************** +type record PDU_RRM_UTRAN_ClassmarkChange_MS_NW +{ + BIT8 messageType, + UTRAN_Classmark_LV uTRAN_Classmark +} + +// 44.018/9.1.11b +//**************************************************************************** +type record PDU_RRM_CDMA2000_ClassmarkChange_MS_NW +{ + BIT8 messageType, + Type4_LV terminalInformation, + Type4_LV securityStatus, + Type4_LV bandClassInformation, + Type4_LV powerClassInformation, + Type4_LV operatingModeInformation, + Type4_LV serviceOptionInformation, + Type4_LV multiplexOptionInformation, + Type4_LV powerControlInformation, + Type4_LV capabilityInformation, + Type4_LV channelConfigurationCapabilityInformation, + Type4_LV extMultiplexOptionInformation, + Type4_LV bandSubclassInformation, + Type4_LV encryptionCapability +} + +// 44.018/9.1.11d +//**************************************************************************** +type record PDU_RRM_GERAN_IU_ModeClassmarkChange_MS_NW +{ + BIT8 messageType, + GERAN_IU_ModeClassmark_LV gERAN_IU_ModeClassmark +} + +// 44.018/9.1.12 Classmark Enquiry +//**************************************************************************** +type record PDU_RRM_ClassmarkEnquiry_NW_MS +{ + BIT8 messageType, // '00010011'B; + ClassmarkEnquiryMask_TLV classmarkEnquiryMask optional +} with {variant "TAG(classmarkEnquiryMask, elementIdentifier = '10'O)"}; + +// 44.018/9.1.12b Configuration change command (NW->MS) +//**************************************************************************** +type record PDU_RRM_ConfigurationChangeCommand_NW_MS +{ + BIT8 messageType, // '00110000'B; + MultislotAllocation_LV multislotAllocation, + ChannelMode_TV modeOfChannelSet1 optional, + ChannelMode_TV modeOfChannelSet2 optional, + ChannelMode_TV modeOfChannelSet3 optional, + ChannelMode_TV modeOfChannelSet4 optional, + ChannelMode_TV modeOfChannelSet5 optional, + ChannelMode_TV modeOfChannelSet6 optional, + ChannelMode_TV modeOfChannelSet7 optional, + ChannelMode_TV modeOfChannelSet8 optional +} with {variant "TAG( modeOfChannelSet1, elementIdentifier='63'O; + modeOfChannelSet2, elementIdentifier='11'O; + modeOfChannelSet3, elementIdentifier='13'O; + modeOfChannelSet4, elementIdentifier='14'O; + modeOfChannelSet5, elementIdentifier='15'O; + modeOfChannelSet6, elementIdentifier='16'O; + modeOfChannelSet7, elementIdentifier='17'O; + modeOfChannelSet8, elementIdentifier='18'O;)"}; + +// 44.018/9.1.12c Configuration change acknowledge (MS->NW) +//**************************************************************************** +type record PDU_RRM_ConfigurationChangeAck_MS_NW +{ + BIT8 messageType // '00110001'B; +}; + +// 44.018/9.1.12d Configuration change reject (MS->NW) +//**************************************************************************** +type record PDU_RRM_ConfigurationChangeRej_MS_NW +{ + BIT8 messageType, // '00110011'B; + RR_Cause_V rR_Cause +}; + +// 44.018/9.1.12e DTM Assignment Command +//**************************************************************************** +type record PDU_RRM_DTM_AssignmentCommand_NW_MS +{ + BIT8 messageType, + PowerCommand_V cS_PowerCommand, + ChannelDescription_V description_CS_Channel, + GPRS_BroadcastInformation_LV gPRS_BroadcastInformation, + CellChannelDescription_TV cellChannelDescr optional, + ChannelMode_TV channelMode optional, + FrequencyList_TLV frequencyList optional, + MobileAllocation_TLV mobileAllocation optional, + RR_PacketUplinkAssignment_TLV descrUplinkPacketChannelAssignment optional, + RR_PacketDownlinkAssignment_TLV descrDownlinkPacketChannelAssignment optional, + MultiRateConfiguration_TLV multiRateConfiguration optional, + CipherModeSetting_TV cipherModeSetting optional, + MobileAllocation_TLV mobileAllocationC2 optional, + FrequencyList_TLV frequencyListC2 optional, + RR_DualCarrierPacketDownlinkAssignment_TLV descriptionDualCarrierPacketDownlinkAssignment optional, + ChannelDescription3_TV channelDescriptionC2 optional, + ExtendedTSCSet_TV extendedTSCSet optional +} with {variant "TAG(cellChannelDescr, elementIdentifier = '10'O; + channelMode, elementIdentifier = '11'O; + frequencyList, elementIdentifier = '12'O; + mobileAllocation, elementIdentifier = '13'O; + descrUplinkPacketChannelAssignment, elementIdentifier = '15'O; + descrDownlinkPacketChannelAssignment, elementIdentifier = '16'O; + multiRateConfiguration, elementIdentifier = '17'O; + cipherModeSetting, elementIdentifier = '1001'B; + mobileAllocationC2, elementIdentifier = '18'O; + frequencyListC2, elementIdentifier = '19'O; + descriptionDualCarrierPacketDownlinkAssignment, elementIdentifier = '20'O; + channelDescriptionC2, elementIdentifier = '21'O; + extendedTSCSet, elementIdentifier = '6D'O;)"}; + +// 44.018/9.1.12f DTM Assignment Failure +//**************************************************************************** +type record PDU_RRM_DTM_AssignmentFailure_MS_NW +{ + BIT8 messageType, + RR_Cause_V rR_Cause +} + +// 44.018/9.1.12g DTM Information +//**************************************************************************** +type record PDU_RRM_DTM_Information_NW_MS +{ + BIT8 messageType, + RoutingAreaIdentificationV routingAreaIdentification,//24.008 10.5.5.15 + DTM_InformationDetails_LV dTM_InformationDetails +} + +// 44.018/9.1.12h DTM Reject +//**************************************************************************** +type record PDU_RRM_DTM_Reject_NW_MS +{ + BIT8 messageType, + WaitIndication_V waitIndication +} + +// 44.018/9.1.12i DTM Request +//**************************************************************************** +type record PDU_RRM_DTM_Request_MS_NW +{ + BIT8 messageType, + OCT4 tLLI, + ChannelRequestDescription2_LV channelRequestDescription2 +} + +// 44.018/9.1.13 Frequency Redefinition +//**************************************************************************** +type record PDU_RRM_Frequency_Redefinition_NW_MS +{ + BIT8 messageType, + ChannelDescription_V channelDescription, + MobileAllocation_LV mobileAllocation, + StartingTime_V startingTime, + CellChannelDescription_TV cellChannelDescr optional, + CarrierIndication_TV carrierIndication optional, + MobileAllocation_TLV mobileAllocationC2 optional, + ChannelDescription3_TV channelDescriptionC2 optional, + ExtendedTSCSet_TV extendedTSCSet optional +} with {variant "TAG(cellChannelDescr, elementIdentifier = '62'O; + carrierIndication, elementIdentifier = '1001'B; + mobileAllocationC2, elementIdentifier = '11'O; + channelDescriptionC2, elementIdentifier = '12'O; + extendedTSCSet, elementIdentifier = '6D'O;)"}; + +// 44.018/9.1.13b GPRS Suspension Request +//**************************************************************************** +type record PDU_RRM_GPRS_SuspensionRequest_MS_NW +{ + BIT8 messageType, + OCT4 tLLI, + RoutingAreaIdentificationV routingAreaIdentification,//24.008 10.5.5.15 + OCT1 suspensionCause, + ServiceSupport_TV service_Support optional +} with {variant "TAG(service_Support, elementIdentifier = '01'O;)"}; + +// 44.018/9.1.14 Handover Access +//**************************************************************************** +// short=> it doesn't included in PDU_RRM ! +type record PDU_RRM_HandoverAccess_NW_MS +{ + BIT8 handoverReference +}; + +// 44.018/9.1.15 Handover_Command +//**************************************************************************** +type record PDU_RRM_HandoverCommand_NW_MS +{ + BIT8 messageType, //'00101011'B, + CellDescription_V cellDescription, + ChannelDescription2_V channelDescription2, + HandoverReference_V handoverReference, + PowerCommandAndAccesstype_V powerCommandAndAccesstype, + SynchronizationIndication_TV synchronizationIndication optional, + FrequencyShortList_TV frequencyShortListAfterTime optional, + FrequencyList_TLV frequencyListAfterTime optional, + CellChannelDescription_TV cellChannelDescription optional, + MultislotAllocation_TLV multislotAllocation optional, + ChannelMode_TV modeOfChannelSet1 optional, + ChannelMode_TV modeOfChannelSet2 optional, + ChannelMode_TV modeOfChannelSet3 optional, + ChannelMode_TV modeOfChannelSet4 optional, + ChannelMode_TV modeOfChannelSet5 optional, + ChannelMode_TV modeOfChannelSet6 optional, + ChannelMode_TV modeOfChannelSet7 optional, + ChannelMode_TV modeOfChannelSet8 optional, + ChannelDescription_TV descrOf2ndCh_at optional, + ChannelMode2_TV modeOf2ndChannel optional, + FrequencyChannelSequence_TV frequencyChannelSequence_at optional, + MobileAllocation_TLV mobileAllocation_at optional, + StartingTime_TV startingTime optional, + RealTimeDifference_TLV timeDifference optional, + TimingAdvance_TV timingAdvance optional, + FrequencyShortList_TV frequencyShortListBeforeTime optional, + FrequencyList_TLV frequencyListBeforeTime optional, + ChannelDescription2_TV descrOf1stCh_bt optional, + ChannelDescription_TV descrOf2ndCh_bt optional, + FrequencyChannelSequence_TV frequencyChannelSequence_bt optional, + MobileAllocation_TLV mobileAllocation_bt optional, + CipherModeSetting_TV cipherModeSetting optional, + VGCS_TargetModeIndication_TLV vGCS_TargetModeIndication optional, + MultiRateConfiguration_TLV multiRateConfiguration optional, + DynamicARFCN_Mapping_TLV dynamicARFCN_Mapping optional, + VGCS_Ciphering_Parameters_TLV vGCS_Ciphering_Parameters optional, + DedicatedServiceInformation_TV dedicatedServiceInformation optional, + PLMNIndex_TV pLMNIndex optional, + ExtendedTSCSet_TV extendedTSCSet_afterTime optional, + ExtendedTSCSet_TV extendedTSCSet_beforeTime optional +} with {variant "TAG(synchronizationIndication, elementIdentifier = '1101'B; + frequencyShortListAfterTime, elementIdentifier = '02'O; + frequencyListAfterTime, elementIdentifier = '05'O; + cellChannelDescription, elementIdentifier = '62'O; + multislotAllocation, elementIdentifier = '10'O; + modeOfChannelSet1, elementIdentifier = '63'O; + modeOfChannelSet2, elementIdentifier = '11'O; + modeOfChannelSet3, elementIdentifier = '13'O; + modeOfChannelSet4, elementIdentifier = '14'O; + modeOfChannelSet5, elementIdentifier = '15'O; + modeOfChannelSet6, elementIdentifier = '16'O; + modeOfChannelSet7, elementIdentifier = '17'O; + modeOfChannelSet8, elementIdentifier = '18'O; + descrOf2ndCh_at, elementIdentifier = '64'O; + modeOf2ndChannel, elementIdentifier = '66'O; + frequencyChannelSequence_at, elementIdentifier = '69'O; + mobileAllocation_at, elementIdentifier = '72'O; + startingTime, elementIdentifier = '7C'O; + timeDifference, elementIdentifier = '7B'O; + timingAdvance, elementIdentifier = '7D'O; + frequencyShortListBeforeTime, elementIdentifier = '12'O; + frequencyListBeforeTime, elementIdentifier = '19'O; + descrOf2ndCh_bt, elementIdentifier = '1C'O; + descrOf1stCh_bt, elementIdentifier = '1D'O; + frequencyChannelSequence_bt, elementIdentifier = '1E'O; + mobileAllocation_bt, elementIdentifier = '21'O; + cipherModeSetting, elementIdentifier = '1001'B; + vGCS_TargetModeIndication, elementIdentifier = '01'O; + multiRateConfiguration, elementIdentifier = '03'O; + dynamicARFCN_Mapping, elementIdentifier = '76'O; + vGCS_Ciphering_Parameters, elementIdentifier = '04'O; + dedicatedServiceInformation, elementIdentifier = '51'O; + pLMNIndex, elementIdentifier = '1010'B; + extendedTSCSet_afterTime, elementIdentifier = '6D'O; + extendedTSCSet_beforeTime, elementIdentifier = '6E'O;)"}; + +// 44.018/9.1.15a Inter System to UTRAN Handover Command +//**************************************************************************** +type record PDU_RRM_InterSystemToUTRAN_HandoverCommand_NW_MS +{ + BIT8 messageType, + HandoverToUTRANCommand_LV handoverToUTRANCommand, + CNToMSTransparentInformation_TLV cNToMSTransparentInformation optional +} + +// 44.018/9.1.15b Inter System to CDMA 2000 Handover Command +//**************************************************************************** +type record PDU_RRM_InterSystemToCDMA2000HandoverCommand_NW_MS +{ + BIT8 messageType, + HandoverToCDMA2000Command_LV handoverToCDMA2000Command +} + +// 44.018/9.1.15c Handover To GERAN Iu Mode Command +//**************************************************************************** +// Note : Message Type is not defined in section 10.4, this message can not be encoded/decoded +type record PDU_RRM_HandoverToGERAN_IuModeCommand_NW_MS +{ + BIT8 messageType, + RadioBearerReconfiguration_LV radioBearerReconfiguration +} + +// 44.018/9.1.15d Inter System to E-UTRAN Handover Command +//**************************************************************************** +type record PDU_RRM_InterSystemToEUTRAN_HandoverCommand_NW_MS +{ + BIT8 messageType, + DL_DCCH_Message_LV dL_DCCH_Message, + CNToMSTransparentInformation_TLV cNToMSTransparentInformation +} + +// 44.018/9.1.16 Handover Complete +//**************************************************************************** +type record PDU_RRM_HandoverComplete_MS_NW +{ + BIT8 messageType, //'00101100'B; + RR_Cause_V rRCause, + MobileTimeDifference_TLV mobileObsservedTimeDiff optional, + MobileTimeDifferenceHyperframe_TLV mobileTimeDifferenceHyperframe optional +} with {variant "TAG(mobileObsservedTimeDiff, elementIdentifier = '77'O; + mobileTimeDifferenceHyperframe,elementIdentifier = '67'O;)"}; + +// 44.018/9.1.17 Handover Failure +//**************************************************************************** +type record PDU_RRM_HandoverFailure_MS_NW +{ + BIT8 messageType, //'00101000'B; + RR_Cause_V rRCause, + PS_Cause_TV pSCause optional +} with {variant "TAG(pSCause,elementIdentifier = '1001'B )"}; + +// 44.018/9.1.18 Immediate Assignment +//**************************************************************************** +type record PDU_RRM_ImmediateAssignment_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, + PageMode_V pageMode, + DedicatedModeOrTBF_V dedicatedModeOrTBF, + ChannelDescription_V channelDescription optional, + OCT3 packetChannelDescription optional, + RequestReference_V requestReference, + OCT1 timingAdvance, + MobileAllocation_LV mobileAllocation, + StartingTime_TV startingTime optional, + octetstring iA_RestOctets length (0..11) optional, + ExtendedTSCSet_TV extendedTSCSet optional +} with {variant (channelDescription) "PRESENCE(dedicatedModeOrTBF.tMA_dL_tD = '000'B)"; + variant (packetChannelDescription) "PRESENCE(dedicatedModeOrTBF.tMA_dL_tD = '001'B, + dedicatedModeOrTBF.tMA_dL_tD = '011'B, + dedicatedModeOrTBF.tMA_dL_tD = '101'B, //??? + dedicatedModeOrTBF.tMA_dL_tD = '111'B)"; //??? + variant "TAG(startingTime, elementIdentifier = '7C'O; + extendedTSCSet, elementIdentifier = '6D'O;)";}; + +// 44.018/9.1.18b Immediate Packet Assignment +//**************************************************************************** +type record PDU_RRM_ImmediatePacketAssignment_NW_MS +{ + BIT8 messageType, + PageMode_V pageMode, + FeatureIndicator_V featureIndicator, + octetstring iPA_RestOctets length (19) +}; + +// 44.018/9.1.19 Immediate Assignment Extended +//**************************************************************************** +type record PDU_RRM_ImmediateAssignmentExtended_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, + PageMode_V pageMode, + FeatureIndicator_V featureIndicator, + ChannelDescription_V channelDescription1, + RequestReference_V requestReference1, + OCT1 timingAdvance1, + ChannelDescription_V channelDescription2, + RequestReference_V requestReference2, + OCT1 timingAdvance2, + MobileAllocation_LV mobileAllocation, + StartingTime_TV startingTime optional, + octetstring iAX_RestOctets length (0..4) optional +} with { variant "TAG(startingTime,elementIdentifier = '7C'O )";} + +// 44.018/9.1.20 Immediate Assignment Reject +//**************************************************************************** +type record PDU_RRM_ImmediateAssignmentReject_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, + PageMode_V pageMode, + FeatureIndicator_V featureIndicator, + RequestReference_V requestReference1, + WaitIndication_V waitIndication1, + RequestReference_V requestReference2, + WaitIndication_V waitIndication2, + RequestReference_V requestReference3, + WaitIndication_V waitIndication3, + RequestReference_V requestReference4, + WaitIndication_V waitIndication4, + octetstring iAR_RestOctets length (3) +} + +// 44.018/9.1.21 Measurement Report +//**************************************************************************** +// SACCH message, not implemented + +// 44.018/9.1.21a Notification/FACCH +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.21b Notification/NCH +//**************************************************************************** +// NCH message, not implemented + +// 44.018/9.1.21d Notification Response +//**************************************************************************** +type record PDU_RRM_NotificationResponse_MS_NW +{ + BIT8 messageType, + MobileStationClassmark2_LV mobileStationClassmark, + MobileIdentityLV mobileIdentity, + DescriptiveGroupOrBroadcastCallReference_V groupOrBroadcastCallReference +} + +// 44.018/9.1.21f Packet Assignment +//**************************************************************************** +// FACCH message, not implemented + +// 44.018/9.1.21g Packet Notification +//**************************************************************************** +type record PDU_RRM_PacketNotification_NW_MS +{ + BIT8 messageType, + TMSIP_TMSI_TV p_TMSI optional, + MobileIdentityTLV mobileIdentity optional +} with { variant "TAG ( p_TMSI, elementIdentifier = '10'O; + mobileIdentity, elementIdentifier = '0010001'B;)"}; + +// 44.018/9.1.21h VBS/VGCS Reconfigure +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.21i VBS/VGCS Reconfigure2 +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.21j MBMS Announcement +//**************************************************************************** +type record MBMS_Announcement_NW_MS +{ + BIT8 messageType, + TemporaryMobileGroupIDLV tMGI, + MBMS_SessionIdentity_TV mBMS_SessionIdentity optional, + MPRACH_Description_TLV mBMS_CountingChannelDescription optional, + MBMS_ptm_ChannelDescription_TLV mBMS_ptm_ChannelDescription optional, + MBMS_SessionParameterList_TLV mBMS_SessionParameterList optional, + RestrictionTimer_TV restrictionTimer optional +} with { variant "TAG ( mBMS_SessionIdentity, elementIdentifier = '01'O; + mBMS_CountingChannelDescription, elementIdentifier = '02'O; + mBMS_ptm_ChannelDescription, elementIdentifier = '03'O; + mBMS_SessionParameterList, elementIdentifier = '04'O; + restrictionTimer, elementIdentifier = '05'O;)"}; + + // 44.018/9.1.22 Paging Request type 1 +//**************************************************************************** +type record PDU_RRM_PagingReq_Type1_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, // '00100001'B; + PageMode_V pageMode, + ChannelNeeded_V channelNeeded, + MobileIdentityLV mobileIdentity1, + MobileIdentityTLV mobileIdentity2 optional, + P1RestOctets p1RestOctets +} with { variant "TAG ( mobileIdentity2, elementIdentifier = '0010111'B )" }; //'17'O + +// 44.018/9.1.23 Paging Request type 2 +//**************************************************************************** +type record PDU_RRM_PagingReq_Type2_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, // '00100010'B + PageMode_V pageMode, + ChannelNeeded_V channelNeeded, + TMSIP_TMSI_V mobileIdentity1, + TMSIP_TMSI_V mobileIdentity2, + MobileIdentityTLV mobileIdentity3 optional, + P2RestOctets p2RestOctets +} with { variant "TAG ( mobileIdentity3, elementIdentifier = '0010111'B )" }; //'17'O + +// 44.018/9.1.24 Paging Request type 3 +//**************************************************************************** +type record PDU_RRM_PagingReq_Type3_NW_MS +{ + // L2 pseudo length is handled automatically by encoder/decoder + BIT8 messageType, // '00100100'B; + PageMode_V pageMode, + ChannelNeeded_V channelNeeded, + TMSIP_TMSI_V mobileIdentity1, + TMSIP_TMSI_V mobileIdentity2, + TMSIP_TMSI_V mobileIdentity3, + TMSIP_TMSI_V mobileIdentity4, + P3RestOctets p3RestOctets +} with { variant " " }; + +// 44.018/9.1.25 Paging Response +//**************************************************************************** +type record PDU_RRM_PagingResponse_MS_NW +{ + BIT8 messageType, // '00100111'B = '27'O Response Paging + CipheringKeySequenceNumberV cipheringKeySequenceNumber, + BIT4 spare1_4, // '0000'B + MobileStationClassmark2_LV mobileStationClassmark, + MobileIdentityLV mobileIdentity, + AdditionalUpdateParameterTV additionalUpdateParameters optional +}; + +// 44.018/9.1.26 Partial Release +//**************************************************************************** +type record PDU_RRM_PartialRelease_NW_MS +{ + BIT8 messageType, //'00001010'B; + ChannelDescription_V channelDescription +}; + +// 44.018/9.1.27 Partial Release Complete +//**************************************************************************** +type record PDU_RRM_PartialReleaseComplete_MS_NW +{ + BIT8 messageType // '00001111'B; +}; + +// 44.018/9.1.28 Physical Information +//**************************************************************************** +type record PDU_RRM_PhysicalInformation_NW_MS +{ + BIT8 messageType, //'00101101'B; + OCT1 timingAdvance +}; + +// 44.018/9.1.29 RR Status +//**************************************************************************** +type record PDU_RRM_RR_Status +{ + BIT8 messageType, // + RR_Cause_V rR_Cause +}; + +// 44.018/9.1.30a Synchronization Channel Information +//**************************************************************************** +// SCH message, not implemented + + +// 44.018/9.1.31 - 9.1.43o System Information messages +//**************************************************************************** +//BCCH and SACCH messages, not implemented + +// 44.018/9.1.44 Talker Indication +//**************************************************************************** +type record PDU_RRM_TalkerIndication_MS_NW +{ + BIT8 messageType, + MobileStationClassmark2_LV mobileStationClassmark, + MobileIdentityLV mobileIdentity, + CipheringKeySequenceNumberTV cipheringKeySequenceNumber optional +} with { variant "TAG (cipheringKeySequenceNumber, elementIdentifier = '1011'B )" }; //B + +// 44.018/9.1.45 Uplink Access +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.46 Uplink Busy +//**************************************************************************** +type record PDU_RRM_UplinkBusy_NW_MS +{ + BIT8 messageType, + TalkerPriorityStatus_TLV talkerPriorityStatus optional, + Token_TV token optional, + TalkerIdentity_TLV talkerIdentity optional, + UplinkAccessIndication_TV uplinkAccessIndication optional +} with { variant "TAG ( talkerPriorityStatus, elementIdentifier = '31'O; + token, elementIdentifier = '32'O; + talkerIdentity, elementIdentifier = '33'O; + uplinkAccessIndication, elementIdentifier = '1000'B;)"}; // '8-'O + +// 44.018/9.1.47 Uplink Free +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.48 Uplink Release +//**************************************************************************** +type record PDU_RRM_UplinkRelease +{ + BIT8 messageType, + RR_Cause_V rR_Cause +} + +// 44.018/9.1.49 VGCS Uplink Grant +//**************************************************************************** +type record PDU_RRM_VGCS_UplinkGrant_NW_MS +{ + BIT8 messageType, + RequestReference_V requestReference, + OCT1 timingAdvance +} + +// 44.018/9.1.49a VGCS Additional Information +//**************************************************************************** +// No table definition, not implemented + +// 44.018/9.1.49b VGCS SMS Information +//**************************************************************************** +// No table definition,SACCH message, not implemented + +// 44.018/9.1.50 System Information +//**************************************************************************** +// No table definition, SACCH message, not implemented + +// 44.018/9.1.51 Extended Measurement Order +//**************************************************************************** +// SACCH message, not implemented + +// 44.018/9.1.52 Extended Measurement Order +//**************************************************************************** +// SACCH message, not implemented + +// 44.018/9.1.53 Application Information +//**************************************************************************** +type record PDU_RRM_ApplicationInformation +{ + BIT8 messageType, + BIT4 aPDU_ID, + APDU_Flags_V aPDU_Flags, + APDU_Data_LV aPDU_Data +} + +// 44.018/9.1.54 Measurement Information +//**************************************************************************** +// No table definition, SACCH message, not implemented + +// 44.018/9.1.55 Enhanced Measurement Report +//**************************************************************************** +// No table definition, SACCH message, not implemented + +// 44.018/9.1.56 +//**************************************************************************** +type record PDU_RRM_ServiceInformationMessage_MS_NW +{ + BIT8 messageType, + OCT4 tLLI, + RoutingAreaIdentificationV routingAreaIdentification,//24.008 10.5.5.15 + ServiceSupport_V serviceSupport +} + +//**************************************************************************** +// 9.1 Messages for Radio Resources management +// Table 9.1.1 Organized by Table 10.4.1 +//**************************************************************************** +type union PDU_RRM_MS_NW +{ + //Ciphering + PDU_RRM_CipheringModeComplete_MS_NW cipheringModeComplete, + //Config change + PDU_RRM_ConfigurationChangeAck_MS_NW configurationChangeAck, + PDU_RRM_ConfigurationChangeRej_MS_NW configurationChangeRej, + //Handover + PDU_RRM_AssignmentComplete_MS_NW assignmentComplete, + PDU_RRM_AssignmentFailure_MS_NW assignmentFailure, + PDU_RRM_HandoverComplete_MS_NW handoverComplete, + PDU_RRM_HandoverFailure_MS_NW handoverFailure, + //rel: + PDU_RRM_PartialReleaseComplete_MS_NW partialReleaseComplete, + //Paging + PDU_RRM_PagingResponse_MS_NW pagingResponse, + PDU_RRM_NotificationResponse_MS_NW notificationResponse, + //Misc + PDU_RRM_RR_Status rR_Status, + PDU_RRM_ChannelModeModifyAck_MS_NW channelModeModifyAck, + PDU_RRM_ClassmarkChange_MS_NW classmarkChange, + PDU_RRM_GPRS_SuspensionRequest_MS_NW gPRS_suspensionRequest, + PDU_RRM_ServiceInformationMessage_MS_NW serviceInformationMessage, + //VGCS + PDU_RRM_UplinkRelease uplinkRelease, + PDU_RRM_TalkerIndication_MS_NW talkerIndication, + //Application + PDU_RRM_ApplicationInformation applicationInformation, + //DTM + PDU_RRM_DTM_AssignmentFailure_MS_NW dTM_AssignmentFailure, + PDU_RRM_DTM_Request_MS_NW dTM_Request, + //Inter RAT + PDU_RRM_UTRAN_ClassmarkChange_MS_NW uTRAN_ClassmarkChange, + PDU_RRM_CDMA2000_ClassmarkChange_MS_NW cDMA2000_ClassmarkChange, + PDU_RRM_GERAN_IU_ModeClassmarkChange_MS_NW gERAN_IU_ModeClassmarkChange +} with { variant "TAG ( + cipheringModeComplete, messageType = '00110010'B; + configurationChangeAck, messageType = '00110001'B; + configurationChangeRej, messageType = '00110011'B; + assignmentComplete, messageType = '00101001'B; + assignmentFailure, messageType = '00101111'B; + handoverComplete, messageType = '00101100'B; + handoverFailure, messageType = '00101000'B; + partialReleaseComplete, messageType = '00001111'B; + pagingResponse, messageType = '00100111'B; + notificationResponse, messageType = '00100110'B; + rR_Status, messageType = '00010010'B; + channelModeModifyAck, messageType = '00010111'B; + classmarkChange, messageType = '00010110'B; + gPRS_suspensionRequest, messageType = '00110100'B; + serviceInformationMessage, messageType = '00110110'B; + uplinkRelease, messageType = '00001110'B; + talkerIndication, messageType = '00010001'B; + applicationInformation, messageType = '00111000'B; + dTM_AssignmentFailure, messageType = '01001000'B; + dTM_Request, messageType = '01001010'B; + uTRAN_ClassmarkChange, messageType = '01100000'B; + cDMA2000_ClassmarkChange, messageType = '01100010'B; + gERAN_IU_ModeClassmarkChange, messageType = '01100101'B;)"}; + +type union PDU_RRM_NW_MS +{ + //Channel establishment + PDU_RRM_AdditionalAssignment_NW_MS additionalAssignment, + PDU_RRM_ImmediatePacketAssignment_NW_MS immediatePacketAssignment, + //Ciphering + PDU_RRM_CipheringModeCommand_NW_MS cipheringModeCommand, + //Config change + PDU_RRM_ConfigurationChangeCommand_NW_MS configurationChangeCommand, + //Handover + PDU_RRM_AssignmentCommand_NW_MS assignmentCommand, + PDU_RRM_HandoverCommand_NW_MS handoverCommand, + PDU_RRM_PhysicalInformation_NW_MS physicalInformation, + //Channel release + PDU_RRM_ChannelRelease_NW_MS channelRelease, + PDU_RRM_PartialRelease_NW_MS partialRelease, + //Paging + PDU_RRM_PagingReq_Type1_NW_MS pagingReq_Type1, + PDU_RRM_PagingReq_Type2_NW_MS pagingReq_Type2, + PDU_RRM_PagingReq_Type3_NW_MS pagingReq_Type3, + //Misc + PDU_RRM_ChannelModeModify_NW_MS channelModeModify, + PDU_RRM_RR_Status rR_Status, + PDU_RRM_Frequency_Redefinition_NW_MS frequency_Redefinition, + PDU_RRM_ClassmarkEnquiry_NW_MS classmarkEnquiry, + MBMS_Announcement_NW_MS mBMS_Announcement, + //VGCS + PDU_RRM_VGCS_UplinkGrant_NW_MS vGCS_UplinkGrant, + PDU_RRM_UplinkRelease uplinkRelease, + PDU_RRM_UplinkBusy_NW_MS uplinkBusy, + //Application + PDU_RRM_ApplicationInformation applicationInformation, + //DTM + PDU_RRM_DTM_AssignmentCommand_NW_MS dTM_AssignmentCommand, + PDU_RRM_DTM_Information_NW_MS dTM_Information, + PDU_RRM_DTM_Reject_NW_MS dTM_Reject, + PDU_RRM_PacketNotification_NW_MS packetNotification, + //Inter RAT + PDU_RRM_InterSystemToUTRAN_HandoverCommand_NW_MS interSystemToUTRAN_HandoverCommand, + PDU_RRM_InterSystemToCDMA2000HandoverCommand_NW_MS interSystemToCDMA2000HandoverCommand, + PDU_RRM_InterSystemToEUTRAN_HandoverCommand_NW_MS interSystemToEUTRAN_HandoverCommand +} with { variant "TAG ( + additionalAssignment, messageType = '00111011'B; + immediatePacketAssignment, messageType = '01101001'B; + cipheringModeCommand, messageType = '00110101'B; + configurationChangeCommand, messageType = '00110000'B; + assignmentCommand, messageType = '00101110'B; + handoverCommand, messageType = '00101011'B; + physicalInformation, messageType = '00101101'B; + channelRelease, messageType = '00001101'B; + partialRelease, messageType = '00001010'B; + pagingReq_Type1, messageType = '00100001'B; + pagingReq_Type2, messageType = '00100010'B; + pagingReq_Type3, messageType = '00100100'B; + channelModeModify, messageType = '00010000'B; + rR_Status, messageType = '00010010'B; + frequency_Redefinition, messageType = '00010100'B; + classmarkEnquiry, messageType = '00010011'B; + mBMS_Announcement, messageType = '00010110'B; + vGCS_UplinkGrant, messageType = '00001001'B; + uplinkRelease, messageType = '00001110'B; + uplinkBusy, messageType = '00101010'B; + applicationInformation, messageType = '00111000'B; + dTM_AssignmentCommand, messageType = '01001100'B; + dTM_Information, messageType = '01001101'B; + dTM_Reject, messageType = '01001001'B; + packetNotification, messageType = '01001110'B; + interSystemToUTRAN_HandoverCommand, messageType = '01100011'B; + interSystemToCDMA2000HandoverCommand, messageType = '01100100'B; + interSystemToUTRAN_HandoverCommand, messageType = '01100110'B; +)"}; + +}//end of module +with { +extension "version R1B" +encode "RAW" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SMS_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SMS_Types.ttcn new file mode 100644 index 00000000..4ecfa549 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SMS_Types.ttcn @@ -0,0 +1,765 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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_SMS_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.008 v13.4.0, 24.011 v13.0.0, 23.040 v13.0.0 + +module MobileL3_SMS_Types +{ +// beginning of module + +// This module contains the SMS Messages defined in 24.011 v13.0.0, +// 23.040 v13.0.0 and 23.038 v7.0.0 +// This includes the C-PDUs, R-PDUs and T-PDUs with attributes for +// RAW encoding/decoding. + + +import from General_Types all; + +external function enc_TPDU_RP_DATA_MS_SGSN_fast(in TPDU_RP_DATA_MS_SGSN pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_DATA_MS_SGSN_backtrack(in octetstring stream, out TPDU_RP_DATA_MS_SGSN pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_TPDU_RP_DATA_SGSN_MS_fast(in TPDU_RP_DATA_SGSN_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_DATA_SGSN_MS_backtrack(in octetstring stream, out TPDU_RP_DATA_SGSN_MS pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_TPDU_RP_ACK_MS_SGSN_fast(in TPDU_RP_ACK_MS_SGSN pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_ACK_MS_SGSN_backtrack(in octetstring stream, out TPDU_RP_ACK_MS_SGSN pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_TPDU_RP_ACK_SGSN_MS_fast(in TPDU_RP_ACK_SGSN_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_ACK_SGSN_MS_backtrack(in octetstring stream, out TPDU_RP_ACK_SGSN_MS pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_TPDU_RP_ERROR_MS_SGSN_fast(in TPDU_RP_ERROR_MS_SGSN pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_ERROR_MS_SGSN_backtrack(in octetstring stream, out TPDU_RP_ERROR_MS_SGSN pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_TPDU_RP_ERROR_SGSN_MS_fast(in TPDU_RP_ERROR_SGSN_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_TPDU_RP_ERROR_SGSN_MS_backtrack(in octetstring stream, out TPDU_RP_ERROR_SGSN_MS pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_RPDU_SGSN_MS_fast(in RPDU_SGSN_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_RPDU_SGSN_MS_backtrack(in octetstring stream, out RPDU_SGSN_MS pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_RPDU_MS_SGSN_fast(in RPDU_MS_SGSN pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_RPDU_MS_SGSN_backtrack(in octetstring stream, out RPDU_MS_SGSN pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } +//============================================================================== +// 24.011 7.2 CP-MESSAGES (CP_DATA, CP_ACK, CP_ERROR) +//============================================================================== + +// 7.2 +type union L3_SMS_MS_SGSN +{ + CP_DATA_MS_SGSN cP_DATA, + CP_ACK cP_ACK, + CP_ERROR cP_ERROR +}; + +// 7.2 +type union L3_SMS_SGSN_MS +{ + CP_DATA_SGSN_MS cP_DATA, + CP_ACK cP_ACK, + CP_ERROR cP_ERROR +}; + +// 7.2.1 CP-DATA +type record CP_DATA_MS_SGSN +{ + BIT8 cP_messageType, + CP_User_DataLV_MS_SGSN cP_User_Data +} with { variant "PRESENCE(cP_messageType = '00000001'B)"; }; + +// 7.2.1 CP-DATA +type record CP_DATA_SGSN_MS +{ + BIT8 cP_messageType, + CP_User_DataLV_SGSN_MS cP_User_Data +} with { variant "PRESENCE(cP_messageType = '00000001'B)"; }; + +// 7.2.2 CP-ACK +type record CP_ACK +{ + BIT8 cP_messageType +} with { variant "PRESENCE(cP_messageType = '00000100'B)"; }; + +// 7.2.3 CP-ERROR +type record CP_ERROR +{ + BIT8 cP_messageType, + CP_CauseV cP_Cause +} with { variant "PRESENCE(cP_messageType = '00010000'B)"; }; + +// 7.2.1 CP-DATA +type record CP_User_DataLV_SGSN_MS +{ + LIN1 lengthIndicator, + RPDU_SGSN_MS cP_RPDU +} with { variant (lengthIndicator) "LENGTHTO (cP_RPDU)"}; + +// 7.2.1 CP-DATA +type record CP_User_DataLV_MS_SGSN +{ + LIN1 lengthIndicator, + RPDU_MS_SGSN cP_RPDU +} with { variant (lengthIndicator) "LENGTHTO (cP_RPDU)"}; + +// 7.2.3 CP-ERROR +type record CP_CauseV +{ + OCT1 causeValue +} + + +//============================================================================= +// END OF CP-MESSAGES +//============================================================================= + + +//============================================================================= +// 24.011 7.3 RP-MESSAGES (RP-DATA, RP-SMMA, RP-ACK, RP-ERROR) +//============================================================================= +// 7.3 +type union RPDU_SGSN_MS +{ + RP_DATA_SGSN_MS rP_DATA_SGSN_MS, + RP_ACK_SGSN_MS rP_ACK_SGSN_MS, + RP_ERROR_SGSN_MS rP_ERROR_SGSN_MS, + RP_SMMA rP_SMMA // RP_SMMA included for negative testing in SGSN_MS direction +} with { + variant "TAG + ( + rP_DATA_SGSN_MS, rP_MTI = '001'B; + rP_ACK_SGSN_MS, rP_MTI = '011'B; + rP_ERROR_SGSN_MS, rP_MTI = '101'B; + rP_SMMA, rP_MTI = '110'B; + )" +}; + +// 7.3 +type union RPDU_MS_SGSN +{ + RP_DATA_MS_SGSN rP_DATA_MS_SGSN, + RP_ACK_MS_SGSN rP_ACK_MS_SGSN, + RP_ERROR_MS_SGSN rP_ERROR_MS_SGSN, + RP_SMMA rP_SMMA +} with { + variant "TAG + ( + rP_DATA_MS_SGSN, rP_MTI = '000'B; + rP_ACK_MS_SGSN, rP_MTI = '010'B; + rP_ERROR_MS_SGSN, rP_MTI = '100'B; + rP_SMMA, rP_MTI = '110'B; + )" +}; + +// 7.3.1.2 RP-DATA (Mobile Station to Network) +type record RP_DATA_MS_SGSN +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_MessageReference, + RP_OriginatorAddressLV rP_OriginatorAddress, + RP_DestinationAddressLV rP_DestinationAddress, + RP_DATA_User_DataLV_MS_SGSN rP_User_Data +} with { variant "PRESENCE(rP_MTI = '000'B)"; }; + +// 7.3.1.1 RP-DATA (Network to Mobile Station) +type record RP_DATA_SGSN_MS +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_MessageReference, + RP_OriginatorAddressLV rP_OriginatorAddress, + RP_DestinationAddressLV rP_DestinationAddress, + RP_DATA_User_DataLV_SGSN_MS rP_User_Data +} with { variant "PRESENCE(rP_MTI = '001'B)"; }; + +// 7.3.2 RP-SMMA +type record RP_SMMA +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_MessageReference +} with { variant "PRESENCE(rP_MTI = '110'B)"; }; + +// 7.3.3 RP-ACK +type record RP_ACK_SGSN_MS +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_MessageReference, + RP_ACK_User_DataTLV_SGSN_MS rP_User_Data optional +} with { variant "PRESENCE(rP_MTI = '011'B)"; }; + +// 7.3.3 RP-ACK +type record RP_ACK_MS_SGSN +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_MessageReference, + RP_ACK_User_DataTLV_MS_SGSN rP_User_Data optional +} with { variant "PRESENCE(rP_MTI = '010'B)"; }; + +// 7.3.4 RP-ERROR +type record RP_ERROR_SGSN_MS +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_Message_Reference, + RP_CauseLV rP_CauseLV, + RP_ERROR_User_DataTLV_SGSN_MS rP_User_Data optional +} with { variant "PRESENCE(rP_MTI = '101'B)"; }; + +// 7.3.4 RP-ERROR +type record RP_ERROR_MS_SGSN +{ + BIT3 rP_MTI, + BIT5 rP_Spare, // '00000'B + OCT1 rP_Message_Reference, + RP_CauseLV rP_CauseLV, + RP_ERROR_User_DataTLV_MS_SGSN rP_User_Data optional +} with { variant "PRESENCE(rP_MTI = '100'B)"; }; + +// 8.2.5.1 Originator address element +type record RP_OriginatorAddressLV +{ + LIN1 lengthIndicator, + RP_NumberingPlan_and_NumberDigits rP_OriginatorAddress optional +} with {variant(lengthIndicator)"LENGTHTO (rP_OriginatorAddress)"}; + + +// 8.2.5.2 Destination address element +type record RP_DestinationAddressLV +{ + LIN1 lengthIndicator, + RP_NumberingPlan_and_NumberDigits rP_DestinationAddress optional +} with { variant (lengthIndicator)"LENGTHTO (rP_DestinationAddress)"}; + +// 8.2.5.1 & 8.2.5.2 Originator address element +type record RP_NumberingPlan_and_NumberDigits +{ + BIT4 rP_NumberingPlanIdentification, + BIT3 rP_TypeOfNumber, + BIT1 rP_Ext, + hexstring rP_NumberDigits length (1..20) +} with { variant "PADDING(yes)"; + variant "PADDING_PATTERN('1111'B)"}; + + +// 8.2.5.4 RP-Cause element +type record RP_CauseLV +{ + LIN1 rP_LengthIndicator, + RP_CauseV rP_CauseV, + OCT1 rP_diagnisticField optional +} with { variant (rP_LengthIndicator)"LENGTHTO (rP_CauseV,rP_diagnisticField)"}; + +// 8.2.5.4 RP-Cause +type record RP_CauseV +{ + BIT7 causeValue, + BIT1 ext //'0'B +} + +// 8.2.5.3 RP-User data element +type record RP_DATA_User_DataLV_SGSN_MS +{ + LIN1 rP_LengthIndicator, + TPDU_RP_DATA_SGSN_MS rP_TPDU +} with { variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + +// 8.2.5.3 RP-User data element +type record RP_DATA_User_DataLV_MS_SGSN +{ + LIN1 rP_LengthIndicator, + TPDU_RP_DATA_MS_SGSN rP_TPDU +} with { variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + +// 8.2.5.3 RP-User data element +type record RP_ACK_User_DataTLV_SGSN_MS +{ + BIT1 rP_Spare, + BIT7 rP_UserDataIEI, + LIN1 rP_LengthIndicator, + TPDU_RP_ACK_SGSN_MS rP_TPDU +} with { variant "PRESENCE(rP_UserDataIEI = '1000001'B)"; + variant (rP_Spare,rP_UserDataIEI) "FIELDORDER(msb)"; + variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + +// 8.2.5.3 RP-User data element +type record RP_ACK_User_DataTLV_MS_SGSN +{ + BIT1 rP_Spare, + BIT7 rP_UserDataIEI, + LIN1 rP_LengthIndicator, + TPDU_RP_ACK_MS_SGSN rP_TPDU +} with { variant "PRESENCE(rP_UserDataIEI = '1000001'B)"; + variant (rP_Spare,rP_UserDataIEI) "FIELDORDER(msb)"; + variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + +// 8.2.5.3 RP-User data element +type record RP_ERROR_User_DataTLV_SGSN_MS +{ + BIT1 rP_Spare, + BIT7 rP_UserDataIEI, + LIN1 rP_LengthIndicator, + TPDU_RP_ERROR_SGSN_MS rP_TPDU +} with { variant "PRESENCE(rP_UserDataIEI = '1000001'B)"; + variant (rP_Spare,rP_UserDataIEI) "FIELDORDER(msb)"; + variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + +// 8.2.5.3 RP-User data element +type record RP_ERROR_User_DataTLV_MS_SGSN +{ + BIT1 rP_Spare, + BIT7 rP_UserDataIEI, + LIN1 rP_LengthIndicator, + TPDU_RP_ERROR_MS_SGSN rP_TPDU +} with { variant "PRESENCE(rP_UserDataIEI = '1000001'B)"; + variant (rP_Spare,rP_UserDataIEI) "FIELDORDER(msb)"; + variant (rP_LengthIndicator) "LENGTHTO (rP_TPDU)"}; + + +type union TPDU_RP_DATA_MS_SGSN +{ + SMS_SUBMIT sMS_SUBMIT, + SMS_COMMAND sMS_COMMAND +} with { + variant "TAG + ( + sMS_SUBMIT, tP_MTI = '01'B; + sMS_COMMAND, tP_MTI = '10'B; + )" +}; + + +type union TPDU_RP_DATA_SGSN_MS +{ + SMS_DELIVER sMS_DELIVER, + SMS_STATUS_REPORT sMS_STATUS_REPORT +} with { + variant "TAG + ( + sMS_DELIVER, tP_MTI = '00'B; + sMS_STATUS_REPORT, tP_MTI = '10'B; + )" +}; + + +type union TPDU_RP_ACK_MS_SGSN +{ + SMS_DELIVER_REPORT_in_RP_ACK sMS_DELIVER_REPORT +} with { + variant "TAG + ( + sMS_DELIVER_REPORT, tP_MTI = '00'B; + )" +}; + + +type union TPDU_RP_ACK_SGSN_MS +{ + SMS_SUBMIT_REPORT_in_RP_ACK sMS_SUBMIT_REPORT +} with { + variant "TAG + ( + sMS_SUBMIT_REPORT, tP_MTI = '01'B; + )" +}; + + +type union TPDU_RP_ERROR_MS_SGSN +{ + SMS_DELIVER_REPORT_in_RP_ERROR sMS_DELIVER_REPORT +} with { + variant "TAG + ( + sMS_DELIVER_REPORT, tP_MTI = '00'B; + )" +}; + + +type union TPDU_RP_ERROR_SGSN_MS +{ + SMS_SUBMIT_REPORT_in_RP_ERROR sMS_SUBMIT_REPORT +} with { + variant "TAG + ( + sMS_SUBMIT_REPORT, tP_MTI = '01'B; + )" +}; + + +//================================================================ +// END OF RP-MESSAGES +//================================================================ + + +//================================================================ +// TPDUs 23.040 9.2.2 +// (SMS_DELIVER, SMS_DELIVER_REPORT, SMS_SUBMIT, SMS_SUBMIT_REPORT, +// SMS_STATUS_REPORT, SMS_COMMAND) +//================================================================ + +// 23.040 9.2.2.1 +type record SMS_DELIVER +{ + BIT2 tP_MTI, + BIT1 tP_MMS, + BIT1 tP_LP, + BIT1 tP_Spare, //00 + BIT1 tP_SRI, + BIT1 tP_UDHI, + BIT1 tP_RP, + + TP_OA tP_OA, + + OCT1 tP_PID, + + TP_DCS tP_DCS, + //See 23.038 Section 4 for encoding tP_DCS + OCT7 tP_SCTS, + + TP_UDL_UD tP_UDL_UD +} with { variant "PRESENCE(tP_MTI = '00'B)"; }; + +// 23.040 9.2.2.1a(i) +type record SMS_DELIVER_REPORT_in_RP_ERROR +{ + BIT2 tP_MTI, + BIT4 tP_Spare1, //'0000'B + BIT1 tP_UDHI, + BIT1 tP_Spare2, //'0'B + + OCT1 tP_FCS, + + BIT1 tP_PresenceBitTP_PID, + BIT1 tP_PresenceBitTP_DCS, + BIT1 tP_PresenceBitTP_UDL, + BIT4 tP_Reserved, + BIT1 tP_ExtensionBit, + // note:current implementation PID is 1 octet ->tP_extensionBit=0 + OCT1 tP_PID optional, + //See 23.038 for encoding tP_DCS + TP_DCS tP_DCS optional, + + TP_UDL_UD tP_UDL_UD optional +} with { variant "PRESENCE(tP_MTI = '00'B)"; + variant (tP_PID) "PRESENCE(tP_PresenceBitTP_PID = '1'B)"; + variant (tP_DCS) "PRESENCE(tP_PresenceBitTP_DCS = '1'B)"; + variant (tP_UDL_UD) "PRESENCE(tP_PresenceBitTP_UDL = '1'B)"}; + +// 23.040 9.2.2.1a(ii) +type record SMS_DELIVER_REPORT_in_RP_ACK +{ + BIT2 tP_MTI, + BIT4 tP_Spare1, //'0000'B + BIT1 tP_UDHI, + BIT1 tP_Spare2, //'0'B + + BIT1 tP_PresenceBitTP_PID, + BIT1 tP_PresenceBitTP_DCS, + BIT1 tP_PresenceBitTP_UDL, + BIT4 tP_Reserved, + BIT1 tP_ExtensionBit, + // note:current implementation PID is 1 octet ->tP_extensionBit=0 + OCT1 tP_PID optional, + //See 23.038 for encoding tP_DCS + TP_DCS tP_DCS optional, + + TP_UDL_UD tP_UDL_UD optional +} with { variant "PRESENCE(tP_MTI = '00'B)"; + variant (tP_PID) "PRESENCE(tP_PresenceBitTP_PID = '1'B)"; + variant (tP_DCS) "PRESENCE(tP_PresenceBitTP_DCS = '1'B)"; + variant (tP_UDL_UD) "PRESENCE(tP_PresenceBitTP_UDL = '1'B)"}; + +// 23.040 9.2.2.2 +type record SMS_SUBMIT +{ + BIT2 tP_MTI, + BIT1 tP_RD, + BIT2 tP_VPF, + BIT1 tP_SRR, + BIT1 tP_UDHI, + BIT1 tP_RP, + OCT1 tP_MR, + + TP_DA tP_DA, + + OCT1 tP_PID, + //See 23.038 for encoding tP_DCS + TP_DCS tP_DCS, + + TP_VP tP_VP optional, // depends on tP_VPF + + TP_UDL_UD tP_UDL_UD +} with { variant "PRESENCE(tP_MTI = '01'B)"; + variant (tP_VP)"CROSSTAG( +// tP_VP_not_present, tP_VPF='00'B; + tP_VP_relative_format, tP_VPF='10'B; + tP_VP_enhanced_format, tP_VPF='01'B; + tP_VP_absolute_format, tP_VPF='11'B + )"; + variant (tP_VP) "PRESENCE(tP_VPF='10'B, tP_VPF='01'B, tP_VPF='11'B)" + }; + +// 23.040 9.2.2.2a (i) +type record SMS_SUBMIT_REPORT_in_RP_ERROR // for RP_Error +{ + BIT2 tP_MTI, + BIT4 tP_Spare1, + BIT1 tP_UDHI, + BIT1 tP_Spare2, + + OCT1 tP_FCS, + + BIT1 tP_PresenceBitTP_PID, + BIT1 tP_PresenceBitTP_DCS, + BIT1 tP_PresenceBitTP_UDL, + BIT4 tP_Reserved, + BIT1 tP_ExtensionBit, + // note:current implementation PID is 1 octet ->tP_extensionBit=0 + + OCT7 tP_SCTS, + + OCT1 tP_PID optional, + //See 23.038 for encoding tP_DCS + TP_DCS tP_DCS optional, + + TP_UDL_UD tP_UDL_UD optional +} with { variant "PRESENCE(tP_MTI = '01'B)"; + variant (tP_PID) "PRESENCE(tP_PresenceBitTP_PID = '1'B)"; + variant (tP_DCS) "PRESENCE(tP_PresenceBitTP_DCS = '1'B)"; + variant (tP_UDL_UD) "PRESENCE(tP_PresenceBitTP_UDL = '1'B)"} + +// 23.040 9.2.2.2a (ii) +type record SMS_SUBMIT_REPORT_in_RP_ACK // for RP_ACK +{ + BIT2 tP_MTI, + BIT4 tP_Spare1, + BIT1 tP_UDHI, + BIT1 tP_Spare2, + + BIT1 tP_PresenceBitTP_PID, + BIT1 tP_PresenceBitTP_DCS, + BIT1 tP_PresenceBitTP_UDL, + BIT4 tP_Reserved, + BIT1 tP_ExtensionBit, + // note:current implementation PID is 1 octet ->tP_extensionBit=0 + OCT7 tP_SCTS, + + OCT1 tP_PID optional, + //See 23.038 for encoding tP_DCS + TP_DCS tP_DCS optional, + + TP_UDL_UD tP_UDL_UD optional +} with { variant "PRESENCE(tP_MTI = '01'B)"; + variant (tP_PID) "PRESENCE(tP_PresenceBitTP_PID = '1'B)"; + variant (tP_DCS) "PRESENCE(tP_PresenceBitTP_DCS = '1'B)"; + variant (tP_UDL_UD) "PRESENCE(tP_PresenceBitTP_UDL = '1'B)"} + +// 23.040 9.2.2.3 +type record SMS_STATUS_REPORT +{ + BIT2 tP_MTI, + BIT1 tP_MMS, + BIT1 tP_LP, + BIT1 tP_Spare1, + BIT1 tP_SRQ, + BIT1 tP_UDHI, + BIT1 tP_Spare2, + + OCT1 tP_MR, + + TP_RA tP_RA, + + OCT7 tP_SCTS, + + OCT7 tP_DT, + + OCT1 tP_ST, + + BIT1 tP_PresenceBitTP_PID optional, + BIT1 tP_PresenceBitTP_DCS optional, + BIT1 tP_PresenceBitTP_UDL optional, + BIT4 tP_Reserved optional, + BIT1 tP_ExtensionBit optional, + // note:current implementation PID is 1 octet ->tP_extensionBit=0 + OCT1 tP_PID optional, + + TP_DCS tP_DCS optional, + //See 23.038 for encoding tP_DCS + TP_UDL_UD tP_UDL_UD optional +} with { variant "PRESENCE(tP_MTI = '10'B)"; + variant (tP_PID) "PRESENCE(tP_PresenceBitTP_PID = '1'B)"; + variant (tP_DCS) "PRESENCE(tP_PresenceBitTP_DCS = '1'B)"; + variant (tP_UDL_UD) "PRESENCE(tP_PresenceBitTP_UDL = '1'B)"} + +// 23.040 9.2.2.4 +type record SMS_COMMAND +{ + BIT2 tP_MTI, + BIT3 tP_Spare1, + BIT1 tP_SRR, + BIT1 tP_UDHI, + BIT1 tP_Spare2, + + OCT1 tP_MR, + + OCT1 tP_PID, + + OCT1 tP_CT, + + OCT1 tP_MN, + + TP_DA tP_DA, + + TP_CDL_CD tP_CDL_CD +} with { variant "PRESENCE(tP_MTI = '10'B)"; }; +//================================================================ +// END OF TPDUs 23.040 9.2.2 +//================================================================ + +//================================================================ +// TPDU Parameters 23.040 9.2.3 +//================================================================ +type record TP_OA +{ + TP_OA_NoPad tP_OA_NoPad +} with { variant "PADDING(yes), PADDING_PATTERN('1111'B)"}; +//Note: Padding is handled automatically here. + +type record TP_OA_NoPad +{ + LIN1 tP_LengthIndicator, //0-20 + BIT4 tP_NumberingPlanID, + BIT3 tP_TypeOfNumber, + BIT1 tp_Spare, + hexstring tP_OAValue length (0..20) + // Note: tP_OAValue does not incude the padding half-octet. + // It includes only useful tP_OAValue digits. + // Padding after tP_OAValue digits is handled + // automatically and the tester does not see it in + // the TTCN templates +} with { variant (tP_LengthIndicator) "LENGTHTO (tP_OAValue)"; + variant (tP_LengthIndicator) "UNIT(4)";}; + +type record TP_CDL_CD +{ + LIN1 tP_CDL, // length is possible + octetstring tP_CD +} with { variant (tP_CDL) "LENGTHTO (tP_CD)"}; + +type record TP_RA +{ + TP_RA_NoPad tP_RA_NoPad +} with { variant "PADDING(yes), PADDING_PATTERN('1111'B)"}; +//Note: Padding is handled automatically here. + +type record TP_RA_NoPad +{ + LIN1 tP_LengthIndicator, //0-20 + BIT4 tP_NumberingPlanID, + BIT3 tP_TypeOfNumber, + BIT1 tp_Spare, + hexstring tP_RAValue length (0..20) + // Note: tP_RAValue does not incude the padding half-octet. + // It includes only useful tP_RAValue digits. + // Padding after tP_RAValue digits is handled + // automatically and the tester does not see it in + // the TTCN templates +} with { variant (tP_LengthIndicator) "LENGTHTO (tP_RAValue)"; + variant (tP_LengthIndicator) "UNIT(4)";}; + +type union TP_VP +{ +// OCT0 tP_VP_not_present, + OCT1 tP_VP_relative_format, + OCT7 tP_VP_enhanced_format, + OCT7 tP_VP_absolute_format +}; + +type record TP_DA +{ + TP_DA_NoPad tP_DA_NoPad +} with { variant "PADDING(yes), PADDING_PATTERN('1111'B)"}; +//Note: Padding is handled automatically here. + +type record TP_DA_NoPad +{ + LIN1 tP_LengthIndicator, //0-20 + BIT4 tP_NumberingPlanID, + BIT3 tP_TypeOfNumber, + BIT1 tp_Spare, + hexstring tP_DAValue length (0..20) + // Note: tP_DAValue does not incude the padding half-octet. + // It includes only useful tP_DAValue digits. + // Padding after tP_DAValue digits is handled + // automatically and the tester does not see it in + // the TTCN templates +} with { variant (tP_LengthIndicator) "LENGTHTO (tP_DAValue)"; + variant (tP_LengthIndicator) "UNIT(4)"; }; + + +// Note that tP_LengthIndicator in TP_UDL_UD gives the data length in septets or +// octets. Septets are used for uncompressed GSM 7 bit default alphabet coding +// Octets are used for all other variations. +// IT IS NOT CALCULATED AUTOMATICALLY BY THE RAW CODER. +// This will not be a problem during decoding. +// For encoding correct messages the tester has to enter manually +// or calculate the correct tP_LengthIndicator with a function. +// Note also that the septet or octet choice depends on the various +// bit combinations in field TP_DCS. See 23.038 Section 4. +type record TP_UDL_UD +{ + integer tP_LengthIndicator, // could be zero length + octetstring tP_UD +} + +// See 23.038 for encoding TP_DCS +// The various bit combinations in TP_DCS determine +// the coding of TP_UDL_UD +type OCT1 TP_DCS; + +//================================================================ +// END of TPDU Parameters 23.040 9.2.3 +//================================================================ + +}//end of module +with { +extension "version R1B" +encode "RAW" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SS_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SS_Types.ttcn new file mode 100644 index 00000000..6e8d34e9 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_SS_Types.ttcn @@ -0,0 +1,102 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_Types.ttcn new file mode 100644 index 00000000..0165481d --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_Types.ttcn @@ -0,0 +1,403 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.008 v13.4.0 + +module MobileL3_Types +{ + +import from General_Types all; +import from MobileL3_CommonIE_Types all; +import from MobileL3_GMM_SM_Types all; +import from MobileL3_MM_Types all; +import from MobileL3_CC_Types all; +import from MobileL3_RRM_Types all; +import from MobileL3_SMS_Types all; +import from MobileL3_SS_Types all; + +external function enc_PDU_L3_MS_SGSN(in PDU_L3_MS_SGSN pdu) return octetstring +with { extension "prototype(convert)" extension "encode(RAW)" } +external function enc_PDU_L3_MS_SGSN_fast(in PDU_L3_MS_SGSN pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +// new external function for decoding MS -> SGSN +external function dec_PDU_L3_MS_SGSN(in octetstring stream) return PDU_L3_MS_SGSN +with { extension "prototype(convert)" extension "decode(RAW)" } +external function dec_PDU_L3_MS_SGSN_backtrack(in octetstring stream, out PDU_L3_MS_SGSN pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +// new external function for encoding SGSN -> MS +external function enc_PDU_L3_SGSN_MS(in PDU_L3_SGSN_MS pdu) return octetstring +with { extension "prototype(convert)" extension "encode(RAW)" } +external function enc_PDU_L3_SGSN_MS_fast(in PDU_L3_SGSN_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension "encode(RAW)" } + +external function dec_PDU_L3_SGSN_MS(in octetstring stream) return PDU_L3_SGSN_MS +with { extension "prototype(convert)" extension "decode(RAW)" } +external function dec_PDU_L3_SGSN_MS_backtrack(in octetstring stream, out PDU_L3_SGSN_MS pdu) return integer +with { extension "prototype(backtrack)" extension "decode(RAW)" } + +external function enc_PDU_ML3_NW_MS(in PDU_ML3_NW_MS pdu) return octetstring +with { extension "prototype(convert)" extension " encode(RAW)" } +external function enc_PDU_ML3_NW_MS_fast(in PDU_ML3_NW_MS pdu, out octetstring stream) +with { extension "prototype(fast)" extension " encode(RAW)" } + +external function dec_PDU_ML3_NW_MS(in octetstring stream) return PDU_ML3_NW_MS +with { extension "prototype(convert)" extension " decode(RAW)" } +external function dec_PDU_ML3_NW_MS_backtrack(in octetstring stream, out PDU_ML3_NW_MS pdu) return integer +with { extension "prototype(backtrack)" extension " decode(RAW)" } + +external function enc_PDU_ML3_MS_NW(in PDU_ML3_MS_NW pdu) return octetstring +with { extension "prototype(convert)" extension " encode(RAW)" } +external function enc_PDU_ML3_MS_NW_fast(in PDU_ML3_MS_NW pdu, out octetstring stream) +with { extension "prototype(fast)" extension " encode(RAW)" } + +external function dec_PDU_ML3_MS_NW(in octetstring stream) return PDU_ML3_MS_NW +with { extension "prototype(convert)" extension " decode(RAW)" } +external function dec_PDU_ML3_MS_NW_backtrack(in octetstring stream, out PDU_ML3_MS_NW pdu) return integer +with { extension "prototype(backtrack)" extension " decode(RAW)" } + +// *************************************************************************** +// * The container types of all L3_PDU +// *************************************************************************** +type record L3_TransactionId +{ + BIT3 tio, + BIT1 tiFlag , + TI_Extension tIExtension optional + // an extension octet (TI) can be used for session management messages + // not yet implemented (see 24.008 clause 10.3.2 for more detail +} with { variant (tIExtension) "PRESENCE(tio = '111'B)" }; + +type record L3_TransactionId_not_extended +{ + BIT3 tio, + BIT1 tiFlag +}; + +type union TiOrSkip_not_extended +{ + BIT4 skipIndicator, + L3_TransactionId_not_extended transactionId +}; + + +type union TiOrSkip +{ + BIT4 skipIndicator, + L3_TransactionId transactionId +}; + +type union L3_Discr_SGSN_MS +{ + octetstring gcc, //group call control + octetstring bcc, // broadcast call control + octetstring cc, // call control; call related SS messages PDU_ypes_CC_MSC_MS + octetstring gttp, // GPRS Transparent Transport Protocol + octetstring mm, // mobility management messages PDU_DTAP_MM + octetstring rrm, // radio resource management messages PDU_DTAP_RRM + L3_GMM_SGSN_MS gprs_mm, // GPRS mobility management messages + octetstring sms, // SMS messages + L3_GSM_SGSN_MS gprs_sm, // GPRS session management messages + octetstring ss, // non call related SS messages + octetstring loc, // Location services + octetstring reserved +}; + + +type record PDU_L3_SGSN_MS_unextended_ti +{ + BIT4 discriminator, + TiOrSkip_not_extended tiOrSkip, + L3_Discr_SGSN_MS msgs +} with { variant (msgs)"CROSSTAG( + gcc, discriminator='0000'B; + bcc, discriminator='0001'B; + cc, discriminator='0011'B; + gttp, discriminator='0100'B; + mm, discriminator='0101'B; + rrm, discriminator='0110'B; + gprs_mm, discriminator='1000'B; + sms, discriminator='1001'B; + gprs_sm, discriminator='1010'B; + ss, discriminator='1011'B; + loc, discriminator='1100'B; + reserved, { discriminator='0010'B, + discriminator='0111'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B } + )"; + variant (tiOrSkip)"CROSSTAG( + skipIndicator, { discriminator='0000'B, + discriminator='0001'B, + discriminator='0010'B, + discriminator='0100'B, + discriminator='0101'B, + discriminator='0110'B, + discriminator='0111'B, + discriminator='1000'B, + discriminator='1100'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B }; + transactionId, { discriminator='0011'B, + discriminator='1001'B, + discriminator='1011'B, + discriminator='1010'B } + )"; +}; + + +type record PDU_L3_SGSN_MS +{ + BIT4 discriminator, + TiOrSkip tiOrSkip, + L3_Discr_SGSN_MS msgs +} with { variant (msgs)"CROSSTAG( + gcc, discriminator='0000'B; + bcc, discriminator='0001'B; + cc, discriminator='0011'B; + gttp, discriminator='0100'B; + mm, discriminator='0101'B; + rrm, discriminator='0110'B; + gprs_mm, discriminator='1000'B; + sms, discriminator='1001'B; + gprs_sm, discriminator='1010'B; + ss, discriminator='1011'B; + loc, discriminator='1100'B; + reserved, { discriminator='0010'B, + discriminator='0111'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B } + )"; + variant (tiOrSkip)"CROSSTAG( + skipIndicator, { discriminator='0000'B, + discriminator='0001'B, + discriminator='0010'B, + discriminator='0100'B, + discriminator='0101'B, + discriminator='0110'B, + discriminator='0111'B, + discriminator='1000'B, + discriminator='1100'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B }; + transactionId, { discriminator='0011'B, + discriminator='1011'B, + discriminator='1001'B, + discriminator='1010'B } + )"; +}; + + +type union L3_Discr_MS_SGSN +{ + octetstring gcc, //group call control + octetstring bcc, // broadcast call control + octetstring cc, // call control; call related SS messages PDU_DTAP_CC_MS_MSC + octetstring gttp, // GPRS Transparent Transport Protocol + octetstring mm, // mobility management messages PDU_DTAP_MM + octetstring rrm, // radio resource management messages PDU_DTAP_RRM + L3_GMM_MS_SGSN gprs_mm, // GPRS mobility management messages + octetstring sms, // SMS messages + L3_GSM_MS_SGSN gprs_sm, // GPRS session management messages + octetstring ss, // non call related SS messages + octetstring loc, // Location services + octetstring reserved +}; + + +type record PDU_L3_MS_SGSN +{ + BIT4 discriminator, + TiOrSkip tiOrSkip, + L3_Discr_MS_SGSN msgs +} with { variant (msgs)"CROSSTAG( + gcc, discriminator='0000'B; + bcc, discriminator='0001'B; + cc, discriminator='0011'B; + gttp, discriminator='0100'B; + mm, discriminator='0101'B; + rrm, discriminator='0110'B; + gprs_mm, discriminator='1000'B; + sms, discriminator='1001'B; + gprs_sm, discriminator='1010'B; + ss, discriminator='1011'B; + loc, discriminator='1100'B; + reserved, { discriminator='0010'B, + discriminator='0111'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B } + )"; + variant (tiOrSkip)"CROSSTAG( + skipIndicator, { discriminator='0000'B, + discriminator='0001'B, + discriminator='0010'B, + discriminator='0100'B, + discriminator='0101'B, + discriminator='0110'B, + discriminator='0111'B, + discriminator='1000'B, + discriminator='1100'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B }; + transactionId, { discriminator='0011'B, + discriminator='1001'B, + discriminator='1011'B, + discriminator='1010'B } + )"; +}; + + +//*************************************************************************** +// 24.007/11.2.3.1.1 and 24.008/10.2 Protocol Discriminator NW->MS +//*************************************************************************** +type union ML3_Discr_NW_MS +{ + octetstring gcc, // group call control <- 24.068 WITHDRAWN + octetstring bcc, // broadcast call control <- 24.069 WITHDRAWN + PDU_ML3_CC_NW_MS cc, // call control; call related SS messages <-24.008, implemented + octetstring gttp, // GPRS Transparent Transport Protocol <- not required in MSC + PDU_ML3_MM mm, // mobility management messages <- 24.008, + PDU_RRM_NW_MS rrm, // radio resource management messages <- 24.008, 24.018 + octetstring gprs_mm, // GPRS mobility management messages <- Not required in MSC + // but implemented as L3_GMM_SGSN_MS in L3_Types (SGSN) + L3_SMS_SGSN_MS sms, // SMS messages + //<-24.011, imported from L3_SMS_Types + octetstring gprs_sm, // GPRS session management messages <- not required in MSC + // but impl. as L3_GMM_MS_SGSN in L3_GSM_SGSN_MS_Types + PDU_ML3_SS_NW_MS ss, // non call related SS messages + //<- 24.080 ASN1 or implemented by ethgbh + octetstring loc, // Location services(LCS) <- 24.030 + octetstring reserved +}; + + +// ref: 24.007/11.2.3.1.1 "Protocol discriminator" and +// Table 11.2 "Protocol dicriminator values" +type record PDU_ML3_NW_MS +{ + BIT4 discriminator, //24.008/10.2 + TiOrSkip tiOrSkip, //24.008/10.3 + ML3_Discr_NW_MS msgs +} with { variant (msgs)"CROSSTAG( + gcc, discriminator='0000'B; + bcc, discriminator='0001'B; + cc, discriminator='0011'B; + gttp, discriminator='0100'B; + mm, discriminator='0101'B; + rrm, discriminator='0110'B; + gprs_mm, discriminator='1000'B; + sms, discriminator='1001'B; + gprs_sm, discriminator='1010'B; + ss, discriminator='1011'B; + loc, discriminator='1100'B; + reserved, { discriminator='0010'B, + discriminator='0111'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B } + )"; + variant (tiOrSkip)"CROSSTAG( + skipIndicator, { discriminator='0000'B, + discriminator='0001'B, + discriminator='0010'B, + discriminator='0100'B, + discriminator='0101'B, + discriminator='0110'B, + discriminator='0111'B, + discriminator='1000'B, + discriminator='1100'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B }; + transactionId, { discriminator='0011'B, + discriminator='1001'B, + discriminator='1011'B, + discriminator='1010'B } + )"; +}; + + +type union ML3_Discr_MS_NW +{ + octetstring gcc, //group call control + octetstring bcc, // broadcast call control + PDU_ML3_CC_MS_NW cc, // call control; call related SS messages + octetstring gttp, // GPRS Transparent Transport Protocol + PDU_ML3_MM mm, // mobility management messages + PDU_RRM_MS_NW rrm, // radio resource management messages + octetstring gprs_mm, // GPRS mobility management messages + L3_SMS_MS_SGSN sms, // SMS messages + octetstring gprs_sm, // GPRS session management messages + PDU_ML3_SS_MS_NW ss, // non call related SS messages + octetstring loc, // Location services + octetstring reserved +}; + +type record PDU_ML3_MS_NW +{ + BIT4 discriminator, + TiOrSkip tiOrSkip, + ML3_Discr_MS_NW msgs +} with { variant (msgs)"CROSSTAG( + gcc, discriminator='0000'B; + bcc, discriminator='0001'B; + cc, discriminator='0011'B; + gttp, discriminator='0100'B; + mm, discriminator='0101'B; + rrm, discriminator='0110'B; + gprs_mm, discriminator='1000'B; + sms, discriminator='1001'B; + gprs_sm, discriminator='1010'B; + ss, discriminator='1011'B; + loc, discriminator='1100'B; + reserved, { discriminator='0010'B, + discriminator='0111'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B } + )"; + variant (tiOrSkip)"CROSSTAG( + skipIndicator, { discriminator='0000'B, + discriminator='0001'B, + discriminator='0010'B, + discriminator='0100'B, + discriminator='0101'B, + discriminator='0110'B, + discriminator='0111'B, + discriminator='1000'B, + discriminator='1100'B, + discriminator='1101'B, + discriminator='1110'B, + discriminator='1111'B }; + transactionId, { discriminator='0011'B, //24.008/10.3.2 + discriminator='1001'B, + discriminator='1011'B, + discriminator='1010'B } //24.008/10.3.2 + )"; +}; + +}//end of module +with { +extension "version R1B" +encode "RAW" +} + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_v13.4.0_ProtocolModule.grp b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_v13.4.0_ProtocolModule.grp new file mode 100644 index 00000000..6e2062c5 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/MobileL3_v13.4.0_ProtocolModule.grp @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_DataTypes.asn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_DataTypes.asn new file mode 100644 index 00000000..e05ced25 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_DataTypes.asn @@ -0,0 +1,502 @@ +--///////////////////////////////////////////////////////////////////////////// +-- // +-- 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: SS_DataTypes.asn +-- Rev: R1B +-- Prodnr: CNL 113 832 +-- Contact: http://ttcn.ericsson.se +-- Reference: 3GPP TS 24.080 v13.0.0 + +SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-DataTypes (2) version12 (12)} + +DEFINITIONS + +IMPLICIT TAGS ::= + +BEGIN + +-- exports all data types defined in this module + +IMPORTS + +SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-Code (15) version12 (12)} + +-- imports MAP-SS-DataTypes +SS-Status, USSD-DataCodingScheme, USSD-String, CCBS-Feature +-- USSD-DataCodingScheme, USSD-String were introduced because of CNAP. +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-DataTypes (14) version12 (12)} + +GSN-Address, +CUG-Index, +NotificationToMSUser +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-MS-DataTypes (11) version12 (12)} + +maxSignalInfoLength, +ISDN-AddressString, +ISDN-SubaddressString, +AlertingPattern, +LCSClientExternalID, +AddressString, +LCSServiceTypeID, +AgeOfLocationInformation +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-CommonDataTypes (18) version12 (12)} + +LocationType, +DeferredLocationEventType, +LCSClientName, +LCS-QoS, +Horizontal-Accuracy, +ResponseTime, +Ext-GeographicalInformation, +VelocityEstimate, +SupportedGADShapes, +Add-GeographicalInformation, +LCSRequestorID, +LCS-ReferenceNumber, +LCSCodeword, +AreaEventInfo, +ReportingPLMNList, +PeriodicLDRInfo, +SequenceNumber + +FROM MAP-LCS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version12 (12)} + +; + +-- data types definition + +SS-UserData ::= IA5String (SIZE (1.. maxSignalInfoLength)) + +NotifySS-Arg ::= SEQUENCE{ + ss-Code [1] SS-Code OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + ss-Notification [5] SS-Notification OPTIONAL, + callIsWaiting-Indicator [14] NULL OPTIONAL, + callOnHold-Indicator [15] CallOnHold-Indicator OPTIONAL, + mpty-Indicator [16] NULL OPTIONAL, + cug-Index [17] CUG-Index OPTIONAL, + clirSuppressionRejected [18] NULL OPTIONAL, + ... , + ect-Indicator [19] ECT-Indicator OPTIONAL, + nameIndicator [20] NameIndicator OPTIONAL, + ccbs-Feature [21] CCBS-Feature OPTIONAL, + alertingPattern [22] AlertingPattern OPTIONAL, + multicall-Indicator [23] Multicall-Indicator OPTIONAL} + +-- The nameIndicator is defined because of CNAP. + +Multicall-Indicator ::= ENUMERATED { + nbr-SNexceeded (0), + nbr-Userexceeded (1)} + +ForwardChargeAdviceArg ::= SEQUENCE{ + ss-Code [0] SS-Code, + chargingInformation [1] ChargingInformation, + ...} + +SS-Notification ::= OCTET STRING (SIZE (1)) + +-- Bit 8 7 6 5 4 00000 (Unused) + +-- Bit 3 Call is forwarded indication to A-subscriber +-- (calling subscriber) +-- 0 No information content +-- 1 Outgoing call has been forwarded to C + +-- Bit 2 Call is forwarded indication to B-subscriber +-- (forwarding subscriber) +-- 0 No information content +-- 1 Incoming call has been forwarded to C + +-- Bit 1 Call is forwarded indication to C-subscriber +-- (forwarded-to subscriber) +-- 0 No information content +-- 1 Incoming call is a forwarded call + +ChargingInformation ::= SEQUENCE{ + e1 [1] E1 OPTIONAL, + e2 [2] E2 OPTIONAL, + e3 [3] E3 OPTIONAL, + e4 [4] E4 OPTIONAL, + e5 [5] E5 OPTIONAL, + e6 [6] E6 OPTIONAL, + e7 [7] E7 OPTIONAL, + ...} + +E1 ::= INTEGER (0..max10TimesUnitsPerTime) +max10TimesUnitsPerTime INTEGER ::= 8191 + +E2 ::= INTEGER (0..max10TimesTimeInterval) +max10TimesTimeInterval INTEGER ::= 8191 + +E3 ::= INTEGER (0..max100TimesScalingFactor) +max100TimesScalingFactor INTEGER ::= 8191 + +E4 ::= INTEGER (0..max10TimesIncrement) +max10TimesIncrement INTEGER ::= 8191 + +E5 ::= INTEGER (0..max10TimesIncrementPerDataInterval) +max10TimesIncrementPerDataInterval INTEGER ::= 8191 + +E6 ::= INTEGER (0..maxNumberOfSegmentsPerDataInterval) +maxNumberOfSegmentsPerDataInterval INTEGER ::= 8191 + +E7 ::= INTEGER (0..max10TimesInitialTime) +max10TimesInitialTime INTEGER ::= 8191 + +CallOnHold-Indicator ::= ENUMERATED { + callRetrieved (0), + callOnHold (1)} + +ForwardCUG-InfoArg ::= SEQUENCE { + cug-Index [0] CUG-Index OPTIONAL, + suppressPrefCUG [1] NULL OPTIONAL, + suppressOA [2] NULL OPTIONAL, + ...} + +ECT-Indicator ::= SEQUENCE { + ect-CallState [0] ECT-CallState, + rdn [1] RDN OPTIONAL, + ...} + +ECT-CallState ::= ENUMERATED { + alerting (0), + active (1)} + + NameIndicator ::= SEQUENCE { + callingName [0] Name OPTIONAL, + ...} + + Name ::= CHOICE { + namePresentationAllowed [0] NameSet, + presentationRestricted [1] NULL, + nameUnavailable [2] NULL, + namePresentationRestricted [3] NameSet} + + NameSet ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + lengthInCharacters [1] INTEGER, + nameString [2] USSD-String, + ...} + +-- NameIndicator, Name and NameSet are defined because of CNAP. +-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the +-- following encoding: +-- bit 7 6 5 4 3 2 1 0 +-- | 0 0 0 0 | 1 1 1 1| + +RDN ::= CHOICE { + presentationAllowedAddress [0] RemotePartyNumber, + presentationRestricted [1] NULL, + numberNotAvailableDueToInterworking [2] NULL, + presentationRestrictedAddress [3] RemotePartyNumber} + +RemotePartyNumber ::= SEQUENCE { + partyNumber [0] ISDN-AddressString, + partyNumberSubaddress [1] ISDN-SubaddressString OPTIONAL, + ...} + +AccessRegisterCCEntryArg ::= SEQUENCE { + ...} + +CallDeflectionArg ::= SEQUENCE { + deflectedToNumber [0] AddressString, + deflectedToSubaddress [1] ISDN-SubaddressString OPTIONAL, + ...} + +UserUserServiceArg ::= SEQUENCE { + uUS-Service [0] UUS-Service, + uUS-Required [1] BOOLEAN, + ... } + +UUS-Service ::= ENUMERATED { + uUS1 (1), + uUS2 (2), + uUS3 (3), + ... } + +-- exception handling: +-- In case of UUS-Service with any other value, indicated as "UUS required", +-- but not understood by the MS, the call will be cleared. + +LocationNotificationArg ::= SEQUENCE { + notificationType [0] NotificationToMSUser, + locationType [1] LocationType, + lcsClientExternalID [2] LCSClientExternalID OPTIONAL, + lcsClientName [3] LCSClientName OPTIONAL, + ... , + lcsRequestorID [4] LCSRequestorID OPTIONAL, + lcsCodeword [5] LCSCodeword OPTIONAL, + lcsServiceTypeID [6] LCSServiceTypeID OPTIONAL } + +-- The notificationType may only be set to notifyLocationAllowed, +-- notifyAndVerify-LocationAllowedIfNoResponse, +-- or notifyAndVerify-LocationNotAllowedIfNoResponse. +-- The locationEstimateType field of the locationType may only be set to +-- currentLocation, currentOrLastKnownLocation, +-- notificationVerificationOnly, or activateDeferredLocation. +-- The deferredLocationEventType field of the locationType may only be set to +-- enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea, +-- and/or periodicLDR. +-- For LCS location notification of MT-LR for current location, the +-- locationEstimateType field of the locationType shall be set to currentLocation. +-- For LCS location notification of MT-LR for current or last known location, the +-- locationEstimateType field of the locationType shall be set to currentOrLastKnownLocation. +-- For the LCS location notification for the LDR of MS available event, +-- the locationEstimateType field of the locationType shall be set to currentLocation. +-- For LCS location notification for the LDR of change of area event, +-- the locationEstimateType field of the locationType shall be set to +-- activateDeferredLocation, and the deferredLocationEventType shall be +-- set to enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea. +-- For the post positioning LCS location notification, the locationEstimateType +-- field of the locationType shall be set to notificationVerificationOnly. +-- For LCS location notification for the LDR of periodic location event, +-- the locationEstimateType field of the locationType shall be set to +-- activateDeferredLocation, and the +-- deferredLocationEventType shall be set to periodicLDR. + +-- exception handling: +-- At reception of an unrecognised notificationType value the receiver shall reject the +-- operation with a return error cause of unexpected data value. +-- At reception of an unrecognised locationType value the receiver shall reject the +-- operation with a return error cause of unexpected data value. +-- At reception of an unallowed notificationType value the receiver shall either ignore the +-- received operation or reject the operation with a return error cause of unexpected +-- data value. +-- At reception of an unallowed locationType value the receiver shall either ignore the +-- received operation or reject the operation with a return error cause of unexpected +-- data value. + + + +LocationNotificationRes ::= SEQUENCE { + verificationResponse [0] VerificationResponse OPTIONAL, + ...} + +VerificationResponse::= ENUMERATED { + permissionDenied (0), + permissionGranted (1), + ... } + +-- exception handling: +-- an unrecognized value shall be treated the same as value 0 (permissionDenied) + +LCS-MOLRArg ::= SEQUENCE { + molr-Type [0] MOLR-Type, + locationMethod [1] LocationMethod OPTIONAL, + lcs-QoS [2] LCS-QoS OPTIONAL, + lcsClientExternalID [3] LCSClientExternalID OPTIONAL, + mlc-Number [4] ISDN-AddressString OPTIONAL, + gpsAssistanceData [5] GPSAssistanceData OPTIONAL, + ..., + supportedGADShapes [6] SupportedGADShapes OPTIONAL, + lcsServiceTypeID [7] LCSServiceTypeID OPTIONAL, + ageOfLocationInfo [8] AgeOfLocationInformation OPTIONAL, + locationType [9] LocationType OPTIONAL, + pseudonymIndicator [10] NULL OPTIONAL, + h-gmlc-address [11] GSN-Address OPTIONAL, + locationEstimate [12] Ext-GeographicalInformation OPTIONAL, + velocityEstimate [13] VelocityEstimate OPTIONAL, + referenceNumber [14] LCS-ReferenceNumber OPTIONAL, + periodicLDRInfo [15] PeriodicLDRInfo OPTIONAL, + locationUpdateRequest [16] NULL OPTIONAL, + sequenceNumber [17] SequenceNumber OPTIONAL, + terminationCause [18] TerminationCause OPTIONAL, + mo-lrShortCircuit [19] NULL OPTIONAL, + ganssAssistanceData [20] GANSSAssistanceData OPTIONAL, + multiplePositioningProtocolPDUs [21] MultiplePositioningProtocolPDUs OPTIONAL } +-- The parameter locationMethod shall be included if and only if the molr-Type is set to value +-- deCipheringKeys or assistanceData. +-- The parameter gpsAssistanceData shall be included if and only if the molr-Type is set to value +-- assistanceData and locationMethod is set to value assistedGPS or assistedGPSandGANSS. +-- The parameter ganssAssistanceData shall be included if and only if the molr-Type is set to value +-- assistanceData and locationMethod is set to value assistedGANSS or assistedGPSandGANSS. +-- supportedGADShapes shall not be included for deferred MO-LR initiation or deferred MO-LR or MT-LR +-- responses +-- multiplePositioningProtocolPDUs may only be included for E-UTRAN access. +-- locationMethod shall not be included for E-UTRAN access. +-- gpsAssistanceData shall not be included for E-UTRAN access. +-- h-gmlc-address shall not be included for E-UTRAN access. +-- locationEstimate shall not be included for E-UTRAN access. +-- velocityEstimate shall not be included for E-UTRAN access. +-- referenceNumber shall not be included for E-UTRAN access. +-- periodicLDRInfo shall not be included for E-UTRAN access. +-- locationUpdateRequest shall not be included for E-UTRAN access. +-- sequenceNumber shall not be included for E-UTRAN access. +-- terminationCause shall not be included for E-UTRAN access. +-- mo-lrShortCircuit shall not be included for E-UTRAN access. +-- ganssAssistanceData shall not be included for E-UTRAN access. + + + +MOLR-Type::= ENUMERATED { + locationEstimate (0), + assistanceData (1), + deCipheringKeys (2), + ... , + deferredMo-lrTTTPInitiation (3), + deferredMo-lrSelfLocationInitiation (4), + deferredMt-lrOrmo-lrTTTPLocationEstimate (5), + deferredMt-lrOrmo-lrCancellation (6)} +-- exception handling: +-- an unrecognized value shall be rejected by the receiver with a return error cause of +-- unexpected data value. +-- For E-UTRAN access, only locationEstimate or assistanceData shall be included + +LocationMethod::= ENUMERATED { + msBasedEOTD (0), + msAssistedEOTD (1), + assistedGPS (2), + ..., + msBasedOTDOA (3), + assistedGANSS (4), + assistedGPSandGANSS (5) + } +-- exception handling: +-- When this parameter is received with value msBasedEOTD or msAssistedEOTD and the MS +-- is camped on an UMTS Service Area then the receiver shall reject it +-- with a return error cause of unexpected data value. +-- When this parameter is received with value msBasedOTDOA and the MS +-- is camped on a GSM Cell then the receiver shall reject it with a return error cause of +-- unexpected data value. +-- an unrecognized value shall be rejected by the receiver with a return error cause of +-- unexpected data value. + +GPSAssistanceData::= OCTET STRING (SIZE (1..38)) +-- Octets 1 to 38 are coded in the same way as the octets 3 to 7+2n of Requested GPS Data IE +-- in 3GPP TS 49.031 [14]. + +GANSSAssistanceData::= OCTET STRING (SIZE (1..40)) +-- Octets 1 to 40 are coded in the same way as the octets 3 to 9+2n of Requested GANSS Data IE +-- in 3GPP TS 49.031 [14] . + +TerminationCause ::= ENUMERATED { + subscriberTermination (0), + uETermination (1), + ...} + +MultiplePositioningProtocolPDUs ::= SEQUENCE (SIZE (1..maxNumLPPMsg)) OF PositioningProtocolPDU + +PositioningProtocolPDU ::= OCTET STRING +-- PositioningProtocolPDU contains a LPP message defined in 3GPP TS 36.355 [17]. + +maxNumLPPMsg INTEGER ::= 3 + + + +LCS-MOLRRes::= SEQUENCE { + locationEstimate [0] Ext-GeographicalInformation OPTIONAL, + decipheringKeys [1] DecipheringKeys OPTIONAL, + ..., + add-LocationEstimate [2] Add-GeographicalInformation OPTIONAL, + velocityEstimate [3] VelocityEstimate OPTIONAL, + referenceNumber [4] LCS-ReferenceNumber OPTIONAL, + h-gmlc-address [5] GSN-Address OPTIONAL, + mo-lrShortCircuit [6] NULL OPTIONAL, + reportingPLMNList [7] ReportingPLMNList OPTIONAL + } +-- Parameters locationEstimate or add-LocationEstimate (one but not both) +-- shall be included if and only if the +-- molr-Type in LocationRequestArg was set to value locationEstimate. +-- Parameter add-LocationEstimate shall not be included if the supportedGADShapes +-- parameter was not received in the LCS-MOLRArg. +-- The locationEstimate and the add-locationEstimate parameters shall not be sent if +-- the supportedGADShapes parameter has been received in LCS-MOLRArg +-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked +-- as supported in supportedGADShapes. In such a case LCS-MOLRArg +-- shall be rejected with error FacilityNotSupported with additional indication +-- shapeOfLocationEstimateNotSupported. +-- Parameter decipheringKeys shall be included if and only if the molr-Type +-- in LocationRequestArg was set to value deCipheringKeys. +-- Parameter velocityEstimate may only be included if the lcs-QoS in LCS-MOLRarg includes +-- velocityRequest +-- decipheringKeys shall not be included for E-UTRAN access. +-- referenceNumber shall not be included for E-UTRAN access. +-- h-gmlc-address shall not be included for E-UTRAN access. +-- mo-lrShortCircuit shall not be included for E-UTRAN access. +-- reportingPLMNList shall not be included for E-UTRAN access. + + + +DecipheringKeys::= OCTET STRING (SIZE (15)) +-- Octets in DecipheringKeys are coded in the same way as the octets 3 to 17 of Deciphering Key IE +-- in 3GPP TS 49.031 [14]. I.e. these octets contain Current Deciphering Key, Next Deciphering Key and +-- Ciphering Key Flag. +LCS-AreaEventRequestArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + deferredLocationEventType [3] DeferredLocationEventType, + areaEventInfo [4] AreaEventInfo, + ... } + +-- the msAvailableValue in the DeferredLocationEventType is not applicable for this procedure + +LCS-AreaEventReportArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + ... } + +LCS-AreaEventCancellationArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + ... } + + +LCS-PeriodicLocationRequestArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + periodicLDRInfo [1] PeriodicLDRInfo, + lcsClientExternalID [2] LCSClientExternalID, + qoS [3] LCS-QoS OPTIONAL, + h-gmlc-address [4] GSN-Address OPTIONAL, + mo-lrShortCircuit [5] NULL OPTIONAL, + reportingPLMNList [6] ReportingPLMNList OPTIONAL, + ... } + + +LCS-PeriodicLocationRequestRes ::= SEQUENCE { + mo-lrShortCircuit [0] NULL OPTIONAL, + ... } + + +LCS-LocationUpdateArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber OPTIONAL, + add-LocationEstimate[1] Add-GeographicalInformation OPTIONAL, + velocityEstimate [2] VelocityEstimate OPTIONAL, + sequenceNumber [3] SequenceNumber OPTIONAL, + ... } +-- add-LocationEstimate shall be included if and only if a location estimate was successfully +-- transferred towards an External LCS Client or was successfully obtained for UE self location +-- velocityEstimate may only be included if add-LocationEstimate is included + +LCS-LocationUpdateRes ::= SEQUENCE { + terminationCause [0] TerminationCause OPTIONAL, + ... } + +LCS-PeriodicLocationCancellationArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address OPTIONAL, + ... } + + +END diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_EncDec.cc b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_EncDec.cc new file mode 100644 index 00000000..ee4867ab --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_EncDec.cc @@ -0,0 +1,438 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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: SS_PDU_Defs.asn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.008 v13.4.0 + +#include "SS_PDU_Defs.hh" +#include "SS_Types.hh" + +namespace SS__Types +{ +using namespace SS__PDU__Defs; +TTCN_Module SS__EncDec("SS_EncDec", __DATE__, __TIME__); + +//Type definitions to transfer data between coding functions +struct SS_Invoke_for_dec +{ + INTEGER invokeId; + OPTIONAL linkedId; + Remote__Operations__Information__Objects::Code opcode; + OPTIONAL stream; +}; + +struct SS_ReturnResult_for_dec +{ + INTEGER invokeId; + OPTIONAL opcode; + OPTIONAL stream; +}; + +struct SS_ReturnError_for_dec +{ + INTEGER invokeId; + Remote__Operations__Information__Objects::Code errorCode; + OPTIONAL stream; +}; + +struct SS_Reject_for_dec +{ + OPTIONAL invokeId; + Remote__Operations__Generic__ROS__PDUs::ProblemType problem; +}; + + +////////////////////////////////// +// Encoding function for SS__Invoke +////////////////////////////////// +OCTETSTRING enc_SS_Invoke(const SS__Invoke& pdu) +{ + TTCN_Buffer buf; + + OCTETSTRING ret_val; + pdu.encode(SS__Invoke_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + buf.get_string(ret_val); + ret_val[0] = int2oct(161,1); + + return ret_val; +} +////////////////////////////////// +// Encoding function for SS__ReturnResult +////////////////////////////////// +OCTETSTRING enc_SS_ReturnResult(const SS__ReturnResult& pdu) +{ + TTCN_Buffer buf; + + OCTETSTRING ret_val; + pdu.encode(SS__ReturnResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + buf.get_string(ret_val); + ret_val[0] = int2oct(162,1); + + return ret_val; +} +////////////////////////////////// +// Encoding function for SS__ReturnError +////////////////////////////////// +OCTETSTRING enc_SS_ReturnError(const SS__ReturnError& pdu) +{ + TTCN_Buffer buf; + + OCTETSTRING ret_val; + pdu.encode(SS__ReturnError_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + buf.get_string(ret_val); + ret_val[0] = int2oct(163,1); + + return ret_val; +} +////////////////////////////////// +// Encoding function for SS__Reject +////////////////////////////////// +OCTETSTRING enc_SS_Reject(const SS__Reject& pdu) +{ + TTCN_Buffer buf; + + OCTETSTRING ret_val; + pdu.encode(SS__Reject_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + buf.get_string(ret_val); + ret_val[0] = int2oct(164,1); + + return ret_val; +} + +////////////////////////////////// +// Decoding function for SS__Invoke +////////////////////////////////// +int dec_SS_Invoke(const SS_Invoke_for_dec& params, SS__Invoke& pdu) +{ + SS__Invoke__help help_pdu; + + if(params.stream.ispresent()) + { + help_pdu.invokeId().present__() = params.invokeId; + if(params.linkedId.ispresent()) + help_pdu.linkedId()().present__().present__() = params.linkedId; + else + help_pdu.linkedId() = OMIT_VALUE; + + help_pdu.opcode() = params.opcode; + + OCTETSTRING oct_stream = params.stream; + help_pdu.argument() = oct_stream; + TTCN_Buffer buf; + help_pdu.encode(SS__Invoke__help_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_IGNORE); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); + TTCN_EncDec::clear_error(); + + pdu.decode(SS__Invoke_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + + if(TTCN_EncDec::get_last_error_type() != 0) return 1; + } + else + { + pdu.invokeId().present__() = params.invokeId; + + if(params.linkedId.ispresent()) + pdu.linkedId()().present__().present__() = params.linkedId; + else + pdu.linkedId() = OMIT_VALUE; + + pdu.opcode() = params.opcode; + + pdu.argument() = OMIT_VALUE; + } + + return 0; +} + +////////////////////////////////// +// Decoding function for SS__ReturnResult +////////////////////////////////// +int dec_SS_ReturnResult(const SS_ReturnResult_for_dec& params, SS__ReturnResult& pdu) +{ + SS__ReturnResult__help help_pdu; + + + if(params.opcode.ispresent() && params.stream.ispresent()) + { + help_pdu.invokeId().present__() = params.invokeId; + help_pdu.result()().opcode() = params.opcode; + OCTETSTRING oct_stream = params.stream; + help_pdu.result()().result() = oct_stream; + TTCN_Buffer buf; + help_pdu.encode(SS__ReturnResult__help_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_IGNORE); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); + TTCN_EncDec::clear_error(); + + pdu.decode(SS__ReturnResult_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + + if(TTCN_EncDec::get_last_error_type() != 0) return 1; + } + else + { + pdu.invokeId().present__() = params.invokeId; + pdu.result() = OMIT_VALUE; + } + + return 0; +} + +////////////////////////////////// +// Decoding function for SS__ReturnError +////////////////////////////////// +int dec_SS_ReturnError(const SS_ReturnError_for_dec& params, SS__ReturnError& pdu) +{ + + SS__ReturnError__help help_pdu; + + if(params.stream.ispresent()) + { + help_pdu.invokeId().present__() = params.invokeId; + help_pdu.errcode() = params.errorCode; + OCTETSTRING oct_stream = params.stream; + help_pdu.parameter()() = oct_stream; + + TTCN_Buffer buf; + + help_pdu.encode(SS__ReturnError__help_descr_, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_IGNORE); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); + TTCN_EncDec::clear_error(); + + pdu.decode(SS__ReturnError_descr_, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + + if(TTCN_EncDec::get_last_error_type() != 0) return 1; + } + else + { + pdu.invokeId().present__() = params.invokeId; + pdu.errcode() = params.errorCode; + pdu.parameter() = OMIT_VALUE; + } + + return 0; +} + +////////////////////////////////// +// Decoding function for SS__Reject +////////////////////////////////// +int dec_SS_Reject(const SS_Reject_for_dec& params, SS__Reject& pdu) +{ + if(params.invokeId.ispresent()) + pdu.invokeId().present__() = params.invokeId; + else + pdu.invokeId().absent() = ASN_NULL_VALUE; + + pdu.problem() = params.problem; + + return 0; +} + +//////////////////////////////////////////////////////////////////// +// Decoding function for internal SS_TCAP_ComponentPortion +//////////////////////////////////////////////////////////////////// +int dec__SS__TCAP__ComponentPortion(const OCTETSTRING& stream, SS__TCAP__ComponentPortion& pdu) +{ + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("dec_SS_TCAP_ComponentPortion(): Stream before decoding: "); + stream.log(); + TTCN_Logger::end_event(); + } + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_IGNORE); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING); + TTCN_EncDec::clear_error(); + + TTCN_Buffer ttcn_buffer(stream); + SS__TCAP__Component ret_sub_val; + int i = 0; + + if(!ttcn_buffer.contains_complete_TLV()) { + if (TTCN_Logger::log_this_event(TTCN_Logger::TTCN_WARNING)) + { + TTCN_Logger::begin_event(TTCN_Logger::TTCN_WARNING); + TTCN_Logger::log_event_str("dec_SS_TCAP_ComponentPortion(): there is no complete TLV in the incoming stream!"); + TTCN_Logger::end_event(); + } + return 1; + } + + while(ttcn_buffer.contains_complete_TLV()) + { + ret_sub_val.decode(SS__TCAP__Component_descr_, ttcn_buffer, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL); + pdu[i] = ret_sub_val; + i++; + ttcn_buffer.cut(); + } + + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("dec_SS_TCAP_ComponentPortion(): Decoded @SS_Types.SS_TCAP_ComponentPortion: "); + pdu.log(); + TTCN_Logger::end_event(); + } + + return TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE ? 0 : 1; +} + + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Main encoding function for SS_FacilityInformation. This is called from TTCN-3 +////////////////////////////////////////////////////////////////////////////////////////////////////// +OCTETSTRING enc__SS__FacilityInformation(const SS__FacilityInformation& pdu) +{ + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("enc_SS_FacilityInformation(): SS_FacilityInformation before encoding: "); + pdu.log(); + TTCN_Logger::end_event(); + } + SS__TCAP__ComponentPortion temp_val; + OCTETSTRING ret_val(0,NULL); + + for (int i = 0; i < pdu.size_of(); i++) + { + if (pdu[i].get_selection() == SS__Component::ALT_invoke) + { + ret_val = ret_val + enc_SS_Invoke(pdu[i].invoke()); + } + else if (pdu[i].get_selection() == SS__Component::ALT_returnResult) + { + ret_val = ret_val + enc_SS_ReturnResult(pdu[i].returnResult()); + } + else if (pdu[i].get_selection() == SS__Component::ALT_returnError) + { + ret_val = ret_val + enc_SS_ReturnError(pdu[i].returnError()); + } + else if (pdu[i].get_selection() == SS__Component::ALT_reject) + { + ret_val = ret_val + enc_SS_Reject(pdu[i].reject()); + } + } + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("enc_SS_FacilityInformation(): stream after encoding: "); + ret_val.log(); + TTCN_Logger::end_event(); + } + return ret_val; +} + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// Main decoding function for SS_FacilityInformation. This is called from TTCN-3 +////////////////////////////////////////////////////////////////////////////////////////////////////// +INTEGER dec__SS__FacilityInformation__backtrack(const OCTETSTRING& stream, SS__FacilityInformation& pdu) +{ + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("dec_SS_FacilityInformation__backtrack(): Stream before decoding: "); + stream.log(); + TTCN_Logger::end_event(); + } + + SS__TCAP__ComponentPortion temp_val; + int decode = dec__SS__TCAP__ComponentPortion(stream, temp_val); + + if(decode == 0) { + + for (int i = 0; i < temp_val.size_of() && decode == 0; i++) + { + if (temp_val[i].get_selection() == SS__TCAP__Component::ALT_invoke) + { + SS_Invoke_for_dec par_val; + par_val.invokeId = temp_val[i].invoke().invokeID(); + par_val.linkedId = temp_val[i].invoke().linkedID(); + par_val.opcode = temp_val[i].invoke().operationCode(); + par_val.stream = temp_val[i].invoke().parameter(); + decode = dec_SS_Invoke(par_val, pdu[i].invoke()); + } + else if (temp_val[i].get_selection() == SS__TCAP__Component::ALT_returnResult) + { + SS_ReturnResult_for_dec par_val; + par_val.invokeId = temp_val[i].returnResult().invokeID(); + + if(temp_val[i].returnResult().result().ispresent()) + { + SS__TCAP__ReturnResult__Result temp_res = temp_val[i].returnResult().result(); + par_val.opcode = temp_res.operationCode(); + par_val.stream = temp_res.parameter(); + } + else + { + par_val.opcode = OMIT_VALUE; + par_val.stream = OMIT_VALUE; + } + decode = dec_SS_ReturnResult(par_val, pdu[i].returnResult()); + } + else if (temp_val[i].get_selection() == SS__TCAP__Component::ALT_returnError) + { + SS_ReturnError_for_dec par_val; + par_val.invokeId = temp_val[i].returnError().invokeID(); + par_val.errorCode = temp_val[i].returnError().errorCode(); + par_val.stream = temp_val[i].returnError().parameter(); + + decode = dec_SS_ReturnError(par_val, pdu[i].returnError()); + } + else if (temp_val[i].get_selection() == SS__TCAP__Component::ALT_reject) + { + SS_Reject_for_dec par_val; + if( temp_val[i].reject().invokeID().get_selection() == SS__TCAP__Reject_invokeID::ALT_derivable) + par_val.invokeId = temp_val[i].reject().invokeID().derivable(); + else + par_val.invokeId = OMIT_VALUE; + par_val.problem = temp_val[i].reject().problem(); + + decode = dec_SS_Reject(par_val, pdu[i].reject()); + } + } + } + + if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) + { + TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC); + TTCN_Logger::log_event_str("dec_SS_FacilityInformation__backtrack(): Decoded @SS_Types.SS_FacilityInformation: "); + pdu.log(); + TTCN_Logger::end_event(); + } + + return decode; +} + +SS__FacilityInformation dec__SS__FacilityInformation(const OCTETSTRING& stream) +{ + SS__FacilityInformation ret; + dec__SS__FacilityInformation__backtrack(stream, ret); + return ret; +} + +}//namespace + diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Errors.asn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Errors.asn new file mode 100644 index 00000000..85b52d3e --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Errors.asn @@ -0,0 +1,57 @@ +--///////////////////////////////////////////////////////////////////////////// +-- // +-- 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: SS_Errors.asn +-- Rev: R1B +-- Prodnr: CNL 113 832 +-- Contact: http://ttcn.ericsson.se +-- Reference: 3GPP TS 24.080 v13.0.0 + +SS-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Errors (1) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +IMPORTS + +ERROR FROM +Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)}; + +-- The MAP errors +-- unknownSubscriber, bearerServiceNotProvisioned, teleserviceNotProvisioned, +-- illegalSS-Operation, ss-ErrorStatus, ss-NotAvailable, ss-SubscriptionViolation, +-- ss-Incompatibility, systemFailure, dataMissing, unexpectedDataValue, facilityNotSupported, +-- pw-RegistrationFailure, negativePW-Check, callBarred, numberOfPW-AttemptsViolation, +-- absentSubscriber, illegalSubscriber, illegalEquipment, ussd-Busy, unknownAlphabet, +-- forwardingViolation, forwardingFailed +-- are imported from MAP-Errors in SS-Protocol module. + +-- errors definition +resourcesNotAvailable ERROR ::= { + CODE local:127 } +maxNumberOfMPTY-ParticipantsExceeded ERROR ::= { + CODE local:126 } +invalidDeflectedToNumber ERROR ::= { + CODE local:125 } +specialServiceCode ERROR ::= { + CODE local:124 } +deflectionToServedSubscriber ERROR ::= { + CODE local:123 } +rejectedByNetwork ERROR ::= { + CODE local:122 } +rejectedByUser ERROR ::= { + CODE local:121 } + +END diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Operations.asn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Operations.asn new file mode 100644 index 00000000..cdfe1e00 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Operations.asn @@ -0,0 +1,313 @@ +--///////////////////////////////////////////////////////////////////////////// +-- // +-- 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: SS_Operations.asn +-- Rev: R1B +-- Prodnr: CNL 113 832 +-- Contact: http://ttcn.ericsson.se +-- Reference: 3GPP TS 24.080 v13.0.0 + +SS-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Operations (0) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +EXPORTS + +-- exports operations + +-- operations defined in this specification +processUnstructuredSS-Data, notifySS, forwardChargeAdvice, forwardCUG-Info, buildMPTY, holdMPTY, retrieveMPTY, splitMPTY, explicitCT, accessRegisterCCEntry, callDeflection, userUserService, +lcs-LocationNotification, lcs-MOLR, lcs-AreaEventRequest, lcs-AreaEventReport, lcs-AreaEventCancellation, lcs-PeriodicLocationRequest, lcs-LocationUpdate, lcs-PeriodicLocationCancellation; + +IMPORTS + +OPERATION FROM +Remote-Operations-Information-Objects { + joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + +-- The MAP operations: +-- registerSS, eraseSS, activateSS, deactivateSS, interrogateSS, registerPassword, +-- getPassword, processUnstructuredSS-Request, unstructuredSS-Request, unstructuredSS-Notify +-- forwardCheckSS-Indication +-- are imported from MAP-Operations in SS-Protocol module. + +-- imports SS-data types +NotifySS-Arg, +ForwardChargeAdviceArg, +ForwardCUG-InfoArg, +SS-UserData, +AccessRegisterCCEntryArg, +CallDeflectionArg, +UserUserServiceArg, +LocationNotificationArg, +LocationNotificationRes, +LCS-MOLRArg, +LCS-MOLRRes, +LCS-AreaEventRequestArg, +LCS-AreaEventReportArg, +LCS-AreaEventCancellationArg, +LCS-PeriodicLocationRequestArg, +LCS-PeriodicLocationRequestRes, +LCS-LocationUpdateArg, +LCS-LocationUpdateRes, +LCS-PeriodicLocationCancellationArg + + +FROM SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-DataTypes (2) version12 (12)} + +-- imports MAP-SS-data types +RegisterCC-EntryRes +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version12 (12)} + +-- imports MAP-errors +illegalSS-Operation, ss-ErrorStatus, ss-NotAvailable, ss-SubscriptionViolation, +ss-Incompatibility, systemFailure, facilityNotSupported, callBarred, unexpectedDataValue, shortTermDenial, longTermDenial, dataMissing, forwardingViolation, forwardingFailed, positionMethodFailure +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-Errors (10) version12 (12)} + +-- imports SS-Errors +resourcesNotAvailable, maxNumberOfMPTY-ParticipantsExceeded, deflectionToServedSubscriber, invalidDeflectedToNumber, specialServiceCode, rejectedByUser, rejectedByNetwork +FROM SS-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Errors (1) version12 (12)} +; + +-- operations definition + +processUnstructuredSS-Data OPERATION ::= { -- Timer T(PUSSD)= 15s to 30s + ARGUMENT SS-UserData + RESULT SS-UserData + -- optional + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local:19 } + +notifySS OPERATION ::= { + ARGUMENT NotifySS-Arg + CODE local:16 } + +forwardChargeAdvice OPERATION ::= { -- Timer T(AoC)= 1s to 40s + ARGUMENT ForwardChargeAdviceArg + RETURN RESULT TRUE + CODE local:125 } + +forwardCUG-Info OPERATION ::= { + ARGUMENT ForwardCUG-InfoArg + CODE local:120 } + +buildMPTY OPERATION ::= { -- Timer T(BuildMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + systemFailure | + resourcesNotAvailable | + maxNumberOfMPTY-ParticipantsExceeded} + CODE local:124 } + +holdMPTY OPERATION ::= { -- Timer T(HoldMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:123 } + +retrieveMPTY OPERATION ::= { -- Timer T(RetrieveMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:122 } + +splitMPTY OPERATION ::= { -- Timer T(SplitMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:121 } + +explicitCT OPERATION ::= { -- Timer T(ECT)= 5s to 15s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + callBarred} + CODE local:126 } + +accessRegisterCCEntry OPERATION ::= { -- Timer T(AccRegCCEntry)= 30s + ARGUMENT AccessRegisterCCEntryArg + RESULT RegisterCC-EntryRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + shortTermDenial | + longTermDenial | + facilityNotSupported} + CODE local:119 } + +-- the timer value is defined by T308, see also in TS 24.008 for definition of timer T308 + +callDeflection OPERATION ::= { -- Timer T(CD)= 30s + ARGUMENT CallDeflectionArg + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + forwardingViolation | + callBarred | + deflectionToServedSubscriber | + invalidDeflectedToNumber | + specialServiceCode | + forwardingFailed} + CODE local:117 } + +-- the timer value is defined by T305, see also in TS 24.008 for definition of timer T305 +-- extensionContainer shall not be used with this operation + +userUserService OPERATION ::= { -- Timer T(UUS3)= 10s + ARGUMENT UserUserServiceArg + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + rejectedByNetwork | + rejectedByUser} + CODE local:118 } + +-- The timer value for UUS3 is 10s; it is applicable only if UUS3 is activated by FACILITY +-- message. If UUS service (UUS1, UUS2 or UUS3) is activated by SETUP message, no timers are +-- needed. In those cases Return Result or Return Error must be received within certain call +-- control messages, see 3GPP TS 24.087. +-- extensionContainer shall not be used with this operation. + + +lcs-LocationNotification OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LocationNotificationArg + RESULT LocationNotificationRes + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local:116 } + + +lcs-MOLR OPERATION ::= { -- Timer T(LCSL)= 10s to 300s + ARGUMENT LCS-MOLRArg + RESULT LCS-MOLRRes + ERRORS { + systemFailure | + unexpectedDataValue | + dataMissing | + facilityNotSupported | + ss-SubscriptionViolation | + positionMethodFailure} + CODE local:115 } + + +lcs-AreaEventRequest OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-AreaEventRequestArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue} + CODE local:114 } + + +lcs-AreaEventReport OPERATION ::= { -- Timer T(LCSL)= 10s to 300s + ARGUMENT LCS-AreaEventReportArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + unexpectedDataValue | + facilityNotSupported} + CODE local:113 } + + +lcs-AreaEventCancellation OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-AreaEventCancellationArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue} + CODE local:112 } + +lcs-PeriodicLocationRequest OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-PeriodicLocationRequestArg + RESULT LCS-PeriodicLocationRequestRes + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue | + dataMissing } + CODE local: 111 } + +lcs-LocationUpdate OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-LocationUpdateArg + RESULT LCS-LocationUpdateRes + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local: 110 } + +lcs-PeriodicLocationCancellation OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-PeriodicLocationCancellationArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local: 109 } + + + +END diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_PDU_Defs.asn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_PDU_Defs.asn new file mode 100644 index 00000000..795f471e --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_PDU_Defs.asn @@ -0,0 +1,136 @@ +--///////////////////////////////////////////////////////////////////////////// +-- // +-- 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: SS_PDU_Defs.asn +-- Rev: R1B +-- Prodnr: CNL 113 832 +-- Contact: http://ttcn.ericsson.se +-- Reference: 3GPP TS 24.080 v13.0.0 + +SS-PDU-Defs + +DEFINITIONS IMPLICIT TAGS ::= + +BEGIN + +IMPORTS + + Supported-SS-Operations + FROM + SS-Protocol + + OPERATION, ERROR, Code + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)} + + Invoke{}, ReturnResult{}, ReturnError{}, Reject{}, + Invoke-help{}, ReturnResult-help{}, ReturnError-help{}, + Errors{}, PresentInvokeId, ProblemType + FROM Remote-Operations-Generic-ROS-PDUs {joint-iso-itu-t + remote-operations(4) generic-ROS-PDUs(6) version1(0)}; + + +-- SS-Invoke, SS-ReturnResult, SS-ReturnError, SS-Reject +-- SS-Invoke-help SS-ReturnResult-help SS-ReturnError-help types +-- (these are accessible from TTCN-3) +SS-Invoke ::= Invoke{{PresentInvokeId}, {Supported-SS-Operations}} + +SS-ReturnResult ::= ReturnResult{{Supported-SS-Operations}} + +SS-ReturnError ::= ReturnError{{Errors {{Supported-SS-Operations}}}} + +SS-Reject ::= Reject --{{Errors {{Supported-SS-Operations}}}} + +SS-Invoke-help ::= Invoke-help{{PresentInvokeId}, {Supported-SS-Operations}} + +SS-ReturnResult-help ::= ReturnResult-help{{Supported-SS-Operations}} + +SS-ReturnError-help ::= ReturnError-help{{Errors {{Supported-SS-Operations}}}} + + +-- Component Portion fields + +-- COMPONENT PORTION. This part is copied from TCAP_PDU_Defs.asn file +-- with TCAP -> SS-TCAP renaming +-- This is needed for internal coding: DON'T USE FROM TTCN !!! +SS-TCAP-ComponentPortion ::= [UNIVERSAL 28] IMPLICIT SEQUENCE (SIZE(1..MAX)) OF + SS-TCAP-Component + + +-- COMPONENT TYPE. Recommendation X.229 defines four Application Protocol Data +-- Units (APDUs). + +SS-TCAP-Component ::= CHOICE + { + invoke [1] IMPLICIT SS-TCAP-Invoke, + returnResult [2] IMPLICIT SS-TCAP-ReturnResult, + returnError [3] IMPLICIT SS-TCAP-ReturnError, + reject [4] IMPLICIT SS-TCAP-Reject + } + +-- The Components are sequences of data elements. +SS-TCAP-Invoke ::= SEQUENCE + { + invokeID SS-TCAP-InvokeIdType, + linkedID [0] IMPLICIT SS-TCAP-InvokeIdType OPTIONAL, + operationCode Code, + parameter ANY DEFINED BY operationCode OPTIONAL + } + -- ethgry(11/July/02): ANY and ANY DEFINED BY handled in a special, + -- transparent way at encoding/decoding: + -- its value notation shall be a simple octet string, which will be + -- directly copied (i.e without an additional tag and length fields) + -- into the encoded stream and will be fetched from the received + -- stream and passed to the abstract level as an octet string. + + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER +-- or the keyword ARGUMENT in the type definition of a particular operation. + +SS-TCAP-ReturnResult ::= SEQUENCE + { + invokeID SS-TCAP-InvokeIdType, + result SS-TCAP-ReturnResult-Result OPTIONAL + } + +SS-TCAP-ReturnResult-Result ::= SEQUENCE + { + operationCode Code, + parameter ANY DEFINED BY operationCode OPTIONAL + -- ethgry: See comment to Invoke on the use of ANY + } + +-- ANY is filled by the single ASN.1 data type following the keyword RESULT in +-- the type definition of a particular operation. + +SS-TCAP-ReturnError ::= SEQUENCE + { + invokeID SS-TCAP-InvokeIdType, + errorCode Code, + parameter ANY DEFINED BY errorCode OPTIONAL + -- ethgry: See comment to Invoke on the use of ANY + } + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER +-- in the type definition of a particular error. +SS-TCAP-Reject ::= SEQUENCE + { + invokeID CHOICE + { + derivable SS-TCAP-InvokeIdType, + not-derivable NULL + }, + problem ProblemType + } + +SS-TCAP-InvokeIdType ::= INTEGER (-128..127) + +END diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Protocol.asn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Protocol.asn new file mode 100644 index 00000000..bf37a1fd --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Protocol.asn @@ -0,0 +1,67 @@ +--///////////////////////////////////////////////////////////////////////////// +-- // +-- 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: SS_Protocol.asn +-- Rev: R1B +-- Prodnr: CNL 113 832 +-- Contact: http://ttcn.ericsson.se +-- Reference: 3GPP TS 24.080 v13.0.0 + + +SS-Protocol { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Access (2) modules (3) ss-Protocol (3) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +IMPORTS + +OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + +-- imports operations + +-- imports operation from MAP-MobileServiceOperations +forwardCheckSS-Indication +FROM MAP-MobileServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-MobileServiceOperations (5) version12 (12)} + +-- imports operations from MAP-SupplementaryServiceOperations +registerSS, eraseSS, activateSS, deactivateSS, interrogateSS, registerPassword, getPassword, +processUnstructuredSS-Request, unstructuredSS-Request, unstructuredSS-Notify, eraseCC-Entry +FROM MAP-SupplementaryServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SupplementaryServiceOperations (8) version12 (12)} + +-- imports operations from SS-Operations +processUnstructuredSS-Data, notifySS, forwardChargeAdvice, buildMPTY, holdMPTY, retrieveMPTY, +splitMPTY, explicitCT, forwardCUG-Info, accessRegisterCCEntry, callDeflection, userUserService, +lcs-LocationNotification, lcs-MOLR, lcs-AreaEventRequest, lcs-AreaEventReport, lcs-AreaEventCancellation, lcs-PeriodicLocationRequest, lcs-LocationUpdate, lcs-PeriodicLocationCancellation +FROM SS-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Operations (0) version12 (12)} + +; + +Supported-SS-Operations OPERATION ::= {forwardCheckSS-Indication | registerSS | eraseSS | + activateSS | deactivateSS | interrogateSS | registerPassword | getPassword | + processUnstructuredSS-Request | unstructuredSS-Request | unstructuredSS-Notify | eraseCC-Entry | + processUnstructuredSS-Data | notifySS | forwardChargeAdvice | buildMPTY | holdMPTY | + retrieveMPTY | splitMPTY | explicitCT | forwardCUG-Info | accessRegisterCCEntry | + callDeflection | userUserService | lcs-LocationNotification | lcs-MOLR | lcs-AreaEventRequest | lcs-AreaEventReport | lcs-AreaEventCancellation | lcs-PeriodicLocationRequest | lcs-LocationUpdate | lcs-PeriodicLocationCancellation } + + + +END diff --git a/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Types.ttcn b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Types.ttcn new file mode 100644 index 00000000..6dedf5f9 --- /dev/null +++ b/MobileL3_v13.4.0_CNL113832_LATEST/src/SS_Types.ttcn @@ -0,0 +1,40 @@ +/////////////////////////////////////////////////////////////////////////////// +// // +// 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: SS_Types.ttcn +// Rev: R1B +// Prodnr: CNL 113 832 +// Contact: http://ttcn.ericsson.se +// Reference: 3GPP TS 24.080 v13.0.0 + +module SS_Types +{ + +import from SS_PDU_Defs all; + +//Coding functions +external function enc_SS_FacilityInformation (in SS_FacilityInformation pdu) return octetstring; +external function dec_SS_FacilityInformation (in octetstring stream) return SS_FacilityInformation; +external function dec_SS_FacilityInformation_backtrack (in octetstring stream, out SS_FacilityInformation pdu) return integer; + +//Type for extracted facilityInformation in Facility IE +type record of SS_Component SS_FacilityInformation; + +//24.080 3.6.1 +type union SS_Component +{ + SS_Invoke invoke, + SS_ReturnResult returnResult, + SS_ReturnError returnError, + SS_Reject reject +} + +} -- cgit v1.2.3