Initial commit
diff --git a/BSSGP_v13.0.0_CNL113833.tpd b/BSSGP_v13.0.0_CNL113833.tpd
new file mode 100644
index 0000000..e089898
--- /dev/null
+++ b/BSSGP_v13.0.0_CNL113833.tpd
@@ -0,0 +1,51 @@
+<?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: BSSGP_v13.0.0_CNL113833.tpd
+ Description: tpd project file
+ Rev: R2A
+ Prodnr: CNL 113 833
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+ <ProjectName>BSSGP_v13.0.0_CNL113833</ProjectName>
+ <ReferencedProjects>
+ <ReferencedProject name="ProtocolModules_Common" projectLocationURI="../COMMON/ProtocolModules_Common.tpd"/>
+ </ReferencedProjects>
+ <Files>
+ <FileResource projectRelativePath="src/BSSGP_EncDec.cc" relativeURI="src/BSSGP_EncDec.cc"/>
+ <FileResource projectRelativePath="src/BSSGP_Types.ttcn" relativeURI="src/BSSGP_Types.ttcn"/>
+ </Files>
+ <ActiveConfiguration>Default</ActiveConfiguration>
+ <Configurations>
+ <Configuration name="Default">
+ <ProjectProperties>
+ <MakefileSettings>
+ <generateInternalMakefile>true</generateInternalMakefile>
+ <GNUMake>true</GNUMake>
+ <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+ <targetExecutable>bin/BSSGP_v13.0.0_CNL113833</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/BSSGP_v13.0.0_CNL113833_1551.pdf b/doc/BSSGP_v13.0.0_CNL113833_1551.pdf
new file mode 100644
index 0000000..2ffebdd
--- /dev/null
+++ b/doc/BSSGP_v13.0.0_CNL113833_1551.pdf
Binary files differ
diff --git a/doc/BSSGP_v13.0_PRI.pdf b/doc/BSSGP_v13.0_PRI.pdf
new file mode 100644
index 0000000..2b0e779
--- /dev/null
+++ b/doc/BSSGP_v13.0_PRI.pdf
Binary files differ
diff --git a/src/BSSGP_EncDec.cc b/src/BSSGP_EncDec.cc
new file mode 100644
index 0000000..987dec5
--- /dev/null
+++ b/src/BSSGP_EncDec.cc
@@ -0,0 +1,144 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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: BSSGP_EncDec.cc
+// Rev: R2A
+// Prodnr: CNL 113 833
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 48.018 13.0.0
+
+#include "BSSGP_Types.hh"
+
+//static TTCN_Module BSSGP_EndDec("BSSGP_EncDec", __DATE__, __TIME__);
+
+namespace BSSGP__Types {
+
+
+OCTETSTRING enc__PDU__BSSGP(const PDU__BSSGP& pdu)
+{
+ TTCN_Buffer bb;
+
+ // CALCULATE WHICH LENGTH FORMAT SHOULD BE USED AND CHANGE SHORT LENGTH FORM
+ // TO LONG LENGTH FORM IF NECESSARY
+ if (pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__DL__UNITDATA)
+ {
+ if( pdu.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+ {
+ PDU__BSSGP pdu2(pdu);
+ pdu2.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+ pdu2.pDU__BSSGP__DL__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+ pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+
+ }
+ else
+ pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+ else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__UL__UNITDATA)
+ {
+ if( pdu.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+ {
+ PDU__BSSGP pdu2(pdu);
+ pdu2.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+ pdu2.pDU__BSSGP__UL__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+ pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+ else
+ pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+
+ else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__DL__MBMS__UNITDATA)
+ {
+ if( pdu.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+ {
+ PDU__BSSGP pdu2(pdu);
+ pdu2.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+ pdu2.pDU__BSSGP__DL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+ pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+ else
+ pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+
+ else if(pdu.get_selection() == PDU__BSSGP::ALT_pDU__BSSGP__UL__MBMS__UNITDATA)
+ {
+ if( pdu.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof() > 127)
+ {
+ PDU__BSSGP pdu2(pdu);
+ pdu2.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lengthIndicator().length2() =
+ pdu2.pDU__BSSGP__UL__MBMS__UNITDATA().lLC__PDU().lLC__PDU().lengthof();
+ pdu2.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+ else
+ pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+ }
+
+ else
+ pdu.encode(PDU__BSSGP_descr_ ,bb, TTCN_EncDec::CT_RAW);
+
+ return OCTETSTRING (bb.get_len(), bb.get_data());
+}
+
+/*PDU__BSSGP dec__PDU__BSSGP(const OCTETSTRING& stream)
+{
+ PDU__BSSGP retv;
+ TTCN_Buffer bb;
+
+ bb.put_os(stream);
+
+ retv.decode(PDU__BSSGP_descr_, bb, TTCN_EncDec::CT_RAW);
+ return retv;
+}*/
+
+PDU__BSSGP dec__PDU__BSSGP(const OCTETSTRING& stream)
+{
+ if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+ TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+ TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Stream before decoding: ");
+ stream.log();
+ TTCN_Logger::end_event();
+ }
+ TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+ TTCN_EncDec::clear_error();
+ TTCN_Buffer ttcn_buffer(stream);
+ PDU__BSSGP ret_val;
+ ret_val.decode(PDU__BSSGP_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+
+ if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+ TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+ TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Decoded @BSSGP_Types.PDU_BSSGP: ");
+ ret_val.log();
+ TTCN_Logger::end_event();
+ }
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+ if (ttcn_buffer.get_pos() < ttcn_buffer.get_len() && TTCN_Logger::log_this_event(TTCN_WARNING)) {
+ ttcn_buffer.cut();
+ OCTETSTRING remaining_stream;
+ ttcn_buffer.get_string(remaining_stream);
+ TTCN_Logger::begin_event(TTCN_WARNING);
+ TTCN_Logger::log_event_str("dec_PDU_BSSGP(): Warning: Data remained at the end of the stream after successful decoding: ");
+ remaining_stream.log();
+ TTCN_Logger::end_event();
+ }
+ }
+if(ret_val.get_selection()== PDU__BSSGP::ALT_pDU__BSSGP__PS__HANDOVER__REQUEST)
+{
+ if(!ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().target__Cell__Identifier().ispresent()){
+ Cell__Identifier cell;
+ cell = ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier();
+ ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().target__Cell__Identifier() = cell;
+ //ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier().clean_up();
+ ret_val.pDU__BSSGP__PS__HANDOVER__REQUEST().source__Cell__Identifier()= OMIT_VALUE;
+
+ } }
+return ret_val;
+}
+
+
+}//namespace
diff --git a/src/BSSGP_Types.ttcn b/src/BSSGP_Types.ttcn
new file mode 100644
index 0000000..ee7a0fc
--- /dev/null
+++ b/src/BSSGP_Types.ttcn
@@ -0,0 +1,4602 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// 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: BSSGP_Types.ttcn
+// Rev: R2A
+// Prodnr: CNL 113 833
+// Contact: http://ttcn.ericsson.se
+// Reference: 3GPP TS 48.018 13.0.0
+
+
+module BSSGP_Types
+{
+
+import from General_Types all;
+
+external function enc_PDU_BSSGP(in PDU_BSSGP pdu) return octetstring;
+
+external function dec_PDU_BSSGP(in octetstring stream) return PDU_BSSGP;
+
+external function enc_PDU_BSSGP_fast(in PDU_BSSGP pdu, out octetstring stream)
+with { extension "prototype(fast) encode(RAW)" }
+
+external function dec_PDU_BSSGP_backtrack(in octetstring stream, out PDU_BSSGP pdu) return integer
+with { extension "prototype(backtrack) decode(RAW)" }
+
+
+//-----------------------------------------------------------------------------
+// INFORMATION ELEMENTS
+//-----------------------------------------------------------------------------
+type union LIN2_2a
+{
+ integer length1,
+ integer length2
+} with {
+ variant (length1) "FIELDLENGTH(7)";
+ variant (length2) "FIELDLENGTH(15)";
+ variant (length2) "BYTEORDER(last)";
+ variant (length1,length2) "FIELDORDER(msb)";
+}
+
+// 11.3.1
+type record Alignment_octets
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring spare_octet length(0..3)
+} with {
+ variant "PRESENCE(iEI = '00'O)";
+ variant (lengthIndicator) "LENGTHTO (spare_octet)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.2
+type record Bmax_default_MS
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 bmax // could be changed to integer input if simpler
+} with {
+ variant "PRESENCE(iEI = '01'O)";
+ variant (lengthIndicator) "LENGTHTO (bmax)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.3
+type record BSS_Area_Indication
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 bSS_indicator
+} with {
+ variant "PRESENCE(iEI = '02'O)";
+ variant (lengthIndicator) "LENGTHTO (bSS_indicator)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.4
+type record Bucket_Leak_Rate
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 r_Value // could be changed to integer input if simpler
+} with {
+ variant "PRESENCE(iEI = '03'O)";
+ variant (lengthIndicator) "LENGTHTO (r_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.5
+type record BVC_Bucket_Size
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 bmax
+} with {
+ variant "PRESENCE(iEI = '05'O)";
+ variant (lengthIndicator) "LENGTHTO (bmax)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.6
+type record BVCI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 unstructured_value
+} with {
+ variant "PRESENCE(iEI = '04'O)";
+ variant (lengthIndicator) "LENGTHTO (unstructured_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.7
+type record BVC_Measurement
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 delay_Value
+
+} with {
+ variant "PRESENCE(iEI = '06'O)";
+ variant (lengthIndicator) "LENGTHTO (delay_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.8
+type record Cause_BSSGP
+ {
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 cause_Value
+ } with {
+ variant "PRESENCE(iEI = '07'O)";
+ variant (lengthIndicator) "LENGTHTO (cause_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.9
+type record Cell_Identifier
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1 ,
+ HEX1 mccDigit2 ,
+ HEX1 mccDigit3 ,
+ HEX1 mncDigit3 ,
+ HEX1 mncDigit1 ,
+ HEX1 mncDigit2 ,
+ OCT2 lac,
+ OCT1 rac,
+ OCT2 cI_value
+} with {
+ variant "PRESENCE(iEI = '08'O)";
+ variant (lengthIndicator)
+ "LENGTHTO(mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,
+ mncDigit2,lac,rac,cI_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type record Cell_Identifier_V
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac,
+ OCT2 cI_value
+};
+
+// 11.3.10
+// 29.018, 44.018
+type record Channel_needed
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Channel_Needed_Value channel_Needed_Value
+} with {
+ variant "PRESENCE(iEI = '09'O)";
+ variant (lengthIndicator) "LENGTHTO (channel_Needed_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type record Channel_Needed_Value
+{
+ BIT2 channel_1,
+ BIT2 channel_2,
+ BIT4 channelNeededIEI //44.018
+}
+
+// 11.3.11
+type record DRX_Parameters
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 splitPG_CycleCode,
+ BIT3 nonDRXTimer,
+ BIT1 splitOnCCCH,
+ BIT4 cnSpecificDRXCycleLength
+} with {
+ variant "PRESENCE(iEI = '0A'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (splitPG_CycleCode,nonDRXTimer,splitOnCCCH,
+ cnSpecificDRXCycleLength)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+// 11.3.12
+type record EMLPP_Priority_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT3 callPriority,
+ BIT5 spare
+} with {
+ variant "PRESENCE(iEI = '0B'O)";
+ variant (lengthIndicator) "LENGTHTO (callPriority,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+// 11.3.13
+type record Flush_Action
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 actionValue
+} with {
+ variant "PRESENCE(iEI = '0C'O)";
+ variant (lengthIndicator) "LENGTHTO (actionValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+
+// 11.3.14
+type record IMSI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT3 type_of_Identity,
+ BIT1 oddevenIndicator, // '1'B or '0'B
+ hexstring digits length(5..15)
+} with {
+ variant "PRESENCE(iEI = '0D'O)";
+ variant (lengthIndicator) "LENGTHTO (type_of_Identity,
+ oddevenIndicator,digits)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ //variant (fillerDigit) "PRESENCE (oddevenIndicator = '0'B) ";
+ variant (digits) "HEXORDER(low)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant "PADDING(yes)";
+ variant "PADDING_PATTERN('1'B)"
+
+ };
+
+// 11.3.15
+//NOTE: lengthIndicator-short form will be converted to long form
+// if needed during encoding
+type record LLC_PDU
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring lLC_PDU // Note: this is divided into 2 parts in spec!
+} with {
+ variant "PRESENCE(iEI = '0E'O)";
+ variant (lengthIndicator) "LENGTHTO (lLC_PDU)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.16
+type record LLC_Frames_Discarded
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ hexstring number_of_frames_discarded length (2)
+ } with {
+ variant "PRESENCE(iEI = '0F'O)";
+ variant (lengthIndicator) "LENGTHTO (number_of_frames_discarded)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.17
+type record Location_Area
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac
+} with {
+ variant "PRESENCE(iEI = '10'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,
+ mncDigit3,mncDigit1,mncDigit2,lac)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.18
+type record LSA_Identifier_List_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring lSA_Identifier_List // encoded LSA Identifier List
+} with {
+ variant "PRESENCE(iEI = '26'O)";
+ variant (lengthIndicator) "LENGTHTO (lSA_Identifier_List)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.19
+type record LSA_Information_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ LSA_Information lSA_Information // encoded LSA Information 48.008
+} with {
+ variant "PRESENCE(iEI = '27'O)";
+ variant (lengthIndicator) "LENGTHTO (lSA_Information)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record LSA_Information // encoded LSA Information 48.008
+{
+ BIT1 lSA_Only,
+ BIT7 spare,
+ LSA_Identification_and_Attributes_List lSA_Identification_and_Attributes_List
+}
+
+type record of LSA_Identification_and_Attributes LSA_Identification_and_Attributes_List;
+
+type record LSA_Identification_and_Attributes
+{
+ BIT4 priority,
+ BIT1 pref,
+ BIT1 act,
+ BIT2 spare,
+ OCT3 lSA_ID
+}
+
+
+// 11.3.20
+type record Mobile_Id_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ MobileIdentityV_BSSGP mobile_Identity
+} with {
+ variant "PRESENCE(iEI = '11'O)";
+ variant (lengthIndicator) "LENGTHTO (mobile_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// MobileIdentityV structure copied from 24.008 MobileL3
+type record MobileIdentityV_BSSGP
+{
+ BIT3 typeOfIdentity,
+ OddEvenInd_Identity_BSSGP oddEvenInd_identity
+} with {
+ variant (oddEvenInd_identity) "CROSSTAG
+ (
+ imei, typeOfIdentity ='010'B;
+ imsi, typeOfIdentity ='001'B;
+ imei_sv, typeOfIdentity ='011'B;
+ )"
+};
+
+type union OddEvenInd_Identity_BSSGP
+{
+ IMSI_MobileIdentityV imsi,
+ IMEI_MobileIdentityV imei,
+ IMEI_SV_MobileIdentityV imei_sv
+};
+
+type record IMSI_MobileIdentityV
+{
+ 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_MobileIdentityV
+{
+ BIT1 oddevenIndicator, // '1'B
+ hexstring digits length(15)
+};
+
+type record IMEI_SV_MobileIdentityV
+{
+ BIT1 oddevenIndicator, // '0'B
+ hexstring digits length(16),
+ BIT4 fillerDigit // filler '1111'B
+};
+
+// 11.3.21
+type record MS_Bucket_Size
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 bmax
+} with {
+ variant "PRESENCE(iEI = '12'O)";
+ variant (lengthIndicator) "LENGTHTO (bmax)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.22
+// Note : structure from 24.008 Mobile L3
+type record MS_Radio_Access_Capability
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ MSRadioAccessCapabilityV_BSSGP mSRadioAccessCapabilityV_BSSGP
+} with {
+ variant "PRESENCE(iEI = '13'O)";
+ variant (lengthIndicator) "LENGTHTO (mSRadioAccessCapabilityV_BSSGP)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant /*(ext,lengthIndicator)*/ "FIELDORDER(msb)";
+ variant "PADDING(yes)"
+};
+
+type record of MSRACapabilityValuesRecord_BSSGP MSRadioAccessCapabilityV_BSSGP
+with { variant "EXTENSION_BIT(reverse)";variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValuesRecord_BSSGP
+{
+ MSRACapabilityValues_BSSGP mSRACapabilityValues,
+ BIT1 presenceBitMSRACap
+} with { variant "FIELDORDER(msb)" };
+
+
+type union MSRACapabilityValues_BSSGP
+{
+ MSRACapabilityValuesExclude1111_BSSGP mSRACapabilityValuesExclude1111,
+ MSRACapabilityValues1111_BSSGP mSRACapabilityValues1111
+} with { variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValuesExclude1111_BSSGP
+{
+ BIT4 accessTechnType,
+ AccessCapabilitiesStruct_BSSGP 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_BSSGP
+{
+ integer lengthIndicator,
+ AccessCapabilities_BSSGP 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_BSSGP
+{
+ BIT3 rfPowerCapability,
+ BIT1 presenceBitA5,
+ A5BITS_BSSGP a5bits optional,
+ BIT1 esind,
+ BIT1 psbit,
+ BIT1 vgcs,
+ BIT1 vbs,
+ BIT1 presenceBitMultislot,
+ MultislotCap_BSSGP multislotcap optional,
+ AccessCapAdditionsAfterRel97_BSSGP 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_BSSGP
+{
+ AccessCapAdditionsRel99_BSSGP accessCapAdditionsRel99,
+ AccessCapAdditionsAfterRel99_BSSGP accessCapAdditionsAfterRel99 optional
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel99_BSSGP
+{
+ 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_BSSGP
+{
+ AccessCapAdditionsRel4_BSSGP accessCapAdditionsRel4,
+ AccessCapAdditionsAfterRel4_BSSGP accessCapAdditionsAfterRel4 optional
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel4_BSSGP
+{
+ BIT1 umts128RadAccTechCap,
+ BIT1 geranFeaturePackage,
+ BIT1 presenceBitExtendedDTM,
+ ExtendedDTM_BSSGP extendedDTM optional,
+ BIT1 modulationBasedMultislotClass
+} with {
+ variant "FIELDORDER(msb)";
+ variant (extendedDTM) "PRESENCE(presenceBitExtendedDTM = '1'B)";
+}
+
+
+type record AccessCapAdditionsAfterRel4_BSSGP
+{
+ AccessCapAdditionsRel5_BSSGP accessCapAdditionsRel5,
+ AccessCapAdditionsAfterRel5_BSSGP accessCapAdditionsAfterRel5 optional
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel5_BSSGP
+{
+ BIT1 presenceBitHighMultislotCapability,
+ BIT2 highMultislotCapability optional,
+ BIT1 presenceBitGeranIuModeCapability,
+ GeranIuModeCap_BSSGP geranIuModeCap optional,
+ 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)";
+ variant (geranIuModeCap)"PRESENCE(presenceBitGeranIuModeCapability = '1'B)"
+}
+
+
+type record GeranIuModeCap_BSSGP
+{
+ integer lengthIndicator,
+ BIT1 fLOIuCapability,
+ bitstring spare_bits
+ // 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
+} with {
+ variant "FIELDORDER(msb)";
+ variant (lengthIndicator) "FIELDLENGTH(4)";
+ variant (lengthIndicator) "LENGTHTO(fLOIuCapability,spare_bits)";
+ variant (lengthIndicator) "UNIT(bits)";
+}
+
+type record AccessCapAdditionsAfterRel5_BSSGP
+{
+ AccessCapAdditionsRel6_BSSGP accessCapAdditionsRel6,
+ AccessCapAdditionsAfterRel6_BSSGP accessCapAdditionsAfterRel6 optional
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsRel6_BSSGP
+{
+ BIT1 multipleTBFCapability,
+ BIT2 downlinkAdvancedReceiverPerformance,
+ BIT1 extendedRLCMACCtrlMsgSegmentationCap,
+ BIT1 dTMEnhancementsCapability,
+ BIT1 presenceBitDTMGPRSHighMultiSlotClass,
+ DTMGPRSHighMultiSlotClass_BSSGP dTMGPRSHighMultiSlotClass optional,
+ BIT1 pSHandoverCapability
+} with {
+ variant "FIELDORDER(msb)";
+variant(downlinkAdvancedReceiverPerformance) "BYTEORDER(last)";
+ variant (dTMGPRSHighMultiSlotClass)
+ "PRESENCE(presenceBitDTMGPRSHighMultiSlotClass = '1'B)"
+}
+
+
+type record DTMGPRSHighMultiSlotClass_BSSGP
+{
+ 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)"
+
+}
+
+//New
+type record AccessCapAdditionsAfterRel6_BSSGP
+{
+ AccessCapAdditionsRel7_BSSGP accessCapAdditionsRel7,
+ AccessCapAdditionsAfterRel7_BSSGP accessCapAdditionsAfterRel7 optional
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+
+type record AccessCapAdditionsRel7_BSSGP
+{
+ BIT1 dTMHandoverCapability,
+ BIT1 presenceBitDownlinkDualCarrier,
+ DownlinkDualCarrier_BSSGP downlinkDualCarrier optional,
+ BIT1 flexibleTimeslotAssignment,
+ BIT1 gANPSHandoverCapability,
+ BIT1 rLCNonPersistentMode,
+ BIT1 reducedLatencyEGPRSCapability,
+ 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_BSSGP
+{
+ AccessCapAdditionsRel8_BSSGP accessCapAdditionsRel8,
+ AccessCapAdditionsAfterRel8_BSSGP accessCapAdditionsAfterRel8
+}
+
+
+
+type record DownlinkDualCarrier_BSSGP
+{
+ BIT3 multislotCapReductionforDownLinkDualCarrier,
+ BIT1 downlinkDualCarrierforDTMCapability
+} with { variant "FIELDORDER(msb)"
+variant(multislotCapReductionforDownLinkDualCarrier) "BYTEORDER(last)";
+ };
+
+
+type record ExtendedDTM_BSSGP
+{
+ BIT2 ExtendedDTM_GPRSMultislot,
+ BIT2 ExtendedDTM_EGPRSMultislot
+} with { variant "FIELDORDER(msb)";
+variant(ExtendedDTM_GPRSMultislot) "BYTEORDER(last)";
+variant(ExtendedDTM_EGPRSMultislot) "BYTEORDER(last)";
+};
+
+type record AccessCapAdditionsRel8_BSSGP
+{
+ BIT1 eUTRAFDDsupport ,
+ BIT1 eUTRATDDsupport,
+ BIT2 gERANToEUTRASupportInGERANPacketTransferMode,
+ BIT1 priorityBasedReselectionSupport
+} with {
+variant(gERANToEUTRASupportInGERANPacketTransferMode) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)"
+}
+
+type record AccessCapAdditionsAfterRel8_BSSGP
+{
+ AccessCapAdditionsRel9_BSSGP accessCapAdditionsRel9,
+ AccessCapAdditionsAfterRel9_BSSGP accessCapAdditionsAfterRel9
+}
+
+type record AccessCapAdditionsRel9_BSSGP
+{
+ EnhancedFlexTimeslotAssignment_BSSGP enhancedFlexTimeslotAssignment,
+ BIT1 indicationofUpperLayerPDUStartCapabilityforRLCUM,
+ BIT1 eMSTCapability,
+ BIT1 mTTICapability,
+ BIT1 uTRACSGCellsReporting,
+ BIT1 eUTRACSGCellsReporting
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsAfterRel9_BSSGP
+{
+ AccessCapAdditionsRel10_BSSGP accessCapAdditionsRel10,
+ AccessCapAdditionsAfterRel10_BSSGP accessCapAdditionsAfterRel10
+}
+
+type record AccessCapAdditionsRel10_BSSGP
+{
+ BIT1 dTRCapability,
+ BIT1 eMSRCapability,
+ BIT1 fastDownlinkFrequencySwitchingCapability,
+ BIT2 tIGHTER_Capability
+} with {
+variant(tIGHTER_Capability) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsAfterRel10_BSSGP
+{
+ AccessCapAdditionsRel11_BSSGP accessCapAdditionsRel11,
+ AccessCapAdditionsAfterRel11_BSSGP accessCapAdditionsAfterRel11
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsRel11_BSSGP
+{
+ BIT1 fANRCapability,
+ BIT1 iPACapability,
+ BIT1 gERANNetworkSharingSupport,
+ BIT1 eUTRAWidebandRSRQMeasurementsSupport
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsAfterRel11_BSSGP
+{
+ AccessCapAdditionsRel12_BSSGP accessCapAdditionsRel12,
+ AccessCapAdditionsAfterRel12_BSSGP accessCapAdditionsAfterRel12
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsRel12_BSSGP
+{
+ BIT1 uTRAMultipleFrequencyBandIndicatorsSupport,
+ BIT1 eUTRAMultipleFrequencyBandIndicatorsSupport,
+ BIT1 presenceBitDLMCCapability,
+ DLMCCapability_BSSGP dLMCCapability optional,
+ BIT1 extendedTSCSetCapabilitySupport
+} with {
+ variant "FIELDORDER(msb)";
+ variant (dLMCCapability) "PRESENCE(presenceBitDLMCCapability = '1'B)"
+}
+
+type record DLMCCapability_BSSGP
+{
+ BIT1 presenceDLMC,
+ DLMCBandReception_BSSGP 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_BSSGP
+{
+ BIT2 dLMCNonContiguousIntraBandReception,
+ BIT1 dLMCInterBandReception
+} with {
+variant(dLMCNonContiguousIntraBandReception) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapAdditionsAfterRel12_BSSGP
+{
+ AccessCapLateAdditionsRel11_BSSGP accessCapLateAdditionsRel11,
+ octetstring accessCapLateAdditionsAfterRel11
+} with {
+ variant "FIELDORDER(msb)";
+}
+
+type record AccessCapLateAdditionsRel11_BSSGP
+{
+ BIT1 extendedEARFCNValueRange
+}
+
+type record EnhancedFlexTimeslotAssignment_BSSGP
+{
+ BIT1 presenceBitalternativeEFTAMultislotClass,
+ BIT4 alternativeEFTAMultislotClass,
+ BIT3 eFTAMultislotCapabilityReductionforDownlinkDualCarrier
+} with {
+variant(alternativeEFTAMultislotClass) "BYTEORDER(last)";
+variant(eFTAMultislotCapabilityReductionforDownlinkDualCarrier) "BYTEORDER(last)";
+ variant "FIELDORDER(msb)"
+};
+
+
+
+//MultislotCap
+type record MultislotCap_BSSGP
+{
+ BIT1 presenceBitHscsd,
+ BIT5 hscsdmultislotclass optional,
+ BIT1 presenceBitGprs,
+ MultislotCap_GPRS_BSSGP gprsmultislot optional,
+ BIT1 presenceBitSms,
+ MultislotCap_SMS_BSSGP multislotCap_SMS optional,
+ MultislotCapAdditionsAfterRel97_BSSGP 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_BSSGP
+{
+ BIT1 presenceBitEcsdmulti,
+ BIT5 ecsdmultislotclass optional,
+ BIT1 presenceBitEgprsmulti,
+ MultislotCap_EGPRS_BSSGP multislotCap_EGPRS optional,
+ BIT1 presenceBitDtmGprsmulti,
+ MultislotCap_dtmgprsmultislotsubclass_BSSGP
+ 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_BSSGP
+{
+ BIT5 gprsmultislotclass,
+ BIT1 gprsextendeddynalloccap
+} with { variant "FIELDORDER(msb)";
+variant(gprsmultislotclass) "BYTEORDER(last)"
+ };
+
+
+type record MultislotCap_SMS_BSSGP
+{
+ BIT4 smsValue,
+ BIT4 smValue
+} with { variant "FIELDORDER(msb)";
+variant(smsValue) "BYTEORDER(last)";
+variant(smValue) "BYTEORDER(last)"
+
+};
+
+
+type record MultislotCap_EGPRS_BSSGP
+{
+ BIT5 egprsmultislotclass,
+ BIT1 egprsextendeddynalloccap
+} with { variant "FIELDORDER(msb)";
+variant(egprsmultislotclass) "BYTEORDER(last)"
+ };
+
+type record MultislotCap_dtmgprsmultislotsubclass_BSSGP
+{
+ 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_BSSGP
+{
+ BIT1 a51 ,
+ BIT1 a52 ,
+ BIT1 a53 ,
+ BIT1 a54 ,
+ BIT1 a55 ,
+ BIT1 a56 ,
+ BIT1 a57
+} with { variant "FIELDORDER(msb)" };
+
+
+type record MSRACapabilityValues1111_BSSGP
+{
+ BIT4 accessTechnType, //1111
+ integer lengthIndicator,
+ BIT1 presenceIndicator_AdditionalAccessTechnologiesRepetition,
+ AdditionalAccessTechnologiesRepetition_BSSGP // 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_BSSGP
+ AdditionalAccessTechnologiesRepetition_BSSGP
+with { variant "EXTENSION_BIT(reverse)" };
+
+
+type record AdditionalAccessTechnologiesRecord_BSSGP
+{
+ AdditionalAccessTechnologies_BSSGP additionalAccessTechnologies,
+ BIT1 extensionBit
+} with { variant "FIELDORDER(msb)" };
+
+
+type record AdditionalAccessTechnologies_BSSGP
+{
+ BIT4 accessTechnType,
+ BIT3 gMSKPowerClass,
+ BIT2 psk8PowerClass
+} with { variant "FIELDORDER(msb)";
+variant (accessTechnType) "BYTEORDER(last)";
+variant (gMSKPowerClass) "BYTEORDER(last)";
+variant (psk8PowerClass) "BYTEORDER(last)";
+ };
+
+
+
+// 11.3.23
+type record OMC_Id_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT20 oMC_Identity
+} with {
+ variant "PRESENCE(iEI = '14'O)";
+ variant (lengthIndicator) "LENGTHTO (oMC_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.24
+//NOTE: lengthIndicator-short form will be converted to
+// long form if needed during encoding
+type record PDU_in_Error
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring erroneous_BSSGP_PDU
+} with {
+ variant "PRESENCE(iEI = '15'O)";
+ variant (lengthIndicator) "LENGTHTO (erroneous_BSSGP_PDU)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.25
+type record PDU_Lifetime
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 delay_Value
+} with {
+ variant "PRESENCE(iEI = '16'O)";
+ variant (lengthIndicator) "LENGTHTO (delay_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.27
+type record Priority_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 pvi,
+ BIT1 qa,
+ BIT4 priority_Level, //(1..14) 0: spare, 15: not used
+ BIT1 pci,
+ BIT1 spare
+} with {
+ variant "PRESENCE(iEI = '17'O)";
+ variant (lengthIndicator) "LENGTHTO (pvi,qa,priority_Level,pci,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.28
+type record QoS_Profile
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 peak_Bit_Rate,
+ BIT3 precedence,
+ BIT1 a_bit,
+ BIT1 t_bit,
+ BIT1 c_r_bit,
+ BIT2 peakBitRateGranularity
+} with {
+ variant "PRESENCE(iEI = '18'O)";
+ variant (lengthIndicator) "LENGTHTO (peak_Bit_Rate,precedence,
+ a_bit,t_bit,c_r_bit,peakBitRateGranularity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type record QoS_Profile_V
+{
+ OCT2 peak_Bit_Rate,
+ BIT3 precedence,
+ BIT1 a_bit,
+ BIT1 t_bit,
+ BIT1 c_r_bit,
+ BIT2 peakBitRateGranularity
+}
+
+// 11.3.29
+type record Radio_Cause
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 radio_Cause_Value
+} with {
+ variant "PRESENCE(iEI = '19'O)";
+ variant (lengthIndicator) "LENGTHTO (radio_Cause_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.30
+type record RA_Cap_UPD_CAUSE
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 rA_CAP_UPD_Cause_value
+} with {
+ variant "PRESENCE(iEI = '1A'O)";
+ variant (lengthIndicator) "LENGTHTO (rA_CAP_UPD_Cause_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.31
+type record Routeing_Area
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac
+} with {
+ variant "PRESENCE(iEI = '1B'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+ mncDigit1,mncDigit2,lac,rac)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.32
+type record R_default_MS
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 r_default_MS_value
+} with {
+ variant "PRESENCE(iEI = '1C'O)";
+ variant (lengthIndicator) "LENGTHTO (r_default_MS_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.33
+type record Suspend_Reference_Number
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 suspend_Reference_Number_value
+} with {
+ variant "PRESENCE(iEI = '1D'O)";
+ variant (lengthIndicator) "LENGTHTO (suspend_Reference_Number_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.34
+type record Tag
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 unstructured_Value
+} with {
+ variant "PRESENCE(iEI = '1E'O)";
+ variant (lengthIndicator) "LENGTHTO (unstructured_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.35
+type record TLLI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT4 tLLI_Value
+} with {
+ variant "PRESENCE(iEI = '1F'O)";
+ variant (lengthIndicator) "LENGTHTO (tLLI_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.36
+// Note : reference in spec is to "TMSI/P-TMSI information element in
+// 3GPP TS 24.008", however this specification has Mobile Identity
+// IE which includes TMSI/P-TMSI
+type record TMSI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT4 tMSI_Value
+} with {
+ variant "PRESENCE(iEI = '20'O)";
+ variant (lengthIndicator) "LENGTHTO (tMSI_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.37
+type record Trace_Reference_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 trace_Reference
+} with {
+ variant "PRESENCE(iEI = '21'O)";
+ variant (lengthIndicator) "LENGTHTO (trace_Reference)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.38
+type record Trace_Type_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 equipment_Trace
+} with {
+ variant "PRESENCE(iEI = '22'O)";
+ variant (lengthIndicator) "LENGTHTO (equipment_Trace)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+
+};
+
+
+// 11.3.39
+type record TransactionId_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 transaction_Id
+} with {
+ variant "PRESENCE(iEI = '23'O)";
+ variant (lengthIndicator) "LENGTHTO (transaction_Id)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.40
+type record Trigger_Id_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT20 entity_Identity
+} with {
+ variant "PRESENCE(iEI = '24'O)";
+ variant (lengthIndicator) "LENGTHTO (entity_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.41
+type record Number_of_octets_affected
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT3 number_of_octets_transfered_or_deleted
+ // could be changed to integer input if simpler
+} with {
+ variant "PRESENCE(iEI = '25'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (number_of_octets_transfered_or_deleted)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.42
+type record PFI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT7 pFI_Value,
+ BIT1 spare // '0'B according to 10.5.6.11 of 24.008
+
+} with {
+ variant "PRESENCE(iEI = '28'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (pFI_Value,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.43
+// Note : structure from 24.008
+type record ABQP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT3 reliabilityClass,
+ BIT3 delayClass,
+ BIT2 spare1, // '00'B
+ BIT3 precedenceClass,
+ BIT1 spare2,
+ BIT4 peakThroughput,
+ BIT5 meanThroughput,
+ BIT3 spare3,
+ 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
+ OCT1 maxBitRateDownlinkExtended optional,
+ OCT1 guaranteedBitRateDownlinkExtended optional,
+ OCT1 maxBitrateUplinkExtended optional, //opt because of V97
+ OCT1 guaranteedBitRateUplinkExtended optional //opt because of V97
+} with {
+ variant "PRESENCE(iEI = '3A'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (reliabilityClass,delayClass,spare1,precedenceClass,
+ spare2,peakThroughput,
+ meanThroughput,spare3
+ ,deliverErroneusSDU,deliveryOrder,trafficClass,maxSDUSize,
+ maxBitrateUplink,maxBitrateDownlink,sduErrorRatio,residualBER,
+ trafficHandlingPriority,transferDelay,guaranteedBitRateUplink,
+ guaranteedBitRateDownlink,sourceStatisticsDescriptor,
+ signallingIndication,spare4,maxBitRateDownlinkExtended,
+ guaranteedBitRateDownlinkExtended,maxBitrateUplinkExtended,
+ guaranteedBitRateUplinkExtended)";
+
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ };
+
+
+// 11.3.44
+type record GPRS_Timer
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT5 timer_Value,
+ BIT3 unit_Value
+} with {
+ variant "PRESENCE(iEI = '29'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (timer_Value,unit_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.45
+type record Feature_bitmap
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 pFC,
+ BIT1 cBL,
+ BIT1 iNR,
+ BIT1 lCS,
+ BIT1 rIM,
+ BIT1 pFC_FC,
+ BIT1 enhancedRadioStatus,
+ BIT1 mBMS
+} with {
+ variant "PRESENCE(iEI = '3B'O)";
+ variant (lengthIndicator) "LENGTHTO (pFC,cBL,iNR,lCS,rIM,pFC_FC,
+ enhancedRadioStatus,mBMS)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.46
+type record Bucket_Full_Ratio
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 rate_of_the_Bucket
+ // could be changed to integer input if simpler
+} with {
+ variant "PRESENCE(iEI = '3C'O)";
+ variant (lengthIndicator) "LENGTHTO (rate_of_the_Bucket)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ }
+
+
+// 11.3.47
+type record Service_UTRAN_CCO
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT3 service_UTRAN_CCO_Value,
+ BIT2 service_E_UTRAN_CCO_Value,
+ BIT3 spare
+} with {
+ variant "PRESENCE(iEI = '3D'O)";
+ variant (lengthIndicator) "LENGTHTO (service_UTRAN_CCO_Value,service_E_UTRAN_CCO_Value,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// new IE for Wendy Xiang and Freeman Feng
+type record Service_Class_Indicator {
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 serviceClassIndicator
+} with {
+ variant "PRESENCE(iEI = '99'O)";
+ variant (lengthIndicator) "LENGTHTO (serviceClassIndicator)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.48
+type record NSEI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT2 nSEI
+} with {
+ variant "PRESENCE(iEI = '3E'O)";
+ variant (lengthIndicator) "LENGTHTO (nSEI)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.49
+type record RRLP_APDU_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring rRLP_Message
+} with {
+ variant "PRESENCE(iEI = '3F'O)";
+ variant (lengthIndicator) "LENGTHTO (rRLP_Message)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ //variant "PADDING(yes)";
+}
+
+
+// 11.3.50
+// 24.008 -> 49.031
+type record LCS_QoS_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 vert,
+ BIT1 vel,
+ BIT6 spare1,
+ BIT7 horizontal_Accuracy,
+ BIT1 hA_Indicator, // 1: is specified
+ BIT7 vertical_Accuracy,
+ BIT1 vA_Indicator, // 1: is specified
+ BIT6 spare2,
+ BIT2 response_Time_Category
+} with {
+ variant "PRESENCE(iEI = '40'O)";
+ variant (lengthIndicator) "LENGTHTO (vert,vel,spare1,horizontal_Accuracy,hA_Indicator,vertical_Accuracy,vA_Indicator,spare2,response_Time_Category)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.51
+// 49.031
+type record LCS_Client_Type_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT4 client_Subtype,
+ BIT4 client_Category
+} with {
+ variant "PRESENCE(iEI = '41'O)";
+ variant (lengthIndicator) "LENGTHTO (client_Subtype,client_Category)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.52
+// 49.031
+type record Requested_GPS_Assistance_Data_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Requested_GPS_Assistance_Data_Value requested_GPS_Assistance_Data
+} with {
+ variant "PRESENCE(iEI = '42'O)";
+ variant (lengthIndicator) "LENGTHTO (requested_GPS_Assistance_Data)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Requested_GPS_Assistance_Data_Value
+{
+ OCT1 bits_H_to_A,
+ OCT1 bits_P_to_I,
+ SatelliteRelatedData satelliteRelatedData
+}
+
+type record SatelliteRelatedData
+{
+ BIT6 spare,
+ BIT10 gPS_Week,
+ OCT1 gPS_Toe,
+ BIT4 t_Toe_Limit,
+ integer nSAT,
+ SatID_and_IODE_List satID_and_IODE_List
+} with { variant(nSAT) "FIELDLENGTH(4)";
+ variant(nSAT) "LENGTHTO(satID_and_IODE_List)";
+ variant(nSAT) "UNIT(elements)";
+}
+
+type record of SatID_and_IODE SatID_and_IODE_List;
+
+type record SatID_and_IODE
+{
+ BIT6 satID,
+ BIT2 spare,
+ OCT1 iODE
+}
+
+// 11.3.53
+// 49.031
+type record Location_Type_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 location_Information,
+ OCT1 positioning_Method optional
+} with {
+ variant "PRESENCE(iEI = '43'O)";
+ variant (lengthIndicator) "LENGTHTO (location_Information,positioning_Method)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.54
+// 48.008 -> 23.03
+type record Location_Estimate_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring location // encoded location information
+} with {
+ variant "PRESENCE(iEI = '44'O)";
+ variant (lengthIndicator) "LENGTHTO (location)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.55
+// 49.031
+type record Positioning_Data_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ PositioningDataValue positioningDataValue // encoded location data
+} with {
+ variant "PRESENCE(iEI = '45'O)";
+ variant (lengthIndicator) "LENGTHTO (positioningDataValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record PositioningDataValue
+{
+ BIT4 positioningDataDiscriminator,
+ BIT4 spare,
+ PositioningMethod_List positioningMethod_List
+}
+
+type record of PositioningMethodValue PositioningMethod_List;
+
+type record PositioningMethodValue
+{
+ BIT3 usage,
+ BIT5 positioningMethod
+}
+
+// 11.3.56
+type record Deciphering_Keys_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ DecipheringKeysValue decipheringKeysValue // encoded deciphering keys data
+} with {
+ variant "PRESENCE(iEI = '46'O)";
+ variant (lengthIndicator) "LENGTHTO (decipheringKeysValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record DecipheringKeysValue
+{
+ BIT1 cipheringkeyFlag,
+ BIT7 spare,
+ OCT7 currentDecipheringKeyValue,
+ OCT7 nextDecipheringKeyValue
+}
+
+// 11.3.57
+// 49.031
+type record LCS_Priority_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 priority_Value // 0: highest, other: normal
+} with {
+ variant "PRESENCE(iEI = '47'O)";
+ variant (lengthIndicator) "LENGTHTO (priority_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.58
+// 49.031
+type record LCS_Cause_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 cause_Value,
+ OCT1 diagnostic_Value optional
+} with {
+ variant "PRESENCE(iEI = '48'O)";
+ variant (lengthIndicator) "LENGTHTO (cause_Value,diagnostic_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.59
+// 24.008
+type record LCS_Capability_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 gPS_C,
+ BIT1 gPS_B,
+ BIT1 gPS_A,
+ BIT1 oTD_B,
+ BIT1 oTD_A,
+ BIT3 spare
+} with {
+ variant "PRESENCE(iEI = '49'O)";
+ variant (lengthIndicator) "LENGTHTO (gPS_C,gPS_B,gPS_A,oTD_B,oTD_A,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.60
+type record RRLP_Flags_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 flag1,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '4A'O)";
+ variant (lengthIndicator) "LENGTHTO (flag1,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.61
+type record RIM_Application_Identity
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 rIMApplicationIdentity
+} with {
+ variant "PRESENCE(iEI = '4B'O)";
+ variant (lengthIndicator) "LENGTHTO (rIMApplicationIdentity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+//11.3.62
+type record RIM_Sequence_Number
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT4 rIMSequenceNumber
+} with {
+ variant "PRESENCE(iEI = '4C'O)";
+ variant (lengthIndicator) "LENGTHTO (rIMSequenceNumber)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.1
+type record RAN_Information_Request_RIM_Container
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a lengthIndicator,
+RIM_Application_Identity rIM_Application_Identity,
+RIM_Sequence_Number rIM_Sequence_Number,
+RIM_PDU_Indications rIM_PDU_Indications,
+RIM_Protocol_Version_Number rIM_Protocol_Version_Number optional,
+RAN_Information_Request_Application_Container application_Container optional,
+SON_Transfer_Application_Identity_TLV sON_Transfer_Application_Identity_TLV optional
+} with {
+ variant "PRESENCE(iEI = '57'O)";
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ application_Container,sON_Transfer_Application_Identity_TLV)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (application_Container)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '01'O,
+ rIM_Application_Identity.rIMApplicationIdentity = '02'O,
+ rIM_Application_Identity.rIMApplicationIdentity = '03'O)";
+ variant (application_Container)
+ "CROSSTAG
+ (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)"
+};
+
+
+// Table 11.3.62a.2
+type record RAN_Information_RIM_Container
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a lengthIndicator,
+RIM_Application_Identity rIM_Application_Identity,
+RIM_Sequence_Number rIM_Sequence_Number,
+RIM_PDU_Indications rIM_PDU_Indications,
+RIM_Protocol_Version_Number rIM_Protocol_Version_Number optional,
+ApplContainer_or_ApplErrContainer applContainer_or_ApplErrContainer optional,
+SON_Transfer_Application_Identity_TLV sON_Transfer_Application_Identity optional
+} with {
+ variant "PRESENCE(iEI = '58'O)";
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ applContainer_or_ApplErrContainer,sON_Transfer_Application_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (applContainer_or_ApplErrContainer)
+ "PRESENCE
+ (rIM_Application_Identity.rIMApplicationIdentity = '01'O,
+ rIM_Application_Identity.rIMApplicationIdentity = '02'O,
+ rIM_Application_Identity.rIMApplicationIdentity = '03'O)";
+ variant (applContainer_or_ApplErrContainer)
+ "CROSSTAG
+ (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)"
+};
+
+
+type union ApplContainer_or_ApplErrContainer
+{
+ ApplContainer_or_ApplErrContainer_NACC nacc,
+ ApplContainer_or_ApplErrContainer_SI3 si3,
+ ApplContainer_or_ApplErrContainer_MBMS_data_channel mBMS_data_channel
+}
+
+type union ApplContainer_or_ApplErrContainer_NACC
+{
+ RAN_Information_Application_Container_NACC application_Container,
+ Application_Error_Container_NACC application_Error_Container
+};
+
+type union ApplContainer_or_ApplErrContainer_SI3
+{
+ RAN_Information_Application_Container_SI3 application_Container,
+ Application_Error_Container_SI3 application_Error_Container
+};
+
+type union ApplContainer_or_ApplErrContainer_MBMS_data_channel
+{
+ RAN_Information_Application_Container_MBMS_data_channel application_Container,
+ Application_Error_Container_MBMS_data_channel application_Error_Container
+};
+
+// Table 11.3.62a.3
+type record RAN_Information_Ack_RIM_Container
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a lengthIndicator,
+RIM_Application_Identity rIM_Application_Identity,
+RIM_Sequence_Number rIM_Sequence_Number,
+RIM_Protocol_Version_Number rIM_Protocol_Version_Number optional,
+SON_Transfer_Application_Identity_TLV sON_Transfer_Application_Identity optional
+} with {
+ variant "PRESENCE(iEI = '5A'O)";
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_Protocol_Version_Number,sON_Transfer_Application_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.4
+type record RAN_Information_Error_RIM_Container
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a lengthIndicator,
+RIM_Application_Identity rIM_Application_Identity,
+Cause_BSSGP rIM_cause,
+RIM_Protocol_Version_Number rIM_Protocol_Version_Number optional,
+PDU_in_Error pDU_in_Error,
+SON_Transfer_Application_Identity_TLV sON_Transfer_Application_Identity optional
+} with {
+ variant "PRESENCE(iEI = '5B'O)";
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_cause,rIM_Protocol_Version_Number,pDU_in_Error,sON_Transfer_Application_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// Table 11.3.62a.5
+type record RAN_Information_Application_Error_RIM_Container
+{
+OCT1 iEI,
+BIT1 ext,
+LIN2_2a lengthIndicator,
+RIM_Application_Identity rIM_Application_Identity,
+RIM_Sequence_Number rIM_Sequence_Number,
+RIM_PDU_Indications rIM_PDU_Indications,
+RIM_Protocol_Version_Number rIM_Protocol_Version_Number optional,
+Application_Error_Container application_Error_Container,
+SON_Transfer_Application_Identity_TLV sON_Transfer_Application_Identity optional
+} with {
+ variant "PRESENCE(iEI = '59'O)";
+ variant (lengthIndicator) "LENGTHTO (rIM_Application_Identity,
+ rIM_Sequence_Number,rIM_PDU_Indications,rIM_Protocol_Version_Number,
+ application_Error_Container,sON_Transfer_Application_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (application_Error_Container)
+ "CROSSTAG
+ (nacc,rIM_Application_Identity.rIMApplicationIdentity = '01'O;
+ si3,rIM_Application_Identity.rIMApplicationIdentity = '02'O;
+ mBMS_data_channel,rIM_Application_Identity.rIMApplicationIdentity = '03'O;)"
+};
+
+
+// 11.3.63.1
+type union RAN_Information_Request_Application_Container
+{
+RAN_Information_Request_Application_Container_NACC nacc,
+RAN_Information_Request_Application_Container_SI3 si3,
+RAN_Information_Request_Application_Container_MBMS_data_channel mBMS_data_channel
+}
+
+
+//Table 11.3.63.1.1
+type record RAN_Information_Request_Application_Container_NACC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier
+} with {
+ variant "PRESENCE(iEI = '4D'O)";
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//Table 11.3.63.1.2
+type record RAN_Information_Request_Application_Container_SI3
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier
+} with {
+ variant "PRESENCE(iEI = '4D'O)";
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//Table 11.3.63.1.3
+type record RAN_Information_Request_Application_Container_MBMS_data_channel
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier
+} with {
+ variant "PRESENCE(iEI = '4D'O)";
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.1.4
+type record RAN_Information_Request_Application_Container_SON_transfer
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier,
+ OCTN sON_Transfer_Request_Container
+} with {
+ variant "PRESENCE(iEI = '4D'O)";
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier,sON_Transfer_Request_Container)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.1.5
+type record RAN_Information_Request_Application_Container_UTRA_SI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier
+} with {
+ variant "PRESENCE(iEI = '4D'O)";
+ variant (lengthIndicator) "LENGTHTO (reporting_Cell_Identifier)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//Table 11.3.63.2.1
+type record RAN_Information_Application_Container_NACC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier,
+ BIT1 typeBit,
+ BIT7 number_of_SI_PSI,
+ octetstring sI_PSI
+} with {
+ variant "PRESENCE(iEI = '4E'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,typeBit,number_of_SI_PSI,sI_PSI)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//Table 11.3.63.2.2
+type record RAN_Information_Application_Container_SI3
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier,
+ SI3 sI3
+} with {
+ variant "PRESENCE(iEI = '4E'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,sI3)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//44.018 9.1.35
+type record SI3
+{
+ OCT1 sI3MessageType, //'1B'O
+ OCT2 cellIdentity, //10.5.1.1 -> 24.008
+ LocationAreaIdentification locationAreaIdentification, //10.5.1.3 -> 24.008
+ ControlChannelDescription controlChannelDescription, //10.5.2.11
+ CellOptions cellOptions, //10.5.2.3
+ CellSelectionParameters cellSelectionParameters, //10.5.2.4
+ RACHControlParameters rACHControlParameters, //10.5.2.29
+ OCT4 sI3RestOctets //10.5.2.34, bit encoded
+}
+
+type record LocationAreaIdentification
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac
+}
+
+type record ControlChannelDescription
+{
+ BIT3 cCCH_Conf,
+ BIT3 bS_AG_BLKS_RES,
+ BIT1 aTT,
+ BIT1 mSCR,
+ BIT3 bS_PA_MFRMS,
+ BIT2 spare1, //'00'B
+ BIT2 cBQ3,
+ BIT1 spare2, //'0'B
+ OCT1 t3212
+}
+
+type record CellOptions
+{
+ BIT4 radioLinkTimeout,
+ BIT2 dTX1,
+ BIT1 pWRC,
+ BIT1 dtx2
+}
+
+type record CellSelectionParameters
+{
+ BIT5 mS_TXPWR_MAX_CCH,
+ BIT3 cellReselectHysterisis,
+ BIT6 rXLEV_Access_Min,
+ BIT1 nECI,
+ BIT1 aCS
+}
+
+type record RACHControlParameters
+{
+ BIT1 rE,
+ BIT1 cellBarrAccess,
+ BIT4 tX_Integer,
+ BIT2 maxRetrans,
+ OCT1 aC_15_to_8,
+ OCT1 aC_7_to_0
+}
+
+//Table 11.3.63.2.3
+type record RAN_Information_Application_Container_MBMS_data_channel
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier,
+ octetstring mBMS_data_channel_report //bit encoded
+} with {
+ variant "PRESENCE(iEI = '4E'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,mBMS_data_channel_report)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.2.4
+type record RAN_Information_Application_Container_SON_transfer
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT4 rAT_Discriminator,
+ BIT4 spare,
+ Cell_Identifier reporting_Cell_Identifier,
+ OCTN sON_Transfer_Response_Container
+} with {
+ variant "PRESENCE(iEI = '4E'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (rAT_Discriminator,spare,reporting_Cell_Identifier,sON_Transfer_Response_Container)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.63.2.5
+type record RAN_Information_Application_Container_UTRA_SI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Cell_Identifier reporting_Cell_Identifier,
+ OCTN uTRA_SI_Container
+} with {
+ variant "PRESENCE(iEI = '4E'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (reporting_Cell_Identifier,uTRA_SI_Container)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.64
+type union Application_Error_Container
+{
+ Application_Error_Container_NACC nacc,
+ Application_Error_Container_SI3 si3,
+ Application_Error_Container_MBMS_data_channel mBMS_data_channel
+}
+
+//11.3.64.1
+type record Application_Error_Container_NACC
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 nACC_cause,
+ Application_Container_IE_NACC erroneousApplicationContainer
+} with {
+ variant "PRESENCE(iEI = '56'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (nACC_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+type union Application_Container_IE_NACC
+{
+ RAN_Information_Request_Application_Container_NACC
+ rAN_Information_Request_Application_Container,
+
+ RAN_Information_Application_Container_NACC
+ rAN_Information_Application_Container
+};
+
+//11.3.64.2
+type record Application_Error_Container_SI3
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 sI3_cause,
+ Application_Container_IE_SI3 erroneousApplicationContainer
+} with {
+ variant "PRESENCE(iEI = '56'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (sI3_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type union Application_Container_IE_SI3
+{
+ RAN_Information_Request_Application_Container_SI3
+ rAN_Information_Request_Application_Container,
+
+ RAN_Information_Application_Container_SI3
+ rAN_Information_Application_Container
+};
+
+
+//11.3.64.3
+type record Application_Error_Container_MBMS_data_channel
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 mBMS_data_channel_cause,
+ Application_Container_IE_MBMS_data_channel erroneousApplicationContainer
+} with {
+ variant "PRESENCE(iEI = '56'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (mBMS_data_channel_cause,erroneousApplicationContainer)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type union Application_Container_IE_MBMS_data_channel
+{
+ RAN_Information_Request_Application_Container_MBMS_data_channel
+ rAN_Information_Request_Application_Container,
+
+ RAN_Information_Application_Container_MBMS_data_channel
+ rAN_Information_Application_Container
+};
+
+//11.3.64.4
+type record Application_Error_Container_SON_transfer
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 sON_transfer_cause,
+ Application_Container_IE_SON_transfer erroneousApplicationContainer
+};
+
+type union Application_Container_IE_SON_transfer
+{
+ RAN_Information_Request_Application_Container_SON_transfer
+ rAN_Information_Request_Application_Container,
+ RAN_Information_Application_Container_SON_transfer
+ rAN_Information_Application_Container
+};
+
+//11.3.64.5
+type record Application_Error_Container_UTRA_SI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 uTRA_SI_cause,
+ Application_Container_IE_UTRA_SI erroneousApplicationContainer
+};
+
+type union Application_Container_IE_UTRA_SI
+{
+ RAN_Information_Request_Application_Container_UTRA_SI
+ rAN_Information_Request_Application_Container,
+ RAN_Information_Application_Container_UTRA_SI
+ rAN_Information_Application_Container
+};
+
+//11.3.65
+type record RIM_PDU_Indications
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 ack,
+ BIT3 pDU_Type_Extension,
+ BIT4 reserved
+} with {
+ variant "PRESENCE(iEI = '4F'O)";
+ variant (lengthIndicator) "LENGTHTO (ack,pDU_Type_Extension,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+//11.3.67
+type record RIM_Protocol_Version_Number
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 rIMProtocolVersionNumber
+} with {
+ variant "PRESENCE(iEI = '55'O)";
+ variant (lengthIndicator) "LENGTHTO (rIMProtocolVersionNumber)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.68
+type record PFC_flow_control_parameters
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ integer number_of_PFC (0..11),
+ PFCs pFCs
+} with {
+ variant "PRESENCE(iEI = '52'O)";
+ variant (lengthIndicator) "LENGTHTO (number_of_PFC,pFCs)";
+ variant (number_of_PFC) "LENGTHTO (pFCs)";
+ variant (number_of_PFC) "UNIT(elements)"
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+type record length(0..11) of PFC PFCs;
+
+type record PFC
+{
+BIT7 pFI_Value,
+BIT1 spare, // '0'B according to 10.5.6.11 of 24.008
+OCT2 bmax_PFC,
+OCT2 r_PFC,
+OCT1 b_PFC
+};
+
+// 11.3.69
+type record Global_CN_Id_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Global_CN_Id_Value global_CN_Id // encoded Global CN-Id
+} with {
+ variant "PRESENCE(iEI = '53'O)";
+ variant (lengthIndicator) "LENGTHTO (global_CN_Id)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Global_CN_Id_Value
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 cN_Id
+}
+
+
+// 11.3.70
+type record RIM_Routing_Information
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 rIMRoutingAddressDiscriminator,
+ HEX1 spare,
+ RIM_Routing_Address rIM_Routing_Address
+} with {
+ variant "PRESENCE(iEI = '54'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (rIMRoutingAddressDiscriminator,spare,rIM_Routing_Address)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (rIM_Routing_Address)
+ "CROSSTAG (cell_Identifier, rIMRoutingAddressDiscriminator = '0'H;
+ globalRNCID, rIMRoutingAddressDiscriminator = '1'H;
+ eNB_Identifier, rIMRoutingAddressDiscriminator = '2'H;
+ eHRPD_SectorID, rIMRoutingAddressDiscriminator = '3'H
+ )"
+};
+
+type union RIM_Routing_Address
+{
+ Cell_Identifier_V cell_Identifier,
+ GlobalRNC_ID_BSSGP globalRNCID,
+ ENB_Identifier_V eNB_Identifier,
+ octetstring eHRPD_SectorID
+}
+
+type record GlobalRNC_ID_BSSGP
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac,
+ HEX1 spare,
+ integer rNC_ID
+} with {
+ variant (spare,rNC_ID) "FIELDORDER(msb)";
+ variant (rNC_ID) "BYTEORDER(last)";
+ variant (rNC_ID) "FIELDLENGTH(12)";
+}
+
+type record ENB_Identifier_V {
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 tac,
+ octetstring globaleNBID
+}
+
+
+// 11.3.71
+type record MBMS_Session_Identity
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 mBMS_Session_Identifier_Value
+} with {
+ variant "PRESENCE(iEI = '5D'O)";
+ variant (lengthIndicator) "LENGTHTO (mBMS_Session_Identifier_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.72
+// 29.061
+
+type record MBMS_Session_Duration
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring mBMS_Session_Duration_Value
+} with {
+ variant "PRESENCE(iEI = '5E'O)";
+ variant (lengthIndicator) "LENGTHTO (mBMS_Session_Duration_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.73
+type record MBMS_Service_Area_Identity_List
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring mBMS_Service_Area_Identity_List_Value
+} with {
+ variant "PRESENCE(iEI = '5F'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (mBMS_Service_Area_Identity_List_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.74
+type record MBMS_Response
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 causeValue,
+ HEX1 spare
+} with {
+ variant "PRESENCE(iEI = '60'O)";
+ variant (lengthIndicator) "LENGTHTO (causeValue,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.75
+type record MBMS_Routing_Area_List
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 spare,
+ HEX1 number_of_Routing_Area_Identifications,
+ octetstring routing_Area_Identifications optional
+
+} with {
+ variant "PRESENCE(iEI = '61'O)";
+ variant (lengthIndicator)
+ "LENGTHTO (spare,number_of_Routing_Area_Identifications,
+ routing_Area_Identifications)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+
+// 11.3.76
+type record MBMS_Session_Information
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 bCMC,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '62'O)";
+ variant (lengthIndicator) "LENGTHTO (bCMC, spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+//11.3.77
+// 24.008 10.5.6.13
+type record TMGI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT3 mBMS_Service_ID,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2
+} with {
+ variant "PRESENCE(iEI = '5C'O)";
+ variant (lengthIndicator) "LENGTHTO
+ (mBMS_Service_ID,mccDigit1,mccDigit2,mccDigit3,mncDigit3,
+ mncDigit1,mncDigit2)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.78 MBMS Stop Cause
+type record MBMS_Stop_Cause
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 causeValue,
+ HEX1 spare
+} with {
+ variant "PRESENCE(iEI = '63'O)";
+ variant (lengthIndicator) "LENGTHTO (causeValue, spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+};
+
+// 11.3.79
+type record Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Source_BSS_to_Target_BSS_Transparent_Container_Contents
+ source_BSS_to_Target_BSS_Transparent_Container_Contents
+} with {
+ variant "PRESENCE(iEI = '64'O)";
+ variant (lengthIndicator) "LENGTHTO (source_BSS_to_Target_BSS_Transparent_Container_Contents)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Source_BSS_to_Target_BSS_Transparent_Container_Contents
+{
+ MS_Radio_Access_Capability mS_Radio_Access_Capability,
+ Inter_RAT_Handover_Info_BSSGP inter_RAT_Handover_Info optional,
+ Page_Mode_BSSGP page_Mode_BSSGP optional,
+ Container_ID_BSSGP container_ID optional,
+ Global_TFI_BSSGP global_TFI optional,
+ PS_HandoverIndications pS_HandoverIndications optional,
+ CS_Indication cS_Indication optional,
+ E_UTRAN_Inter_RAT_Handover_Info e_UTRAN_Inter_RAT_Handover_Info optional,
+ IRAT_Measurement_Configuration iRAT_Measurement_Configuration optional,
+ Source_Cell_ID source_Cell_ID optional,
+ IRAT_Measurement_Configuration_Extended_eARFCNs iRAT_Measurement_Configuration_Extended_eARFCNs optional
+};
+
+// 11.3.80
+type record Target_BSS_to_Source_BSS_Transparent_Container
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ Target_BSS_to_Source_BSS_Transparent_Container_Contents
+ target_BSS_to_Source_BSS_Transparent_Container_Contents
+} with {
+ variant "PRESENCE(iEI = '65'O)";
+ variant (lengthIndicator) "LENGTHTO (target_BSS_to_Source_BSS_Transparent_Container_Contents)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+//Note: Only PS_Handover_Command_BSSGP or DTM_Handover_Command is present
+type record Target_BSS_to_Source_BSS_Transparent_Container_Contents
+{
+ PS_Handover_Command_BSSGP pS_Handover_Command optional,
+ SI_PSI_Container sI_PSI_Container optional, //NEW
+ DTM_Handover_Command dTM_Handover_Command optional //NEW
+}
+
+// 11.3.81
+type record NAS_container_for_PS_Handover
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ NAS_Container_for_PS_HO nAS_Container_for_PS_HO
+} with {
+ variant "PRESENCE(iEI = '66'O)";
+ variant (lengthIndicator) "LENGTHTO (nAS_Container_for_PS_HO)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//24.008 10.5.1.14
+type record NAS_Container_for_PS_HO
+{
+ BIT3 typeOfCipheringAlgorithm,
+ BIT1 spare1,
+ BIT1 oldXID,
+ BIT3 spare2,
+ OCT4 iOV_UI
+}
+
+// 11.3.82
+type record PFCs_to_be_set_up_list
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ integer number_of_PFCs (1..11), // note: 0 and 12 .. 255 are reserved!!!
+ Multiple_PFCs_BSSGP pFCs
+} with {
+ variant "PRESENCE(iEI = '67'O)";
+ variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFCs)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFCs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+type record Single_PFC_BSSGP
+{
+ PFI pFI,
+ GPRS_Timer pFT,
+ ABQP aBQP,
+ Priority_BSSGP allocation_Retention_Priority optional,
+ GPRS_Timer t10 optional
+}
+
+type record length (1..11) of Single_PFC_BSSGP Multiple_PFCs_BSSGP;
+
+
+// 11.3.83
+type record List_of_set_up_PFCs_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ integer number_of_PFCs (0..11), // note: 12 .. 255 are reserved!!!
+ Multiple_PFIs_BSSGP pFIs
+} with {
+ variant "PRESENCE(iEI = '68'O)";
+ variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFIs)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFIs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+type record Single_PFI_BSSGP
+{
+ BIT7 pFI_Value,
+ BIT1 spare
+}
+
+type record length (0..11) of Single_PFI_BSSGP Multiple_PFIs_BSSGP;
+
+
+// 11.3.84 Extended Feature Bitmap
+type record Extended_Feature_Bitmap
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 pS_Handover,
+ BIT1 gigabitInterface,
+ BIT1 mOCN,
+ BIT1 cS_PS_Coordination_Enhancements,
+ BIT4 spare
+} with {
+ variant "PRESENCE(iEI = '69'O)";
+ variant (lengthIndicator) "LENGTHTO (pS_Handover,gigabitInterface,mOCN,cS_PS_Coordination_Enhancements,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.85
+type record Source_to_Target_Transparent_Container
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring source_to_Target_Transparent_Container_Contents //RANAP ASN.1 PER
+} with {
+ variant "PRESENCE(iEI = '6A'O)";
+ variant (lengthIndicator) "LENGTHTO (source_to_Target_Transparent_Container_Contents)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.86
+type record Target_to_Source_Transparent_Container
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message //ASN.1
+} with {
+ variant "PRESENCE(iEI = '6B'O)";
+ variant (lengthIndicator) "LENGTHTO (handover_to_UTRAN_or_Radio_Bearer_Reconfiguration_radio_interface_message)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+
+// 11.3.87
+type record RNC_Identifier_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac,
+ OCT2 rNC_ID
+} with {
+ variant "PRESENCE(iEI = '6C'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1, mccDigit2, mccDigit3, mncDigit3, mncDigit1, mncDigit2,
+ lac, rac, rNC_ID)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.88
+type record Page_Mode_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT2 page_mode, // specified in 3GPP TS 44.060
+ BIT6 reserved
+} with {
+ variant "PRESENCE(iEI = '6D'O)";
+ variant (lengthIndicator) "LENGTHTO (page_mode,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.89
+type record Container_ID_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT2 container_ID, // specified in 3GPP TS 44.060
+ BIT6 reserved
+} with {
+ variant "PRESENCE(iEI = '6E'O)";
+ variant (lengthIndicator) "LENGTHTO (container_ID,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.90
+type record Global_TFI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT6 global_TFI, // specified in 3GPP TS 44.060
+ BIT2 reserved
+} with {
+ variant "PRESENCE(iEI = '6F'O)";
+ variant (lengthIndicator) "LENGTHTO (global_TFI,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.91
+type record IMEI_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ IMEI_Value iMEI
+} with {
+ variant "PRESENCE(iEI = '70'O)";
+ variant (lengthIndicator) "LENGTHTO (iMEI)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record IMEI_Value
+{
+ BIT3 typeOfIdentity,
+ BIT1 oddevenIndicator,
+ hexstring digits length(15)
+}
+
+
+// 11.3.92 Time to MBMS Data Transfer
+type record Time_To_MBMS_Data_Transfer
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 valuePart
+} with {
+ variant "PRESENCE(iEI = '71'O)";
+ variant (lengthIndicator) "LENGTHTO (valuePart)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.93 MBMS Session Repetition Number
+type record MBMS_Session_Repetition_Number
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring repetitionNumber
+} with {
+ variant "PRESENCE(iEI = '72'O)";
+ variant (lengthIndicator) "LENGTHTO (repetitionNumber)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.94
+type record Inter_RAT_Handover_Info_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring inter_RAT_Handover_Information //as specified in 3GPP TS 25.331
+} with {
+ variant "PRESENCE(iEI = '73'O)";
+ variant (lengthIndicator) "LENGTHTO (inter_RAT_Handover_Information)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.95
+type record PS_Handover_Command_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring pS_Handover_Command_radio_interface_message
+} with {
+ variant "PRESENCE(iEI = '74'O)";
+ variant (lengthIndicator) "LENGTHTO (pS_Handover_Command_radio_interface_message)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.95a
+type record PS_HandoverIndications
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 sI_PSI,
+ BIT2 dMLC_Carriers,
+ BIT5 spare
+} with {
+ variant "PRESENCE(iEI = '75'O)";
+ variant (lengthIndicator) "LENGTHTO (sI_PSI,dMLC_Carriers,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+// 11.3.95b
+type record SI_PSI_Container
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 typeField,
+ SI_PSI_ContainerValue sI_PSI_ContainerValue
+} with {
+ variant "PRESENCE(iEI = '76'O)";
+ variant (lengthIndicator) "LENGTHTO (typeField,sI_PSI_ContainerValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (sI_PSI_ContainerValue) "CROSSTAG
+ (
+ sI_message_Container, typeField ='0'B;
+ pSI_message_Container, typeField ='1'B;
+ )";
+ };
+
+type union SI_PSI_ContainerValue
+{
+ SI_message_Container sI_message_Container,
+ PSI_message_Container pSI_message_Container
+}
+
+type record SI_message_Container
+{
+ integer number_of_SI,
+ SI_message_List sI_message_List
+} with {
+ variant (number_of_SI) "UNIT(elements),LENGTHTO(sI_message_List),FIELDORDER(msb),FIELDLENGTH(7)";
+}
+
+type record PSI_message_Container
+{
+ integer number_of_PSI,
+ PSI_message_List pSI_message_List
+} with {
+ variant (number_of_PSI) "UNIT(elements),LENGTHTO(pSI_message_List),FIELDORDER(msb),FIELDLENGTH(7)";
+}
+
+type record of SI_message SI_message_List;
+
+type record of PSI_message PSI_message_List;
+
+type octetstring SI_message length (21);
+
+type octetstring PSI_message length (22);
+
+
+// 11.3.95c 48.008 CR 240
+type record Active_PFCs_List_BSSGP
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ integer number_of_PFCs (0..11), // note: 12 .. 255 are reserved!!!
+ Multiple_PFIs_BSSGP pFIs
+} with {
+ variant "PRESENCE(iEI = '77'O)";
+ variant (lengthIndicator) "LENGTHTO (number_of_PFCs,pFIs)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (number_of_PFCs) "UNIT(elements),LENGTHTO(pFIs),FIELDORDER(msb),FIELDLENGTH(8)";
+}
+
+//11.3.96
+type record VelocityData
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring velocityDataValue // 23.032
+}with {
+ variant "PRESENCE(iEI = '78'O)";
+ variant (lengthIndicator) "LENGTHTO (velocityDataValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.97
+type record DTM_Handover_Command
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring dTM_HandoverCommandValue // 44.060
+} with {
+ variant "PRESENCE(iEI = '79'O)";
+ variant (lengthIndicator) "LENGTHTO (dTM_HandoverCommandValue)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.98
+type record CS_Indication
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 cS_IndicationContents //48.008
+} with {
+ variant "PRESENCE(iEI = '7A'O)";
+ variant (lengthIndicator) "LENGTHTO (cS_IndicationContents)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.99
+type record Requested_GANSS_Assistance_Data
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ octetstring requested_GANSS_Assistance_Data_Value //49.031
+} with {
+ variant "PRESENCE(iEI = '7B'O)";
+ variant (lengthIndicator) "LENGTHTO (requested_GANSS_Assistance_Data_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.100
+type record GANSS_Location_Type
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 galileo,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '7C'O)";
+ variant (lengthIndicator) "LENGTHTO (galileo,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+// 11.3.101
+//49.031
+type record GANSS_Positioning_Data
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ GANSS_Positioning_DataList gANSS_Positioning_DataList
+} with {
+ variant "PRESENCE(iEI = '7D'O)";
+ variant (lengthIndicator) "LENGTHTO (gANSS_Positioning_DataList)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record of GANSS_Positioning_DataValue GANSS_Positioning_DataList
+
+type record GANSS_Positioning_DataValue
+{
+ BIT3 usage,
+ BIT3 gANSS_ID,
+ BIT2 method
+}
+
+//11.3.102
+type record Flow_Control_Granularity
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT2 granularity,
+ BIT6 reserved
+} with {
+ variant "PRESENCE(iEI = '7E'O)";
+ variant (lengthIndicator) "LENGTHTO (granularity,reserved)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.103
+type record ENB_Identifier
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 tac,
+ OCTN globalEnbID
+
+} with {
+ variant "PRESENCE(iEI = '7F'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1, mccDigit2, mccDigit3, mncDigit3, mncDigit1,
+ mncDigit2, tac, globalEnbID)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.104
+type record E_UTRAN_Inter_RAT_Handover_Info
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCTN ue_EUTRA_Capability
+
+} with {
+ variant "PRESENCE(iEI = '80'O)";
+ variant (lengthIndicator) "LENGTHTO (ue_EUTRA_Capability)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//11.3.105
+type record Subscriber_Profile_ID_For_RAT_Priority
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT8 profile_ID
+} with {
+ variant "PRESENCE(iEI = '81'O)";
+ variant (lengthIndicator) "LENGTHTO (profile_ID)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.106
+type record Request_For_Inter_RAT_Handover_Info
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 interRATHandoverInfoRequest,
+ BIT1 eUTRANinterRATHandoverInfoRequest,
+ BIT6 spare
+} with {
+ variant "PRESENCE(iEI = '82'O)";
+ variant (lengthIndicator) "LENGTHTO (interRATHandoverInfoRequest,eUTRANinterRATHandoverInfoRequest,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.107
+type record Reliable_Inter_RAT_Handover_Info
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 reliableInterRATHandoverInfoIndicator,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '83'O)";
+ variant (lengthIndicator) "LENGTHTO (reliableInterRATHandoverInfoIndicator,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.108
+type record SON_Transfer_Application_Identity_TLV
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCTN sON_Transfer_Application_Identity //3GPP TS 36.413 [36]
+} with {
+ variant "PRESENCE(iEI = '84'O)";
+ variant (lengthIndicator) "LENGTHTO (sON_Transfer_Application_Identity)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.109
+type record CSG_Identifier_TLV
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ CSG_Identity cSG_Identity, //3GPP TS 23.003, bits 4 to 8 of octet 6 are spare
+ BIT1 cell_Acces_Mode,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '85'O)";
+ variant (lengthIndicator) "LENGTHTO (cSG_Identity,cell_Acces_Mode,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record CSG_Identity
+{
+ OCT3 cSG_Id24,
+ BIT3 cSG_Id3,
+ BIT5 spare // '0'B
+};
+
+//11.3.110
+type record Tracking_Area_Code_TLV
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT3 valueField //3GPP TS 24.301
+} with {
+ variant "PRESENCE(iEI = '86'O)";
+ variant (lengthIndicator) "LENGTHTO (valueField)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.111
+type record Redirect_Attempt_Flag
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 spare
+} with {
+ variant "PRESENCE(iEI = '87'O)";
+ variant (lengthIndicator) "LENGTHTO (spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.112
+type record Redirection_Indication
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT8 reroute_Reject_Cause_value
+} with {
+ variant "PRESENCE(iEI = '88'O)";
+ variant (lengthIndicator) "LENGTHTO (reroute_Reject_Cause_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.113
+type record Redirection_Completed
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT8 outcome_value
+} with {
+ variant "PRESENCE(iEI = '89'O)";
+ variant (lengthIndicator) "LENGTHTO (outcome_value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.114
+type record Unconfirmed_Send_State_Variable
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT7 spare,
+ integer vU
+} with {
+ variant "PRESENCE(iEI = '8A'O)";
+ variant (lengthIndicator) "LENGTHTO (spare,vU)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+ variant (vU) "FIELDLENGTH(9)";
+ variant (vU) "BYTEORDER(last)";
+ variant (spare,vU) "FIELDORDER(msb)";
+}
+
+//11.3.115
+type record IRAT_Measurement_Configuration
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ INT6b reportingThreshold,
+ BIT1 repQuant,
+ BIT1 spare,
+ INT1 measurementDuration,
+ Measurement_List measurement_List
+} with {
+ variant "PRESENCE(iEI = '8B'O)";
+ variant (lengthIndicator) "LENGTHTO (reportingThreshold,repQuant,spare,measurementDuration,measurement_List)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Measurement
+{
+ LIN2_BO_LAST e_ARFCN,
+ BIT3 measurementBandwidth,
+ BIT5 spare
+}
+
+type record of Measurement Measurement_List;
+
+type record RNC_Id_with_Transparent_Container_BSSGP
+{
+ RNC_Identifier_BSSGP target_RNC_Identifier,
+ Source_to_Target_Transparent_Container
+ source_to_Target_Transparent_Container
+}
+
+type union Cell_or_RNC_Id_with_Transparent_Container_BSSGP
+{
+ Cell_Id_with_Transparent_Container_BSSGP cell_Id_with_Transparent_Container,
+ RNC_Id_with_Transparent_Container_BSSGP rnc_Id_with_Transparent_Container
+}
+
+type record Cell_Id_with_Transparent_Container_BSSGP
+{
+ Cell_Identifier target_Cell_Identifier,
+ Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+ source_BSS_to_Target_BSS_Transparent_Container
+}
+
+//11.3.116
+type record SCI
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 service_Class_Value
+} with {
+ variant "PRESENCE(iEI = '8c'O)";
+ variant (lengthIndicator) "LENGTHTO (service_Class_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.117
+type record GGSN_PGW_Location
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT3 gGSN_PGW_Location_Value,
+ BIT5 spare
+} with {
+ variant "PRESENCE(iEI = '8d'O)";
+ variant (lengthIndicator) "LENGTHTO (gGSN_PGW_Location_Value)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.118
+type record Selected_PLMN_ID
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2
+} with {
+ variant "PRESENCE(iEI = '8e'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.119
+type record Priority_Class_Indicator
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT1 priority_Class_Indicator_Value,
+ BIT7 spare
+} with {
+ variant "PRESENCE(iEI = '8f'O)";
+ variant (lengthIndicator) "LENGTHTO (priority_Class_Indicator_Value,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.120
+type record Source_Cell_ID
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ TrackingAreaIdentity_BSSGP tracking_Area_Identity,
+ ECGI_BSSGP eUTRAN_CGI,
+ octetstring globaleNBID
+} with {
+ variant "PRESENCE(iEI = '90'O)";
+ variant (lengthIndicator) "LENGTHTO (tracking_Area_Identity,eUTRAN_CGI,globaleNBID)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+type record TrackingAreaIdentity_BSSGP
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 tAC
+}
+
+type record ECGI_BSSGP
+{
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ HEX1 spare,
+ integer eCI
+} with {
+ variant (spare,eCI) "FIELDORDER(msb)";
+ variant(eCI) "FIELDLENGTH(28)";
+ variant (eCI) "BYTEORDER(last)";
+};
+
+
+//11.3.121
+type record IRAT_Measurement_Configuration_Extended_eARFCNs
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ INT6b reportingThreshold,
+ BIT1 repQuant,
+ BIT1 spare,
+ INT1 measurementDuration,
+ Measurement_List_Extended measurement_List
+} with {
+ variant "PRESENCE(iEI = '91'O)";
+ variant (lengthIndicator) "LENGTHTO (reportingThreshold,repQuant,spare,measurementDuration,measurement_List)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+type record Measurement_Extended
+{
+ INT18b_BO_LAST e_ARFCN,
+ BIT3 spare,
+ BIT3 measurementBandwidth
+} with {
+ variant (e_ARFCN,spare,measurementBandwidth) "FIELDORDER(msb)";
+}
+type record of Measurement_Extended Measurement_List_Extended;
+
+//11.3.122
+type record EDRX_Parameters
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ BIT4 eDRX_Cycle_Value,
+ BIT4 spare
+} with {
+ variant "PRESENCE(iEI = '92'O)";
+ variant (lengthIndicator) "LENGTHTO (eDRX_Cycle_Value,spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.123
+type record Time_Until_Next_Paging_Occasion
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ INT6b minutes,
+ BIT2 spare,
+ INT6b seconds,
+ BIT2 spare2
+} with {
+ variant "PRESENCE(iEI = '93'O)";
+ variant (lengthIndicator) "LENGTHTO (minutes,spare,seconds,spare2)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.124
+type record Old_Routing_Area_Identification
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2,
+ OCT2 lac,
+ OCT1 rac
+} with {
+ variant "PRESENCE(iEI = '94'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2,lac,rac)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.125
+type record Attach_Indicator
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 spare
+} with {
+ variant "PRESENCE(iEI = '95'O)";
+ variant (lengthIndicator) "LENGTHTO (spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.126
+type record PLMN_Identity
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ HEX1 mccDigit1,
+ HEX1 mccDigit2,
+ HEX1 mccDigit3,
+ HEX1 mncDigit3,
+ HEX1 mncDigit1,
+ HEX1 mncDigit2
+} with {
+ variant "PRESENCE(iEI = '96'O)";
+ variant (lengthIndicator) "LENGTHTO (mccDigit1,mccDigit2,mccDigit3,mncDigit3,mncDigit1,mncDigit2)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+//11.3.127
+type record MME_Query
+{
+ OCT1 iEI,
+ BIT1 ext,
+ LIN2_2a lengthIndicator,
+ OCT1 spare
+} with {
+ variant "PRESENCE(iEI = '97'O)";
+ variant (lengthIndicator) "LENGTHTO (spare)";
+ variant (lengthIndicator) "CROSSTAG( length1, ext = '1'B;
+ length2, ext = '0'B;)";
+ variant (ext,lengthIndicator) "FIELDORDER(msb)";
+}
+
+
+//-----------------------------------------------------------------------------
+// PDUs
+//-----------------------------------------------------------------------------
+
+//10.2.1
+type record PDU_BSSGP_DL_UNITDATA
+{
+ OCT1 bssgpPduType,
+ OCT4 tLLI_current,
+ QoS_Profile_V qoS_Profile,
+ PDU_Lifetime pDU_Lifetime,
+ MS_Radio_Access_Capability mS_Radio_Access_Capability optional,
+ Priority_BSSGP priority optional,
+ DRX_Parameters dRX_Parameters optional,
+ IMSI_BSSGP iMSI optional,
+ TLLI_BSSGP tLLI_old optional,
+ PFI pFI optional,
+ LSA_Information_BSSGP lSA_Information optional,
+ Service_UTRAN_CCO service_UTRAN_CCO optional,
+ Service_Class_Indicator service_Class_Indicator optional,
+ Subscriber_Profile_ID_For_RAT_Priority subscriber_Profile_ID_For_RAT_Priority optional,
+ Redirection_Indication redirection_Indication optional,
+ Redirection_Completed redirection_Completed optional,
+ Unconfirmed_Send_State_Variable unconfirmed_Send_State_Variable optional,
+ SCI sCI optional,
+ GGSN_PGW_Location gGSN_PGW_Location optional,
+ EDRX_Parameters eDRX_Paremeters optional,
+ Old_Routing_Area_Identification old_Routing_Area_Identification optional,
+ Attach_Indicator attach_Indicator optional,
+ Alignment_octets alignment_octets optional,
+ LLC_PDU lLC_PDU,
+ LLC_PDU initialLLC_PDU optional
+} with { variant "PRESENCE(bssgpPduType = '00'O)"; };
+
+//10.2.2
+type record PDU_BSSGP_UL_UNITDATA
+{
+ OCT1 bssgpPduType,
+ OCT4 tLLI,
+ QoS_Profile_V qoS_Profile,
+ Cell_Identifier cell_Identifier,
+ PFI pFI optional,
+ LSA_Identifier_List_BSSGP lSA_Identifier_List optional,
+ Redirect_Attempt_Flag redirect_Attempt_Flag optional,
+ IMSI_BSSGP iMSI_BSSGP optional,
+ Unconfirmed_Send_State_Variable unconfirmed_Send_State_Variable optional,
+ Selected_PLMN_ID selected_PLMN_ID optional,
+ PLMN_Identity selected_Operator optional,
+ PLMN_Identity cS_Registered_Operator optional,
+ Alignment_octets alignment_octets optional,
+ LLC_PDU lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '01'O)"; };
+
+//10.2.3
+type record PDU_BSSGP_RA_CAPABILITY
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ MS_Radio_Access_Capability mS_Radio_Access_Capability
+} with { variant "PRESENCE(bssgpPduType = '02'O)"; };
+
+//10.2.5
+type record PDU_BSSGP_DL_MBMS_UNITDATA
+{
+ OCT1 bssgpPduType,
+ PDU_Lifetime pDU_Lifetime,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ Alignment_octets alignment_octets optional,
+ LLC_PDU lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '04'O)"; };
+
+
+// 10.2.6; Deleted from spec 7.10.0,kept in prot module for backward compatibility
+type record PDU_BSSGP_UL_MBMS_UNITDATA
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ Alignment_octets alignment_octets optional,
+ LLC_PDU lLC_PDU
+} with { variant "PRESENCE(bssgpPduType = '05'O)"; };
+
+// 10.3.1
+type record PDU_BSSGP_PAGING_PS
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ DRX_Parameters dRX_Parameters optional,
+ Paging_Field4 paging_Field4,
+ PFI pFI optional,
+ ABQP aBQP optional,
+ QoS_Profile qoS_Profile,
+ TMSI_BSSGP pTMSI optional,
+ EDRX_Parameters eDRX_Paremeters optional
+} with { variant "PRESENCE(bssgpPduType = '06'O)"; };
+
+//10.3.2
+type record PDU_BSSGP_PAGING_CS
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ DRX_Parameters dRX_Parameters,
+ Paging_Field4 paging_Field4,
+ TLLI_BSSGP tLLI optional,
+ Channel_needed channel_needed optional,
+ EMLPP_Priority_BSSGP eMLPP_Priority optional,
+ TMSI_BSSGP tMSI optional,
+ Global_CN_Id_BSSGP global_CN_Id optional
+} with { variant "PRESENCE(bssgpPduType = '07'O)"; };
+
+
+type union Paging_Field4
+{
+ BVCI bVCI,
+ Location_Area location_Area,
+ Routeing_Area routeing_Area,
+ BSS_Area_Indication bSS_Area_Indication
+};
+
+//10.3.3
+type record PDU_BSSGP_RA_CAPABILITY_UPDATE
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag
+} with { variant "PRESENCE(bssgpPduType = '08'O)"; };
+
+
+//10.3.4
+type record PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag,
+ IMSI_BSSGP iMSI optional,
+ RA_Cap_UPD_CAUSE rA_Cap_UPDATE_CAUSE,
+ MS_Radio_Access_Capability mS_Radio_Access_Capability optional
+} with { variant "PRESENCE(bssgpPduType = '09'O)"; };
+
+//10.3.5
+type record PDU_BSSGP_RADIO_STATUS
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI optional,
+ TMSI_BSSGP tMSI optional,
+ IMSI_BSSGP iMSI optional,
+ Radio_Cause radio_Cause
+} with { variant "PRESENCE(bssgpPduType = '0A'O)"; };
+
+//10.3.6
+type record PDU_BSSGP_SUSPEND
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area
+} with { variant "PRESENCE(bssgpPduType = '0B'O)"; };
+
+// 10.3.7
+type record PDU_BSSGP_SUSPEND_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area ,
+ Suspend_Reference_Number suspend_Reference_Number
+} with { variant "PRESENCE(bssgpPduType = '0C'O)"; };
+
+// 10.3.8
+type record PDU_BSSGP_SUSPEND_NACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area,
+ Cause_BSSGP cause optional
+} with { variant "PRESENCE(bssgpPduType = '0D'O)"; };
+
+// 10.3.9
+type record PDU_BSSGP_RESUME
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area,
+ Suspend_Reference_Number suspend_Reference_Number
+} with { variant "PRESENCE(bssgpPduType = '0E'O)"; };
+
+//10.3.10
+type record PDU_BSSGP_RESUME_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area
+} with { variant "PRESENCE(bssgpPduType = '0F'O)"; };
+
+// 10.3.11
+type record PDU_BSSGP_RESUME_NACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Routeing_Area routeing_Area,
+ Cause_BSSGP cause optional
+} with { variant "PRESENCE(bssgpPduType = '10'O)"; };
+
+// 10.3.12
+type record PDU_BSSGP_PAGING_PS_REJECT
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ TMSI_BSSGP pTMSI optional,
+ Time_Until_Next_Paging_Occasion time_Until_Next_Paging_Occasion
+} with { variant "PRESENCE(bssgpPduType = '11'O)"; };
+
+// 10.3.13
+type record PDU_BSSGP_DUMMY_PAGING_PS
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ Routeing_Area routeing_Area optional,
+ EDRX_Parameters eDRX_Paremeters optional
+} with { variant "PRESENCE(bssgpPduType = '12'O)"; };
+
+// 10.3.14
+type record PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ Time_Until_Next_Paging_Occasion time_Until_Next_Paging_Occasion
+} with { variant "PRESENCE(bssgpPduType = '13'O)"; };
+
+// 10.3.15
+type record PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ PLMN_Identity pS_Registered_Operator optional
+} with { variant "PRESENCE(bssgpPduType = '15'O)"; };
+
+// 10.3.15
+type record PDU_BSSGP_MS_REGISTRATION_ENQUIRY
+{
+ OCT1 bssgpPduType,
+ IMSI_BSSGP iMSI,
+ MME_Query mME_Query optional
+} with { variant "PRESENCE(bssgpPduType = '14'O)"; };
+
+// 10.4.1
+type record PDU_BSSGP_FLUSH_LL
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ BVCI bVCI_old,
+ BVCI bVCI_new optional,
+ NSEI_BSSGP nSEI optional
+} with { variant "PRESENCE(bssgpPduType = '2A'O)"; };
+
+// 10.4.2
+type record PDU_BSSGP_FLUSH_LL_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Flush_Action flush_Action,
+ BVCI bVCI_new optional,
+ Number_of_octets_affected number_of_octets_affected,
+ NSEI_BSSGP nSEI optional
+} with { variant "PRESENCE(bssgpPduType = '2B'O)"; };
+
+// 10.4.3
+type record PDU_BSSGP_LLC_DISCARDED
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ LLC_Frames_Discarded lLC_Frames_Discarded,
+ BVCI bVCI,
+ Number_of_octets_affected number_of_octets_deleted,
+ PFI pFI optional
+} with { variant "PRESENCE(bssgpPduType = '2C'O)"; };
+
+// 10.4.4
+type record PDU_BSSGP_FLOW_CONTROL_BVC
+{
+ OCT1 bssgpPduType,
+ Tag tag,
+ BVC_Bucket_Size bVC_Bucket_Size,
+ Bucket_Leak_Rate bucket_Leak_Rate,
+ Bmax_default_MS bmax_default_MS,
+ R_default_MS r_default_MS,
+ Bucket_Full_Ratio bucket_Full_Ratio optional,
+ BVC_Measurement bVC_Measurement optional,
+ Flow_Control_Granularity flow_Control_Granularity optional
+} with { variant "PRESENCE(bssgpPduType = '26'O)"; };
+
+// 10.4.5
+type record PDU_BSSGP_FLOW_CONTROL_BVC_ACK
+{
+ OCT1 bssgpPduType,
+ Tag tag
+} with { variant "PRESENCE(bssgpPduType = '27'O)"; };
+
+// 10.4.6
+type record PDU_BSSGP_FLOW_CONTROL_MS
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag,
+ MS_Bucket_Size mS_Bucket_Size,
+ Bucket_Leak_Rate bucket_Leak_Rate,
+ Bucket_Full_Ratio bucket_Full_Ratio optional,
+ Flow_Control_Granularity flow_Control_Granularity optional
+} with { variant "PRESENCE(bssgpPduType = '28'O)"; };
+
+// 10.4.7
+type record PDU_BSSGP_FLOW_CONTROL_MS_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag
+} with { variant "PRESENCE(bssgpPduType = '29'O)"; };
+
+
+// 10.4.8
+type record PDU_BSSGP_BVC_BLOCK
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI,
+ Cause_BSSGP cause
+} with { variant "PRESENCE(bssgpPduType = '20'O)"; };
+
+// 10.4.9
+type record PDU_BSSGP_BVC_BLOCK_ACK
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI
+} with { variant "PRESENCE(bssgpPduType = '21'O)"; };
+
+// 10.4.10
+type record PDU_BSSGP_BVC_UNBLOCK
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI
+} with { variant "PRESENCE(bssgpPduType = '24'O)"; };
+
+// 10.4.11
+type record PDU_BSSGP_BVC_UNBLOCK_ACK
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI
+} with { variant "PRESENCE(bssgpPduType = '25'O)"; };
+
+// 10.4.12
+type record PDU_BSSGP_BVC_RESET
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI,
+ Cause_BSSGP cause,
+ Cell_Identifier cell_Identifier optional,
+ Feature_bitmap feature_bitmap optional,
+ Extended_Feature_Bitmap extended_Feature_Bitmap optional
+} with { variant "PRESENCE(bssgpPduType = '22'O)"; };
+
+// 10.4.13
+type record PDU_BSSGP_BVC_RESET_ACK
+{
+ OCT1 bssgpPduType,
+ BVCI bVCI,
+ Cell_Identifier cell_Identifier optional,
+ Feature_bitmap feature_bitmap optional,
+ Extended_Feature_Bitmap extended_Feature_Bitmap optional
+} with { variant "PRESENCE(bssgpPduType = '23'O)"; };
+
+// 10.4.14
+type record PDU_BSSGP_STATUS
+{
+ OCT1 bssgpPduType,
+ Cause_BSSGP cause,
+ BVCI bVCI optional,
+ PDU_in_Error pDU_in_Error optional
+} with { variant "PRESENCE(bssgpPduType = '41'O)"; };
+
+// 10.4.15
+type record PDU_BSSGP_SGSN_INVOKE_TRACE
+{
+ OCT1 bssgpPduType,
+ Trace_Type_BSSGP traceType,
+ Trace_Reference_BSSGP traceReference,
+ Trigger_Id_BSSGP triggerId optional,
+ Mobile_Id_BSSGP mobileId optional,
+ OMC_Id_BSSGP omcId optional,
+ TransactionId_BSSGP transactionId optional
+} with { variant "PRESENCE(bssgpPduType = '40'O)"; };
+
+// 10.4.16
+type record PDU_BSSGP_DOWNLOAD_BSS_PFC
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI
+} with { variant "PRESENCE(bssgpPduType = '50'O)"; };
+
+// 10.4.17
+type record PDU_BSSGP_CREATE_BSS_PFC
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ IMSI_BSSGP iMSI optional,
+ PFI pFI,
+ GPRS_Timer pFT,
+ ABQP aBQP,
+ Service_UTRAN_CCO service_UTRAN_CCO optional,
+ MS_Radio_Access_Capability mS_Radio_Access_Capability optional,
+ Priority_BSSGP allocation_Retention_Priority optional,
+ GPRS_Timer t10 optional,
+ Inter_RAT_Handover_Info_BSSGP inter_RAT_Handover_Info optional,
+ E_UTRAN_Inter_RAT_Handover_Info e_UTRAN_Inter_RAT_Handover_Info optional,
+ Subscriber_Profile_ID_For_RAT_Priority subscriber_Profile_ID_For_RAT optional
+
+
+} with { variant "PRESENCE(bssgpPduType = '51'O)"; };
+
+// 10.4.18
+type record PDU_BSSGP_CREATE_BSS_PFC_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI,
+ ABQP aBQP,
+ Cause_BSSGP cause optional
+} with { variant "PRESENCE(bssgpPduType = '52'O)"; };
+
+// 10.4.19
+type record PDU_BSSGP_CREATE_BSS_PFC_NACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI,
+ Cause_BSSGP cause
+} with { variant "PRESENCE(bssgpPduType = '53'O)"; };
+
+// 10.4.20
+type record PDU_BSSGP_MODIFY_BSS_PFC
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI,
+ ABQP aBQP
+} with { variant "PRESENCE(bssgpPduType = '54'O)"; };
+
+// 10.4.21
+type record PDU_BSSGP_MODIFY_BSS_PFC_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI,
+ GPRS_Timer pFT,
+ ABQP aBQP
+} with { variant "PRESENCE(bssgpPduType = '55'O)"; };
+
+// 10.4.22
+type record PDU_BSSGP_DELETE_BSS_PFC
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI
+} with { variant "PRESENCE(bssgpPduType = '56'O)"; };
+
+// 10.4.23
+type record PDU_BSSGP_DELETE_BSS_PFC_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI
+} with { variant "PRESENCE(bssgpPduType = '57'O)"; };
+
+// 10.4.24
+type record PDU_BSSGP_FLOW_CONTROL_PFC
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag,
+ MS_Bucket_Size mS_Bucket_Size optional,
+ Bucket_Leak_Rate bucket_Leak_Rate optional,
+ Bucket_Full_Ratio bucket_Full_Ratio optional,
+ PFC_flow_control_parameters pFC_flow_control_parameters,
+ Flow_Control_Granularity flow_Control_Granularity optional
+
+} with { variant "PRESENCE(bssgpPduType = '2D'O)"; };
+
+// 10.4.25
+type record PDU_BSSGP_FLOW_CONTROL_PFC_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Tag tag
+} with { variant "PRESENCE(bssgpPduType = '2E'O)"; };
+
+// 10.4.26
+type record PDU_BSSGP_DELETE_BSS_PFC_REQ
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ PFI pFI,
+ Cause_BSSGP cause
+} with { variant "PRESENCE(bssgpPduType = '58'O)"; };
+
+// 10.4.27
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Cause_BSSGP cause,
+ Cell_Identifier source_Cell_Identifier,
+ Cell_or_RNC_Id_with_Transparent_Container_BSSGP
+ cell_or_RNC_Id_with_Transparent_Container,
+ Active_PFCs_List_BSSGP active_PFCs_List,
+ ENB_Identifier target_ENB_Identifier optional,
+ Reliable_Inter_RAT_Handover_Info
+ reliable_Inter_RAT_Handover_Info optional,
+ CSG_Identifier_TLV cSG_Identifier optional,
+ Tracking_Area_Code_TLV tracking_Area_Code optional
+ } with { variant "PRESENCE(bssgpPduType = '59'O)"; };
+
+
+// 10.4.28
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ List_of_set_up_PFCs_BSSGP list_of_set_up_PFCs,
+ Target_BSS_to_Source_BSS_Transparent_Container
+ target_BSS_to_Source_BSS_Transparent_Container optional,
+ Target_to_Source_Transparent_Container
+ target_to_Source_Transparent_Container optional
+} with { variant "PRESENCE(bssgpPduType = '5A'O)"; };
+
+
+// 10.4.29
+type record PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Cause_BSSGP cause
+} with { variant "PRESENCE(bssgpPduType = '5B'O)"; };
+
+
+// 10.4.30
+type record PDU_BSSGP_PS_HANDOVER_REQUEST
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ IMSI_BSSGP iMSI,
+ Cause_BSSGP cause,
+ Cell_Identifier source_Cell_Identifier optional,
+ RNC_Identifier_BSSGP source_RNC_Identifier optional,
+ Cell_Identifier target_Cell_Identifier optional, // it is mandatory
+ Source_BSS_to_Target_BSS_Transparent_Container_BSSGP
+ source_BSS_to_Target_BSS_Transparent_Container_BSSGP,
+ PFCs_to_be_set_up_list pFCs_to_be_set_up_list,
+ NAS_container_for_PS_Handover nAS_container_for_PS_Handover optional,
+ Service_UTRAN_CCO service_UTRAN_CCO optional,
+ Subscriber_Profile_ID_For_RAT_Priority
+ subscriber_Profile_ID_For_RAT_Priority optional,
+ Reliable_Inter_RAT_Handover_Info
+ reliable_Inter_RAT_Handover_Info optional
+} with { variant "PRESENCE(bssgpPduType = '5C'O)"; };
+
+
+// 10.4.31
+type record PDU_BSSGP_PS_HANDOVER_REQUEST_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ List_of_set_up_PFCs_BSSGP list_of_set_up_PFCs,
+ Target_BSS_to_Source_BSS_Transparent_Container
+ target_BSS_to_Source_BSS_Transparent_Container
+} with { variant "PRESENCE(bssgpPduType = '5D'O)"; };
+
+
+// 10.4.32
+type record PDU_BSSGP_PS_HANDOVER_REQUEST_NACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Cause_BSSGP cause
+} with { variant "PRESENCE(bssgpPduType = '5E'O)"; };
+
+
+// 10.4.33
+type record PDU_BSSGP_PS_HANDOVER_COMPLETE
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ IMSI_BSSGP iMSI,
+ Cell_Identifier target_Cell_Identifier optional,
+ Request_For_Inter_RAT_Handover_Info
+ request_For_Inter_RAT_Handover_Info optional
+} with { variant "PRESENCE(bssgpPduType = '91'O)"; };
+
+
+// 10.4.34
+type record PDU_BSSGP_PS_HANDOVER_CANCEL
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Cause_BSSGP cause,
+ Cell_Identifier source_Cell_Identifier,
+ Cell_Identifier target_Cell_Identifier optional,
+ RNC_Identifier_BSSGP target_RNC_Identifier optional,
+ ENB_Identifier target_Enb_Identifier optional
+} with { variant "PRESENCE(bssgpPduType = '92'O)"; };
+
+// 10.4.35
+type record PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ Inter_RAT_Handover_Info_BSSGP inter_RAT_Handover_Info_BSSGP,
+ E_UTRAN_Inter_RAT_Handover_Info e_UTRAN_Inter_RAT_Handover_Info optional
+} with { variant "PRESENCE(bssgpPduType = '93'O)";};
+
+// 10.4.36
+type record PDU_BSSGP_OVERLOAD
+{
+ OCT1 bssgpPduType,
+ Priority_Class_Indicator priority_Class_Indicator
+} with { variant "PRESENCE(bssgpPduType = '42'O)";};
+
+// 10.5.1
+type record PDU_BSSGP_PERFORM_LOCATION_REQUEST
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ IMSI_BSSGP iMSI,
+ DRX_Parameters dRX_Parameters optional,
+ BVCI bVCI,
+ NSEI_BSSGP nSEI,
+ Location_Type_BSSGP location_Type,
+ Cell_Identifier cell_Identifier,
+ LCS_Capability_BSSGP lCS_Capability optional,
+ LCS_Priority_BSSGP lCS_Priority optional,
+ LCS_QoS_BSSGP lCS_QoS optional,
+ LCS_Client_Type_BSSGP lCS_Client_Type optional,
+ Requested_GPS_Assistance_Data_BSSGP requested_GPS_Assistance_Data optional,
+ IMEI_BSSGP iMEI optional,
+ GANSS_Location_Type gANSS_Location_Type optional,
+ Requested_GANSS_Assistance_Data requested_GANSS_Assistance_Data optional,
+ EDRX_Parameters eDRX_Parameters optional
+} with { variant "PRESENCE(bssgpPduType = '60'O)"; };
+
+
+// 10.5.2
+type record PDU_BSSGP_PERFORM_LOCATION_RESPONSE
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ BVCI bVCI,
+ Location_Estimate_BSSGP location_Estimate optional,
+ Positioning_Data_BSSGP positioning_Data optional,
+ Deciphering_Keys_BSSGP deciphering_Keys optional,
+ LCS_Cause_BSSGP lCS_Cause optional,
+ VelocityData velocityData optional,
+ GANSS_Positioning_Data gANSS_Positioning_Data optional
+} with { variant "PRESENCE(bssgpPduType = '61'O)"; };
+
+
+// 10.5.3
+type record PDU_BSSGP_PERFORM_LOCATION_ABORT
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ BVCI bVCI,
+ LCS_Cause_BSSGP lCS_Cause
+} with { variant "PRESENCE(bssgpPduType = '62'O)"; };
+
+
+// 10.5.4
+type record PDU_BSSGP_POSITION_COMMAND
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ BVCI bVCI,
+ RRLP_Flags_BSSGP rRLP_Flags,
+ RRLP_APDU_BSSGP rRLP_APDU
+} with { variant "PRESENCE(bssgpPduType = '63'O)"; };
+
+
+// 10.5.5
+type record PDU_BSSGP_POSITION_RESPONSE
+{
+ OCT1 bssgpPduType,
+ TLLI_BSSGP tLLI,
+ BVCI bVCI,
+ RRLP_Flags_BSSGP rRLP_Flags optional,
+ RRLP_APDU_BSSGP rRLP_APDU optional,
+ LCS_Cause_BSSGP lCS_Cause optional
+} with { variant "PRESENCE(bssgpPduType = '64'O)"; };
+
+// 10.6.1
+type record PDU_BSSGP_RAN_INFORMATION_REQUEST
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information destination_Cell_Identifier,
+ RIM_Routing_Information source_Cell_Identifier,
+ RAN_Information_Request_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '71'O)"; };
+
+// 10.6.2
+type record PDU_BSSGP_RAN_INFORMATION
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information destination_Cell_Identifier,
+ RIM_Routing_Information source_Cell_Identifier,
+ RAN_Information_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '70'O)"; };
+
+// 10.6.3
+type record PDU_BSSGP_RAN_INFORMATION_ACK
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information destination_Cell_Identifier,
+ RIM_Routing_Information source_Cell_Identifier,
+ RAN_Information_Ack_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '72'O)"; };
+
+// 10.6.4
+type record PDU_BSSGP_RAN_INFORMATION_ERROR
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information destination_Cell_Identifier,
+ RIM_Routing_Information source_Cell_Identifier,
+ RAN_Information_Error_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '73'O)"; };
+
+// 10.6.5
+type record PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR
+{
+ OCT1 bssgpPduType,
+ RIM_Routing_Information destination_Cell_Identifier,
+ RIM_Routing_Information source_Cell_Identifier,
+ RAN_Information_Application_Error_RIM_Container rIM_Container
+} with { variant "PRESENCE(bssgpPduType = '74'O)"; };
+
+// 10.7.1
+type record PDU_BSSGP_MBMS_SESSION_START_REQUEST
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ ABQP aBQP,
+ MBMS_Service_Area_Identity_List mBMS_Service_Area_Identity_List,
+ MBMS_Routing_Area_List mBMS_Routing_Area_List,
+ MBMS_Session_Duration mBMS_Session_Duration,
+ MBMS_Session_Information mBMS_Session_Information,
+ Time_To_MBMS_Data_Transfer time_To_MBMS_Data_Transfer,
+ Priority_BSSGP allocation_Retention_Priority optional,
+ MBMS_Session_Repetition_Number mBMS_Session_Repetition_Number optional
+} with { variant "PRESENCE(bssgpPduType = '80'O)"; };
+
+// 10.7.2
+type record PDU_BSSGP_MBMS_SESSION_START_RESPONSE
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ MBMS_Response mBMS_Response
+} with { variant "PRESENCE(bssgpPduType = '81'O)"; };
+
+// 10.7.3
+type record PDU_BSSGP_MBMS_SESSION_STOP_REQUEST
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ MBMS_Stop_Cause mBMS_Stop_Cause
+} with { variant "PRESENCE(bssgpPduType = '82'O)"; };
+
+// 10.7.4
+type record PDU_BSSGP_MBMS_STOP_RESPONSE
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ MBMS_Response mBMS_Response
+} with { variant "PRESENCE(bssgpPduType = '83'O)"; };
+
+
+// 10.7.5
+type record PDU_BSSGP_SESSION_UPDATE_REQUEST
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ ABQP aBQP,
+ MBMS_Service_Area_Identity_List mBMS_Service_Area_Identity_List,
+ MBMS_Routing_Area_List mBMS_Routing_Area_List,
+ MBMS_Session_Duration mBMS_Session_Duration,
+ MBMS_Session_Information mBMS_Session_Information,
+ Time_To_MBMS_Data_Transfer time_To_MBMS_Data_Transfer,
+ Priority_BSSGP allocation_Retention_Priority optional,
+ MBMS_Session_Repetition_Number mBMS_Session_Repetition_Number optional
+} with { variant "PRESENCE(bssgpPduType = '84'O)"; };
+
+
+// 10.7.6
+type record PDU_BSSGP_SESSION_UPDATE_RESPONSE
+{
+ OCT1 bssgpPduType,
+ TMGI_BSSGP tMGI,
+ MBMS_Session_Identity mBMS_Session_Identity optional,
+ MBMS_Response mBMS_Response
+} with { variant "PRESENCE(bssgpPduType = '85'O)"; };
+
+
+
+type union PDU_BSSGP
+{
+
+ PDU_BSSGP_DL_UNITDATA pDU_BSSGP_DL_UNITDATA,
+ PDU_BSSGP_UL_UNITDATA pDU_BSSGP_UL_UNITDATA,
+ PDU_BSSGP_RA_CAPABILITY pDU_BSSGP_RA_CAPABILITY,
+ PDU_BSSGP_DL_MBMS_UNITDATA pDU_BSSGP_DL_MBMS_UNITDATA,
+ PDU_BSSGP_UL_MBMS_UNITDATA pDU_BSSGP_UL_MBMS_UNITDATA,
+ PDU_BSSGP_PAGING_PS pDU_BSSGP_PAGING_PS,
+ PDU_BSSGP_PAGING_CS pDU_BSSGP_PAGING_CS,
+ PDU_BSSGP_RA_CAPABILITY_UPDATE pDU_BSSGP_RA_CAPABILITY_UPDATE,
+ PDU_BSSGP_RA_CAPABILITY_UPDATE_ACK pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK,
+ PDU_BSSGP_RADIO_STATUS pDU_BSSGP_RADIO_STATUS,
+ PDU_BSSGP_SUSPEND pDU_BSSGP_SUSPEND,
+ PDU_BSSGP_SUSPEND_ACK pDU_BSSGP_SUSPEND_ACK,
+ PDU_BSSGP_SUSPEND_NACK pDU_BSSGP_SUSPEND_NACK,
+ PDU_BSSGP_RESUME pDU_BSSGP_RESUME,
+ PDU_BSSGP_RESUME_ACK pDU_BSSGP_RESUME_ACK,
+ PDU_BSSGP_RESUME_NACK pDU_BSSGP_RESUME_NACK,
+ PDU_BSSGP_PAGING_PS_REJECT pDU_BSSGP_PAGING_PS_REJECT,
+ PDU_BSSGP_DUMMY_PAGING_PS pDU_BSSGP_DUMMY_PAGING_PS,
+ PDU_BSSGP_DUMMY_PAGING_PS_RESPONSE pDU_BSSGP_DUMMY_PAGING_PS_RESPONSE,
+ PDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE pDU_BSSGP_MS_REGISTRATION_ENQUIRY_RESPONSE,
+ PDU_BSSGP_MS_REGISTRATION_ENQUIRY pDU_BSSGP_MS_REGISTRATION_ENQUIRY,
+ PDU_BSSGP_FLUSH_LL pDU_BSSGP_FLUSH_LL,
+ PDU_BSSGP_FLUSH_LL_ACK pDU_BSSGP_FLUSH_LL_ACK,
+ PDU_BSSGP_LLC_DISCARDED pDU_BSSGP_LLC_DISCARDED,
+ PDU_BSSGP_FLOW_CONTROL_BVC pDU_BSSGP_FLOW_CONTROL_BVC,
+ PDU_BSSGP_FLOW_CONTROL_BVC_ACK pDU_BSSGP_FLOW_CONTROL_BVC_ACK,
+ PDU_BSSGP_FLOW_CONTROL_MS pDU_BSSGP_FLOW_CONTROL_MS,
+ PDU_BSSGP_FLOW_CONTROL_MS_ACK pDU_BSSGP_FLOW_CONTROL_MS_ACK,
+ PDU_BSSGP_FLOW_CONTROL_PFC pDU_BSSGP_FLOW_CONTROL_PFC,
+ PDU_BSSGP_FLOW_CONTROL_PFC_ACK pDU_BSSGP_FLOW_CONTROL_PFC_ACK,
+ PDU_BSSGP_STATUS pDU_BSSGP_STATUS,
+ PDU_BSSGP_BVC_BLOCK pDU_BSSGP_BVC_BLOCK,
+ PDU_BSSGP_BVC_BLOCK_ACK pDU_BSSGP_BVC_BLOCK_ACK,
+ PDU_BSSGP_BVC_UNBLOCK pDU_BSSGP_BVC_UNBLOCK,
+ PDU_BSSGP_BVC_UNBLOCK_ACK pDU_BSSGP_BVC_UNBLOCK_ACK,
+ PDU_BSSGP_BVC_RESET pDU_BSSGP_BVC_RESET,
+ PDU_BSSGP_BVC_RESET_ACK pDU_BSSGP_BVC_RESET_ACK,
+ PDU_BSSGP_SGSN_INVOKE_TRACE pDU_BSSGP_SGSN_INVOKE_TRACE,
+ PDU_BSSGP_DOWNLOAD_BSS_PFC pDU_BSSGP_DOWNLOAD_BSS_PFC,
+ PDU_BSSGP_CREATE_BSS_PFC pDU_BSSGP_CREATE_BSS_PFC,
+ PDU_BSSGP_CREATE_BSS_PFC_ACK pDU_BSSGP_CREATE_BSS_PFC_ACK,
+ PDU_BSSGP_CREATE_BSS_PFC_NACK pDU_BSSGP_CREATE_BSS_PFC_NACK,
+ PDU_BSSGP_MODIFY_BSS_PFC pDU_BSSGP_MODIFY_BSS_PFC,
+ PDU_BSSGP_MODIFY_BSS_PFC_ACK pDU_BSSGP_MODIFY_BSS_PFC_ACK,
+ PDU_BSSGP_DELETE_BSS_PFC pDU_BSSGP_DELETE_BSS_PFC,
+ PDU_BSSGP_DELETE_BSS_PFC_ACK pDU_BSSGP_DELETE_BSS_PFC_ACK,
+ PDU_BSSGP_DELETE_BSS_PFC_REQ pDU_BSSGP_DELETE_BSS_PFC_REQ,
+ PDU_BSSGP_PS_HANDOVER_REQUIRED pDU_BSSGP_PS_HANDOVER_REQUIRED,
+ PDU_BSSGP_PS_HANDOVER_REQUIRED_ACK pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK,
+ PDU_BSSGP_PS_HANDOVER_REQUIRED_NACK pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK,
+ PDU_BSSGP_PS_HANDOVER_REQUEST pDU_BSSGP_PS_HANDOVER_REQUEST,
+ PDU_BSSGP_PS_HANDOVER_REQUEST_ACK pDU_BSSGP_PS_HANDOVER_REQUEST_ACK,
+ PDU_BSSGP_PS_HANDOVER_REQUEST_NACK pDU_BSSGP_PS_HANDOVER_REQUEST_NACK,
+ PDU_BSSGP_PS_HANDOVER_COMPLETE pDU_BSSGP_PS_HANDOVER_COMPLETE,
+ PDU_BSSGP_PS_HANDOVER_COMPLETE_ACK pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK,
+ PDU_BSSGP_PS_HANDOVER_CANCEL pDU_BSSGP_PS_HANDOVER_CANCEL,
+ PDU_BSSGP_OVERLOAD pDU_BSSGP_OVERLOAD,
+ PDU_BSSGP_PERFORM_LOCATION_REQUEST pDU_BSSGP_PERFORM_LOCATION_REQUEST,
+ PDU_BSSGP_PERFORM_LOCATION_RESPONSE pDU_BSSGP_PERFORM_LOCATION_RESPONSE,
+ PDU_BSSGP_PERFORM_LOCATION_ABORT pDU_BSSGP_PERFORM_LOCATION_ABORT,
+ PDU_BSSGP_POSITION_COMMAND pDU_BSSGP_POSITION_COMMAND,
+ PDU_BSSGP_POSITION_RESPONSE pDU_BSSGP_POSITION_RESPONSE,
+ PDU_BSSGP_RAN_INFORMATION pDU_BSSGP_RAN_INFORMATION,
+ PDU_BSSGP_RAN_INFORMATION_REQUEST pDU_BSSGP_RAN_INFORMATION_REQUEST,
+ PDU_BSSGP_RAN_INFORMATION_ACK pDU_BSSGP_RAN_INFORMATION_ACK,
+ PDU_BSSGP_RAN_INFORMATION_ERROR pDU_BSSGP_RAN_INFORMATION_ERROR,
+ PDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR
+ pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR,
+ PDU_BSSGP_MBMS_SESSION_START_REQUEST pDU_BSSGP_MBMS_SESSION_START_REQUEST,
+ PDU_BSSGP_MBMS_SESSION_START_RESPONSE pDU_BSSGP_MBMS_SESSION_START_RESPONSE,
+ PDU_BSSGP_MBMS_SESSION_STOP_REQUEST pDU_BSSGP_MBMS_SESSION_STOP_REQUEST,
+ PDU_BSSGP_MBMS_STOP_RESPONSE pDU_BSSGP_MBMS_STOP_RESPONSE,
+ PDU_BSSGP_SESSION_UPDATE_REQUEST pDU_BSSGP_SESSION_UPDATE_REQUEST,
+ PDU_BSSGP_SESSION_UPDATE_RESPONSE pDU_BSSGP_SESSION_UPDATE_RESPONSE,
+ octetstring pDU_BSSGP_unknown
+} with { variant "" };
+
+} with {encode "RAW"} // end of module