Initial commit
diff --git a/MobileL3_v13.4.0_CNL113832.tpd b/MobileL3_v13.4.0_CNL113832.tpd
new file mode 100644
index 0000000..0863ff2
--- /dev/null
+++ b/MobileL3_v13.4.0_CNL113832.tpd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2017 Ericsson
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+
+ File: MobileL3_v13.4.0_CNL113832.tpd
+ Description: tpd project file
+ Rev: R2A
+ Prodnr: CNL 113 832
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>MobileL3_v13.4.0_CNL113832</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="MAP_Current_CNL113745_1_HLR" projectLocationURI="../MAP_Current_CNL113745_1/MAP_Current_CNL113745_1_HLR.tpd"/>
+ </ReferencedProjects>
+ <Folders>
+ <FolderResource projectRelativePath="src" relativeURI="src"/>
+ </Folders>
+ <Files>
+ <FileResource projectRelativePath="src/MobileL3_CC_Types.ttcn" relativeURI="src/MobileL3_CC_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_CommonIE_Types.ttcn" relativeURI="src/MobileL3_CommonIE_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_GMM_SM_Types.ttcn" relativeURI="src/MobileL3_GMM_SM_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_MM_Types.ttcn" relativeURI="src/MobileL3_MM_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_RRM_Types.ttcn" relativeURI="src/MobileL3_RRM_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_SMS_Types.ttcn" relativeURI="src/MobileL3_SMS_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_SS_Types.ttcn" relativeURI="src/MobileL3_SS_Types.ttcn"/>
+ <FileResource projectRelativePath="src/MobileL3_Types.ttcn" relativeURI="src/MobileL3_Types.ttcn"/>
+ <FileResource projectRelativePath="src/SS_DataTypes.asn" relativeURI="src/SS_DataTypes.asn"/>
+ <FileResource projectRelativePath="src/SS_Errors.asn" relativeURI="src/SS_Errors.asn"/>
+ <FileResource projectRelativePath="src/SS_Operations.asn" relativeURI="src/SS_Operations.asn"/>
+ <FileResource projectRelativePath="src/SS_PDU_Defs.asn" relativeURI="src/SS_PDU_Defs.asn"/>
+ <FileResource projectRelativePath="src/SS_Protocol.asn" relativeURI="src/SS_Protocol.asn"/>
+ <FileResource projectRelativePath="src/SS_Types.ttcn" relativeURI="src/SS_Types.ttcn"/>
+ <FileResource projectRelativePath="src/SS_EncDec.cc" relativeURI="src/SS_EncDec.cc"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/MobileL3_v13.4.0_CNL113832</targetExecutable>
+ <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+ </MakefileSettings>
+ <LocalBuildSettings>
+ <workingDirectory>bin</workingDirectory>
+ </LocalBuildSettings>
+ </ProjectProperties>
+ <FolderProperties>
+ <FolderResource>
+ <FolderPath>doc</FolderPath>
+ <FolderProperties>
+ <ExcludeFromBuild>true</ExcludeFromBuild>
+ </FolderProperties>
+ </FolderResource>
+ </FolderProperties>
+ </Configuration>
+ </Configurations>
+</TITAN_Project_File_Information>
diff --git a/doc/MobileL3_v13.4.0_CNL113832_1551.pdf b/doc/MobileL3_v13.4.0_CNL113832_1551.pdf
new file mode 100644
index 0000000..4125b71
--- /dev/null
+++ b/doc/MobileL3_v13.4.0_CNL113832_1551.pdf
Binary files differ
diff --git a/doc/MobileL3_v13.4_PRI.pdf b/doc/MobileL3_v13.4_PRI.pdf
new file mode 100644
index 0000000..2997f45
--- /dev/null
+++ b/doc/MobileL3_v13.4_PRI.pdf
Binary files differ
diff --git a/src/MobileL3_CC_Types.ttcn b/src/MobileL3_CC_Types.ttcn
new file mode 100644
index 0000000..15ff564
--- /dev/null
+++ b/src/MobileL3_CC_Types.ttcn
@@ -0,0 +1,1648 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_CC_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_CommonIE_Types.ttcn b/src/MobileL3_CommonIE_Types.ttcn
new file mode 100644
index 0000000..4b015db
--- /dev/null
+++ b/src/MobileL3_CommonIE_Types.ttcn
@@ -0,0 +1,679 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_CommonIE_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_GMM_SM_Types.ttcn b/src/MobileL3_GMM_SM_Types.ttcn
new file mode 100644
index 0000000..b694538
--- /dev/null
+++ b/src/MobileL3_GMM_SM_Types.ttcn
@@ -0,0 +1,2571 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_GMM_SM_Types.ttcn
+// Rev: R2A
+// 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
+} with { variant "FIELDORDER(msb)" };
+
+
+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 (accessTechnType) "BYTEORDER(last)";
+ 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(rfPowerCapability) "BYTEORDER(last)";
+ 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) "BYTEORDER(last)";
+ 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) "BYTEORDER(last)";
+ variant(gMSKMultislotPowerProfile) "BYTEORDER(last)";
+ variant(eightPSKMultislotPowerProfile) "BYTEORDER(last)";
+ 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(downlinkAdvancedReceiverPerformance) "BYTEORDER(last)";
+ variant (dTMGPRSHighMultiSlotClass)
+ "PRESENCE(presenceBitDTMGPRSHighMultiSlotClass = '1'B)"
+}
+
+
+type record DTMGPRSHighMultiSlotClass
+{
+ BIT3 dTMGPRSHighMultiSlotClassValue,
+ BIT1 presenceBitDTMEGPRSHighMultiSlotClass,
+ BIT3 dTMEGPRSHighMultiSlotClassValue optional
+} with {
+ variant "FIELDORDER(msb)";
+ variant(dTMGPRSHighMultiSlotClassValue) "BYTEORDER(last)";
+ variant(dTMEGPRSHighMultiSlotClassValue) "BYTEORDER(last)";
+ variant (dTMEGPRSHighMultiSlotClassValue)
+ "PRESENCE(presenceBitDTMEGPRSHighMultiSlotClass = '1'B)"
+
+}
+
+
+type record AccessCapAdditionsRel7
+{
+ BIT1 dTMHandoverCapability,
+ BIT1 presenceBitDownlinkDualCarrier,
+ DownlinkDualCarrier downlinkDualCarrier optional,
+ BIT1 flexibleTimeslotAssignment,
+ BIT1 gANPSHandoverCapability,
+ BIT1 rLCNonPersistentMode,
+ BIT1 reducedLatencyCapability,
+ BIT2 uplinkEGPRS2,
+ BIT2 downlinkEGPRS2
+} with {
+ variant "FIELDORDER(msb)";
+ variant(uplinkEGPRS2) "BYTEORDER(last)";
+ variant(downlinkEGPRS2) "BYTEORDER(last)";
+ 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(gERANToEUTRASupportInGERANPacketTransferMode) "BYTEORDER(last)";
+ 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
+} with {
+ variant(tIGHTER_Capability) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+}
+
+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(dLMCMaxBandwidth) "BYTEORDER(last)";
+ variant(dLMCMaxNumOfDownlinkTimeslots) "BYTEORDER(last)";
+ variant(dLMCMaxNumOfDownlinkCarriers) "BYTEORDER(last)";
+ variant (dLMCBandReception) "PRESENCE(presenceDLMC = '1'B)"
+}
+
+type record DLMCBandReception
+{
+ BIT2 dLMCNonContiguousIntraBandReception,
+ BIT1 dLMCInterBandReception
+} with {
+ variant(dLMCNonContiguousIntraBandReception) "BYTEORDER(last)";
+ 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(alternativeEFTAMultislotClass) "BYTEORDER(last)";
+ variant(eFTAMultislotCapabilityReductionforDownlinkDualCarrier) "BYTEORDER(last)";
+ 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(hscsdmultislotclass) "BYTEORDER(last)";
+ 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(ecsdmultislotclass) "BYTEORDER(last)";
+ variant (multislotCapdtmgprsmultislotsubclass)
+ "PRESENCE(presenceBitDtmGprsmulti = '1'B)"
+}
+
+
+type record MultislotCap_GPRS
+{
+ BIT5 gprsmultislotclass,
+ BIT1 gprsextendeddynalloccap
+} with {
+ variant "FIELDORDER(msb)"
+ variant(gprsmultislotclass) "BYTEORDER(last)"
+};
+
+
+type record MultislotCap_SMS
+{
+ BIT4 smsValue,
+ BIT4 smValue
+} with {
+ variant "FIELDORDER(msb)"
+ variant(smsValue) "BYTEORDER(last)";
+ variant(smValue) "BYTEORDER(last)"
+};
+
+
+type record MultislotCap_EGPRS
+{
+ BIT5 egprsmultislotclass,
+ BIT1 egprsextendeddynalloccap
+} with {
+ variant "FIELDORDER(msb)"
+ variant(egprsmultislotclass) "BYTEORDER(last)"
+};
+
+type record MultislotCap_dtmgprsmultislotsubclass
+{
+ BIT2 dtmgprsmultislotsubclass,
+ BIT1 singleSlotDTM,
+ BIT1 presenceBitDTM_EGPRSMultiSlot,
+ BIT2 dTM_EGPRSMultiSlot optional
+} with {
+ variant "FIELDORDER(msb)";
+ variant(dtmgprsmultislotsubclass) "BYTEORDER(last)";
+ variant(dTM_EGPRSMultiSlot) "BYTEORDER(last)";
+ 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 (accessTechnType) "BYTEORDER(last)";
+ 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)"
+ variant (accessTechnType) "BYTEORDER(last)";
+ variant (gMSKPowerClass) "BYTEORDER(last)";
+ variant (psk8PowerClass) "BYTEORDER(last)";
+};
+
+
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_MM_Types.ttcn b/src/MobileL3_MM_Types.ttcn
new file mode 100644
index 0000000..6523060
--- /dev/null
+++ b/src/MobileL3_MM_Types.ttcn
@@ -0,0 +1,571 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_MM_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_RRM_Types.ttcn b/src/MobileL3_RRM_Types.ttcn
new file mode 100644
index 0000000..37ba384
--- /dev/null
+++ b/src/MobileL3_RRM_Types.ttcn
@@ -0,0 +1,1833 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_RRM_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_SMS_Types.ttcn b/src/MobileL3_SMS_Types.ttcn
new file mode 100644
index 0000000..16da8d2
--- /dev/null
+++ b/src/MobileL3_SMS_Types.ttcn
@@ -0,0 +1,764 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_SMS_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_SS_Types.ttcn b/src/MobileL3_SS_Types.ttcn
new file mode 100644
index 0000000..7361f98
--- /dev/null
+++ b/src/MobileL3_SS_Types.ttcn
@@ -0,0 +1,101 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_SS_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_Types.ttcn b/src/MobileL3_Types.ttcn
new file mode 100644
index 0000000..1ec0d1f
--- /dev/null
+++ b/src/MobileL3_Types.ttcn
@@ -0,0 +1,402 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_Types.ttcn
+// Rev: R2A
+// 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 R2A"
+encode "RAW"
+}
+
diff --git a/src/MobileL3_v13.4.0_ProtocolModule.grp b/src/MobileL3_v13.4.0_ProtocolModule.grp
new file mode 100644
index 0000000..bd6ffde
--- /dev/null
+++ b/src/MobileL3_v13.4.0_ProtocolModule.grp
@@ -0,0 +1,37 @@
+<!--
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: MobileL3_v13.4.0_ProtocolModule.grp
+// Description: MobileL3_v13.4.0 Protocol Module group file
+// Rev: R2A
+// Prodnr: CNL 113 832
+// Contact: http://ttcn.ericsson.se
+//
+-->
+
+<!DOCTYPE TITAN_GUI_FileGroup_file>
+<File_Group name="MobileL3_v13.4.0_ProtocolModule" >
+ <File path="MobileL3_CC_Types.ttcn" />
+ <File path="MobileL3_CommonIE_Types.ttcn" />
+ <File path="MobileL3_GMM_SM_Types.ttcn" />
+ <File path="MobileL3_MM_Types.ttcn" />
+ <File path="MobileL3_RRM_Types.ttcn" />
+ <File path="MobileL3_SMS_Types.ttcn" />
+ <File path="MobileL3_SS_Types.ttcn" />
+ <File path="MobileL3_Types.ttcn" />
+ <File path="SS_DataTypes.asn" />
+ <File path="SS_EncDec.cc" />
+ <File path="SS_Errors.asn" />
+ <File path="SS_Operations.asn" />
+ <File path="SS_PDU_Defs.asn" />
+ <File path="SS_Protocol.asn" />
+ <File path="SS_Types.ttcn" />
+</File_Group>
diff --git a/src/SS_DataTypes.asn b/src/SS_DataTypes.asn
new file mode 100644
index 0000000..55ae9ba
--- /dev/null
+++ b/src/SS_DataTypes.asn
@@ -0,0 +1,501 @@
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- Copyright (c) 2000-2017 Ericsson Telecom AB
+--
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- File: SS_DataTypes.asn
+-- Rev: R2A
+-- 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/src/SS_EncDec.cc b/src/SS_EncDec.cc
new file mode 100644
index 0000000..89a91da
--- /dev/null
+++ b/src/SS_EncDec.cc
@@ -0,0 +1,437 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: SS_PDU_Defs.asn
+// Rev: R2A
+// 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<INTEGER> linkedId;
+ Remote__Operations__Information__Objects::Code opcode;
+ OPTIONAL<OCTETSTRING> stream;
+};
+
+struct SS_ReturnResult_for_dec
+{
+ INTEGER invokeId;
+ OPTIONAL<Remote__Operations__Information__Objects::Code> opcode;
+ OPTIONAL<OCTETSTRING> stream;
+};
+
+struct SS_ReturnError_for_dec
+{
+ INTEGER invokeId;
+ Remote__Operations__Information__Objects::Code errorCode;
+ OPTIONAL<OCTETSTRING> stream;
+};
+
+struct SS_Reject_for_dec
+{
+ OPTIONAL<INTEGER> 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/src/SS_Errors.asn b/src/SS_Errors.asn
new file mode 100644
index 0000000..5a6d1bf
--- /dev/null
+++ b/src/SS_Errors.asn
@@ -0,0 +1,56 @@
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- Copyright (c) 2000-2017 Ericsson Telecom AB
+--
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- File: SS_Errors.asn
+-- Rev: R2A
+-- 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/src/SS_Operations.asn b/src/SS_Operations.asn
new file mode 100644
index 0000000..e345657
--- /dev/null
+++ b/src/SS_Operations.asn
@@ -0,0 +1,312 @@
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- Copyright (c) 2000-2017 Ericsson Telecom AB
+--
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- File: SS_Operations.asn
+-- Rev: R2A
+-- 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/src/SS_PDU_Defs.asn b/src/SS_PDU_Defs.asn
new file mode 100644
index 0000000..0eb544e
--- /dev/null
+++ b/src/SS_PDU_Defs.asn
@@ -0,0 +1,135 @@
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- Copyright (c) 2000-2017 Ericsson Telecom AB
+--
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- File: SS_PDU_Defs.asn
+-- Rev: R2A
+-- 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/src/SS_Protocol.asn b/src/SS_Protocol.asn
new file mode 100644
index 0000000..f599dce
--- /dev/null
+++ b/src/SS_Protocol.asn
@@ -0,0 +1,66 @@
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- Copyright (c) 2000-2017 Ericsson Telecom AB
+--
+-- All rights reserved. This program and the accompanying materials
+-- are made available under the terms of the Eclipse Public License v1.0
+-- which accompanies this distribution, and is available at
+-- http://www.eclipse.org/legal/epl-v10.html
+--/////////////////////////////////////////////////////////////////////////////
+--
+-- File: SS_Protocol.asn
+-- Rev: R2A
+-- 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/src/SS_Types.ttcn b/src/SS_Types.ttcn
new file mode 100644
index 0000000..c9898ca
--- /dev/null
+++ b/src/SS_Types.ttcn
@@ -0,0 +1,39 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2000-2017 Ericsson Telecom AB
+//
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// which accompanies this distribution, and is available at
+// http://www.eclipse.org/legal/epl-v10.html
+///////////////////////////////////////////////////////////////////////////////
+//
+// File: SS_Types.ttcn
+// Rev: R2A
+// 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
+}
+
+}