blob: 3b45abc2f970b663d6d714b1ef1480b0ef2a7bac [file] [log] [blame]
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000-2019 Ericsson Telecom AB
//
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
// File: BSSGP_Types.ttcn
// Rev: R2B
// 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 optional
}
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 optional
}
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 optional
}
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 optional
} 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 optional
} 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 optional
} 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
}
/* NOTE: 3GPP TS 48.018 V10.6.0 (2020-09), section 11.3.63.1.1-3 describes the
* reporting Cell Identifier IE coding as follows: "Reporting Cell Identifier:
* This field is encoded as the Cell Identifier defined in sub-clause 11.3.9",
* but when looking further at 11.3.63.2.1-3 the Cell Identifier IE is described
* as "Reporting Cell Identifier: This field is encoded as the value part of
* the Cell Identifier IE defined in sub-clause 11.3.9, not including IEI and
* Length Indicator." The latter description makes more sense, since
* technically the IE and length of the Cell Identifier from 11.3.9 would be
* redundant. */
//Table 11.3.63.1.1
type record RAN_Information_Request_Application_Container_NACC
{
OCT1 iEI,
BIT1 ext,
LIN2_2a lengthIndicator,
Cell_Identifier_V 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_V 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_V 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_V 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_V 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_V 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)";