/*
 * Radio Resource Control Technical Specification ASN.1 module.
 * 3GPP 25.331 (TS 125 331) (ETSI ref RTS/TSGR-0225331v710) [2006-06]
 * Extracted and verified by Lev Walkin <vlm@lionet.info>
 *
 * DO NOT REDISTRIBUTE. Obtain your own copy of 3GPP RRC specification
 * if you need to create products based on this RRC ASN.1 module.
 *
 * The ETSI has granted me the right to reproduce this ASN.1 RRC
 * (Radio Resource Control) module as part of asn1c provided that I insert
 * the following paragraph:
 *
 *   3GPP™ TSs and TRs are the property of ARIB, ATIS, ETSI, CCSA, TTA and TTC
 *   who jointly own the copyright in them. They are subject to further
 *   modifications and are therefore provided to you "as is" for information
 *   purposes only. Further use is strictly prohibited.
 */

Class-definitions DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

	ActiveSetUpdate,
	ActiveSetUpdateComplete,
	ActiveSetUpdateFailure,	
	AssistanceDataDelivery,
	CellChangeOrderFromUTRAN,
	CellChangeOrderFromUTRANFailure,
	CellUpdate,
	CellUpdateConfirm-CCCH,
	CellUpdateConfirm,
	CounterCheck,
	CounterCheckResponse,
	DownlinkDirectTransfer,
	HandoverToUTRANComplete,
	InitialDirectTransfer,
	HandoverFromUTRANCommand-GERANIu,
	HandoverFromUTRANCommand-GSM,
	HandoverFromUTRANCommand-CDMA2000,
	HandoverFromUTRANFailure,
	MBMSAccessInformation,
	MBMSCommonPTMRBInformation,
	MBMSCurrentCellPTMRBInformation,
	MBMSGeneralInformation,
	MBMSModificationRequest,
	MBMSModifiedServicesInformation,
	MBMSNeighbouringCellPTMRBInformation,
	MBMSSchedulingInformation,
	MBMSUnmodifiedServicesInformation,
	MeasurementControl,
	MeasurementControlFailure,
	MeasurementReport,
	PagingType1,
	PagingType2,
	PhysicalChannelReconfiguration,
	PhysicalChannelReconfigurationComplete,
	PhysicalChannelReconfigurationFailure,
	PhysicalSharedChannelAllocation,
	PUSCHCapacityRequest,
	RadioBearerReconfiguration,
	RadioBearerReconfigurationComplete,
	RadioBearerReconfigurationFailure,
	RadioBearerRelease,
	RadioBearerReleaseComplete,
	RadioBearerReleaseFailure,
	RadioBearerSetup,
	RadioBearerSetupComplete,
	RadioBearerSetupFailure,
	RRCConnectionReject,
	RRCConnectionRelease,
	RRCConnectionRelease-CCCH,
	RRCConnectionReleaseComplete,
	RRCConnectionRequest,
	RRCConnectionSetup,
	RRCConnectionSetupComplete,
	RRCStatus,
	SecurityModeCommand,
	SecurityModeComplete,
	SecurityModeFailure,
	SignallingConnectionRelease,
	SignallingConnectionReleaseIndication,
	SystemInformation-BCH,
	SystemInformation-FACH,
	SystemInformationChangeIndication,
	TransportChannelReconfiguration,
	TransportChannelReconfigurationComplete,
	TransportChannelReconfigurationFailure,
	TransportFormatCombinationControl,
	TransportFormatCombinationControlFailure,
	UECapabilityEnquiry,
	UECapabilityInformation,
	UECapabilityInformationConfirm,
	UplinkDirectTransfer,
	UplinkPhysicalChannelControl,
	URAUpdate,
	URAUpdateConfirm,
	URAUpdateConfirm-CCCH,
	UTRANMobilityInformation,
	UTRANMobilityInformationConfirm,
	UTRANMobilityInformationFailure
FROM PDU-definitions

-- User Equipment IEs :
	IntegrityCheckInfo
FROM InformationElements;

--**************************************************************
--
-- Downlink DCCH messages
--
--**************************************************************

DL-DCCH-Message ::= SEQUENCE {
	integrityCheckInfo		IntegrityCheckInfo		OPTIONAL,
	message					DL-DCCH-MessageType
}

DL-DCCH-MessageType ::= CHOICE {
	activeSetUpdate						ActiveSetUpdate,
	assistanceDataDelivery				AssistanceDataDelivery,
	cellChangeOrderFromUTRAN 			CellChangeOrderFromUTRAN,
	cellUpdateConfirm					CellUpdateConfirm,
	counterCheck						CounterCheck,
	downlinkDirectTransfer				DownlinkDirectTransfer,
	handoverFromUTRANCommand-GSM		HandoverFromUTRANCommand-GSM,
	handoverFromUTRANCommand-CDMA2000	HandoverFromUTRANCommand-CDMA2000,
	measurementControl					MeasurementControl,
	pagingType2							PagingType2,
	physicalChannelReconfiguration		PhysicalChannelReconfiguration,
	physicalSharedChannelAllocation		PhysicalSharedChannelAllocation,
	radioBearerReconfiguration			RadioBearerReconfiguration,
	radioBearerRelease					RadioBearerRelease,
	radioBearerSetup					RadioBearerSetup,
	rrcConnectionRelease				RRCConnectionRelease,
	securityModeCommand					SecurityModeCommand,
	signallingConnectionRelease			SignallingConnectionRelease,
	transportChannelReconfiguration		TransportChannelReconfiguration,
	transportFormatCombinationControl	TransportFormatCombinationControl,
	ueCapabilityEnquiry					UECapabilityEnquiry,
	ueCapabilityInformationConfirm		UECapabilityInformationConfirm,
	uplinkPhysicalChannelControl		UplinkPhysicalChannelControl,
	uraUpdateConfirm					URAUpdateConfirm,
	utranMobilityInformation			UTRANMobilityInformation,
	handoverFromUTRANCommand-GERANIu	HandoverFromUTRANCommand-GERANIu,
	mbmsModifiedServicesInformation		MBMSModifiedServicesInformation,
	spare5								NULL,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

--**************************************************************
--
-- Uplink DCCH messages
--
--**************************************************************

UL-DCCH-Message ::= SEQUENCE {
	integrityCheckInfo		IntegrityCheckInfo		OPTIONAL,
	message					UL-DCCH-MessageType
}

UL-DCCH-MessageType ::= CHOICE {
	activeSetUpdateComplete				ActiveSetUpdateComplete,
	activeSetUpdateFailure				ActiveSetUpdateFailure,
	cellChangeOrderFromUTRANFailure 	CellChangeOrderFromUTRANFailure,
	counterCheckResponse				CounterCheckResponse,
	handoverToUTRANComplete				HandoverToUTRANComplete,
	initialDirectTransfer				InitialDirectTransfer,
	handoverFromUTRANFailure			HandoverFromUTRANFailure,
	measurementControlFailure			MeasurementControlFailure,
	measurementReport					MeasurementReport,
	physicalChannelReconfigurationComplete
										PhysicalChannelReconfigurationComplete,
	physicalChannelReconfigurationFailure
										PhysicalChannelReconfigurationFailure,
	radioBearerReconfigurationComplete	RadioBearerReconfigurationComplete,
	radioBearerReconfigurationFailure	RadioBearerReconfigurationFailure,
	radioBearerReleaseComplete			RadioBearerReleaseComplete,
	radioBearerReleaseFailure			RadioBearerReleaseFailure,
	radioBearerSetupComplete			RadioBearerSetupComplete,
	radioBearerSetupFailure				RadioBearerSetupFailure,
	rrcConnectionReleaseComplete		RRCConnectionReleaseComplete,
	rrcConnectionSetupComplete			RRCConnectionSetupComplete,
	rrcStatus							RRCStatus,
	securityModeComplete				SecurityModeComplete,
	securityModeFailure					SecurityModeFailure,
	signallingConnectionReleaseIndication
										SignallingConnectionReleaseIndication,
	transportChannelReconfigurationComplete
										TransportChannelReconfigurationComplete,
	transportChannelReconfigurationFailure
										TransportChannelReconfigurationFailure,
	transportFormatCombinationControlFailure
										TransportFormatCombinationControlFailure,
	ueCapabilityInformation				UECapabilityInformation,
	uplinkDirectTransfer				UplinkDirectTransfer,
	utranMobilityInformationConfirm		UTRANMobilityInformationConfirm,
	utranMobilityInformationFailure		UTRANMobilityInformationFailure,
	mbmsModificationRequest				MBMSModificationRequest,
	spare1								NULL
}

--**************************************************************
--
-- Downlink CCCH messages
--
--**************************************************************

DL-CCCH-Message ::= SEQUENCE {
	integrityCheckInfo		IntegrityCheckInfo		OPTIONAL,
	message					DL-CCCH-MessageType
}

DL-CCCH-MessageType ::= CHOICE {	
	cellUpdateConfirm					CellUpdateConfirm-CCCH,
	rrcConnectionReject					RRCConnectionReject,
	rrcConnectionRelease				RRCConnectionRelease-CCCH,
	rrcConnectionSetup					RRCConnectionSetup,
	uraUpdateConfirm					URAUpdateConfirm-CCCH,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

--**************************************************************
--
-- Uplink CCCH messages
--
--**************************************************************

UL-CCCH-Message ::= SEQUENCE {
	integrityCheckInfo		IntegrityCheckInfo		OPTIONAL,
	message					UL-CCCH-MessageType
}

UL-CCCH-MessageType ::= CHOICE {
	cellUpdate							CellUpdate,
	rrcConnectionRequest				RRCConnectionRequest,
	uraUpdate							URAUpdate,
	spare								NULL
}

--**************************************************************
--
-- PCCH messages
--
--**************************************************************

PCCH-Message ::= SEQUENCE {
	message				PCCH-MessageType
}

PCCH-MessageType ::= CHOICE {
	pagingType1							PagingType1,
	spare								NULL
}

--**************************************************************
--
-- Downlink SHCCH messages
--
--**************************************************************

DL-SHCCH-Message ::= SEQUENCE {
	message					DL-SHCCH-MessageType
}

DL-SHCCH-MessageType ::= CHOICE {
	physicalSharedChannelAllocation		PhysicalSharedChannelAllocation,
	spare								NULL
}

--**************************************************************
--
-- Uplink SHCCH messages
--
--**************************************************************

UL-SHCCH-Message ::= SEQUENCE {
	message					UL-SHCCH-MessageType
}

UL-SHCCH-MessageType ::= CHOICE {
	puschCapacityRequest				PUSCHCapacityRequest,
	spare								NULL
}


--**************************************************************
--
-- BCCH messages sent on FACH
--
--**************************************************************

BCCH-FACH-Message ::= SEQUENCE {
	message				BCCH-FACH-MessageType
}

BCCH-FACH-MessageType ::= CHOICE {
	systemInformation					SystemInformation-FACH,
	systemInformationChangeIndication	SystemInformationChangeIndication,
	spare2								NULL,
	spare1								NULL
}

--**************************************************************
--
-- BCCH messages sent on BCH
--
--**************************************************************

BCCH-BCH-Message ::= SEQUENCE {
	message				SystemInformation-BCH
}

--**************************************************************
--
-- MCCH messages
--
--**************************************************************

MCCH-Message ::= SEQUENCE {
	message				MCCH-MessageType
}

MCCH-MessageType ::= CHOICE {
	mbmsAccessInformation				MBMSAccessInformation,
	mbmsCommonPTMRBInformation			MBMSCommonPTMRBInformation,
	mbmsCurrentCellPTMRBInformation		MBMSCurrentCellPTMRBInformation,
	mbmsGeneralInformation				MBMSGeneralInformation,
	mbmsModifiedServicesInformation		MBMSModifiedServicesInformation,
	mbmsNeighbouringCellPTMRBInformation
										MBMSNeighbouringCellPTMRBInformation,
	mbmsUnmodifiedServicesInformation	MBMSUnmodifiedServicesInformation,
	spare9								NULL,
	spare8								NULL,
	spare7								NULL,
	spare6								NULL,
	spare5								NULL,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

--**************************************************************
--
-- MSCH messages
--
--**************************************************************

MSCH-Message ::= SEQUENCE {
	message				MSCH-MessageType
}

MSCH-MessageType ::= CHOICE {
	mbmsSchedulingInformation			MBMSSchedulingInformation,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

END

--**************************************************************
--
-- TABULAR: The message type and integrity check info are not
-- visible in this module as they are defined in the class module. 
-- Also, all FDD/TDD specific choices have the FDD option first 
-- and TDD second, just for consistency.
--
--**************************************************************

PDU-definitions DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

--**************************************************************
--
-- IE parameter types from other modules
--
--**************************************************************

IMPORTS

-- Core Network IEs :
	CN-DomainIdentity,
	CN-InformationInfo,
	CN-InformationInfo-r6,
	CN-InformationInfoFull,
	NAS-Message,
	PagingRecordTypeID,
	PLMN-Identity,
-- UTRAN Mobility IEs :
	CellIdentity,
	CellIdentity-PerRL-List,
	URA-Identity,
-- User Equipment IEs :
	UE-RadioAccessCapabilityComp-r7,
	UE-RadioAccessCapability-v7xyext,
	UE-RadioAccessCapabBandFDDList2,
	UE-RadioAccessCapabBandFDDList-ext,
	AccessStratumReleaseIndicator,
	ActivationTime,
	C-RNTI,
	CapabilityUpdateRequirement,
	CapabilityUpdateRequirement-r4,
	CapabilityUpdateRequirement-r4-ext,
	CapabilityUpdateRequirement-r5,
	CapabilityUpdateRequirement-r7-ext,
	CellUpdateCause,
	CellUpdateCause-ext,
	CipheringAlgorithm,
	CipheringModeInfo,
	DelayRestrictionFlag,
	DSCH-RNTI,
	E-RNTI,
	EstablishmentCause,
	FailureCauseWithProtErr,
	FailureCauseWithProtErrTrId,
	GroupReleaseInformation,
	H-RNTI,
	UESpecificBehaviourInformation1idle,
	UESpecificBehaviourInformation1interRAT,
	InitialUE-Identity,
	IntegrityProtActivationInfo,
	IntegrityProtectionModeInfo,
	N-308,
	PagingCause,
	PagingRecordList,
	PagingRecord2List-r5,
	ProtocolErrorIndicator,
	ProtocolErrorIndicatorWithMoreInfo,
	RadioFrequencyBandTDDList,
	Rb-timer-indicator,
	RedirectionInfo,
	RedirectionInfo-r6,
	RejectionCause,
	ReleaseCause,
	RF-CapabilityComp,
	RRC-StateIndicator,
	RRC-TransactionIdentifier,
	SecurityCapability,
	START-Value,
	STARTList,
	SystemSpecificCapUpdateReq-v590ext,
	U-RNTI,
	U-RNTI-Short,
	UE-CapabilityContainer-IEs,
	UE-RadioAccessCapability,
	UE-RadioAccessCapability-v370ext,
	UE-RadioAccessCapability-v380ext,
	UE-RadioAccessCapability-v3a0ext,
	UE-RadioAccessCapability-v3g0ext,
	UE-RadioAccessCapability-v4b0ext,
	UE-RadioAccessCapability-v590ext,
	UE-RadioAccessCapability-v5c0ext,
	UE-RadioAccessCapability-v650ext,
	UE-RadioAccessCapability-v680ext,
	UE-RadioAccessCapabilityComp,
	UE-RadioAccessCapabilityComp-ext,
	UE-RadioAccessCapabilityComp2,
	DL-PhysChCapabilityFDD-v380ext,
	UE-ConnTimersAndConstants,
	UE-ConnTimersAndConstants-v3a0ext,
	UE-ConnTimersAndConstants-r5,
	UE-SecurityInformation,
	UE-SecurityInformation2,
	URA-UpdateCause,
	UTRAN-DRX-CycleLengthCoefficient,
	WaitTime,
-- Radio Bearer IEs :
	DefaultConfigIdentity,
	DefaultConfigIdentity-r4,
	DefaultConfigIdentity-r5,
	DefaultConfigIdentity-r6,
	DefaultConfigMode,
	DL-CounterSynchronisationInfo,
	DL-CounterSynchronisationInfo-r5,
	PDCP-ROHC-TargetMode,
	PredefinedConfigIdentity,
	PredefinedConfigStatusList,
	PredefinedConfigStatusListComp,
	PredefinedConfigSetWithDifferentValueTag,
	RAB-Info,
	RAB-Info-r6,
	RAB-Info-Post,
	RAB-InformationList,
	RAB-InformationList-r6,
	RAB-InformationReconfigList,
	RAB-InformationSetupList,
	RAB-InformationSetupList-r4,
	RAB-InformationSetupList-r5,
	RAB-InformationSetupList-r6-ext,
	RAB-InformationSetupList-r6,
	RB-ActivationTimeInfoList,
	RB-COUNT-C-InformationList,
	RB-COUNT-C-MSB-InformationList,
	RB-IdentityList,
	RB-InformationAffectedList,
	RB-InformationAffectedList-r5,
	RB-InformationAffectedList-r6,
	RB-InformationChangedList-r6,
	RB-InformationReconfigList,
	RB-InformationReconfigList-r4,
	RB-InformationReconfigList-r5,
	RB-InformationReconfigList-r6,
	RB-InformationReleaseList,
	RB-PDCPContextRelocationList,
	SRB-InformationSetupList,
	SRB-InformationSetupList-r5,
	SRB-InformationSetupList-r6,
	SRB-InformationSetupList2,
	SRB-InformationSetupList2-r6,
	UL-CounterSynchronisationInfo,
-- Transport Channel IEs:
	CPCH-SetID,
	DL-AddReconfTransChInfo2List,
	DL-AddReconfTransChInfoList,
	DL-AddReconfTransChInfoList-r4,
	DL-AddReconfTransChInfoList-r5,
	DL-CommonTransChInfo,
	DL-CommonTransChInfo-r4,
	DL-DeletedTransChInfoList,
	DL-DeletedTransChInfoList-r5,
	DRAC-StaticInformationList,
	PowerOffsetInfoShort,
	TFC-Subset,
	TFCS-Identity,
	UL-AddReconfTransChInfoList,
	UL-AddReconfTransChInfoList-r6,
	UL-CommonTransChInfo,
	UL-CommonTransChInfo-r4,
	UL-DeletedTransChInfoList,
	UL-DeletedTransChInfoList-r6,
-- Physical Channel IEs :
	Alpha,
	BEACON-PL-Est,
	CCTrCH-PowerControlInfo,
	CCTrCH-PowerControlInfo-r4,
	CCTrCH-PowerControlInfo-r5,
	CCTrCH-PowerControlInfo-r7,
	ConstantValue,
	ConstantValueTdd,
	CPCH-SetInfo,
	DHS-Sync,
	DL-CommonInformation,
	DL-CommonInformation-r4,
	DL-CommonInformation-r5,
	DL-CommonInformation-r6,
	DL-CommonInformation-r7,
	DL-CommonInformationPost,
	DL-HSPDSCH-Information,
	DL-HSPDSCH-Information-r6,
	DL-HSPDSCH-Information-r7,
	DL-InformationPerRL-List,
	DL-InformationPerRL-List-r4,
	DL-InformationPerRL-List-r5,
	DL-InformationPerRL-List-r5bis,
	DL-InformationPerRL-List-r6,
	DL-InformationPerRL-List-r7,
	DL-InformationPerRL-ListPostFDD,
	DL-InformationPerRL-PostTDD,
	DL-InformationPerRL-PostTDD-LCR-r4,
	DL-PDSCH-Information,
	DL-TPC-PowerOffsetPerRL-List,
	DPC-Mode,
	DPCH-CompressedModeStatusInfo,
	DynamicPersistenceLevel,
	E-DCH-ReconfigurationInfo,
	EXT-UL-TimingAdvance,
	FrequencyInfo,
	FrequencyInfoFDD,
	FrequencyInfoTDD,
	HARQ-Preamble-Mode,
	HS-SICH-Power-Control-Info-TDD384,
	HS-SICH-Power-Control-Info-TDD768,
	MaxAllowedUL-TX-Power,
	OpenLoopPowerControl-IPDL-TDD-r4,
	PDSCH-CapacityAllocationInfo,
	PDSCH-CapacityAllocationInfo-r4,
	PDSCH-CapacityAllocationInfo-r7,
	PDSCH-Identity,
	PrimaryCPICH-Info,
	PrimaryCCPCH-TX-Power,
	PUSCH-CapacityAllocationInfo,
	PUSCH-CapacityAllocationInfo-r4,
	PUSCH-CapacityAllocationInfo-r7,
	PUSCH-Identity,
	PUSCH-SysInfoList-HCR-r5,
	PDSCH-SysInfoList-HCR-r5,
	RL-AdditionInformationList,
	RL-AdditionInformationList-r6,
	RL-RemovalInformationList,
	Serving-HSDSCH-CellInformation,
	SpecialBurstScheduling,
	SSDT-Information,
	SSDT-Information-r4,
	TFC-ControlDuration,
	SSDT-UL,
	TimingMaintainedSynchInd,
	TimeslotList,
	TimeslotList-r4,
	TX-DiversityMode,
	UL-ChannelRequirement,
	UL-ChannelRequirement-r4,
	UL-ChannelRequirement-r5,
	UL-ChannelRequirementWithCPCH-SetID,
	UL-ChannelRequirementWithCPCH-SetID-r4,
	UL-ChannelRequirementWithCPCH-SetID-r5,
	UL-DPCH-Info,
	UL-DPCH-Info-r4,
	UL-DPCH-Info-r5,
	UL-DPCH-Info-r6,
	UL-DPCH-Info-r7,
	UL-DPCH-InfoPostFDD,
	UL-DPCH-InfoPostTDD,
	UL-DPCH-InfoPostTDD-LCR-r4,
	UL-EDCH-Information-r6,
	UL-SynchronisationParameters-r4,
	UL-TimingAdvance,
	UL-TimingAdvanceControl,
	UL-TimingAdvanceControl-r4,
	UL-TimingAdvanceControl-r7,
	UL-TimingAdvance-VHCR,
-- Measurement IEs :
	AdditionalMeasurementID-List,
	DeltaRSCP,
	Frequency-Band,
	EventResults,
	Inter-FreqEventCriteriaList-v590ext,
	Intra-FreqEventCriteriaList-v590ext,
	IntraFreqReportingCriteria-1b-r5,
	IntraFreqEvent-1d-r5,
	IntraFreqCellID,
	InterFreqEventResults-LCR-r4-ext,
	InterRATCellInfoIndication,
	InterRAT-TargetCellDescription,
	MeasuredResults,
	MeasuredResults-v390ext,
	MeasuredResults-v590ext,
	MeasuredResultsList,
	MeasuredResultsList-LCR-r4-ext,
	MeasuredResultsOnRACH,
	MeasuredResultsOnRACHinterFreq,
	MeasurementCommand,
	MeasurementCommand-r4,
	MeasurementCommand-r6,
	MeasurementIdentity,
	MeasurementReportingMode,
	PrimaryCCPCH-RSCP,
	SFN-Offset-Validity,
	TimeslotListWithISCP,
	TrafficVolumeMeasuredResultsList,
	UE-Positioning-GPS-AssistanceData,
	UE-Positioning-Measurement-v390ext,
	UE-Positioning-Measurement-v7xyext,
	UE-Positioning-OTDOA-AssistanceData,
	UE-Positioning-OTDOA-AssistanceData-r4ext,
	UE-Positioning-OTDOA-AssistanceData-UEB,
	VelocityEstimate,
	UE-InternalMeasuredResults-r7,
-- Other IEs :
	BCCH-ModificationInfo,
	CDMA2000-MessageList,
	GSM-TargetCellInfoList,
	GERANIu-MessageList,
	GERAN-SystemInformation,
	GSM-MessageList,
	InterRAT-ChangeFailureCause,
	InterRAT-HO-FailureCause,
	InterRAT-UE-RadioAccessCapabilityList,
	InterRAT-UE-RadioAccessCapability-v590ext,
	InterRAT-UE-SecurityCapList,
	IntraDomainNasNodeSelector,
	ProtocolErrorMoreInformation,
	Rplmn-Information,
	Rplmn-Information-r4,
	SegCount,
	SegmentIndex,
	SFN-Prime,
	SIB-Data-fixed,
	SIB-Data-variable,
	SIB-Type,
-- MBMS IEs:
	MBMS-CellGroupIdentity-r6,
	MBMS-CommonRBInformationList-r6,
	MBMS-CurrentCell-SCCPCHList-r6,
	MBMS-JoinedInformation-r6,
	MBMS-MICHConfigurationInfo-r6,
	MBMS-MICHConfigurationInfo-r7,
	MBMS-ModifedServiceList-r6,
	MBMS-MSCH-ConfigurationInfo-r6,
	MBMS-NeighbouringCellSCCPCHList-r6,
	MBMS-NumberOfNeighbourCells-r6,
	MBMS-PhyChInformationList-r6,
	MBMS-PL-ServiceRestrictInfo-r6,
	MBMS-PreferredFreqRequest-r6,
	MBMS-PreferredFrequencyList-r6,
	MBMS-PTMActivationTime-r6,
	MBMS-ServiceAccessInfoList-r6,
	MBMS-ServiceIdentity-r6,
	MBMS-ServiceSchedulingInfoList-r6,
	MBMS-SIBType5-SCCPCHList-r6,
	MBMS-TimersAndCounters-r6,
	MBMS-TranspChInfoForEachCCTrCh-r6,
	MBMS-TranspChInfoForEachTrCh-r6,
	MBMS-UnmodifiedServiceList-r6
FROM InformationElements

	maxSIBperMsg,
	maxURNTI-Group
FROM Constant-definitions;

-- ***************************************************
--
-- ACTIVE SET UPDATE (FDD only)
--
-- ***************************************************

ActiveSetUpdate ::= CHOICE {
	r3								SEQUENCE {
		activeSetUpdate-r3				ActiveSetUpdate-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			activeSetUpdate-r3-add-ext		BIT STRING		OPTIONAL,
			v4b0NonCriticalExtensions		SEQUENCE {
				activeSetUpdate-v4b0ext		ActiveSetUpdate-v4b0ext-IEs,
				v590NonCriticalExtensions		SEQUENCE {
					activeSetUpdate-v590ext			ActiveSetUpdate-v590ext-IEs,
					v690NonCriticalExtensions		SEQUENCE {
						activeSetUpdate-v690ext			ActiveSetUpdate-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {} OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			} OPTIONAL
		} OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r6								SEQUENCE {
				activeSetUpdate-r6				ActiveSetUpdate-r6-IEs,
				activeSetUpdate-r6-add-ext		BIT STRING		OPTIONAL,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

ActiveSetUpdate-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		-- dummy and dummy2 are not used in this version of the specification, they should
		-- not be sent and if received they should be ignored.
		dummy						IntegrityProtectionModeInfo			OPTIONAL,
		dummy2						CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		newU-RNTI						U-RNTI								OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- Radio bearer IEs
		-- dummy3 is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy3						DL-CounterSynchronisationInfo		OPTIONAL,
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		rl-AdditionInformationList		RL-AdditionInformationList			OPTIONAL,
		rl-RemovalInformationList		RL-RemovalInformationList			OPTIONAL,
		tx-DiversityMode				TX-DiversityMode					OPTIONAL,
		-- dummy4 is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy4							SSDT-Information					OPTIONAL
}

ActiveSetUpdate-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE RL-AdditionInformationList included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

ActiveSetUpdate-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dpc-Mode							DPC-Mode,
		dl-TPC-PowerOffsetPerRL-List		DL-TPC-PowerOffsetPerRL-List			OPTIONAL
}

ActiveSetUpdate-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity				PLMN-Identity						OPTIONAL
}

ActiveSetUpdate-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		activationTime						ActivationTime						OPTIONAL,
		newU-RNTI							U-RNTI								OPTIONAL,
		newH-RNTI							H-RNTI								OPTIONAL,
		newPrimary-E-RNTI					E-RNTI								OPTIONAL,
		newSecondary-E-RNTI					E-RNTI								OPTIONAL,
	-- Core network IEs
		cn-InformationInfo					CN-InformationInfo-r6				OPTIONAL,
	-- Physical channel IEs
		maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
		rl-AdditionInformationList			RL-AdditionInformationList-r6		OPTIONAL,
		rl-RemovalInformationList			RL-RemovalInformationList			OPTIONAL,
		tx-DiversityMode					TX-DiversityMode					OPTIONAL,
		dpc-Mode							DPC-Mode							OPTIONAL,
		serving-HSDSCH-CellInformation		Serving-HSDSCH-CellInformation		OPTIONAL,
		e-dch-ReconfigurationInfo			E-DCH-ReconfigurationInfo			OPTIONAL
}

-- ***************************************************
--
-- ACTIVE SET UPDATE COMPLETE (FDD only)
--
-- ***************************************************

ActiveSetUpdateComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy						IntegrityProtActivationInfo			OPTIONAL,
	-- Radio bearer IEs
		-- dummy2 and dummy3 are not used in this version of the specification, they should
		-- not be sent and if received they should be ignored.
		dummy2						RB-ActivationTimeInfoList			OPTIONAL,
		dummy3						UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			activeSetUpdateComplete-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- ACTIVE SET UPDATE FAILURE (FDD only)
--
-- ***************************************************

ActiveSetUpdateFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			activeSetUpdateFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
	}	OPTIONAL
}

-- ***************************************************
--
-- Assistance Data Delivery
--
-- ***************************************************

AssistanceDataDelivery ::= CHOICE {
	r3								SEQUENCE {
		assistanceDataDelivery-r3		AssistanceDataDelivery-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			assistanceDataDelivery-v3a0ext	AssistanceDataDelivery-v3a0ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				assistanceDataDelivery-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE { 
					assistanceDataDelivery-v4b0ext
													AssistanceDataDelivery-v4b0ext-IEs,
					nonCriticalExtensions			SEQUENCE {}						OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

AssistanceDataDelivery-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
	rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Measurement Information Elements
	ue-positioning-GPS-AssistanceData			UE-Positioning-GPS-AssistanceData				OPTIONAL,
	ue-positioning-OTDOA-AssistanceData-UEB		UE-Positioning-OTDOA-AssistanceData-UEB			OPTIONAL
}

AssistanceDataDelivery-v3a0ext ::= SEQUENCE {
	sfn-Offset-Validity					SFN-Offset-Validity		OPTIONAL
}

AssistanceDataDelivery-v4b0ext-IEs ::= SEQUENCE {
	ue-Positioning-OTDOA-AssistanceData-r4ext	UE-Positioning-OTDOA-AssistanceData-r4ext	OPTIONAL
}

 -- ***************************************************
--
-- CELL CHANGE ORDER FROM UTRAN
--
-- ***************************************************

CellChangeOrderFromUTRAN ::= CHOICE {
	r3								SEQUENCE {
		cellChangeOrderFromUTRAN-IEs		CellChangeOrderFromUTRAN-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			cellChangeOrderFromUTRAN-r3-add-ext		BIT STRING		OPTIONAL,
			v590NonCriticalExtensions			SEQUENCE {
				cellChangeOrderFromUTRAN-v590ext	CellChangeOrderFromUTRAN-v590ext-IEs,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

CellChangeOrderFromUTRAN-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy							IntegrityProtectionModeInfo			OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		-- the IE rab-InformationList is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored. The IE may be used in a later
		-- version of the protocol and hence it is not changed into a dummy
		rab-InformationList				RAB-InformationList					OPTIONAL,
		interRAT-TargetCellDescription	InterRAT-TargetCellDescription
}

CellChangeOrderFromUTRAN-v590ext-IEs ::= SEQUENCE {		
		geran-SystemInfoType				CHOICE	{		
			sI									GERAN-SystemInformation,
			pSI									GERAN-SystemInformation
		}		OPTIONAL
}

-- ***************************************************
--
-- CELL CHANGE ORDER FROM UTRAN FAILURE
--
-- ***************************************************

CellChangeOrderFromUTRANFailure ::= CHOICE {
	r3								SEQUENCE {
		cellChangeOrderFromUTRANFailure-r3
										CellChangeOrderFromUTRANFailure-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			cellChangeOrderFromUTRANFailure-r3-add-ext		BIT STRING	OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		}	OPTIONAL
	},
	-- dummy is not used in this version of the specification and it
	-- should be ignored.
	dummy							SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

CellChangeOrderFromUTRANFailure-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy							IntegrityProtectionModeInfo			OPTIONAL,
		interRAT-ChangeFailureCause		InterRAT-ChangeFailureCause
}

-- ***************************************************
--
-- CELL UPDATE
--
-- ***************************************************

CellUpdate ::= SEQUENCE {
	-- User equipment IEs
		u-RNTI							U-RNTI,
		startList		STARTList,
		am-RLC-ErrorIndicationRb2-3or4		BOOLEAN,
		am-RLC-ErrorIndicationRb5orAbove	BOOLEAN,
		cellUpdateCause					CellUpdateCause,
		-- TABULAR: RRC transaction identifier is nested in FailureCauseWithProtErrTrId
		failureCause					FailureCauseWithProtErrTrId			OPTIONAL,
		rb-timer-indicator				Rb-timer-indicator,
	-- Measurement IEs
		measuredResultsOnRACH			MeasuredResultsOnRACH				OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			cellUpdate-r3-add-ext			BIT STRING	OPTIONAL,
			v590NonCriticalExtensions	SEQUENCE {
				cellUpdate-v590ext	CellUpdate-v590ext, 
				v690NonCriticalExtensions		SEQUENCE {
					cellUpdate-v690ext				CellUpdate-v690ext-IEs,
					v7xyNonCriticalExtensions		SEQUENCE {
						cellUpdate-v7xyext				CellUpdate-v7xyext-IEs,
						nonCriticalExtensions			SEQUENCE {}	OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}	OPTIONAL
}

CellUpdate-v590ext ::= SEQUENCE {
	establishmentCause				EstablishmentCause	OPTIONAL
}

CellUpdate-v690ext-IEs ::=			SEQUENCE {
	-- User equipment IEs
		cellUpdateCause-ext				CellUpdateCause-ext					OPTIONAL,
		trafficVolumeIndicator			ENUMERATED { true }					OPTIONAL,
	-- Measurement IEs
		measuredResultsOnRACHinterFreq	MeasuredResultsOnRACHinterFreq		OPTIONAL,
		reconfigurationStatusIndicator	ENUMERATED { true }					OPTIONAL
}

CellUpdate-v7xyext-IEs ::=			SEQUENCE {
	-- Call Type IE
		csCallType						ENUMERATED { speech, video, other, spare }	OPTIONAL
}

-- ***************************************************
--
-- CELL UPDATE CONFIRM
--
-- ***************************************************

CellUpdateConfirm ::= CHOICE {
	r3								SEQUENCE {
		cellUpdateConfirm-r3			CellUpdateConfirm-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			cellUpdateConfirm-v3a0ext		CellUpdateConfirm-v3a0ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				cellUpdateConfirm-r3-add-ext	BIT STRING	OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					cellUpdateConfirm-v4b0ext		CellUpdateConfirm-v4b0ext-IEs,
					v590NonCriticalExtenstions		SEQUENCE {
						cellUpdateConfirm-v590ext		CellUpdateConfirm-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {} OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				cellUpdateConfirm-r4			CellUpdateConfirm-r4-IEs,
				v4d0NonCriticalExtensions		SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					cellUpdateConfirm-r4-add-ext	BIT STRING		OPTIONAL,
					v590NonCriticalExtenstions		SEQUENCE {
						cellUpdateConfirm-v590ext		CellUpdateConfirm-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					cellUpdateConfirm-r5			CellUpdateConfirm-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					cellUpdateConfirm-r5-add-ext	BIT STRING		OPTIONAL,
					v5d0NonCriticalExtenstions		SEQUENCE {
						cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						cellUpdateConfirm-r6			CellUpdateConfirm-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						cellUpdateConfirm-r6-add-ext	BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							cellUpdateConfirm-r7			CellUpdateConfirm-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							cellUpdateConfirm-r7-add-ext	BIT STRING		OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

CellUpdateConfirm-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
		rlc-Re-establishIndicatorRb2-3or4		BOOLEAN,
		rlc-Re-establishIndicatorRb5orAbove		BOOLEAN,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList			OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		modeSpecificTransChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy and dummy2 are not used in this version of the specification, they should
				-- not be sent and if received they should be ignored.
				dummy							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList			OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

CellUpdateConfirm-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received the UE behaviour
	-- is unspecified
	new-DSCH-RNTI				DSCH-RNTI								OPTIONAL
}

CellUpdateConfirm-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

CellUpdateConfirm-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

CellUpdateConfirm-v5d0ext-IEs ::=	SEQUENCE {
	--Radio Bearer IEs
		pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL
}
CellUpdateConfirm-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
		rlc-Re-establishIndicatorRb2-3or4		BOOLEAN,
		rlc-Re-establishIndicatorRb5orAbove	BOOLEAN,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList-r4		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		modeSpecificTransChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy and dummy2 are not used in this version of the specification, they should
				-- not be sent and if received they should be ignored.
				dummy							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

CellUpdateConfirm-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
		rlc-Re-establishIndicatorRb2-3or4		BOOLEAN,
		rlc-Re-establishIndicatorRb5orAbove	BOOLEAN,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList-r5		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r5		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		modeSpecificTransChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy and dummy2 are not used in this version of the specification, they should
				-- not be sent and if received they should be ignored.
				dummy							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r5			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5			OPTIONAL
}

CellUpdateConfirm-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
		rlc-Re-establishIndicatorRb2-3or4		BOOLEAN,
		rlc-Re-establishIndicatorRb5orAbove		BOOLEAN,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
		pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

CellUpdateConfirm-v690ext-IEs ::=	SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

CellUpdateConfirm-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
		rlc-Re-establishIndicatorRb2-3or4		BOOLEAN,
		rlc-Re-establishIndicatorRb5orAbove		BOOLEAN,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
		pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

-- ***************************************************
--
-- CELL UPDATE CONFIRM for CCCH
--
-- ***************************************************

CellUpdateConfirm-CCCH ::= CHOICE {
	r3								SEQUENCE {
		-- User equipment IEs
			u-RNTI						U-RNTI,
		-- The rest of the message is identical to the one sent on DCCH.
			cellUpdateConfirm-r3				CellUpdateConfirm-r3-IEs,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				cellUpdateConfirm-CCCH-r3-add-ext			BIT STRING	OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					cellUpdateConfirm-v4b0ext		CellUpdateConfirm-v4b0ext-IEs,
					v590NonCriticalExtensions		SEQUENCE {
						cellUpdateConfirm-v590ext		CellUpdateConfirm-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {} OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		u-RNTI							U-RNTI,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				-- The rest of the message is identical to the one sent on DCCH.
				cellUpdateConfirm-r4			CellUpdateConfirm-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					cellUpdateConfirm-CCCH-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE {
						cellUpdateConfirm-v590ext		CellUpdateConfirm-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					cellUpdateConfirm-r5			CellUpdateConfirm-r5-IEs,
					cellUpdateConfirm-CCCH-r5-add-ext		BIT STRING		OPTIONAL,
					v5d0NonCriticalExtenstions		SEQUENCE {
						cellUpdateConfirm-v5d0ext		CellUpdateConfirm-v5d0ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							cellUpdateConfirm-v690ext		CellUpdateConfirm-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},		
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						cellUpdateConfirm-r6			CellUpdateConfirm-r6-IEs,
						cellUpdateConfirm-r6-add-ext	BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							cellUpdateConfirm-r7			CellUpdateConfirm-r7-IEs,
							cellUpdateConfirm-r7-add-ext	BIT STRING		OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

-- ***************************************************
--
-- COUNTER CHECK
--
-- ***************************************************

CounterCheck ::= CHOICE {
	r3								SEQUENCE {
		counterCheck-r3					CounterCheck-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			counterCheck-r3-add-ext		BIT STRING	OPTIONAL,
			nonCriticalExtensions		SEQUENCE {}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

CounterCheck-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Radio bearer IEs
		rb-COUNT-C-MSB-InformationList	RB-COUNT-C-MSB-InformationList
}

-- ***************************************************
--
-- COUNTER CHECK RESPONSE
--
-- ***************************************************

CounterCheckResponse ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Radio bearer IEs
		rb-COUNT-C-InformationList		RB-COUNT-C-InformationList			OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			counterCheckResponse-r3-add-ext		BIT STRING	OPTIONAL,
			nonCriticalExtensions				SEQUENCE {}	OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- DOWNLINK DIRECT TRANSFER
--
-- ***************************************************

DownlinkDirectTransfer ::= CHOICE {
	r3								SEQUENCE {
		downlinkDirectTransfer-r3		DownlinkDirectTransfer-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			downlinkDirectTransfer-r3-add-ext		BIT STRING	OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

DownlinkDirectTransfer-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
		nas-Message						NAS-Message
}

-- ***************************************************
--
-- HANDOVER TO UTRAN COMMAND
--
-- ***************************************************


HandoverToUTRANCommand ::= CHOICE {
	r3								SEQUENCE {
		handoverToUTRANCommand-r3		HandoverToUTRANCommand-r3-IEs,
		nonCriticalExtensions			SEQUENCE {} OPTIONAL
	},
	criticalExtensions				CHOICE {
		r4								SEQUENCE {
			handoverToUTRANCommand-r4		HandoverToUTRANCommand-r4-IEs,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		},
		criticalExtensions				CHOICE {
			r5								SEQUENCE {
				handoverToUTRANCommand-r5		HandoverToUTRANCommand-r5-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			},
			criticalExtensions				CHOICE {
				r6								SEQUENCE {
					handoverToUTRANCommand-r6		HandoverToUTRANCommand-r6-IEs,
					nonCriticalExtensions			SEQUENCE {}		OPTIONAL
				},
				criticalExtensions				CHOICE {
					r7								SEQUENCE {
						handoverToUTRANCommand-r7		HandoverToUTRANCommand-r7-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}

HandoverToUTRANCommand-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		new-U-RNTI						U-RNTI-Short,
		-- dummy is not used in this version of specification, it should
		-- not be sent and if received it should be ignored.
		dummy							ActivationTime						OPTIONAL,
		cipheringAlgorithm				CipheringAlgorithm					OPTIONAL,
	-- Radio bearer IEs
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				srb-InformationSetupList		SRB-InformationSetupList,
				rab-InformationSetupList		RAB-InformationSetupList			OPTIONAL,
				ul-CommonTransChInfo			UL-CommonTransChInfo,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList,
				dl-CommonTransChInfo			DL-CommonTransChInfo,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList,
				ul-DPCH-Info					UL-DPCH-Info,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						-- dummy and dummy2 are not used in this version of specification,
						-- they should not be sent and if received they should be ignored.
						dummy							DL-PDSCH-Information OPTIONAL,
						dummy2							CPCH-SetInfo		OPTIONAL
					},
					tdd								NULL
				},
				dl-CommonInformation			DL-CommonInformation,
				dl-InformationPerRL-List		DL-InformationPerRL-List,
				frequencyInfo					FrequencyInfo
			},
			preconfiguration				SEQUENCE {
-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
-- one for the FDD only elements and one for the TDD only elements, so that one
-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity
					}
				},
				rab-Info						RAB-Info-Post		OPTIONAL,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostFDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL-List		DL-InformationPerRL-ListPostFDD,
						frequencyInfo					FrequencyInfoFDD
					},
					tdd									SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostTDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL				DL-InformationPerRL-PostTDD,
						frequencyInfo					FrequencyInfoTDD,
						primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
					}
				}
			}
		},
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power
}

HandoverToUTRANCommand-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		new-U-RNTI						U-RNTI-Short,
		cipheringAlgorithm				CipheringAlgorithm					OPTIONAL,
	-- Radio bearer IEs
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				srb-InformationSetupList		SRB-InformationSetupList,
				rab-InformationSetupList		RAB-InformationSetupList-r4			OPTIONAL,
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4,
				ul-DPCH-Info					UL-DPCH-Info-r4,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						-- dummy and dummy2 are not used in this version of specification,
						-- they should not be sent and if received they should be ignored.
						dummy							DL-PDSCH-Information OPTIONAL,
						dummy2							CPCH-SetInfo		OPTIONAL
					},
					tdd								NULL
				},
				dl-CommonInformation			DL-CommonInformation-r4,
				dl-InformationPerRL-List		DL-InformationPerRL-List-r4,
				frequencyInfo					FrequencyInfo
			},
			preconfiguration				SEQUENCE {
-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
-- one for the FDD only elements and one for the TDD only elements, so that one
-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r4
					}
				},
				rab-Info						RAB-Info-Post		OPTIONAL,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostFDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL-List		DL-InformationPerRL-ListPostFDD,
						frequencyInfo					FrequencyInfoFDD
					},
					tdd								CHOICE {
						tdd384							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						},
						tdd128							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD-LCR-r4,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD-LCR-r4,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						}
					}
				}
			}
		},
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power
}

HandoverToUTRANCommand-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		new-U-RNTI						U-RNTI-Short,
		cipheringAlgorithm				CipheringAlgorithm					OPTIONAL,
	-- Radio bearer IEs
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				srb-InformationSetupList		SRB-InformationSetupList-r5,
				rab-InformationSetupList		RAB-InformationSetupList-r5			OPTIONAL,
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5,
				ul-DPCH-Info					UL-DPCH-Info-r5,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						-- dummy and dummy2 are not used in this version of specification,
						-- they should not be sent and if received they should be ignored.
						dummy							DL-PDSCH-Information OPTIONAL,
						dummy2							CPCH-SetInfo		OPTIONAL
					},
					tdd								NULL
				},
				dl-CommonInformation			DL-CommonInformation-r4,
				dl-InformationPerRL-List		DL-InformationPerRL-List-r5,
				frequencyInfo					FrequencyInfo
			},
			preconfiguration				SEQUENCE {
-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
-- one for the FDD only elements and one for the TDD only elements, so that one
-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r5
					}
				},
				rab-Info						RAB-Info-Post		OPTIONAL,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostFDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL-List		DL-InformationPerRL-ListPostFDD,
						frequencyInfo					FrequencyInfoFDD
					},
					tdd								CHOICE {
						tdd384							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						},
						tdd128							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD-LCR-r4,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD-LCR-r4,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						}
					}
				}
			}
		},
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power
}

HandoverToUTRANCommand-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		new-U-RNTI						U-RNTI-Short,
		cipheringAlgorithm				CipheringAlgorithm					OPTIONAL,
	-- Radio bearer IEs
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				srb-InformationSetupList		SRB-InformationSetupList-r6,
				rab-InformationSetupList		RAB-InformationSetupList-r6		OPTIONAL,
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5,
				ul-DPCH-Info					UL-DPCH-Info-r6,
				ul-EDCH-Information				UL-EDCH-Information-r6			OPTIONAL,
				dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6		OPTIONAL,
				dl-CommonInformation			DL-CommonInformation-r6,
				dl-InformationPerRL-List		DL-InformationPerRL-List-r6,
				frequencyInfo					FrequencyInfo
			},
			preconfiguration				SEQUENCE {
				-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
				-- one for the FDD only elements and one for the TDD only elements, so that one
				-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				},
				rab-Info						RAB-Info-Post		OPTIONAL,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostFDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL-List		DL-InformationPerRL-ListPostFDD,
						frequencyInfo					FrequencyInfoFDD
					},
					tdd								CHOICE {
						tdd384							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						},
						tdd128							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD-LCR-r4,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD-LCR-r4,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						}
					}
				}
			}
		},
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power
}

HandoverToUTRANCommand-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		new-U-RNTI						U-RNTI-Short,
		cipheringAlgorithm				CipheringAlgorithm						OPTIONAL,
	-- Radio bearer IEs
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				srb-InformationSetupList		SRB-InformationSetupList-r6,
				rab-InformationSetupList		RAB-InformationSetupList-r6		OPTIONAL,
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5,
				ul-DPCH-Info					UL-DPCH-Info-r7,
				dl-CommonInformation			DL-CommonInformation-r4,
				dl-InformationPerRL-List		DL-InformationPerRL-List-r7,
				frequencyInfo					FrequencyInfo
			},
			preconfiguration				SEQUENCE {
				-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
				-- one for the FDD only elements and one for the TDD only elements, so that one
				-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				},
				rab-Info						RAB-Info-Post		OPTIONAL,
				modeSpecificInfo				CHOICE {
					fdd								SEQUENCE {
						ul-DPCH-Info					UL-DPCH-InfoPostFDD,
						dl-CommonInformationPost		DL-CommonInformationPost,
						dl-InformationPerRL-List		DL-InformationPerRL-ListPostFDD,
						frequencyInfo					FrequencyInfoFDD
					},
					tdd								CHOICE {
						tdd384							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-InfoPostTDD,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						},
						tdd128							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-Info-r7,
							dl-InformationPerRL				DL-InformationPerRL-PostTDD-LCR-r4,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						},
						tdd768							SEQUENCE {
							ul-DPCH-Info					UL-DPCH-Info-r7,
							dl-InformationPerRL				DL-InformationPerRL-List-r7,
							frequencyInfo					FrequencyInfoTDD,
							primaryCCPCH-TX-Power			PrimaryCCPCH-TX-Power
						}
					}
				}
			}
		},
	-- Physical channel IEs
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power
}

-- ***************************************************
--
-- HANDOVER TO UTRAN COMPLETE
--
-- ***************************************************

HandoverToUTRANComplete ::= SEQUENCE {
	--TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
	-- TABULAR: startList is conditional on history.
		startList						STARTList							OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			handoverToUTRANComplete-r3-add-ext		BIT STRING	OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- INITIAL DIRECT TRANSFER
--
-- ***************************************************

InitialDirectTransfer ::= SEQUENCE {
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
		intraDomainNasNodeSelector		IntraDomainNasNodeSelector,
		nas-Message						NAS-Message,
	-- Measurement IEs
		measuredResultsOnRACH			MeasuredResultsOnRACH				OPTIONAL,
		v3a0NonCriticalExtensions		SEQUENCE {
		initialDirectTransfer-v3a0ext	InitialDirectTransfer-v3a0ext,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			initialDirectTransfer-r3-add-ext		BIT STRING	OPTIONAL,
				v590NonCriticalExtensions		SEQUENCE {
					initialDirectTransfer-v590ext	InitialDirectTransfer-v590ext,
					v690NonCriticalExtensions		SEQUENCE {
						initialDirectTransfer-v690ext	InitialDirectTransfer-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}	OPTIONAL
}

InitialDirectTransfer-v3a0ext ::= SEQUENCE {
	-- start-value shall always be included in this version of the protocol
	start-Value						START-Value							OPTIONAL
}
InitialDirectTransfer-v590ext ::= SEQUENCE {
	establishmentCause		EstablishmentCause	OPTIONAL
}

InitialDirectTransfer-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		plmn-Identity					PLMN-Identity						OPTIONAL,
	-- Measurement IEs
		measuredResultsOnRACHinterFreq	MeasuredResultsOnRACHinterFreq		OPTIONAL,
	-- MBMS IEs
		mbms-JoinedInformation			MBMS-JoinedInformation-r6			OPTIONAL
}

-- ***************************************************
--
-- HANDOVER FROM UTRAN COMMAND
--
-- ***************************************************

HandoverFromUTRANCommand-GSM ::= CHOICE {
	r3								SEQUENCE {
		handoverFromUTRANCommand-GSM-r3
										HandoverFromUTRANCommand-GSM-r3-IEs,
		-- UTRAN should not include the IE laterNonCriticalExtensions when it sets the IE 
		-- gsm-message included in handoverFromUTRANCommand-GSM-r3 to single-GSM-Message. The UE
		-- behaviour upon receiving a message with this combination of IE values is unspecified.
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			handoverFromUTRANCommand-GSM-r3-add-ext		BIT STRING	OPTIONAL,
			-- UTRAN may apply the r3 version of the message to perform PS handover
			-- for a single RAB only
			v690NonCriticalExtensions		SEQUENCE {
				handoverFromUTRANCommand-GSM-v690ext	HandoverFromUTRANCommand-GSM-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r6								SEQUENCE {
				handoverFromUTRANCommand-GSM-r6		HandoverFromUTRANCommand-GSM-r6-IEs,
				handoverFromUTRANCommand-GSM-r6-add-ext		BIT STRING	OPTIONAL,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

HandoverFromUTRANCommand-GSM-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		activationTime					ActivationTime						OPTIONAL,
	-- Radio bearer IEs
		toHandoverRAB-Info				RAB-Info							OPTIONAL,
	-- Measurement IEs
		frequency-band					Frequency-Band,
	-- Other IEs
		gsm-message						CHOICE {
			-- In the single-GSM-Message case the following rules apply:
			-- 1> the GSM message directly follows the basic production; the final padding that
			--    results when PER encoding the abstract syntax value is removed prior to appending 
			--    the GSM message.
			-- 2> the RRC message excluding the GSM part, does not contain a length determinant; 
			--    there is no explicit parameter indicating the size of the included GSM message.
			-- 3> depending on need, final padding (all “0”s) is added to ensure the final result
			--    comprises a full number of octets
			single-GSM-Message				SEQUENCE {},
			gsm-MessageList					SEQUENCE {
				gsm-Messages					GSM-MessageList
			}
		}
}

HandoverFromUTRANCommand-GSM-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		activationTime					ActivationTime						OPTIONAL,
	-- Radio bearer IEs
		toHandoverRAB-Info				RAB-InformationList-r6				OPTIONAL,
	-- Measurement IEs
		frequency-band					Frequency-Band,
	-- Other IEs
		gsm-message						CHOICE {
			-- In the single-GSM-Message case the following rules apply:
			-- 1> the GSM message directly follows the basic production; the final padding that
			--    results when PER encoding the abstract syntax value is removed prior to appending 
			--    the GSM message.
			-- 2> the RRC message excluding the GSM part, does not contain a length determinant; 
			--    there is no explicit parameter indicating the size of the included GSM message.
			-- 3> depending on need, final padding (all “0”s) is added to ensure the final result
			--    comprises a full number of octets
			single-GSM-Message				SEQUENCE {},
			gsm-MessageList					SEQUENCE {
				gsm-Messages					GSM-MessageList
			}
		},
		geran-SystemInfoType				CHOICE	{		
			sI									GERAN-SystemInformation,
			pSI									GERAN-SystemInformation
		}		OPTIONAL
}

HandoverFromUTRANCommand-GSM-v690ext-IEs ::= SEQUENCE {
		geran-SystemInfoType				CHOICE	{		
			sI									GERAN-SystemInformation,
			pSI									GERAN-SystemInformation
		}		OPTIONAL
}

HandoverFromUTRANCommand-GERANIu ::= SEQUENCE {
	rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	handoverFromUTRANCommand-GERANIu	CHOICE {
		r5									SEQUENCE {
			handoverFromUTRANCommand-GERANIu-r5
											HandoverFromUTRANCommand-GERANIu-r5-IEs,
			-- UTRAN should not include the IE nonCriticalExtensions when it sets
			-- the IE geranIu-message included in handoverFromUTRANCommand-GERANIu-r5 to 
			-- single-GERANIu-Message
			-- The UE behaviour upon receiving a message including this combination of IE values is
			-- not specified
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		},
		later-than-r5					SEQUENCE {
			criticalExtensions				SEQUENCE {}
		}
	}
}

HandoverFromUTRANCommand-GERANIu-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		activationTime					ActivationTime						OPTIONAL,
	-- Measurement IEs
		frequency-Band					Frequency-Band,
	-- Other IEs
		geranIu-Message						CHOICE {
			-- In the single-GERANIu-Message case the following rules apply:
			-- 1> the GERAN Iu message directly follows the basic production; the final padding that
			--    results when PER encoding the abstract syntax value is removed prior to appending 
			--    the GERAN Iu message.
			-- 2> the RRC message excluding the GERAN Iu part does not contain a length determinant; 
--    there is no explicit parameter indicating the size of the included GERAN Iu
--    message.
			-- 3> depending on need, final padding (all “0”s) is added to ensure the final result
			--    comprises a full number of octets.
			single-GERANIu-Message			SEQUENCE {},
			geranIu-MessageList				SEQUENCE {
				geranIu-Messages				GERANIu-MessageList
			}
		}
}

HandoverFromUTRANCommand-CDMA2000 ::= CHOICE {
	r3								SEQUENCE {
		handoverFromUTRANCommand-CDMA2000-r3
										HandoverFromUTRANCommand-CDMA2000-r3-IEs,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions 
			handoverFromUTRANCommand-CDMA2000-r3-add-ext		
												BIT STRING		OPTIONAL,
			nonCriticalExtensions				SEQUENCE {}		OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

HandoverFromUTRANCommand-CDMA2000-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		activationTime					ActivationTime						OPTIONAL,
	-- Radio bearer IEs
		toHandoverRAB-Info				RAB-Info							OPTIONAL,
	-- Other IEs
		cdma2000-MessageList			CDMA2000-MessageList
}

-- ***************************************************
--
-- HANDOVER FROM UTRAN FAILURE
--
-- ***************************************************

HandoverFromUTRANFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Other IEs
		interRAT-HO-FailureCause		InterRAT-HO-FailureCause			OPTIONAL,
		-- In case the interRATMessage to be transferred is for GERAN Iu mode, the
		-- message should be placed in the HandoverFromUtranFailure-v590ext-IEs
		-- non-critical extension container.
		interRATMessage					CHOICE {
			gsm								SEQUENCE {
				gsm-MessageList						GSM-MessageList
			},
			cdma2000							SEQUENCE {
				cdma2000-MessageList				CDMA2000-MessageList
			}
		}				OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			handoverFromUTRANFailure-r3-add-ext		BIT STRING	OPTIONAL,
			v590NonCriticalExtensions		SEQUENCE {
				handoverFromUTRANFailure-v590ext	HandoverFromUtranFailure-v590ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

HandoverFromUtranFailure-v590ext-IEs ::= SEQUENCE {
	geranIu-MessageList						GERANIu-MessageList			OPTIONAL
}

-- ***************************************************
--
-- INTER RAT HANDOVER INFO
--
-- ***************************************************

InterRATHandoverInfo ::= SEQUENCE {
	-- This structure is defined for historical reasons, backward compatibility with 44.018
	predefinedConfigStatusList		CHOICE {
		absent							NULL,
		present							PredefinedConfigStatusList
	},
	uE-SecurityInformation			CHOICE {
		absent							NULL,
		present							UE-SecurityInformation
	},
	ue-CapabilityContainer			CHOICE {
		absent							NULL,
		-- present is an octet aligned string containing IE UE-RadioAccessCapabilityInfo
		present							OCTET STRING (SIZE (0..63))
	},
	-- Non critical extensions
	v390NonCriticalExtensions		CHOICE {
		absent							NULL,
		present							SEQUENCE {
			interRATHandoverInfo-v390ext	InterRATHandoverInfo-v390ext-IEs,
			v3a0NonCriticalExtensions		SEQUENCE  {
				interRATHandoverInfo-v3a0ext	InterRATHandoverInfo-v3a0ext-IEs,
				laterNonCriticalExtensions		SEQUENCE {
					interRATHandoverInfo-v3d0ext 	InterRATHandoverInfo-v3d0ext-IEs,
					-- Container for additional R99 extensions
					interRATHandoverInfo-r3-add-ext		BIT STRING
								(CONTAINING InterRATHandoverInfo-r3-add-ext-IEs)	OPTIONAL,
					v3g0NonCriticalExtensions			SEQUENCE {
						interRATHandoverInfo-v3g0ext	InterRATHandoverInfo-v3g0ext-IEs,
						v4b0NonCriticalExtensions		SEQUENCE {
							interRATHandoverInfo-v4b0ext	InterRATHandoverInfo-v4b0ext-IEs,
							v4d0NonCriticalExtensions		SEQUENCE {
								interRATHandoverInfo-v4d0ext	InterRATHandoverInfo-v4d0ext-IEs,
								-- Reserved for future non critical extension
								v590NonCriticalExtensions		SEQUENCE {
									interRATHandoverInfo-v590ext
																InterRATHandoverInfo-v590ext-IEs,
									v690NonCriticalExtensions		SEQUENCE {
										interRATHandoverInfo-v690ext
																InterRATHandoverInfo-v690ext-IEs,
										v7xyNonCriticalExtensions		SEQUENCE {
											interRATHandoverInfo-v7xyext																							InterRATHandoverInfo-v7xyext-IEs,
											nonCriticalExtensions			SEQUENCE {}	OPTIONAL
										}	OPTIONAL
									}	OPTIONAL
								}	OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}
	}
}

InterRATHandoverInfo-v390ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v380ext	UE-RadioAccessCapability-v380ext		OPTIONAL,
		dl-PhysChCapabilityFDD-v380ext		DL-PhysChCapabilityFDD-v380ext
}

InterRATHandoverInfo-v3a0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3a0ext	UE-RadioAccessCapability-v3a0ext		OPTIONAL
}

InterRATHandoverInfo-v3d0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		uESpecificBehaviourInformation1interRAT		UESpecificBehaviourInformation1interRAT		OPTIONAL
}

InterRATHandoverInfo-v3g0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3g0ext	UE-RadioAccessCapability-v3g0ext		OPTIONAL
}

InterRATHandoverInfo-r3-add-ext-IEs ::= SEQUENCE {
		interRATHandoverInfo-v690ext1		InterRATHandoverInfo-v690ext1-IEs,
		nonCriticalExtensions				SEQUENCE {}		OPTIONAL
}

InterRATHandoverInfo-v4b0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		accessStratumReleaseIndicator		AccessStratumReleaseIndicator
}

InterRATHandoverInfo-v4d0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
	tdd128-RF-Capability				RadioFrequencyBandTDDList		OPTIONAL
}

InterRATHandoverInfo-v590ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		predefinedConfigStatusListComp		PredefinedConfigStatusListComp			OPTIONAL,
		ue-RadioAccessCapabilityComp		UE-RadioAccessCapabilityComp			OPTIONAL
}

InterRATHandoverInfo-v690ext1-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v650ext		UE-RadioAccessCapability-v650ext	OPTIONAL
}

InterRATHandoverInfo-v690ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-SecurityInformation2				UE-SecurityInformation2					OPTIONAL,
		ue-RadioAccessCapabilityComp		UE-RadioAccessCapabilityComp-ext		OPTIONAL,
		ue-RadioAccessCapabilityComp2		UE-RadioAccessCapabilityComp2
}

InterRATHandoverInfo-v7xyext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v7xyext	UE-RadioAccessCapability-v7xyext		OPTIONAL,
		ue-RadioAccessCapabilityComp		UE-RadioAccessCapabilityComp-r7			OPTIONAL
}

-- ***************************************************
--
-- MEASUREMENT CONTROL
--
-- ***************************************************

MeasurementControl ::= CHOICE {
	-- The Rel-4 functionality of UE Positioning OTDOA AssistanceData TDD is only available
	-- in the later-than-r3 branch of this message (i.e. through the use of the IE
	-- ue-Positioning-OTDOA-AssistanceData-r4)
	r3								SEQUENCE {
		measurementControl-r3			MeasurementControl-r3-IEs,
		v390nonCriticalExtensions		SEQUENCE {
			measurementControl-v390ext		MeasurementControl-v390ext,
			v3a0NonCriticalExtensions			SEQUENCE {
				measurementControl-v3a0ext			MeasurementControl-v3a0ext,
				laterNonCriticalExtensions		SEQUENCE {
					-- Container for additional R99 extensions
					measurementControl-r3-add-ext		BIT STRING	OPTIONAL,
					v4b0NonCriticalExtensions			SEQUENCE{
						-- The content of the v4b0 non-critical extension has been removed. If sent 
						-- to a UE of AS release 4, the UE behaviour is unspecified. A UE of AS 
						-- release 5 onward shall comply with the v4b0 and later extensions in this 
						-- branch of the message.
						v590NonCriticalExtensions		SEQUENCE {
							measurementControl-v590ext		MeasurementControl-v590ext-IEs,
							v5b0NonCriticalExtensions		SEQUENCE {
								measurementControl-v5b0ext		MeasurementControl-v5b0ext-IEs,
								v7xyNonCriticalExtensions		SEQUENCE {
									measurementControl-v7xyext		MeasurementControl-v7xyext-IEs,
									nonCriticalExtensions			SEQUENCE {}		OPTIONAL
								}						OPTIONAL
							}						OPTIONAL
						}						OPTIONAL
					}						OPTIONAL
				}						OPTIONAL
			}						OPTIONAL
		}						OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				measurementControl-r4			MeasurementControl-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					measurementControl-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE{
						measurementControl-v590ext		MeasurementControl-v590ext-IEs,
						v5b0NonCriticalExtensions		SEQUENCE {
							measurementControl-v5b0ext		MeasurementControl-v5b0ext-IEs,
							v7xyNonCriticalExtensions		SEQUENCE {
								measurementControl-v7xyext		MeasurementControl-v7xyext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			later-than-r4					SEQUENCE {
				-- Most significant part of "RRC transaction identifier" (MSP),
				-- "RRC transaction identifier" = rrc-TransactionIdentifier-MSP * 4 + 
				-- rrc-TransactionIdentifier
				rrc-TransactionIdentifier-MSP		RRC-TransactionIdentifier,
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						measurementControl-r6			MeasurementControl-r6-IEs,
						v6a0NonCriticalExtensions		SEQUENCE {
							measurementControl-v6a0ext		MeasurementControl-v6a0ext-IEs,
							v7xyNonCriticalExtensions		SEQUENCE {
								measurementControl-v7xyext		MeasurementControl-v7xyext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}

MeasurementControl-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Measurement IEs
		measurementIdentity		MeasurementIdentity,
		-- TABULAR: The measurement type is included in MeasurementCommand.
		measurementCommand				MeasurementCommand,
		measurementReportingMode		MeasurementReportingMode			OPTIONAL,
		additionalMeasurementList		AdditionalMeasurementID-List		OPTIONAL,
	-- Physical channel IEs
		dpch-CompressedModeStatusInfo	DPCH-CompressedModeStatusInfo		OPTIONAL
}

MeasurementControl-v390ext ::= SEQUENCE {
		ue-Positioning-Measurement-v390ext		UE-Positioning-Measurement-v390ext	OPTIONAL
}

MeasurementControl-v3a0ext ::= SEQUENCE {
	sfn-Offset-Validity				SFN-Offset-Validity		OPTIONAL
}

MeasurementControl-r4-IEs ::= SEQUENCE {
	-- Measurement IEs
		measurementIdentity		MeasurementIdentity,
		-- TABULAR: The measurement type is included in measurementCommand.
		measurementCommand				MeasurementCommand-r4,
		measurementReportingMode		MeasurementReportingMode			OPTIONAL,
		additionalMeasurementList		AdditionalMeasurementID-List		OPTIONAL,
	-- Physical channel IEs
		dpch-CompressedModeStatusInfo	DPCH-CompressedModeStatusInfo		OPTIONAL
}

MeasurementControl-v590ext-IEs ::= SEQUENCE {
	measurementCommand-v590ext 			CHOICE {
		-- the choice “intra-frequency” shall be used for the case of intra-frequency measurement,
		-- as well as when intra-frequency events are configured for inter-frequency measurement
		intra-frequency						Intra-FreqEventCriteriaList-v590ext,
		inter-frequency						Inter-FreqEventCriteriaList-v590ext
	}		OPTIONAL,
	intraFreqReportingCriteria-1b-r5		IntraFreqReportingCriteria-1b-r5	OPTIONAL,
	intraFreqEvent-1d-r5					IntraFreqEvent-1d-r5				OPTIONAL,
	-- most significant part of "RRC transaction identifier" (MSP),
	-- "RRC transaction identifier" = rrc-TransactionIdentifier-MSP-v590ext * 4 + 
	-- rrc-TransactionIdentifier
	rrc-TransactionIdentifier-MSP-v590ext	RRC-TransactionIdentifier
}

MeasurementControl-v5b0ext-IEs ::= 	SEQUENCE {
	interRATCellInfoIndication			InterRATCellInfoIndication			OPTIONAL
}

MeasurementControl-r6-IEs ::= SEQUENCE {
	-- Measurement IEs
		measurementIdentity		MeasurementIdentity,
		-- TABULAR: The measurement type is included in measurementCommand.
		measurementCommand				MeasurementCommand-r6,
		measurementReportingMode		MeasurementReportingMode			OPTIONAL,
		additionalMeasurementList		AdditionalMeasurementID-List		OPTIONAL,
	-- Physical channel IEs
		dpch-CompressedModeStatusInfo	DPCH-CompressedModeStatusInfo		OPTIONAL
}

MeasurementControl-v6a0ext-IEs ::= SEQUENCE {
	intraFreqReportingCriteria-1b-r5		IntraFreqReportingCriteria-1b-r5	OPTIONAL
}

MeasurementControl-v7xyext-IEs ::=	SEQUENCE {
	ue-Positioning-Measurement-v7xyext		UE-Positioning-Measurement-v7xyext
}

-- ***************************************************
--
-- MEASUREMENT CONTROL FAILURE
--
-- ***************************************************

MeasurementControlFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			measurementControlFailure-r3-add-ext		BIT STRING		OPTIONAL,
			v590NonCriticalExtensions		SEQUENCE {
				measurementControlFailure-v590ext		MeasurementControlFailure-v590ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

MeasurementControlFailure-v590ext-IEs ::= SEQUENCE {
	-- most significant part of "RRC transaction identifier" (MSP),
	-- "RRC transaction identifier" = rrc-TransactionIdentifier-MSP-v590ext * 4 + 
	-- rrc-TransactionIdentifier
	-- If the rrc-TransactionIdentifier-MSP-v590ext was not received in the MEASUREMENT CONTROL 
	-- message, then the rrc-TransactionIdentifier-MSP-v590ext shall be set to zero
	rrc-TransactionIdentifier-MSP-v590ext	RRC-TransactionIdentifier
}

-- ***************************************************
--
-- MEASUREMENT REPORT
--
-- ***************************************************

MeasurementReport ::= SEQUENCE {
	-- Measurement IEs
		measurementIdentity		MeasurementIdentity,
		measuredResults					MeasuredResults						OPTIONAL,
		measuredResultsOnRACH			MeasuredResultsOnRACH				OPTIONAL,
		additionalMeasuredResults		MeasuredResultsList					OPTIONAL,
		eventResults					EventResults						OPTIONAL,
	-- Non-critical extensions
		v390nonCriticalExtensions			SEQUENCE {
			measurementReport-v390ext		MeasurementReport-v390ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				measurementReport-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					measurementReport-v4b0ext		MeasurementReport-v4b0ext-IEs,
					-- Extension mechanism for non-Rel4 information
					v590NonCriticalExtensions	SEQUENCE {
						measurementReport-v590ext		MeasurementReport-v590ext-IEs,
						v5b0NonCriticalExtensions		SEQUENCE {
							measurementReport-v5b0ext		MeasurementReport-v5b0ext-IEs,
							v690NonCriticalExtensions			SEQUENCE {
								measurementReport-v690ext		MeasurementReport-v690ext-IEs,
								
								v7xyNonCriticalExtensions		SEQUENCE {
									measurementReport-v7xyext		MeasurementReport-v7xyext-IEs,
									nonCriticalExtensions			SEQUENCE {}				OPTIONAL
								}		OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
}

MeasurementReport-v390ext ::= SEQUENCE {
		measuredResults-v390ext			MeasuredResults-v390ext				OPTIONAL
}

MeasurementReport-v4b0ext-IEs ::= SEQUENCE {
	interFreqEventResults-LCR		InterFreqEventResults-LCR-r4-ext		OPTIONAL,
	-- additionalMeasuredResults-LCR shall contain measurement results and additional measurement
	-- results list.
	additionalMeasuredResults-LCR	MeasuredResultsList-LCR-r4-ext			OPTIONAL,
	-- dummy is not used in this version of the specification. It should not be sent and
	-- if received it should be ignored.
	dummy							PrimaryCPICH-Info						OPTIONAL
}

MeasurementReport-v590ext-IEs ::= SEQUENCE {
	measuredResults-v590ext				MeasuredResults-v590ext				OPTIONAL
}

MeasurementReport-v5b0ext-IEs ::= 	SEQUENCE {
	interRATCellInfoIndication			InterRATCellInfoIndication			OPTIONAL
}

MeasurementReport-v690ext-IEs ::= SEQUENCE {
	measuredResultsOnRACHinterFreq		MeasuredResultsOnRACHinterFreq		OPTIONAL
}

MeasurementReport-v7xyext-IEs ::= SEQUENCE {
	velocityEstimate					VelocityEstimate					OPTIONAL,
	ue-InternalMeasuredResults			UE-InternalMeasuredResults-r7		OPTIONAL
}

-- ***************************************************
--
-- PAGING TYPE 1
--
-- ***************************************************

PagingType1 ::= SEQUENCE {
	-- User equipment IEs
		pagingRecordList				PagingRecordList					OPTIONAL,
	-- Other IEs
		bcch-ModificationInfo			BCCH-ModificationInfo				OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			pagingType1-r3-add-ext			BIT STRING		OPTIONAL,
			v590NonCriticalExtensions		SEQUENCE {
				pagingType1-v590ext				PagingType1-v590ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

PagingType1-v590ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		pagingRecord2List				PagingRecord2List-r5				OPTIONAL
}

-- ***************************************************
--
-- PAGING TYPE 2
--
-- ***************************************************

PagingType2 ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		pagingCause						PagingCause,
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
		pagingRecordTypeID				PagingRecordTypeID,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			pagingType2-r3-add-ext			BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- PHYSICAL CHANNEL RECONFIGURATION
--
-- ***************************************************

PhysicalChannelReconfiguration ::= CHOICE {
	r3								SEQUENCE {
		physicalChannelReconfiguration-r3
										PhysicalChannelReconfiguration-r3-IEs,
		v3a0NonCriticalExtensions			SEQUENCE {
			physicalChannelReconfiguration-v3a0ext		PhysicalChannelReconfiguration-v3a0ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				physicalChannelReconfiguration-r3-add-ext			BIT STRING		OPTIONAL,
				v4b0NonCriticalExtenstions			SEQUENCE {
					physicalChannelReconfiguration-v4b0ext
												PhysicalChannelReconfiguration-v4b0ext-IEs,
					v590NonCriticalExtenstions			SEQUENCE {
						physicalChannelReconfiguration-v590ext
													PhysicalChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							physicalChannelReconfiguration-v690ext		
														PhysicalChannelReconfiguration-v690ext-IEs,
							nonCriticalExtensions					SEQUENCE {} OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
			criticalExtensions				CHOICE {
			r4								SEQUENCE {
				physicalChannelReconfiguration-r4
												PhysicalChannelReconfiguration-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					physicalChannelReconfiguration-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtenstions			SEQUENCE {
						physicalChannelReconfiguration-v590ext
												PhysicalChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							physicalChannelReconfiguration-v690ext		
														PhysicalChannelReconfiguration-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					physicalChannelReconfiguration-r5
													PhysicalChannelReconfiguration-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					physicalChannelReconfiguration-r5-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						physicalChannelReconfiguration-v690ext		
														PhysicalChannelReconfiguration-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						physicalChannelReconfiguration-r6
														PhysicalChannelReconfiguration-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						physicalChannelReconfiguration-r6-add-ext		BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							physicalChannelReconfiguration-r7
														PhysicalChannelReconfiguration-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							physicalChannelReconfiguration-r7-add-ext	BIT STRING	OPTIONAL,
							nonCriticalExtensions						SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

PhysicalChannelReconfiguration-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		-- Note: the reference to CPCH in the element name below is incorrect. The name is not
		-- changed to keep it aligned with R99.
		ul-ChannelRequirement			UL-ChannelRequirementWithCPCH-SetID		OPTIONAL,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

PhysicalChannelReconfiguration-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received the UE behaviour
	-- is unspecified
	new-DSCH-RNTI					DSCH-RNTI							OPTIONAL
}

PhysicalChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

PhysicalChannelReconfiguration-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

PhysicalChannelReconfiguration-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		-- Note: the reference to CPCH in the element name below is incorrect. The name is not
		-- changed to keep it aligned with R99.
		ul-ChannelRequirement			UL-ChannelRequirementWithCPCH-SetID-r4	OPTIONAL,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

PhysicalChannelReconfiguration-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		-- Note: the reference to CPCH in the element name below is incorrect. The name is not
		-- changed to keep it aligned with R99.
		ul-ChannelRequirement			UL-ChannelRequirementWithCPCH-SetID-r5	OPTIONAL,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5			OPTIONAL
}

PhysicalChannelReconfiguration-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

PhysicalChannelReconfiguration-v690ext-IEs ::= SEQUENCE {
	-- User Equipment IEs
		delayRestrictionFlag			DelayRestrictionFlag 				OPTIONAL,
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
		timingMaintainedSynchInd		TimingMaintainedSynchInd			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

PhysicalChannelReconfiguration-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}


-- ***************************************************
--
-- PHYSICAL CHANNEL RECONFIGURATION COMPLETE
--
-- ***************************************************

PhysicalChannelReconfigurationComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
		-- TABULAR: UL-TimingAdvance is applicable for TDD mode only.
		ul-TimingAdvance				UL-TimingAdvance					OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			physicalChannelReconfigurationComplete-r3-add-ext		BIT STRING		OPTIONAL,
			v7xyNonCriticalExtensions		SEQUENCE {
				physicalChannelReconfigurationComplete-v7xyext
									PhysicalChannelReconfigurationComplete-v7xyext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

PhysicalChannelReconfigurationComplete-v7xyext-IEs ::=	SEQUENCE {
		ext-ul-TimingAdvance			EXT-UL-TimingAdvance				OPTIONAL
}

-- ***************************************************
--
-- PHYSICAL CHANNEL RECONFIGURATION FAILURE
--
-- ***************************************************

PhysicalChannelReconfigurationFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier			OPTIONAL,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			physicalChannelReconfigurationFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- PHYSICAL SHARED CHANNEL ALLOCATION (TDD only)
--
-- ***************************************************

PhysicalSharedChannelAllocation ::= CHOICE {
	r3								SEQUENCE {
		physicalSharedChannelAllocation-r3
										PhysicalSharedChannelAllocation-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			physicalSharedChannelAllocation-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		dsch-RNTI						DSCH-RNTI							OPTIONAL,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				physicalSharedChannelAllocation-r4
												PhysicalSharedChannelAllocation-r4-IEs,
				v4d0NonCriticalExtensions		SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					physicalSharedChannelAllocation-r4-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						physicalSharedChannelAllocation-v690ext
														PhysicalSharedChannelAllocation-v690ext-IEs,
						v7xyNonCriticalExtensions		SEQUENCE {
							physicalSharedChannelAllocation-v7xyext
														PhysicalSharedChannelAllocation-v7xyext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

PhysicalSharedChannelAllocation-r3-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
		dsch-RNTI						DSCH-RNTI							OPTIONAL,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Physical channel IEs
		ul-TimingAdvance				UL-TimingAdvanceControl				OPTIONAL,
		pusch-CapacityAllocationInfo	PUSCH-CapacityAllocationInfo		OPTIONAL,
		pdsch-CapacityAllocationInfo	PDSCH-CapacityAllocationInfo		OPTIONAL,
		-- TABULAR: If confirmRequest is not present, the default value "No Confirm"
		-- shall be used as specified in 10.2.25.		
		confirmRequest					ENUMERATED {
											confirmPDSCH, confirmPUSCH }	OPTIONAL,
		trafficVolumeReportRequest		INTEGER (0..255)					OPTIONAL,	
		iscpTimeslotList					TimeslotList						OPTIONAL,
		requestPCCPCHRSCP					BOOLEAN
}

PhysicalSharedChannelAllocation-r4-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- Physical channel IEs
		ul-TimingAdvance				UL-TimingAdvanceControl-r4			OPTIONAL,
		pusch-CapacityAllocationInfo	PUSCH-CapacityAllocationInfo-r4		OPTIONAL,
		pdsch-CapacityAllocationInfo	PDSCH-CapacityAllocationInfo-r4		OPTIONAL,
		-- TABULAR: If confirmRequest is not present, the default value "No Confirm"
		-- shall be used as specified in 10.2.25.		
		confirmRequest					ENUMERATED {
											confirmPDSCH, confirmPUSCH }	OPTIONAL,
		trafficVolumeReportRequest		INTEGER (0..255)					OPTIONAL,
		iscpTimeslotList				TimeslotList-r4						OPTIONAL,
		requestPCCPCHRSCP				BOOLEAN
}

PhysicalSharedChannelAllocation-v690ext-IEs ::= SEQUENCE {
	-- Physical Channel IEs
		beaconPLEst						BEACON-PL-Est						OPTIONAL
}

PhysicalSharedChannelAllocation-v7xyext-IEs ::= SEQUENCE {
		ul-TimingAdvance				UL-TimingAdvanceControl-r7			OPTIONAL,
		pusch-CapacityAllocationInfo	PUSCH-CapacityAllocationInfo-r7		OPTIONAL,
		pdsch-CapacityAllocationInfo	PDSCH-CapacityAllocationInfo-r7		OPTIONAL
}

-- ***************************************************
--
-- PUSCH CAPACITY REQUEST (TDD only)
--
-- ***************************************************

PUSCHCapacityRequest ::= SEQUENCE {
	-- User equipment IEs
		dsch-RNTI						DSCH-RNTI							OPTIONAL,
	-- Measurement IEs
		trafficVolume					TrafficVolumeMeasuredResultsList	OPTIONAL,
		timeslotListWithISCP			TimeslotListWithISCP				OPTIONAL,
		primaryCCPCH-RSCP				PrimaryCCPCH-RSCP					OPTIONAL,
		allocationConfirmation			CHOICE {
			pdschConfirmation				PDSCH-Identity,
			puschConfirmation				PUSCH-Identity
		}																	OPTIONAL,
		protocolErrorIndicator			ProtocolErrorIndicatorWithMoreInfo,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			puschCapacityRequest-r3-add-ext		BIT STRING		OPTIONAL,
			v590NonCriticalExtensions		SEQUENCE {
				puschCapacityRequest-v590ext	PUSCHCapacityRequest-v590ext,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}		OPTIONAL
		}	OPTIONAL
}

PUSCHCapacityRequest-v590ext ::= SEQUENCE {
	primaryCCPCH-RSCP-delta				DeltaRSCP			OPTIONAL
}
-- ***************************************************
--
-- RADIO BEARER RECONFIGURATION
--
-- ***************************************************

RadioBearerReconfiguration ::= CHOICE {
	r3								SEQUENCE {
		radioBearerReconfiguration-r3	RadioBearerReconfiguration-r3-IEs,
		-- Prefix "v3ao" is used (in one instance) to keep alignment with R99
		v3aoNonCriticalExtensions		SEQUENCE {
			radioBearerReconfiguration-v3a0ext	RadioBearerReconfiguration-v3a0ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				radioBearerReconfiguration-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions			SEQUENCE {
					radioBearerReconfiguration-v4b0ext	
													RadioBearerReconfiguration-v4b0ext-IEs,
					v590NonCriticalExtensions			SEQUENCE {
						radioBearerReconfiguration-v590ext	
														RadioBearerReconfiguration-v590ext-IEs,
						v5d0NonCriticalExtenstions			SEQUENCE {
							radioBearerReconfiguration-v5d0ext
															RadioBearerReconfiguration-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								radioBearerReconfiguration-v690ext
															RadioBearerReconfiguration-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {} OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				radioBearerReconfiguration-r4	RadioBearerReconfiguration-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					radioBearerReconfiguration-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions			SEQUENCE {
						radioBearerReconfiguration-v590ext	
													RadioBearerReconfiguration-v590ext-IEs,
						v5d0NonCriticalExtenstions			SEQUENCE {
							radioBearerReconfiguration-v5d0ext
															RadioBearerReconfiguration-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								radioBearerReconfiguration-v690ext
															RadioBearerReconfiguration-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5									SEQUENCE {
					radioBearerReconfiguration-r5		RadioBearerReconfiguration-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					radioBearerReconfiguration-r5-add-ext		BIT STRING		OPTIONAL,
					v5d0NonCriticalExtenstions			SEQUENCE {
						radioBearerReconfiguration-v5d0ext	RadioBearerReconfiguration-v5d0ext-IEs,
						v690NonCriticalExtensions			SEQUENCE {
							radioBearerReconfiguration-v690ext
															RadioBearerReconfiguration-v690ext-IEs,
							nonCriticalExtensions				SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6									SEQUENCE {
						radioBearerReconfiguration-r6		RadioBearerReconfiguration-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						radioBearerReconfiguration-r6-add-ext		BIT STRING		OPTIONAL,
						nonCriticalExtensions				SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7									SEQUENCE {
							radioBearerReconfiguration-r7		RadioBearerReconfiguration-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8 								radioBearerReconfiguration-r7-add-ext		BIT STRING		OPTIONAL,
							nonCriticalExtensions				SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

RadioBearerReconfiguration-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		-- NOTE: IE rb-InformationReconfigList should be optional in later versions
		-- of this message
		rb-InformationReconfigList		RB-InformationReconfigList,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfo2List		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		-- NOTE: IE dl-InformationPerRL-List is optional in later versions
		-- of this message
		dl-InformationPerRL-List		DL-InformationPerRL-List
}

RadioBearerReconfiguration-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received the UE behaviour
	-- is unspecified
	new-DSCH-RNTI					DSCH-RNTI							OPTIONAL
}

RadioBearerReconfiguration-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

RadioBearerReconfiguration-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

RadioBearerReconfiguration-v5d0ext-IEs ::= SEQUENCE {
	--Radio Bearer IEs
		pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL
}

RadioBearerReconfiguration-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReconfigList		RB-InformationReconfigList-r4		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4 		OPTIONAL
}

RadioBearerReconfiguration-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received 
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
			-- Radio bearer IEs
				rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
				rb-InformationReconfigList		RB-InformationReconfigList-r5		OPTIONAL,
				rb-InformationAffectedList		RB-InformationAffectedList-r5		OPTIONAL,
				rb-PDCPContextRelocationList	RB-PDCPContextRelocationList		OPTIONAL,
			-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
				-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the
				-- specification, they should not be sent and if received they should be ignored.
				dummy							CHOICE {
					fdd								SEQUENCE {
						dummy1							CPCH-SetID					OPTIONAL,
						dummy2							DRAC-StaticInformationList	OPTIONAL
					},
					tdd								NULL
				}																	OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
			-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
			-- one for the FDD only elements and one for the TDD only elements, so that one
			-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r5
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r5			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5 		OPTIONAL
}

RadioBearerReconfiguration-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
			-- Radio bearer IEs
				rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
				rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
				rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
				rb-PDCPContextRelocationList	RB-PDCPContextRelocationList		OPTIONAL,
				pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
			-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
			-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
			-- one for the FDD only elements and one for the TDD only elements, so that one
			-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

RadioBearerReconfiguration-v690ext-IEs ::= SEQUENCE {
	-- User Equipment IEs
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
		timingMaintainedSynchInd		TimingMaintainedSynchInd			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

RadioBearerReconfiguration-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
			-- Radio bearer IEs
				rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
				rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
				rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
				rb-PDCPContextRelocationList	RB-PDCPContextRelocationList		OPTIONAL,
				pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
			-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
			-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
			-- one for the FDD only elements and one for the TDD only elements, so that one
			-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER RECONFIGURATION COMPLETE
--
-- ***************************************************

RadioBearerReconfigurationComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
		-- TABULAR: UL-TimingAdvance is applicable for TDD mode only.
		ul-TimingAdvance				UL-TimingAdvance					OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerReconfigurationComplete-r3-add-ext		BIT STRING		OPTIONAL,
			v7xyNonCriticalExtensions		SEQUENCE {
				radioBearerReconfigurationComplete-v7xyext
												RadioBearerReconfigurationComplete-v7xyext-IEs,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

RadioBearerReconfigurationComplete-v7xyext-IEs ::= SEQUENCE {
		ext-ul-TimingAdvance			EXT-UL-TimingAdvance				OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER RECONFIGURATION FAILURE
--
-- ***************************************************

RadioBearerReconfigurationFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
	-- Radio bearer IEs
		potentiallySuccesfulBearerList	RB-IdentityList						OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerReconfigurationFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}	OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER RELEASE
--
-- ***************************************************

RadioBearerRelease ::= CHOICE {
	r3								SEQUENCE {
		radioBearerRelease-r3			RadioBearerRelease-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			radioBearerRelease-v3a0ext		RadioBearerRelease-v3a0ext,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerRelease-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					radioBearerRelease-v4b0ext		RadioBearerRelease-v4b0ext-IEs,
					v590NonCriticalExtensions		SEQUENCE {
						radioBearerRelease-v590ext		RadioBearerRelease-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							radioBearerRelease-v690ext		RadioBearerRelease-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {} OPTIONAL
						}		OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				radioBearerRelease-r4			RadioBearerRelease-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					radioBearerRelease-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE {
						radioBearerRelease-v590ext		RadioBearerRelease-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							radioBearerRelease-v690ext		RadioBearerRelease-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					radioBearerRelease-r5			RadioBearerRelease-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					radioBearerRelease-r5-add-ext	BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						radioBearerRelease-v690ext		RadioBearerRelease-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						radioBearerRelease-r6			RadioBearerRelease-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						radioBearerRelease-r6-add-ext	BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							radioBearerRelease-r7			RadioBearerRelease-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							radioBearerRelease-r7-add-ext	BIT STRING		OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

RadioBearerRelease-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
		signallingConnectionRelIndication	CN-DomainIdentity		     	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfo2List		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

RadioBearerRelease-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received the UE behaviour
	-- is unspecified
	new-DSCH-RNTI					DSCH-RNTI							OPTIONAL
}

RadioBearerRelease-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		--  in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

RadioBearerRelease-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

RadioBearerRelease-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
		signallingConnectionRelIndication	CN-DomainIdentity				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

RadioBearerRelease-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
		signallingConnectionRelIndication	CN-DomainIdentity		     	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList,
		rb-InformationAffectedList		RB-InformationAffectedList-r5		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r5			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5			OPTIONAL
}

RadioBearerRelease-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
		timingMaintainedSynchInd		TimingMaintainedSynchInd			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL,
		mbms-RB-ListReleasedToChangeTransferMode
										RB-InformationReleaseList			OPTIONAL
}

RadioBearerRelease-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
		signallingConnectionRelIndication	CN-DomainIdentity				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList,
		rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL,
		mbms-RB-ListReleasedToChangeTransferMode
										RB-InformationReleaseList			OPTIONAL
}

RadioBearerRelease-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
		signallingConnectionRelIndication	CN-DomainIdentity				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList,
		rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL,
		mbms-RB-ListReleasedToChangeTransferMode
										RB-InformationReleaseList			OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER RELEASE COMPLETE
--
-- ***************************************************

RadioBearerReleaseComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
		-- TABULAR: UL-TimingAdvance is applicable for TDD mode only.
		ul-TimingAdvance				UL-TimingAdvance					OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerReleaseComplete-r3-add-ext		BIT STRING		OPTIONAL,
			v7xyNonCriticalExtensions		SEQUENCE {
				radioBearerReleaseComplete-v7xyext
												RadioBearerReleaseComplete-v7xyext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

RadioBearerReleaseComplete-v7xyext-IEs ::= SEQUENCE {
		ext-ul-TimingAdvance			EXT-UL-TimingAdvance				OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER RELEASE FAILURE
--
-- ***************************************************

RadioBearerReleaseFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
	-- Radio bearer IEs
		potentiallySuccesfulBearerList	RB-IdentityList						OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerReleaseFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER SETUP
--
-- ***************************************************

RadioBearerSetup ::= CHOICE {
	r3								SEQUENCE {
		radioBearerSetup-r3				RadioBearerSetup-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			radioBearerSetup-v3a0ext		RadioBearerSetup-v3a0ext,
			laterNonCriticalExtensions		SEQUENCE {
				-- Container for additional R99 extensions
				radioBearerSetup-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					radioBearerSetup-v4b0ext		RadioBearerSetup-v4b0ext-IEs,
					v590NonCriticalExtensions		SEQUENCE {
						radioBearerSetup-v590ext		RadioBearerSetup-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							radioBearerSetup-v5d0ext		RadioBearerSetup-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								radioBearerSetup-v690ext		RadioBearerSetup-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {} OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				radioBearerSetup-r4				RadioBearerSetup-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					radioBearerSetup-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE {
						radioBearerSetup-v590ext		RadioBearerSetup-v590ext-IEs,
						v5d0NonCriticalExtenstions		SEQUENCE {
							radioBearerSetup-v5d0ext		RadioBearerSetup-v5d0ext-IEs,
							v690NonCriticalExtensions		SEQUENCE {
								radioBearerSetup-v690ext		RadioBearerSetup-v690ext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					radioBearerSetup-r5				RadioBearerSetup-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					radioBearerSetup-r5-add-ext		BIT STRING		OPTIONAL,
					v5d0NonCriticalExtenstions		SEQUENCE {
						radioBearerSetup-v5d0ext		RadioBearerSetup-v5d0ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							radioBearerSetup-v690ext		RadioBearerSetup-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						radioBearerSetup-r6				RadioBearerSetup-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						radioBearerSetup-r6-add-ext		BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							radioBearerSetup-r7				RadioBearerSetup-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							radioBearerSetup-r7-add-ext		BIT STRING		OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

RadioBearerSetup-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- Radio bearer IEs
		srb-InformationSetupList		SRB-InformationSetupList			OPTIONAL,
		rab-InformationSetupList		RAB-InformationSetupList			OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList			OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

RadioBearerSetup-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received the UE behaviour
	-- is unspecified
	new-DSCH-RNTI					DSCH-RNTI							OPTIONAL
}

RadioBearerSetup-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

RadioBearerSetup-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

RadioBearerSetup-v5d0ext-IEs ::=	SEQUENCE {
	--Radio Bearer IEs
		pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL
}

RadioBearerSetup-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- Radio bearer IEs
		srb-InformationSetupList		SRB-InformationSetupList			OPTIONAL,
		rab-InformationSetupList		RAB-InformationSetupList-r4			OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList			OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList			OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

RadioBearerSetup-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- Radio bearer IEs
		srb-InformationSetupList		SRB-InformationSetupList-r5			OPTIONAL,
		rab-InformationSetupList		RAB-InformationSetupList-r5			OPTIONAL,
		rb-InformationAffectedList		RB-InformationAffectedList-r5		OPTIONAL,
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-deletedTransChInfoList		UL-DeletedTransChInfoList			OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r5			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd								NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5			OPTIONAL
}

RadioBearerSetup-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
		timingMaintainedSynchInd		TimingMaintainedSynchInd			OPTIONAL,
	-- Radio bearer IEs
		rab-InformationSetupList		RAB-InformationSetupList-r6-ext		OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

RadioBearerSetup-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
		specificationMode				CHOICE {
			complete						SEQUENCE {
			-- Radio bearer IEs
				srb-InformationSetupList		SRB-InformationSetupList-r6			OPTIONAL,
				rab-InformationSetupList		RAB-InformationSetupList-r6			OPTIONAL,
				rab-InformationReconfigList		RAB-InformationReconfigList			OPTIONAL,
				rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
				rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
				dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
				pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
			-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
				rab-Info						RAB-Info-r6,
				defaultConfigMode				DefaultConfigMode,
				defaultConfigIdentity 			DefaultConfigIdentity-r6,
				rb-InformationChangedList		RB-InformationChangedList-r6		OPTIONAL,
				powerOffsetInfoShort			PowerOffsetInfoShort
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

RadioBearerSetup-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
		specificationMode				CHOICE {
			complete						SEQUENCE {
			-- Radio bearer IEs
				srb-InformationSetupList		SRB-InformationSetupList-r6			OPTIONAL,
				rab-InformationSetupList		RAB-InformationSetupList-r6			OPTIONAL,
				rb-InformationReconfigList		RB-InformationReconfigList-r6		OPTIONAL,
				rb-InformationAffectedList		RB-InformationAffectedList-r6		OPTIONAL,
				dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
				pdcp-ROHC-TargetMode			PDCP-ROHC-TargetMode				OPTIONAL,
			-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-deletedTransChInfoList		UL-DeletedTransChInfoList-r6		OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-DeletedTransChInfoList		DL-DeletedTransChInfoList-r5		OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
				rab-Info						RAB-Info-r6,
				defaultConfigMode				DefaultConfigMode,
				defaultConfigIdentity 			DefaultConfigIdentity-r6,
				rb-InformationChangedList		RB-InformationChangedList-r6		OPTIONAL,
				powerOffsetInfoShort			PowerOffsetInfoShort
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER SETUP COMPLETE
--
-- ***************************************************

RadioBearerSetupComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
		-- TABULAR: UL-TimingAdvance is applicable for TDD mode only.
		ul-TimingAdvance				UL-TimingAdvance					OPTIONAL,
		start-Value				START-Value									OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerSetupComplete-r3-add-ext		BIT STRING		OPTIONAL,
			v7xyNonCriticalExtensions		SEQUENCE {
				radioBearerSetupComplete-v7xyext
												RadioBearerSetupComplete-v7xyext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

RadioBearerSetupComplete-v7xyext-IEs ::= SEQUENCE {
		ext-ul-TimingAdvance			EXT-UL-TimingAdvance				OPTIONAL
}

-- ***************************************************
--
-- RADIO BEARER SETUP FAILURE
--
-- ***************************************************

RadioBearerSetupFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
	-- Radio bearer IEs
		potentiallySuccesfulBearerList	RB-IdentityList						OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			radioBearerSetupFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- RRC CONNECTION REJECT
--
-- ***************************************************

RRCConnectionReject ::= CHOICE {
	r3								SEQUENCE {
		rrcConnectionReject-r3			RRCConnectionReject-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcConnectionReject-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions			SEQUENCE {
				rrcConnectionReject-v690ext		RRCConnectionReject-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL 
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		initialUE-Identity				InitialUE-Identity,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

RRCConnectionReject-r3-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
		initialUE-Identity				InitialUE-Identity,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		rejectionCause					RejectionCause,
		waitTime						WaitTime,
		redirectionInfo					RedirectionInfo						OPTIONAL
}

RRCConnectionReject-v690ext-IEs ::= SEQUENCE {
	redirectionInfo-v690ext				GSM-TargetCellInfoList			OPTIONAL
}

-- ***************************************************
--
-- RRC CONNECTION RELEASE
--
-- ***************************************************

RRCConnectionRelease ::= CHOICE {
	r3								SEQUENCE {
		rrcConnectionRelease-r3			RRCConnectionRelease-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcConnectionRelease-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions			SEQUENCE { 
				rrcConnectionRelease-v690ext	RRCConnectionRelease-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL 
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				rrcConnectionRelease-r4			RRCConnectionRelease-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-6
					rrcConnectionRelease-r4-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions			SEQUENCE {
						rrcConnectionRelease-v690ext
												RRCConnectionRelease-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

RRCConnectionRelease-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		-- n-308 is conditional on the UE state
		n-308							N-308								OPTIONAL,
		releaseCause					ReleaseCause,
		rplmn-information				Rplmn-Information					OPTIONAL
}

RRCConnectionRelease-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		-- n-308 is conditional on the UE state.
		n-308							N-308								OPTIONAL,
		releaseCause					ReleaseCause,
		rplmn-information				Rplmn-Information-r4				OPTIONAL
}

RRCConnectionRelease-v690ext-IEs ::= SEQUENCE {
	redirectionInfo-v690ext				RedirectionInfo-r6	OPTIONAL
}

-- ***************************************************
--
-- RRC CONNECTION RELEASE for CCCH
--
-- ***************************************************

RRCConnectionRelease-CCCH ::= CHOICE {
	r3								SEQUENCE {
		rrcConnectionRelease-CCCH-r3	RRCConnectionRelease-CCCH-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcConnectionRelease-CCCH-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions		SEQUENCE { 
				rrcConnectionRelease-v690ext	RRCConnectionRelease-CCCH-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		u-RNTI							U-RNTI,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				rrcConnectionRelease-CCCH-r4	RRCConnectionRelease-CCCH-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					rrcConnectionRelease-CCCH-r4-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE { 
						rrcConnectionRelease-v690ext	RRCConnectionRelease-CCCH-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				}		OPTIONAL
			},
			criticalExtensions				SEQUENCE {
				-- TABULAR: CHOICE IdentityType (U-RNTI, GroupIdentity) is replaced with the 
				-- optional element groupIdentity, since the U-RNTI is mandatory in ASN.1.
				-- In case CHOICE IdentityType is equal to GroupIdentity the value of the U-RNTI 
				-- shall be ignored by a UE complying with this version of the message.
				groupIdentity		SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF
											GroupReleaseInformation		OPTIONAL,
				criticalExtensions				CHOICE {
					r5								SEQUENCE {
						rrcConnectionRelease-CCCH-r5	RRCConnectionRelease-CCCH-r5-IEs,
						-- Container for adding non critical extensions after freezing REL-6
						rrcConnectionRelease-CCCH-r5-add-ext		BIT STRING		OPTIONAL,
						v690NonCriticalExtensions		SEQUENCE { 
							rrcConnectionRelease-v690ext	RRCConnectionRelease-CCCH-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}	OPTIONAL
						}	OPTIONAL
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}

RRCConnectionRelease-CCCH-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		u-RNTI							U-RNTI,
	-- The rest of the message is identical to the one sent on DCCH.
		rrcConnectionRelease			RRCConnectionRelease-r3-IEs
}

RRCConnectionRelease-CCCH-r4-IEs ::= SEQUENCE {
	-- The rest of the message is identical to the one sent on DCCH.
		rrcConnectionRelease			RRCConnectionRelease-r4-IEs
}

-- The R5 and R4 sequence of IEs are identical in this message
RRCConnectionRelease-CCCH-r5-IEs ::= RRCConnectionRelease-CCCH-r4-IEs

-- The R6 non-critical extension is identical to the one sent on DCCH.
RRCConnectionRelease-CCCH-v690ext-IEs ::= RRCConnectionRelease-v690ext-IEs

-- ***************************************************
--
-- RRC CONNECTION RELEASE COMPLETE
--
-- ***************************************************

RRCConnectionReleaseComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		errorIndication					FailureCauseWithProtErr				OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcConnectionReleaseComplete-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- RRC CONNECTION REQUEST
--
-- ***************************************************

RRCConnectionRequest ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
		initialUE-Identity				InitialUE-Identity,
		establishmentCause				EstablishmentCause,
		-- protocolErrorIndicator is MD, but for compactness reasons no default value
		-- has been assigned to it.
		protocolErrorIndicator			ProtocolErrorIndicator,
	-- Measurement IEs
		measuredResultsOnRACH			MeasuredResultsOnRACH				OPTIONAL,
	--	Non critical Extensions
		v3d0NonCriticalExtensions			SEQUENCE {
			rRCConnectionRequest-v3d0ext 	RRCConnectionRequest-v3d0ext-IEs,
		-- Reserved for future non critical extension
			v4b0NonCriticalExtensions			SEQUENCE {
				rrcConnectionRequest-v4b0ext		RRCConnectionRequest-v4b0ext-IEs,
				v590NonCriticalExtensions			SEQUENCE {
					rrcConnectionRequest-v590ext		RRCConnectionRequest-v590ext-IEs,
					v690NonCriticalExtensions			SEQUENCE {
						rrcConnectionRequest-v690ext	RRCConnectionRequest-v690ext-IEs,
						-- Reserved for future non critical extension
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		} 	OPTIONAL
}

RRCConnectionRequest-v3d0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		uESpecificBehaviourInformation1idle		UESpecificBehaviourInformation1idle		OPTIONAL
}

RRCConnectionRequest-v4b0ext-IEs ::= 	SEQUENCE {
	-- User equipment IEs
		accessStratumReleaseIndicator			AccessStratumReleaseIndicator
}

RRCConnectionRequest-v590ext-IEs ::= 	SEQUENCE {
	-- User equipment IEs
		predefinedConfigStatusInfo			BOOLEAN
}

RRCConnectionRequest-v690ext-IEs ::=	SEQUENCE {
	-- User equipment IEs
		ueCapabilityIndication				ENUMERATED { hsdch, hsdch-edch }	OPTIONAL,
	-- Measurement IEs
		measuredResultsOnRACHinterFreq		MeasuredResultsOnRACHinterFreq			OPTIONAL,
		domainIndicator 					CHOICE {
			cs-domain							SEQUENCE {
				csCallType							ENUMERATED {speech, video, other, spare }
			},
			ps-domain 							NULL
		}
}

-- ***************************************************
--
-- RRC CONNECTION SETUP
--
-- ***************************************************

RRCConnectionSetup ::= CHOICE {
	r3								SEQUENCE {
		rrcConnectionSetup-r3			RRCConnectionSetup-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcConnectionSetup-r3-add-ext	BIT STRING		OPTIONAL,
			v4b0NonCriticalExtensions		SEQUENCE { 
				rrcConnectionSetup-v4b0ext		RRCConnectionSetup-v4b0ext-IEs,
				v590NonCriticalExtensions		SEQUENCE { 
					rrcConnectionSetup-v590ext		RRCConnectionSetup-v590ext-IEs,
					v690NonCriticalExtensions		SEQUENCE {
						rrcConnectionSetup-v690ext		RRCConnectionSetup-v690ext-IEs,
						v7xyNonCriticalExtensions		SEQUENCE {
							rrcConnectionSetup-v7xyext		RRCConnectionSetup-v7xyext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		initialUE-Identity				InitialUE-Identity,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				rrcConnectionSetup-r4			RRCConnectionSetup-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					rrcConnectionSetup-r4-add-ext	BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE { 
						rrcConnectionSetup-v590ext		RRCConnectionSetup-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							rrcConnectionSetup-v690ext		RRCConnectionSetup-v690ext-IEs,
							v7xyNonCriticalExtensions		SEQUENCE {
								rrcConnectionSetup-v7xyext		RRCConnectionSetup-v7xyext-IEs,
								nonCriticalExtensions			SEQUENCE {}		OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions					CHOICE {
				r5								SEQUENCE {
					rrcConnectionSetup-r5			RRCConnectionSetup-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					rrcConnectionSetup-r5-add-ext	BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						rrcConnectionSetup-v690ext		RRCConnectionSetup-v690ext-IEs,
						v7xyNonCriticalExtensions		SEQUENCE {
							rrcConnectionSetup-v7xyext		RRCConnectionSetup-v7xyext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						rrcConnectionSetup-r6			RRCConnectionSetup-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						rrcConnectionSetup-r6-add-ext	BIT STRING					OPTIONAL,
						v7xyNonCriticalExtensions		SEQUENCE {
							rrcConnectionSetup-v7xyext		RRCConnectionSetup-v7xyext-IEs,
							nonCriticalExtensions			SEQUENCE {}					OPTIONAL
						}	OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							rrcConnectionSetup-r7			RRCConnectionSetup-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							rrcConnectionSetup-r7-add-ext	BIT STRING					OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}					OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

RRCConnectionSetup-r3-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
		initialUE-Identity				InitialUE-Identity,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI,
		new-c-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient,
		-- TABULAR: If capabilityUpdateRequirement is not present, the default value
		-- defined in 10.3.3.2 shall be used.
		capabilityUpdateRequirement		CapabilityUpdateRequirement			OPTIONAL,
	-- Radio bearer IEs
		srb-InformationSetupList		SRB-InformationSetupList2,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		-- NOTE: ul-AddReconfTransChInfoList should be optional in later versions of
		-- this message
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList,
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		-- NOTE: dl-AddReconfTransChInfoList should be optional in later versions
		-- of this message
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

RRCConnectionSetup-v4b0ext-IEs ::= SEQUENCE {
		capabilityUpdateRequirement-r4-ext	CapabilityUpdateRequirement-r4-ext	OPTIONAL,
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

RRCConnectionSetup-v590ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		systemSpecificCapUpdateReq		SystemSpecificCapUpdateReq-v590ext		OPTIONAL,
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

RRCConnectionSetup-r4-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI,
		new-c-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient,
		-- TABULAR: If capabilityUpdateRequirement is not present, the default value
		-- defined in 10.3.3.2 shall be used.
		capabilityUpdateRequirement		CapabilityUpdateRequirement-r4		OPTIONAL,
	-- Radio bearer IEs
		srb-InformationSetupList		SRB-InformationSetupList2,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

RRCConnectionSetup-r5-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI,
		new-c-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient,
		-- TABULAR: If capabilityUpdateRequirement is not present, the default value
		-- defined in 10.3.3.2 shall be used.
		capabilityUpdateRequirement		CapabilityUpdateRequirement-r5		OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				-- Radio bearer IEs
				srb-InformationSetupList		SRB-InformationSetupList2,
				-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL
			},
			preconfiguration				SEQUENCE {
				-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
				-- one for the FDD only elements and one for the TDD only elements, so that one
				-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r5
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5bis		OPTIONAL
}

RRCConnectionSetup-v690ext-IEs ::= SEQUENCE {
	-- Physical Channel IEs
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL
}

RRCConnectionSetup-r6-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI,
		new-c-RNTI						C-RNTI								OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient,
		-- TABULAR: If capabilityUpdateRequirement is not present, the default value
		-- defined in 10.3.3.2 shall be used.
		capabilityUpdateRequirement		CapabilityUpdateRequirement-r5		OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				-- Radio bearer IEs
				srb-InformationSetupList		SRB-InformationSetupList2-r6,
				-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
				-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
				-- one for the FDD only elements and one for the TDD only elements, so that one
				-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL
}

RRCConnectionSetup-r7-IEs ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI,
		new-c-RNTI						C-RNTI								OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient,
		-- TABULAR: If capabilityUpdateRequirement is not present, the default value
		-- defined in 10.3.3.2 shall be used.
		capabilityUpdateRequirement		CapabilityUpdateRequirement-r5		OPTIONAL,
	-- Specification mode information
		specificationMode				CHOICE {
			complete						SEQUENCE {
				-- Radio bearer IEs
				srb-InformationSetupList		SRB-InformationSetupList2-r6,
				-- Transport channel IEs
				ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
				ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
				dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
				dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL
			},
			preconfiguration				SEQUENCE {
				-- All IEs that include an FDD/TDD choice are split in two IEs for this message,
				-- one for the FDD only elements and one for the TDD only elements, so that one
				-- FDD/TDD choice in this level is sufficient.
				preConfigMode					CHOICE {
					predefinedConfigIdentity		PredefinedConfigIdentity,
					defaultConfig					SEQUENCE {
						defaultConfigMode				DefaultConfigMode,
						defaultConfigIdentity 			DefaultConfigIdentity-r6
					}
				}
			}
		},
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL
}

RRCConnectionSetup-v7xyext-IEs ::= SEQUENCE {
		capabilityUpdateRequirement-r7-ext	CapabilityUpdateRequirement-r7-ext		OPTIONAL
}

-- ***************************************************
--
-- RRC CONNECTION SETUP COMPLETE
--
-- ***************************************************

RRCConnectionSetupComplete ::= SEQUENCE {
	-- TABULAR: Integrity protection shall not be performed on this message.
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		startList						STARTList,
		ue-RadioAccessCapability		UE-RadioAccessCapability			OPTIONAL,
	--	Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList	OPTIONAL,
	-- Non critical extensions
		v370NonCriticalExtensions			SEQUENCE {
			rrcConnectionSetupComplete-v370ext	RRCConnectionSetupComplete-v370ext,
			v380NonCriticalExtensions			SEQUENCE {
				rrcConnectionSetupComplete-v380ext	RRCConnectionSetupComplete-v380ext-IEs,
				-- Reserved for future non critical extension
				v3a0NonCriticalExtensions			SEQUENCE {
					rrcConnectionSetupComplete-v3a0ext	RRCConnectionSetupComplete-v3a0ext-IEs,
					laterNonCriticalExtensions			SEQUENCE {
						-- Container for additional R99 extensions
						rrcConnectionSetupComplete-r3-add-ext		BIT STRING
								(CONTAINING RRCConnectionSetupComplete-r3-add-ext-IEs)	OPTIONAL,
						v3g0NonCriticalExtensions			SEQUENCE {
							rrcConnectionSetupComplete-v3g0ext	RRCConnectionSetupComplete-v3g0ext-IEs,
							v4b0NonCriticalExtensions			SEQUENCE {
								rrcConnectionSetupComplete-v4b0ext
																RRCConnectionSetupComplete-v4b0ext-IEs,
								v590NonCriticalExtensions			SEQUENCE {
									rrcConnectionSetupComplete-v590ext
																RRCConnectionSetupComplete-v590ext-IEs,
									v5c0NonCriticalExtensions			SEQUENCE {
										rrcConnectionSetupComplete-v5c0ext
																RRCConnectionSetupComplete-v5c0ext-IEs,
										v690NonCriticalExtensions			SEQUENCE {
											rrcConnectionSetupComplete-v690ext
																RRCConnectionSetupComplete-v690ext-IEs,
											v7xyNonCriticalExtensions		SEQUENCE {
												rrcConectionSetupComplete-v7xyext
																RRCConnectionSetupComplete-v7xyext-IEs,
												nonCriticalExtensions		SEQUENCE {}		OPTIONAL
											}		OPTIONAL
										}		OPTIONAL
									}		OPTIONAL
								}		OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
}

RRCConnectionSetupComplete-v370ext ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v370ext	UE-RadioAccessCapability-v370ext	OPTIONAL
}

RRCConnectionSetupComplete-v380ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v380ext	UE-RadioAccessCapability-v380ext		OPTIONAL,
		dl-PhysChCapabilityFDD-v380ext		DL-PhysChCapabilityFDD-v380ext
}

RRCConnectionSetupComplete-v3a0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3a0ext	UE-RadioAccessCapability-v3a0ext	OPTIONAL
}

RRCConnectionSetupComplete-v3g0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3g0ext	UE-RadioAccessCapability-v3g0ext	OPTIONAL
}

RRCConnectionSetupComplete-r3-add-ext-IEs ::= SEQUENCE {
		rrcConnectionSetupComplete-v650ext		RRCConnectionSetupComplete-v650ext-IEs	OPTIONAL,
		v680NonCriticalExtensions				SEQUENCE {
			rrcConnectionSetupComplete-v680ext		RRCConnectionSetupComplete-v680ext-IEs,
			nonCriticalExtensions					SEQUENCE {}		OPTIONAL
		}		OPTIONAL
}

RRCConnectionSetupComplete-v4b0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v4b0ext		UE-RadioAccessCapability-v4b0ext		OPTIONAL
}

RRCConnectionSetupComplete-v590ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v590ext		UE-RadioAccessCapability-v590ext		OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability-v590ext		InterRAT-UE-RadioAccessCapability-v590ext	OPTIONAL
}

RRCConnectionSetupComplete-v5c0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v5c0ext		UE-RadioAccessCapability-v5c0ext		OPTIONAL
}

RRCConnectionSetupComplete-v650ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v650ext		UE-RadioAccessCapability-v650ext
}

RRCConnectionSetupComplete-v680ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v680ext		UE-RadioAccessCapability-v680ext
}

RRCConnectionSetupComplete-v690ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ueCapabilityContainer				BIT STRING
												(CONTAINING UE-CapabilityContainer-IEs)	OPTIONAL
}

RRCConnectionSetupComplete-v7xyext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v7xyext	UE-RadioAccessCapability-v7xyext		OPTIONAL
}

-- ***************************************************
--
-- RRC FAILURE INFO
--
-- ***************************************************

RRC-FailureInfo ::= CHOICE {
	r3											SEQUENCE {
		rRC-FailureInfo-r3							RRC-FailureInfo-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrc-FailureInfo-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions						SEQUENCE {}	OPTIONAL
		}	OPTIONAL
	},
	criticalExtensions							SEQUENCE {}
}

RRC-FailureInfo-r3-IEs ::=		SEQUENCE {
	-- Non-RRC IEs
		failureCauseWithProtErr							FailureCauseWithProtErr
}

-- ***************************************************
--
-- RRC STATUS
--
-- ***************************************************

RRCStatus ::= SEQUENCE {
	-- Other IEs
		-- TABULAR: Identification of received message is nested in
		-- ProtocolErrorMoreInformation
		protocolErrorInformation		ProtocolErrorMoreInformation,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			rrcStatus-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- SECURITY MODE COMMAND
--
-- ***************************************************

SecurityModeCommand ::= CHOICE {
	r3								SEQUENCE {
		securityModeCommand-r3			SecurityModeCommand-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			securityModeCommand-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

SecurityModeCommand-r3-IEs ::= SEQUENCE {
-- TABULAR: Integrity protection shall always be performed on this message.
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		securityCapability				SecurityCapability,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
	-- Other IEs
		ue-SystemSpecificSecurityCap	InterRAT-UE-SecurityCapList			OPTIONAL
}

-- ***************************************************
--
-- SECURITY MODE COMPLETE
--
-- ***************************************************

SecurityModeComplete ::= SEQUENCE {
-- TABULAR: Integrity protection shall always be performed on this message.

	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
	-- Radio bearer IEs
		rb-UL-CiphActivationTimeInfo	RB-ActivationTimeInfoList			OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			securityModeComplete-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- SECURITY MODE FAILURE
--
-- ***************************************************

SecurityModeFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			securityModeFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- SIGNALLING CONNECTION RELEASE
--
-- ***************************************************

SignallingConnectionRelease ::= CHOICE {
	r3								SEQUENCE {
		signallingConnectionRelease-r3	SignallingConnectionRelease-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			signallingConnectionRelease-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

SignallingConnectionRelease-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity
}

-- ***************************************************
--
-- SIGNALLING CONNECTION RELEASE INDICATION
--
-- ***************************************************

SignallingConnectionReleaseIndication ::= SEQUENCE {
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			signallingConnectionReleaseIndication-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- SYSTEM INFORMATION for BCH
--
-- ***************************************************

SystemInformation-BCH ::= SEQUENCE {
	-- Other information elements
		sfn-Prime						SFN-Prime,
		payload 						CHOICE {
			noSegment						NULL,
			firstSegment					FirstSegment,
			subsequentSegment				SubsequentSegment,
			lastSegmentShort						LastSegmentShort,
			lastAndFirst					SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				firstSegment					FirstSegmentShort
			},
			lastAndComplete					SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				completeSIB-List				CompleteSIB-List
			},
			lastAndCompleteAndFirst			SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				completeSIB-List				CompleteSIB-List,
				firstSegment					FirstSegmentShort
			},
			completeSIB-List				CompleteSIB-List,
			completeAndFirst				SEQUENCE {
				completeSIB-List				CompleteSIB-List,
				firstSegment					FirstSegmentShort
			},
			completeSIB						CompleteSIB,
			lastSegment						LastSegment,
			spare5							NULL,
			spare4							NULL,
			spare3							NULL,
			spare2							NULL,
			spare1							NULL
		}
}

-- ***************************************************
--
-- SYSTEM INFORMATION for FACH
--
-- ***************************************************

SystemInformation-FACH ::= SEQUENCE {
	-- Other information elements
		payload 						CHOICE {
			noSegment						NULL,
			firstSegment					FirstSegment,
			subsequentSegment				SubsequentSegment,
			lastSegmentShort				LastSegmentShort,
			lastAndFirst					SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				firstSegment					FirstSegmentShort
			},
			lastAndComplete					SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				completeSIB-List				CompleteSIB-List
			},
			lastAndCompleteAndFirst			SEQUENCE {
				lastSegmentShort				LastSegmentShort,
				completeSIB-List				CompleteSIB-List,
				firstSegment					FirstSegmentShort
			},
			completeSIB-List				CompleteSIB-List,
			completeAndFirst				SEQUENCE {
				completeSIB-List				CompleteSIB-List,
				firstSegment					FirstSegmentShort
			},
			completeSIB						CompleteSIB,
			lastSegment						LastSegment,
			spare5							NULL,
			spare4							NULL,
			spare3							NULL,
			spare2							NULL,
			spare1							NULL
		}
}

-- ***************************************************
--
-- First segment
--
-- ***************************************************

FirstSegment ::=					SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		seg-Count						SegCount,
		sib-Data-fixed					SIB-Data-fixed
}

-- ***************************************************
--
-- First segment (short)
--
-- ***************************************************

FirstSegmentShort ::=				SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		seg-Count						SegCount,
		sib-Data-variable				SIB-Data-variable
}

-- ***************************************************
--
-- Subsequent segment
--
-- ***************************************************

SubsequentSegment ::=				SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		segmentIndex					SegmentIndex,
		sib-Data-fixed					SIB-Data-fixed
}

-- ***************************************************
--
-- Last segment
--
-- ***************************************************

LastSegment ::=						SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		segmentIndex					SegmentIndex,
		-- For sib-Data-fixed, in case the SIB data is less than 222 bits, padding
		-- shall be used. The same padding bits shall be used as defined in clause 12.1
		sib-Data-fixed					SIB-Data-fixed
}

LastSegmentShort ::=						SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		segmentIndex					SegmentIndex,
		sib-Data-variable				SIB-Data-variable
}

-- ***************************************************
--
-- Complete SIB
--
-- ***************************************************

CompleteSIB-List ::=				SEQUENCE (SIZE (1..maxSIBperMsg)) OF
										CompleteSIBshort

CompleteSIB ::=						SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		-- For sib-Data-fixed, in case the SIB data is less than 226 bits, padding
		-- shall be used. The same padding bits shall be used as defined in clause 12.1
		sib-Data-fixed					BIT STRING (SIZE (226))
}

CompleteSIBshort ::=						SEQUENCE {
	-- Other information elements
		sib-Type						SIB-Type,
		sib-Data-variable				SIB-Data-variable
}

-- ***************************************************
--
-- SYSTEM INFORMATION CHANGE INDICATION
--
-- ***************************************************

SystemInformationChangeIndication ::= 	SEQUENCE {
	-- Other IEs
		bcch-ModificationInfo				BCCH-ModificationInfo,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			systemInformationChangeIndication-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}
 
-- ***************************************************
--
-- TRANSPORT CHANNEL RECONFIGURATION
--
-- ***************************************************

TransportChannelReconfiguration ::= CHOICE {
	r3								SEQUENCE {
		transportChannelReconfiguration-r3
										TransportChannelReconfiguration-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			transportChannelReconfiguration-v3a0ext
											TransportChannelReconfiguration-v3a0ext,
			laterNonCriticalExtensions			SEQUENCE {
				-- Container for additional R99 extensions
				transportChannelReconfiguration-r3-add-ext		BIT STRING		OPTIONAL,
				v4b0NonCriticalExtensions		SEQUENCE {
					transportChannelReconfiguration-v4b0ext	
													TransportChannelReconfiguration-v4b0ext-IEs,
					v590NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v590ext	
														TransportChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				transportChannelReconfiguration-r4
												TransportChannelReconfiguration-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					transportChannelReconfiguration-r4-add-ext		BIT STRING		OPTIONAL,
					v590NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v590ext	
													TransportChannelReconfiguration-v590ext-IEs,
						v690NonCriticalExtensions		SEQUENCE {
							transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r5								SEQUENCE {
					transportChannelReconfiguration-r5
													TransportChannelReconfiguration-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					transportChannelReconfiguration-r5-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						transportChannelReconfiguration-v690ext	
														TransportChannelReconfiguration-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r6								SEQUENCE {
						transportChannelReconfiguration-r6
														TransportChannelReconfiguration-r6-IEs,
						-- Container for adding non critical extensions after freezing REL-7
						transportChannelReconfiguration-r6-add-ext		BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				CHOICE {
						r7								SEQUENCE {
							transportChannelReconfiguration-r7
														TransportChannelReconfiguration-r7-IEs,
							-- Container for adding non critical extensions after freezing REL-8
							transportChannelReconfiguration-r7-add-ext		BIT STRING	OPTIONAL,
							nonCriticalExtensions			SEQUENCE {}		OPTIONAL
						},
						criticalExtensions				SEQUENCE {}
					}
				}
			}
		}
	}
}

TransportChannelReconfiguration-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList			OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement				OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-CommonInformation			DL-CommonInformation				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List			OPTIONAL
}

TransportChannelReconfiguration-v3a0ext ::= SEQUENCE {
	-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
	-- the UE behaviour is unspecified
	new-DSCH-RNTI					DSCH-RNTI							OPTIONAL
}

TransportChannelReconfiguration-v4b0ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-UL								OPTIONAL,
		-- The order of the RLs in IE cell-id-PerRL-List is the same as
		-- in IE DL-InformationPerRL-List included in this message
		cell-id-PerRL-List					CellIdentity-PerRL-List				OPTIONAL
}

TransportChannelReconfiguration-v590ext-IEs ::= SEQUENCE {
	-- Physical channel IEs
		dl-TPC-PowerOffsetPerRL-List	DL-TPC-PowerOffsetPerRL-List		OPTIONAL
}

TransportChannelReconfiguration-r4-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r4			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-CommonInformation			DL-CommonInformation-r4				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r4			OPTIONAL
}

TransportChannelReconfiguration-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode, and if received
		-- the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-ChannelRequirement			UL-ChannelRequirement-r5			OPTIONAL,
		modeSpecificPhysChInfo			CHOICE {
			fdd								SEQUENCE {
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							DL-PDSCH-Information		OPTIONAL
			},
			tdd							NULL
		},
		dl-HSPDSCH-Information			DL-HSPDSCH-Information				OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r5				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r5			OPTIONAL
}

TransportChannelReconfiguration-v690ext-IEs ::= SEQUENCE {
	-- User Equipment IEs
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
	-- Core network IEs
		primary-plmn-Identity			PLMN-Identity						OPTIONAL,
	-- Physical channel IEs
		-- The IE harq-Preamble-Mode should not be used in the r3 and r4 versions of the message
		-- If included in the r3 or r4 version of the message, the UE should ignore the IE
		harq-Preamble-Mode				HARQ-Preamble-Mode					OPTIONAL,
		beaconPLEst						BEACON-PL-Est						OPTIONAL,
		postVerificationPeriod			ENUMERATED { true }					OPTIONAL,
		dhs-sync						DHS-Sync							OPTIONAL,
		timingMaintainedSynchInd		TimingMaintainedSynchInd			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

TransportChannelReconfiguration-r6-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r6						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r6			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r6				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r6			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

TransportChannelReconfiguration-r7-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		activationTime					ActivationTime						OPTIONAL,
		delayRestrictionFlag			DelayRestrictionFlag				OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		-- The IE “new-DSCH-RNTI” should not be included in FDD mode,
		-- and if received the UE behaviour is unspecified
		new-DSCH-RNTI					DSCH-RNTI							OPTIONAL,
		new-H-RNTI						H-RNTI								OPTIONAL,
		newPrimary-E-RNTI				E-RNTI								OPTIONAL,
		newSecondary-E-RNTI				E-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- Core network IEs
		cn-InformationInfo				CN-InformationInfo-r6				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-AddReconfTransChInfoList		UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-AddReconfTransChInfoList		DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- Physical channel IEs
		frequencyInfo					FrequencyInfo						OPTIONAL,
		maxAllowedUL-TX-Power			MaxAllowedUL-TX-Power				OPTIONAL,
		ul-DPCH-Info					UL-DPCH-Info-r7						OPTIONAL,
		ul-EDCH-Information				UL-EDCH-Information-r6				OPTIONAL,
		dl-HSPDSCH-Information			DL-HSPDSCH-Information-r7			OPTIONAL,
		dl-CommonInformation			DL-CommonInformation-r7				OPTIONAL,
		dl-InformationPerRL-List		DL-InformationPerRL-List-r7			OPTIONAL,
	-- MBMS IEs
		mbms-PL-ServiceRestrictInfo		MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

-- ***************************************************
--
-- TRANSPORT CHANNEL RECONFIGURATION COMPLETE
--
-- ***************************************************

TransportChannelReconfigurationComplete ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
		-- TABULAR: UL-TimingAdvance is applicable for TDD mode only.
		ul-TimingAdvance				UL-TimingAdvance					OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			transportChannelReconfigurationComplete-r3-add-ext		BIT STRING		OPTIONAL,
			v7xyNonCriticalExtensions		SEQUENCE {
				transportChannelReconfigurationComplete-v7xyext
										TransportChannelReconfigurationComplete-v7xyext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

TransportChannelReconfigurationComplete-v7xyext-IEs ::= SEQUENCE {
		ext-ul-TimingAdvance			EXT-UL-TimingAdvance				OPTIONAL
}

-- ***************************************************
--
-- TRANSPORT CHANNEL RECONFIGURATION FAILURE
--
-- ***************************************************

TransportChannelReconfigurationFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			transportChannelReconfigurationFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- *********************************************************
--
-- TRANSPORT FORMAT COMBINATION CONTROL in AM or UM RLC mode
--
-- *********************************************************

TransportFormatCombinationControl ::= SEQUENCE {
		-- rrc-TransactionIdentifier is always included in this version of the specification
		rrc-TransactionIdentifier		RRC-TransactionIdentifier			OPTIONAL,
		modeSpecificInfo					CHOICE {
			fdd									NULL,
			tdd									SEQUENCE {
				tfcs-ID								TFCS-Identity	OPTIONAL
			}	
		},
		dpch-TFCS-InUplink					TFC-Subset,
		activationTimeForTFCSubset			ActivationTime						OPTIONAL,
		tfc-ControlDuration					TFC-ControlDuration					OPTIONAL,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			transportFormatCombinationControl-r3-add-ext		BIT STRING		OPTIONAL,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- TRANSPORT FORMAT COMBINATION CONTROL FAILURE
--
-- ***************************************************

TransportFormatCombinationControlFailure ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			transportFormatCombinationControlFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- UE CAPABILITY ENQUIRY
--
-- ***************************************************

UECapabilityEnquiry ::= CHOICE {
	r3								SEQUENCE {
		ueCapabilityEnquiry-r3			UECapabilityEnquiry-r3-IEs,
		laterNonCriticalExtensions		SEQUENCE {
			-- Container for additional R99 extensions
			ueCapabilityEnquiry-r3-add-ext		BIT STRING		OPTIONAL,
			v4b0NonCriticalExtensions		SEQUENCE { 
				ueCapabilityEnquiry-v4b0ext		UECapabilityEnquiry-v4b0ext-IEs,
				v590NonCriticalExtensions		SEQUENCE {
					ueCapabilityEnquiry-v590ext		UECapabilityEnquiry-v590ext-IEs,
					v7xyNonCriticalExtensions		SEQUENCE {
						ueCapabilityEnquiry-v7xyext		UECapabilityEnquiry-v7xyext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

UECapabilityEnquiry-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		capabilityUpdateRequirement		CapabilityUpdateRequirement
}

UECapabilityEnquiry-v4b0ext-IEs ::= SEQUENCE {
		capabilityUpdateRequirement-r4-ext	CapabilityUpdateRequirement-r4-ext
}

UECapabilityEnquiry-v590ext-IEs ::= SEQUENCE {
		systemSpecificCapUpdateReq		SystemSpecificCapUpdateReq-v590ext
}

UECapabilityEnquiry-v7xyext-IEs ::= SEQUENCE {
		capabilityUpdateRequirement-r7-ext		CapabilityUpdateRequirement-r7-ext		OPTIONAL
}

-- ***************************************************
--
-- UE CAPABILITY INFORMATION
--
-- ***************************************************

UECapabilityInformation ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier			OPTIONAL,
		ue-RadioAccessCapability		UE-RadioAccessCapability			OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList		OPTIONAL,
		v370NonCriticalExtensions			SEQUENCE {
			ueCapabilityInformation-v370ext	UECapabilityInformation-v370ext,
			v380NonCriticalExtensions			SEQUENCE {
				ueCapabilityInformation-v380ext		UECapabilityInformation-v380ext-IEs,
				v3a0NonCriticalExtensions			SEQUENCE {
					ueCapabilityInformation-v3a0ext		UECapabilityInformation-v3a0ext-IEs,
					laterNonCriticalExtensions			SEQUENCE {
						-- Container for additional R99 extensions
						ueCapabilityInformation-r3-add-ext		BIT STRING
									(CONTAINING UECapabilityInformation-r3-add-ext-IEs)	OPTIONAL,
						-- Reserved for future non critical extension
						v4b0NonCriticalExtensions			SEQUENCE {
							ueCapabilityInformation-v4b0ext		UECapabilityInformation-v4b0ext,
							v590NonCriticalExtensions			SEQUENCE {
								ueCapabilityInformation-v590ext		UECapabilityInformation-v590ext,
								v5c0NonCriticalExtensions			SEQUENCE {
									ueCapabilityInformation-v5c0ext
																	UECapabilityInformation-v5c0ext,
									v690NonCriticalExtensions			SEQUENCE {
										ueCapabilityInformation-v690ext
																UECapabilityInformation-v690ext-IEs,
										v7xyNonCriticalExtensions			SEQUENCE {
											ueCapabilityInformation-v7xyext
																UECapabilityInformation-v7xyext-IEs,
											nonCriticalExtensions			SEQUENCE {}		OPTIONAL
										}		OPTIONAL
									}		OPTIONAL
								}		OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
}

UECapabilityInformation-v370ext ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v370ext		UE-RadioAccessCapability-v370ext		OPTIONAL
}

UECapabilityInformation-v380ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v380ext		UE-RadioAccessCapability-v380ext		OPTIONAL,
		dl-PhysChCapabilityFDD-v380ext			DL-PhysChCapabilityFDD-v380ext
}

UECapabilityInformation-v3a0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3a0ext		UE-RadioAccessCapability-v3a0ext		OPTIONAL
}

UECapabilityInformation-r3-add-ext-IEs ::= SEQUENCE {
		ueCapabilityInformation-v650ext		UECapabilityInformation-v650ext-IEs		OPTIONAL,
		v680NonCriticalExtensions			SEQUENCE {
			ueCapabilityInformation-v680ext		UECapabilityInformation-v680ext-IEs,
			nonCriticalExtensions				SEQUENCE {}		OPTIONAL
		}		OPTIONAL
}

UECapabilityInformation-v4b0ext ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v4b0ext		UE-RadioAccessCapability-v4b0ext		OPTIONAL
}

UECapabilityInformation-v590ext ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v3g0ext		UE-RadioAccessCapability-v3g0ext		OPTIONAL,
		ue-RadioAccessCapability-v590ext		UE-RadioAccessCapability-v590ext		OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability-v590ext	InterRAT-UE-RadioAccessCapability-v590ext	OPTIONAL
}

UECapabilityInformation-v5c0ext ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v5c0ext		UE-RadioAccessCapability-v5c0ext		OPTIONAL
}

UECapabilityInformation-v650ext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v650ext		UE-RadioAccessCapability-v650ext
}

UECapabilityInformation-v680ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ue-RadioAccessCapability-v680ext		UE-RadioAccessCapability-v680ext
}

UECapabilityInformation-v690ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		ueCapabilityContainer				BIT STRING
												(CONTAINING UE-CapabilityContainer-IEs)	OPTIONAL
}

UECapabilityInformation-v7xyext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v7xyext	UE-RadioAccessCapability-v7xyext		OPTIONAL
}

-- ***************************************************
--
-- UE CAPABILITY INFORMATION CONFIRM
--
-- ***************************************************

UECapabilityInformationConfirm ::= CHOICE {
	r3								SEQUENCE {
		ueCapabilityInformationConfirm-r3
										UECapabilityInformationConfirm-r3-IEs,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			ueCapabilityInformationConfirm-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

UECapabilityInformationConfirm-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier
}

-- ***************************************************
--
-- UPLINK DIRECT TRANSFER
--
-- ***************************************************

UplinkDirectTransfer ::= SEQUENCE {
	-- Core network IEs
		cn-DomainIdentity				CN-DomainIdentity,
		nas-Message						NAS-Message,
	-- Measurement IEs
		measuredResultsOnRACH			MeasuredResultsOnRACH				OPTIONAL,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			uplinkDirectTransfer-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions			SEQUENCE {
				uplinkDirectTransfer-v690ext		UplinkDirectTransfer-v690ext-IEs,
				nonCriticalExtensions				SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

UplinkDirectTransfer-v690ext-IEs ::= SEQUENCE {
	-- Measurement IEs
	measuredResultsOnRACHinterFreq		MeasuredResultsOnRACHinterFreq				OPTIONAL
}

-- ***************************************************
--
-- UPLINK PHYSICAL CHANNEL CONTROL
--
-- ***************************************************

UplinkPhysicalChannelControl ::= CHOICE {
	r3								SEQUENCE {
		uplinkPhysicalChannelControl-r3	UplinkPhysicalChannelControl-r3-IEs,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			uplinkPhysicalChannelControl-r3-add-ext		BIT STRING		OPTIONAL,
			v4b0NonCriticalExtensions		SEQUENCE {
				uplinkPysicalChannelControl-v4b0ext		UplinkPhysicalChannelControl-v4b0ext-IEs,
				-- Extension mechanism for non-release 4 information
				noncriticalExtensions			SEQUENCE {}						OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r4								SEQUENCE {
				uplinkPhysicalChannelControl-r4	UplinkPhysicalChannelControl-r4-IEs,
				v4d0NonCriticalExtensions			SEQUENCE {
					-- Container for adding non critical extensions after freezing REL-5
					uplinkPhysicalChannelControl-r4-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						uplinkPhysicalChannelControl-v690ext	UplinkPhysicalChannelControl-v690ext-IEs,
						nonCriticalExtensions			SEQUENCE {}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions			CHOICE {
				r5								SEQUENCE {
					uplinkPhysicalChannelControl-r5	UplinkPhysicalChannelControl-r5-IEs,
					-- Container for adding non critical extensions after freezing REL-6
					uplinkPhysicalChannelControl-r5-add-ext		BIT STRING		OPTIONAL,
					v690NonCriticalExtensions		SEQUENCE {
						uplinkPhysicalChannelControl-v690ext	UplinkPhysicalChannelControl-v690ext-IEs,
						v6a0NonCriticalExtensions		SEQUENCE{
							uplinkPhysicalChannelControl-v6a0ext
																UplinkPhysicalChannelControl-v6a0ext-IEs,
							nonCriticalExtensions			SEQUENCE {} OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions				CHOICE {
					r7								SEQUENCE {
						uplinkPhysicalChannelControl-r7	UplinkPhysicalChannelControl-r7-IEs,
						-- Container for adding non critical extensions after freezing REL-8
						uplinkPhysicalChannelControl-r7-add-ext		BIT STRING		OPTIONAL,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					},
					criticalExtensions				SEQUENCE {}
				}
			}
		}
	}
}

UplinkPhysicalChannelControl-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
	-- Physical channel IEs
		ccTrCH-PowerControlInfo			CCTrCH-PowerControlInfo				OPTIONAL,
		timingAdvance					UL-TimingAdvanceControl				OPTIONAL,
		alpha							Alpha								OPTIONAL,
		specialBurstScheduling			SpecialBurstScheduling				OPTIONAL,
		prach-ConstantValue				ConstantValueTdd					OPTIONAL,
		pusch-ConstantValue				ConstantValueTdd					OPTIONAL
}

UplinkPhysicalChannelControl-v4b0ext-IEs ::= SEQUENCE {
	-- In case of TDD, openLoopPowerControl-IPDL-TDD is included instead of IE
	-- up-IPDL-Parameters in up-OTDOA-AssistanceData
	openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL
}

UplinkPhysicalChannelControl-r4-IEs ::= SEQUENCE {
	-- Physical channel IEs
		ccTrCH-PowerControlInfo			CCTrCH-PowerControlInfo-r4			OPTIONAL,
		specialBurstScheduling			SpecialBurstScheduling				OPTIONAL,
		tddOption						CHOICE {
			tdd384							SEQUENCE {
				timingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
				alpha							Alpha						OPTIONAL,
				prach-ConstantValue				ConstantValueTdd			OPTIONAL,
				pusch-ConstantValue				ConstantValueTdd			OPTIONAL,
				openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL
			},
			tdd128							SEQUENCE {
				ul-SynchronisationParameters	UL-SynchronisationParameters-r4	OPTIONAL
			}
		}
}

UplinkPhysicalChannelControl-r5-IEs ::= SEQUENCE {
	-- Physical channel IEs
		ccTrCH-PowerControlInfo			CCTrCH-PowerControlInfo-r5			OPTIONAL,
		specialBurstScheduling			SpecialBurstScheduling				OPTIONAL,
		tddOption						CHOICE {
			tdd384							SEQUENCE {
				timingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
				alpha							Alpha						OPTIONAL,
				prach-ConstantValue				ConstantValueTdd			OPTIONAL,
				pusch-ConstantValue				ConstantValueTdd			OPTIONAL,
				openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL,
				hs-SICH-PowerControl			HS-SICH-Power-Control-Info-TDD384	OPTIONAL
			},
			tdd128							SEQUENCE {
				ul-SynchronisationParameters	UL-SynchronisationParameters-r4	OPTIONAL
			}
		}
}

UplinkPhysicalChannelControl-v690ext-IEs ::= SEQUENCE {
	-- Physical Channel IEs
		beaconPLEst						BEACON-PL-Est						OPTIONAL
}

UplinkPhysicalChannelControl-v6a0ext-IEs ::= SEQUENCE {
	-- Physical Channel IEs
		desired-HS-SICH-PowerLevel		INTEGER (-120..-58)					OPTIONAL,
		tpc-Step-Size					ENUMERATED { s1, s2, s3 , spare1 }	OPTIONAL
}

UplinkPhysicalChannelControl-r7-IEs ::= SEQUENCE {
	-- Physical channel IEs
		ccTrCH-PowerControlInfo			CCTrCH-PowerControlInfo-r7			OPTIONAL,
		specialBurstScheduling			SpecialBurstScheduling				OPTIONAL,
		tddOption						CHOICE {
			tdd384							SEQUENCE {
				timingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
				alpha							Alpha						OPTIONAL,
				prach-ConstantValue				ConstantValueTdd			OPTIONAL,
				pusch-ConstantValue				ConstantValueTdd			OPTIONAL,
				openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL,
				hs-SICH-PowerControl			HS-SICH-Power-Control-Info-TDD384	OPTIONAL
			},
			tdd768							SEQUENCE {
				timingAdvance					UL-TimingAdvanceControl-r7	OPTIONAL,
				alpha							Alpha						OPTIONAL,
				prach-ConstantValue				ConstantValueTdd			OPTIONAL,
				pusch-ConstantValue				ConstantValueTdd			OPTIONAL,
				openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL,
				hs-SICH-PowerControl			HS-SICH-Power-Control-Info-TDD768	OPTIONAL
			},
			tdd128							SEQUENCE {
				ul-SynchronisationParameters	UL-SynchronisationParameters-r4	OPTIONAL,
				desired-HS-SICH-PowerLevel		INTEGER (-120..-58)				OPTIONAL,
				tpc-Step-Size					ENUMERATED { s1, s2, s3 , spare1 }	OPTIONAL
			}
		}
}

-- ***************************************************
--
-- URA UPDATE
--
-- ***************************************************

URAUpdate ::= SEQUENCE {
	-- User equipment IEs
		u-RNTI							U-RNTI,
		ura-UpdateCause					URA-UpdateCause,
		protocolErrorIndicator			ProtocolErrorIndicatorWithMoreInfo,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			uraUpdate-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- URA UPDATE CONFIRM
--
-- ***************************************************

URAUpdateConfirm ::= CHOICE {
	r3								SEQUENCE {
		uraUpdateConfirm-r3				URAUpdateConfirm-r3-IEs,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			uraUpdateConfirm-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions		SEQUENCE {
				uraUpdateConfirm-v690ext			URAUpdateConfirm-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r5								SEQUENCE {
				uraUpdateConfirm-r5				URAUpdateConfirm-r5-IEs,
				v690NonCriticalExtensions		SEQUENCE {
					uraUpdateConfirm-v690ext			URAUpdateConfirm-v690ext-IEs,
					nonCriticalExtensions			SEQUENCE {}		OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

URAUpdateConfirm-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL
}

URAUpdateConfirm-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		rrc-StateIndicator				RRC-StateIndicator,
		utran-DRX-CycleLengthCoeff		UTRAN-DRX-CycleLengthCoefficient	OPTIONAL,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfo					OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL
}

URAUpdateConfirm-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity				PLMN-Identity					OPTIONAL
}

-- ***************************************************
--
-- URA UPDATE CONFIRM for CCCH
--
-- ***************************************************

URAUpdateConfirm-CCCH ::= CHOICE {
	r3								SEQUENCE {
		uraUpdateConfirm-CCCH-r3		URAUpdateConfirm-CCCH-r3-IEs,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			uraUpdateConfirm-CCCH-r3-add-ext		BIT STRING		OPTIONAL,
			v690NonCriticalExtensions		SEQUENCE {
				uraUpdateConfirm-v690ext			URAUpdateConfirm-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
	},
	later-than-r3					SEQUENCE {
		u-RNTI							U-RNTI,
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				SEQUENCE {}
	}
}

URAUpdateConfirm-CCCH-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		u-RNTI							U-RNTI,
	-- The rest of the message is identical to the one sent on DCCH.
		uraUpdateConfirm				URAUpdateConfirm-r3-IEs
}

-- ***************************************************
--
-- UTRAN MOBILITY INFORMATION
--
-- ***************************************************

UTRANMobilityInformation ::= CHOICE {
	r3								SEQUENCE {
		utranMobilityInformation-r3		UTRANMobilityInformation-r3-IEs,
		v3a0NonCriticalExtensions		SEQUENCE {
			utranMobilityInformation-v3a0ext	UTRANMobilityInformation-v3a0ext-IEs,
			laterNonCriticalExtensions			SEQUENCE {
				-- Container for additional R99 extensions
				utranMobilityInformation-r3-add-ext		BIT STRING		OPTIONAL,
				v690NonCriticalExtensions			SEQUENCE {
					utranMobilityInformation-v690ext	UtranMobilityInformation-v690ext-IEs,
					nonCriticalExtensions				SEQUENCE {}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	later-than-r3					SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		criticalExtensions				CHOICE {
			r5								SEQUENCE {
				utranMobilityInformation-r5		UTRANMobilityInformation-r5-IEs,
				v690NonCriticalExtensions		SEQUENCE {
					utranMobilityInformation-v690ext	UtranMobilityInformation-v690ext-IEs,
					nonCriticalExtensions			SEQUENCE {}		OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				SEQUENCE {}
		}
	}
}

UTRANMobilityInformation-r3-IEs ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		ue-ConnTimersAndConstants		UE-ConnTimersAndConstants			OPTIONAL,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfoFull				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo		OPTIONAL,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

UTRANMobilityInformation-v3a0ext-IEs ::= SEQUENCE {
	ue-ConnTimersAndConstants-v3a0ext		UE-ConnTimersAndConstants-v3a0ext
}

UTRANMobilityInformation-r5-IEs ::= SEQUENCE {
	-- User equipment IEs
		integrityProtectionModeInfo		IntegrityProtectionModeInfo			OPTIONAL,
		cipheringModeInfo				CipheringModeInfo					OPTIONAL,
		new-U-RNTI						U-RNTI								OPTIONAL,
		new-C-RNTI						C-RNTI								OPTIONAL,
		ue-ConnTimersAndConstants		UE-ConnTimersAndConstants-r5		OPTIONAL,
	-- CN information elements
		cn-InformationInfo				CN-InformationInfoFull				OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Radio bearer IEs
		dl-CounterSynchronisationInfo	DL-CounterSynchronisationInfo-r5	OPTIONAL
}

UtranMobilityInformation-v690ext-IEs ::= SEQUENCE {
	-- Core network IEs
		primary-plmn-Identity				PLMN-Identity						OPTIONAL
}

-- ***************************************************
--
-- UTRAN MOBILITY INFORMATION CONFIRM
--
-- ***************************************************

UTRANMobilityInformationConfirm ::= SEQUENCE {
	-- User equipment IEs
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
		ul-IntegProtActivationInfo		IntegrityProtActivationInfo			OPTIONAL,
	-- Radio bearer IEs
		count-C-ActivationTime			ActivationTime						OPTIONAL,
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							RB-ActivationTimeInfoList			OPTIONAL,
		ul-CounterSynchronisationInfo	UL-CounterSynchronisationInfo		OPTIONAL,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			utranMobilityInformationConfirm-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- UTRAN MOBILITY INFORMATION FAILURE
--
-- ***************************************************

UTRANMobilityInformationFailure ::= SEQUENCE {
	-- UE information elements
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
		failureCause					FailureCauseWithProtErr,
		laterNonCriticalExtensions			SEQUENCE {
			-- Container for additional R99 extensions
			utranMobilityInformationFailure-r3-add-ext		BIT STRING		OPTIONAL,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

-- ***************************************************
--
-- MBMS ACCESS INFORMATION
--
-- ***************************************************

MBMSAccessInformation ::= SEQUENCE {
	-- Access Information IEs
		mbms-ServiceAccessInfoList		MBMS-ServiceAccessInfoList-r6,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS COMMON PTM RB INFORMATION
--
-- ***************************************************

MBMSCommonPTMRBInformation ::= SEQUENCE {
	-- Common PTM RB Information IEs
		mbms-CommonRBInformationList	MBMS-CommonRBInformationList-r6,
		mbms-TranspChInfoForEachTrCh	MBMS-TranspChInfoForEachTrCh-r6,
		mbms-TranspChInfoForEachCCTrCh	MBMS-TranspChInfoForEachCCTrCh-r6	OPTIONAL,
		mbms-PhyChInformationList		MBMS-PhyChInformationList-r6,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS CURRENT CELL PTM RB INFORMATION
--
-- ***************************************************

MBMSCurrentCellPTMRBInformation ::= SEQUENCE {
	-- Current Cell PTM RB Information IEs
		mbms-CurrentCell-SCCPCHList		MBMS-CurrentCell-SCCPCHList-r6		OPTIONAL,
		mbms-SIBType5-SCCPCHList		MBMS-SIBType5-SCCPCHList-r6			OPTIONAL,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS GENERAL INFORMATION
--
-- ***************************************************

MBMSGeneralInformation ::= SEQUENCE {
	-- MBMS General Information IEs
		mbms-PreferredFrequencyInfo		MBMS-PreferredFrequencyList-r6		OPTIONAL,
		mbms-TimersAndCounters			MBMS-TimersAndCounters-r6,
		michConfigurationInfo			MBMS-MICHConfigurationInfo-r6,
		cellGroupIdentity				MBMS-CellGroupIdentity-r6,
		mschDefaultConfigurationInfo	MBMS-MSCH-ConfigurationInfo-r6		OPTIONAL,
	-- Non critical extensions
		v7xyNonCriticalExtensions		SEQUENCE {
			mbmsGenerAlInformation-v7xyext	MBMSGeneralInformation-v7xyext-IEs,
			nonCriticalExtensions			SEQUENCE {}		OPTIONAL
		}
}

MBMSGeneralInformation-v7xyext-IEs ::= SEQUENCE {
		mbmsMICHConfiguration-v7xyext	MBMS-MICHConfigurationInfo-r7		OPTIONAL
}

-- ***************************************************
--
-- MBMS MODIFICATION REQUEST
--
-- ***************************************************

MBMSModificationRequest ::= SEQUENCE {
	-- MBMS Modification Request IEs
		mbms-PreferredFreqRequest		MBMS-ServiceIdentity-r6				OPTIONAL,
		rb-InformationReleaseList		RB-InformationReleaseList			OPTIONAL,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS MODIFIED SERVICES INFORMATION
--
-- ***************************************************

MBMSModifiedServicesInformation ::= SEQUENCE {
	-- MBMS Modified Services Information IEs
		modifedServiceList				MBMS-ModifedServiceList-r6			OPTIONAL,
		mbms-ReacquireMCCH				ENUMERATED { true }					OPTIONAL,
		mbms-DynamicPersistenceLevel	DynamicPersistenceLevel				OPTIONAL,
		endOfModifiedMCCHInformation	INTEGER (1..16)						OPTIONAL,
		mbmsNumberOfNeighbourCells		MBMS-NumberOfNeighbourCells-r6,
		mbms-AllUnmodifiedPTMServices	ENUMERATED { true }					OPTIONAL,
		mbms-PTMActivationTime			MBMS-PTMActivationTime-r6			OPTIONAL,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS NEIGHBOURING CELL PTM RB INFORMATION
--
-- ***************************************************

MBMSNeighbouringCellPTMRBInformation ::= SEQUENCE {
	-- MBMS Neighbouring Cell PTM RB Information IEs
		neighbouringCellIdentity		IntraFreqCellID,
		neighbouringCellSCCPCHList		MBMS-NeighbouringCellSCCPCHList-r6,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS SCHEDULING INFORMATION
--
-- ***************************************************

MBMSSchedulingInformation ::= SEQUENCE {
	-- MBMS Scheduling Information IEs
		serviceSchedulingInfoList		MBMS-ServiceSchedulingInfoList-r6,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

-- ***************************************************
--
-- MBMS UNMODIFIED SERVICES INFORMATION
--
-- ***************************************************

MBMSUnmodifiedServicesInformation ::= SEQUENCE {
	-- MBMS Unmodified Services Information IEs
		unmodifiedServiceList			MBMS-UnmodifiedServiceList-r6		OPTIONAL,
	-- Non critical extensions
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

END

InformationElements DEFINITIONS AUTOMATIC TAGS ::=

-- ***************************************************
--
--     CORE NETWORK INFORMATION ELEMENTS (10.3.1)
--
-- ***************************************************

BEGIN

IMPORTS

	hiPDSCHidentities,
	hiPUSCHidentities,
	hiRM,
	maxAC,
	maxAdditionalMeas,
	maxASC,
	maxASCmap,
	maxASCpersist,
	maxCCTrCH,
	maxCellMeas,
	maxCellMeas-1,
	maxCNdomains,
	maxCPCHsets,
	maxDPCH-DLchan,
	maxDPDCH-UL,
	maxDRACclasses,
	maxE-DCHMACdFlow,
	maxE-DCHMACdFlow-1,
	maxFACHPCH,
	maxFreq,
	maxFreqBandsFDD,
	maxFreqBandsFDD-ext,
	maxFreqBandsTDD,
	maxFreqBandsGSM,
	maxGERAN-SI,
	maxHProcesses,
	maxHSDSCHTBIndex,
	maxHSDSCHTBIndex-tdd384,
	maxHSSCCHs,
	maxInterSysMessages,
	maxLoCHperRLC,
	maxMAC-d-PDUsizes,
	maxMBMS-CommonCCTrCh,
	maxMBMS-CommonPhyCh,
	maxMBMS-CommonRB,
	maxMBMS-CommonTrCh,
	maxMBMS-Freq,
	maxMBMS-L1CP,
	maxMBMSservCount,
	maxMBMSservModif,
	maxMBMSservSched,
	maxMBMSservUnmodif,
	maxMBMSTransmis,
	maxMeasEvent,
	maxMeasIntervals,
	maxMeasParEvent,
	maxNumCDMA2000Freqs,
	maxNumFDDFreqs,
	maxNumGSMFreqRanges,
	maxGSMTargetCells,
	maxNumTDDFreqs,
	maxOtherRAT,
	maxOtherRAT-16,
	maxPage1,
	maxPCPCH-APsig,
	maxPCPCH-APsubCh,
	maxPCPCH-CDsig,
	maxPCPCH-CDsubCh,
	maxPCPCH-SF,
	maxPCPCHs,
	maxPDCPAlgoType,
	maxPDSCH,
	maxPDSCH-TFCIgroups,
	maxPRACH,
	maxPRACH-FPACH,
	maxPredefConfig,
	maxPUSCH,
	maxQueueIDs,
	maxRABsetup,
	maxRAT,
	maxRB,
	maxRBallRABs,
	maxRBperTrCh,
	maxRBMuxOptions,
	maxRBperRAB,
	maxReportedGSMCells,
	maxRLCPDUsizePerLogChan,
	maxSRBsetup,
	maxRL,
	maxRL-1,
	maxEDCHRL,
	maxROHC-PacketSizes-r4,
	maxROHC-Profile-r4,
	maxSCCPCH,
	maxSat,
	maxSIB,
	maxSIB-FACH,
	maxSystemCapability,
	maxTF,
	maxTF-CPCH,
	maxTFC,
	maxTFCsub,
	maxTFCI-2-Combs,
	maxTGPS,
	maxTrCH,
	maxTrCHpreconf,
	maxTS,
	maxTS-1,
	maxTS-2,
	maxTS-LCR,
	maxTS-LCR-1,
	maxURA,
	maxURNTI-Group
FROM Constant-definitions;

Ansi-41-IDNNS ::=							BIT STRING (SIZE (14))

CN-DomainIdentity ::=				ENUMERATED {
										cs-domain,
										ps-domain }

CN-DomainInformation ::=			SEQUENCE {
	cn-DomainIdentity					CN-DomainIdentity,
	cn-DomainSpecificNAS-Info			NAS-SystemInformationGSM-MAP
}

CN-DomainInformationFull ::=		SEQUENCE {
	cn-DomainIdentity					CN-DomainIdentity,
	cn-DomainSpecificNAS-Info			NAS-SystemInformationGSM-MAP,
	cn-DRX-CycleLengthCoeff				CN-DRX-CycleLengthCoefficient
}

CN-DomainInformationList ::=		SEQUENCE (SIZE (1..maxCNdomains)) OF
										CN-DomainInformation

CN-DomainInformationListFull ::=	SEQUENCE (SIZE (1..maxCNdomains)) OF
										CN-DomainInformationFull

CN-DomainSysInfo ::=				SEQUENCE {
	cn-DomainIdentity					CN-DomainIdentity,
	cn-Type								CHOICE {
		gsm-MAP								NAS-SystemInformationGSM-MAP,
		ansi-41								NAS-SystemInformationANSI-41
	},
	cn-DRX-CycleLengthCoeff				CN-DRX-CycleLengthCoefficient
}

CN-DomainSysInfoList ::=			SEQUENCE (SIZE (1..maxCNdomains)) OF
										CN-DomainSysInfo

CN-InformationInfo ::= 				SEQUENCE {
	plmn-Identity						PLMN-Identity						OPTIONAL,
	cn-CommonGSM-MAP-NAS-SysInfo		NAS-SystemInformationGSM-MAP		OPTIONAL,
	cn-DomainInformationList			CN-DomainInformationList			OPTIONAL
}

CN-InformationInfo-r6 ::= 			SEQUENCE {
	plmn-Identity						PLMN-Identity						OPTIONAL,
	cn-CommonGSM-MAP-NAS-SysInfo		NAS-SystemInformationGSM-MAP		OPTIONAL,
	cn-DomainInformationList			CN-DomainInformationList			OPTIONAL,
	primary-plmn-Identity				PLMN-Identity						OPTIONAL
}

CN-InformationInfoFull ::= 			SEQUENCE {
	plmn-Identity						PLMN-Identity						OPTIONAL,
	cn-CommonGSM-MAP-NAS-SysInfo		NAS-SystemInformationGSM-MAP		OPTIONAL,
	cn-DomainInformationListFull		CN-DomainInformationListFull		OPTIONAL
}

Digit ::=							INTEGER (0..9)

Gsm-map-IDNNS ::=							SEQUENCE {
	routingbasis									CHOICE {
		localPTMSI										SEQUENCE {
			routingparameter								RoutingParameter
		},
		tMSIofsamePLMN									SEQUENCE {
			routingparameter								RoutingParameter
		},
		tMSIofdifferentPLMN								SEQUENCE {
			routingparameter								RoutingParameter
		},
		iMSIresponsetopaging							SEQUENCE {
			routingparameter								RoutingParameter
		},
		iMSIcauseUEinitiatedEvent						SEQUENCE {
			routingparameter								RoutingParameter
		},
		iMEI											SEQUENCE {
			routingparameter								RoutingParameter
		},
		spare2											SEQUENCE {
			routingparameter								RoutingParameter
		},
		spare1											SEQUENCE {
			routingparameter								RoutingParameter
		}
	},
	-- dummy is not used in this version of the specification and
	-- it should be ignored by the receiver.
	dummy									BOOLEAN
}

IMEI ::=							SEQUENCE (SIZE (15)) OF
										IMEI-Digit

IMEI-Digit ::=						INTEGER (0..15)

IMSI-GSM-MAP ::=					SEQUENCE (SIZE (6..21)) OF
										Digit

IntraDomainNasNodeSelector ::=					SEQUENCE {
	version											CHOICE {
		release99										SEQUENCE {
			cn-Type											CHOICE {
				gsm-Map-IDNNS									Gsm-map-IDNNS,
				ansi-41-IDNNS									Ansi-41-IDNNS
			}
		},
		later											SEQUENCE {
			futurecoding									BIT STRING (SIZE (15))
		}
	}
}

LAI ::=								SEQUENCE {
	plmn-Identity						PLMN-Identity,
	lac									BIT STRING (SIZE (16))
}

MCC ::=								SEQUENCE (SIZE (3)) OF
										Digit

MNC ::=								SEQUENCE (SIZE (2..3)) OF
										Digit

MultiplePLMN-List-r6 ::=			SEQUENCE {
	mibPLMN-Identity					BOOLEAN,
	multiplePLMNs						SEQUENCE (SIZE (1..5)) OF
											PLMN-IdentityWithOptionalMCC-r6
}

NAS-Message ::=						OCTET STRING (SIZE (1..4095))

NAS-Synchronisation-Indicator ::=	BIT STRING(SIZE(4))

NAS-SystemInformationGSM-MAP ::= 	OCTET STRING (SIZE (1..8))

P-TMSI-GSM-MAP ::=					BIT STRING (SIZE (32))

PagingRecordTypeID ::=				ENUMERATED {
										imsi-GSM-MAP,
										tmsi-GSM-MAP-P-TMSI,
										imsi-DS-41,
										tmsi-DS-41 }

PLMN-Identity ::=					SEQUENCE {
	mcc									MCC,
	mnc									MNC
}

PLMN-IdentityWithOptionalMCC-r6 ::=	SEQUENCE {
	mcc									MCC						OPTIONAL,
	mnc									MNC
}

PLMN-Type ::=						CHOICE {
	gsm-MAP								SEQUENCE {
		plmn-Identity						PLMN-Identity
	},
	ansi-41							SEQUENCE {
		p-REV							P-REV,
		min-P-REV						Min-P-REV,
		sid								SID,
		nid								NID
	},
	gsm-MAP-and-ANSI-41				SEQUENCE {
		plmn-Identity					PLMN-Identity,
		p-REV							P-REV,
		min-P-REV						Min-P-REV,
		sid								SID,
		nid								NID
	},
	spare							NULL
}

RAB-Identity ::=					CHOICE {
	gsm-MAP-RAB-Identity				BIT STRING (SIZE (8)),
	ansi-41-RAB-Identity				BIT STRING (SIZE (8))
}

RAI ::=								SEQUENCE {
	lai									LAI,
	rac									RoutingAreaCode
}

RoutingAreaCode ::=					BIT STRING (SIZE (8))

RoutingParameter ::=							BIT STRING (SIZE (10))

TMSI-GSM-MAP ::=					BIT STRING (SIZE (32))

-- ***************************************************
--
--     UTRAN MOBILITY INFORMATION ELEMENTS (10.3.2)
--
-- ***************************************************

AccessClassBarred ::=				ENUMERATED {
										barred, notBarred }

AccessClassBarredList ::=			SEQUENCE (SIZE (maxAC)) OF
										AccessClassBarred

AllowedIndicator ::=				ENUMERATED {
										allowed, notAllowed }

CellAccessRestriction ::=			SEQUENCE {
	cellBarred							CellBarred,
	cellReservedForOperatorUse			ReservedIndicator,
	cellReservationExtension			ReservedIndicator,
	-- NOTE: IE accessClassBarredList should not be included if the IE CellAccessRestriction
	-- is included in the IE SysInfoType4
	accessClassBarredList				AccessClassBarredList				OPTIONAL
}

CellBarred ::=						CHOICE {
	barred								SEQUENCE {
		intraFreqCellReselectionInd			AllowedIndicator,
		t-Barred							T-Barred
	},
	notBarred							NULL
}

CellIdentity ::=					BIT STRING (SIZE (28))

CellIdentity-PerRL-List ::=			SEQUENCE (SIZE (1..maxRL)) OF CellIdentity

CellSelectReselectInfoSIB-3-4 ::=	SEQUENCE {
	mappingInfo							MappingInfo							OPTIONAL,
	cellSelectQualityMeasure			CHOICE {
		cpich-Ec-N0							SEQUENCE {
			-- Default value for q-HYST-2-S is q-HYST-1-S
			q-HYST-2-S							Q-Hyst-S					OPTIONAL
			-- Default value for q-HYST-2-S is q-HYST-1-S
		},
		cpich-RSCP							NULL
	},
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			s-Intrasearch						S-SearchQual				OPTIONAL,
			s-Intersearch						S-SearchQual				OPTIONAL,
			s-SearchHCS							S-SearchRXLEV				OPTIONAL,
			rat-List							RAT-FDD-InfoList			OPTIONAL,
			q-QualMin							Q-QualMin,
			q-RxlevMin							Q-RxlevMin
		},
		tdd									SEQUENCE {
			s-Intrasearch						S-SearchRXLEV				OPTIONAL,
			s-Intersearch						S-SearchRXLEV				OPTIONAL,
			s-SearchHCS							S-SearchRXLEV				OPTIONAL,
			rat-List							RAT-TDD-InfoList			OPTIONAL,
			q-RxlevMin							Q-RxlevMin
		}
	},	
	q-Hyst-l-S							Q-Hyst-S,
	t-Reselection-S						T-Reselection-S,
	hcs-ServingCellInformation			HCS-ServingCellInformation			OPTIONAL,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power
}

DomainSpecificAccessRestrictionForSharedNetwork-v670ext ::= CHOICE {
		domainSpecificAccessRestictionList					DomainSpecificAccessRestrictionList-v670ext,
		domainSpecificAccessRestictionParametersForAll		DomainSpecificAccessRestrictionParam-v670ext
}

DomainSpecificAccessRestrictionList-v670ext ::= SEQUENCE {
		domainSpecificAccessRestrictionParametersForOperator1
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL,
		domainSpecificAccessRestrictionParametersForOperator2
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL,
		domainSpecificAccessRestrictionParametersForOperator3
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL,
		domainSpecificAccessRestrictionParametersForOperator4
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL,
		domainSpecificAccessRestrictionParametersForOperator5
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL
}

DomainSpecificAccessRestrictionParam-v670ext ::= SEQUENCE {		
		cSDomainSpecificAccessRestriction		DomainSpecificAccessRestriction-v670ext,
		pSDomainSpecificAccessRestriction		DomainSpecificAccessRestriction-v670ext
}

DomainSpecificAccessRestriction-v670ext ::= CHOICE {
		noRestriction		NULL,
		restriction			SEQUENCE {
			domainSpecficAccessClassBarredList		AccessClassBarredList	OPTIONAL
		}
}

MapParameter ::=					INTEGER (0..99)

Mapping ::=							SEQUENCE {
	rat									RAT,
	mappingFunctionParameterList		MappingFunctionParameterList
}

Mapping-LCR-r4 ::=					SEQUENCE {
	mappingFunctionParameterList		MappingFunctionParameterList
}

MappingFunctionParameter ::=		SEQUENCE {
	functionType						MappingFunctionType,
	mapParameter1						MapParameter						OPTIONAL,
	mapParameter2						MapParameter,
	-- The presence of upperLimit is conditional on the number of repetition
	upperLimit							UpperLimit							OPTIONAL
}

MappingFunctionParameterList ::= 	SEQUENCE (SIZE (1..maxMeasIntervals)) OF
										MappingFunctionParameter

MappingFunctionType ::=				ENUMERATED {
										linear,
										functionType2,
										functionType3,
										functionType4 }

-- In MappingInfo list, mapping for FDD and 3.84Mcps TDD is defined.
-- For 1.28Mcps TDD, Mapping-LCR-r4 is used instead.
MappingInfo ::=						SEQUENCE (SIZE (1..maxRAT)) OF
										Mapping

-- Actual value Q-Hyst-S = IE value * 2
Q-Hyst-S ::=						INTEGER (0..20)

Q-Hyst-S-Fine ::= INTEGER (0..40)

RAT ::=								ENUMERATED {
										utra-FDD,
										utra-TDD,
										gsm,
										cdma2000 }

RAT-FDD-Info ::=					SEQUENCE {
	rat-Identifier						RAT-Identifier,
	s-SearchRAT							S-SearchQual,
	s-HCS-RAT							S-SearchRXLEV							OPTIONAL,
	s-Limit-SearchRAT					S-SearchQual
}

RAT-FDD-InfoList ::=				SEQUENCE (SIZE (1..maxOtherRAT)) OF
										RAT-FDD-Info

RAT-Identifier ::=					ENUMERATED {
										gsm, cdma2000 }

RAT-TDD-Info ::=					SEQUENCE {
	rat-Identifier						RAT-Identifier,
	s-SearchRAT							S-SearchRXLEV,
	s-HCS-RAT							S-SearchRXLEV						OPTIONAL,
	s-Limit-SearchRAT					S-SearchRXLEV
}

RAT-TDD-InfoList ::=				SEQUENCE (SIZE (1..maxOtherRAT)) OF
										RAT-TDD-Info

ReservedIndicator ::=				ENUMERATED {
										reserved,
										notReserved }

-- Actual value S-SearchQual = IE value * 2
S-SearchQual ::=						INTEGER (-16..10)

-- Actual value S-SearchRXLEV = (IE value * 2) + 1
S-SearchRXLEV ::=						INTEGER (-53..45)

-- Actual value ScalingFactor = IE value * 0.1
SpeedDependentScalingFactor ::=		INTEGER (0..10)

T-Barred ::=						ENUMERATED {
										s10, s20, s40, s80,
										s160, s320, s640, s1280 }

T-Reselection-S ::=					INTEGER (0..31)

-- Actual value T-Reselection-S-Fine = IE value * 0.2
T-Reselection-S-Fine ::=			INTEGER (0..31)

-- Actual value ScalingFactor = IE value * 0.25
TreselectionScalingFactor ::=		INTEGER (4..19)

-- For UpperLimit, the used range depends on the RAT used.
UpperLimit ::=						INTEGER (1..91)

URA-Identity ::=					BIT STRING (SIZE (16))

URA-IdentityList ::=				SEQUENCE (SIZE (1..maxURA)) OF
										URA-Identity

-- ***************************************************
--
--     USER EQUIPMENT INFORMATION ELEMENTS (10.3.3)
--
-- ***************************************************

AccessStratumReleaseIndicator ::=	ENUMERATED {
										rel-4, rel-5, rel-6, rel-7,
										spare12, spare11, spare10, spare9, spare8,
										spare7,	spare6,	spare5, spare4, spare3,
										spare2, spare1 }

-- TABULAR : for ActivationTime, value 'now' always appear as default, and is encoded
-- by absence of the field
ActivationTime ::=					INTEGER (0..255)

BackoffControlParams ::=			SEQUENCE {
	n-AP-RetransMax						N-AP-RetransMax,
	n-AccessFails						N-AccessFails,
	nf-BO-NoAICH						NF-BO-NoAICH,
	ns-BO-Busy							NS-BO-Busy,
	nf-BO-AllBusy						NF-BO-AllBusy,
	nf-BO-Mismatch						NF-BO-Mismatch,
	t-CPCH								T-CPCH
}

C-RNTI ::=							BIT STRING (SIZE (16))

CapabilityUpdateRequirement ::=		SEQUENCE {
	ue-RadioCapabilityFDDUpdateRequirement	BOOLEAN,
	-- ue-RadioCapabilityTDDUpdateRequirement is for 3.84Mcps TDD update requirement
	ue-RadioCapabilityTDDUpdateRequirement	BOOLEAN,
	systemSpecificCapUpdateReqList		SystemSpecificCapUpdateReqList		OPTIONAL
}

CapabilityUpdateRequirement-r4-ext ::= SEQUENCE {
	ue-RadioCapabilityUpdateRequirement-TDD128	BOOLEAN
}

CapabilityUpdateRequirement-r4 ::=	SEQUENCE {
	ue-RadioCapabilityFDDUpdateRequirement-FDD	BOOLEAN,
	ue-RadioCapabilityTDDUpdateRequirement-TDD384	BOOLEAN,
	ue-RadioCapabilityTDDUpdateRequirement-TDD128	BOOLEAN,
	systemSpecificCapUpdateReqList		SystemSpecificCapUpdateReqList		OPTIONAL
}

CapabilityUpdateRequirement-r7-ext ::= SEQUENCE {
	ue-RadioCapabilityUpdateRequirement-TDD768	BOOLEAN
}

-- If the IE CellUpdateCause has the value 'cellUpdateCause-ext', the actual value is
-- defined in the IE CellUpdateCause-ext.
CellUpdateCause ::=					ENUMERATED { 
										cellReselection,
										periodicalCellUpdate,
										uplinkDataTransmission,
										utran-pagingResponse,
										re-enteredServiceArea,
										radiolinkFailure,
										rlc-unrecoverableError,
										cellUpdateCause-ext }

-- The IE CellUpdateCause-ext shall be present, if the IE CellUpdateCause has the
-- value 'cellUpdateCause-ext'.
CellUpdateCause-ext ::=				ENUMERATED {
										mbms-Reception,
										mbms-PTP-RB-Request, spare2, spare1 }

ChipRateCapability ::=				ENUMERATED {
										mcps3-84, mcps1-28 }

ChipRateCapability-r7 ::=				ENUMERATED {
										mcps3-84, mcps7-68, mcps1-28 }

CipheringAlgorithm ::=				ENUMERATED {
										uea0, uea1 }

CipheringModeCommand ::=			CHOICE {
	startRestart						CipheringAlgorithm,
	dummy						NULL
}

CipheringModeInfo ::=				SEQUENCE {
	-- TABULAR: The ciphering algorithm is included in the CipheringModeCommand.
	cipheringModeCommand				CipheringModeCommand,
	activationTimeForDPCH				ActivationTime						OPTIONAL,
	rb-DL-CiphActivationTimeInfo		RB-ActivationTimeInfoList			OPTIONAL
}

CN-DRX-CycleLengthCoefficient ::=	INTEGER (6..9)

CN-PagedUE-Identity ::=				CHOICE {
	imsi-GSM-MAP						IMSI-GSM-MAP,
	tmsi-GSM-MAP						TMSI-GSM-MAP,
	p-TMSI-GSM-MAP						P-TMSI-GSM-MAP,
	imsi-DS-41							IMSI-DS-41,
	tmsi-DS-41							TMSI-DS-41,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

CompressedModeMeasCapability ::= 	SEQUENCE {
	fdd-Measurements					BOOLEAN,
	-- TABULAR: The IEs tdd-Measurements, gsm-Measurements and multiCarrierMeasurements
	-- are made optional since they are conditional based on another information element.
	-- Their absence corresponds to the case where the condition is not true.
	tdd-Measurements					BOOLEAN								OPTIONAL,
	gsm-Measurements					GSM-Measurements					OPTIONAL,
	multiCarrierMeasurements			BOOLEAN								OPTIONAL
}

CompressedModeMeasCapability-LCR-r4 ::=	SEQUENCE {
	tdd128-Measurements						BOOLEAN							OPTIONAL
}

CompressedModeMeasCapabFDDList ::=	SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
										CompressedModeMeasCapabFDD

CompressedModeMeasCapabFDDList2 ::=	SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
										CompressedModeMeasCapabFDD2

CompressedModeMeasCapabFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
											CompressedModeMeasCapabFDD-ext

CompressedModeMeasCapabFDD ::=		SEQUENCE {
	radioFrequencyBandFDD				RadioFrequencyBandFDD	OPTIONAL,
	dl-MeasurementsFDD					BOOLEAN,
	ul-MeasurementsFDD					BOOLEAN
}

CompressedModeMeasCapabFDD2 ::=		SEQUENCE {
	-- UE may omit both IEs if this IE indicates the compressed mode capability within the same
	-- frequency band. Otherwise, the UE shall include either one of the following OPTIONAL IEs.
	radioFrequencyBandFDD				RadioFrequencyBandFDD	OPTIONAL,
	radioFrequencyBandFDD2				RadioFrequencyBandFDD2	OPTIONAL,
	dl-MeasurementsFDD					BOOLEAN,
	ul-MeasurementsFDD					BOOLEAN
}

CompressedModeMeasCapabFDD-ext ::=		SEQUENCE {
	radioFrequencyBandFDD2				RadioFrequencyBandFDD2,
	dl-MeasurementsFDD					BOOLEAN,
	ul-MeasurementsFDD					BOOLEAN
}

CompressedModeMeasCapabTDDList ::=	SEQUENCE (SIZE (1..maxFreqBandsTDD)) OF
										CompressedModeMeasCapabTDD

CompressedModeMeasCapabTDD ::=		SEQUENCE {
	radioFrequencyBandTDD				RadioFrequencyBandTDD,
	dl-MeasurementsTDD					BOOLEAN,
	ul-MeasurementsTDD					BOOLEAN
}

CompressedModeMeasCapabGSMList ::=	SEQUENCE (SIZE (1..maxFreqBandsGSM)) OF
										CompressedModeMeasCapabGSM

CompressedModeMeasCapabGSM ::=		SEQUENCE {
	radioFrequencyBandGSM				RadioFrequencyBandGSM,
	dl-MeasurementsGSM					BOOLEAN,
	ul-MeasurementsGSM					BOOLEAN
}

CompressedModeMeasCapabMC ::=		SEQUENCE {
	dl-MeasurementsMC					BOOLEAN,
	ul-MeasurementsMC					BOOLEAN
}

CPCH-Parameters ::=					SEQUENCE {
	initialPriorityDelayList			InitialPriorityDelayList			OPTIONAL,
	backoffControlParams				BackoffControlParams,
	-- TABULAR: TPC step size nested inside PowerControlAlgorithm
	powerControlAlgorithm				PowerControlAlgorithm,
	dl-DPCCH-BER						DL-DPCCH-BER
}

DL-CapabilityWithSimultaneousHS-DSCHConfig ::=	ENUMERATED{kbps32, kbps64, kbps128, kbps384}

DL-DPCCH-BER ::=					INTEGER (0..63)

DL-PhysChCapabilityFDD ::=			SEQUENCE {
	-- The IE “maxNoDPCH-PDSCH-Codes” only gives information on the maximum number of DPCH Codes.
	maxNoDPCH-PDSCH-Codes				INTEGER (1..8),
	maxNoPhysChBitsReceived				MaxNoPhysChBitsReceived,
	supportForSF-512					BOOLEAN,
	-- dummy and dummy2 are not used in this version of the specification
	-- and if received they should be ignored.
	dummy								BOOLEAN,
	dummy2								SimultaneousSCCPCH-DPCH-Reception
}

DL-PhysChCapabilityFDD-v380ext ::=			SEQUENCE {
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy										SupportOfDedicatedPilotsForChEstimation		OPTIONAL
}

SupportOfDedicatedPilotsForChEstimation ::=			ENUMERATED { true }

DL-PhysChCapabilityTDD ::=			SEQUENCE {
	maxTS-PerFrame						MaxTS-PerFrame,
	maxPhysChPerFrame					MaxPhysChPerFrame,
	minimumSF							MinimumSF-DL,
	supportOfPDSCH						BOOLEAN,
	maxPhysChPerTS						MaxPhysChPerTS	
}

DL-PhysChCapabilityTDD-LCR-r4 ::=	SEQUENCE {
	maxTS-PerSubFrame					MaxTS-PerSubFrame-r4,
	maxPhysChPerFrame					MaxPhysChPerSubFrame-r4,
	minimumSF							MinimumSF-DL,
	supportOfPDSCH						BOOLEAN,
	maxPhysChPerTS						MaxPhysChPerTS,
	supportOf8PSK						BOOLEAN
}

DL-PhysChCapabilityTDD-768 ::=		SEQUENCE {
	maxTS-PerFrame						MaxTS-PerFrame,
	maxPhysChPerFrame					MaxPhysChPerFrame-768,
	minimumSF							MinimumSF-DL-768,
	supportOfPDSCH						BOOLEAN,
	maxPhysChPerTS						MaxPhysChPerTS-768
}

DL-TransChCapability ::=			SEQUENCE {
	maxNoBitsReceived					MaxNoBits,
	maxConvCodeBitsReceived				MaxNoBits,
	turboDecodingSupport				TurboSupport,
	maxSimultaneousTransChs				MaxSimultaneousTransChsDL,
	maxSimultaneousCCTrCH-Count			MaxSimultaneousCCTrCH-Count,
	maxReceivedTransportBlocks			MaxTransportBlocksDL,
	maxNumberOfTFC						MaxNumberOfTFC-DL,
	maxNumberOfTF						MaxNumberOfTF
}

DRAC-SysInfo ::=					SEQUENCE {
	transmissionProbability				TransmissionProbability,
	maximumBitRate						MaximumBitRate
}

DRAC-SysInfoList ::=				SEQUENCE (SIZE (1..maxDRACclasses)) OF
										DRAC-SysInfo

DSCH-RNTI ::=						BIT STRING (SIZE (16))

DelayRestrictionFlag ::=			ENUMERATED { true }

E-RNTI ::=							BIT STRING (SIZE (16))

ESN-DS-41 ::=						BIT STRING (SIZE (32))

EstablishmentCause ::=				ENUMERATED {
										originatingConversationalCall,
										originatingStreamingCall, 
										originatingInteractiveCall,
										originatingBackgroundCall,
										originatingSubscribedTrafficCall,
										terminatingConversationalCall,
										terminatingStreamingCall,
										terminatingInteractiveCall,
										terminatingBackgroundCall,
										emergencyCall,
										interRAT-CellReselection,
										interRAT-CellChangeOrder,
										registration,
										detach,
										originatingHighPrioritySignalling,
										originatingLowPrioritySignalling,
										callRe-establishment,
										terminatingHighPrioritySignalling,
										terminatingLowPrioritySignalling,
										terminatingCauseUnknown,
										mbms-Reception,
										mbms-PTP-RB-Request,
										spare10,
										spare9,
										spare8,
										spare7,
										spare6,
										spare5,
										spare4,
										spare3,
										spare2,
										spare1 }

FailureCauseWithProtErr ::=			CHOICE {
	configurationUnsupported			NULL,
	physicalChannelFailure				NULL,
	incompatibleSimultaneousReconfiguration
										NULL,
	compressedModeRuntimeError			TGPSI,
	protocolError						ProtocolErrorInformation,
	cellUpdateOccurred					NULL,
	invalidConfiguration				NULL,
	configurationIncomplete				NULL,
	unsupportedMeasurement				NULL,
	mbmsSessionAlreadyReceivedCorrectly	NULL,
	lowerPriorityMBMSService			NULL,
	spare5								NULL,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

FailureCauseWithProtErrTrId ::=		SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier, 
		failureCause					FailureCauseWithProtErr
}

GroupIdentityWithReleaseInformation ::=		SEQUENCE {
		rrc-ConnectionReleaseInformation		RRC-ConnectionReleaseInformation,
		groupReleaseInformation					GroupReleaseInformation
	}

GroupReleaseInformation ::=			SEQUENCE {
	uRNTI-Group							U-RNTI-Group
}

GSM-Measurements ::=				SEQUENCE {
	gsm900								BOOLEAN,
	dcs1800								BOOLEAN,
	gsm1900								BOOLEAN
}

H-RNTI ::=							BIT STRING (SIZE (16))

HSDSCH-physical-layer-category ::=		INTEGER (1..64)

UESpecificBehaviourInformation1idle ::= BIT STRING (SIZE (4))

UESpecificBehaviourInformation1interRAT ::= BIT STRING (SIZE (8))


IMSI-and-ESN-DS-41 ::=				SEQUENCE {
	imsi-DS-41							IMSI-DS-41,
	esn-DS-41							ESN-DS-41
}

IMSI-DS-41 ::=						OCTET STRING (SIZE (5..7))

InitialPriorityDelayList ::=		SEQUENCE (SIZE (1..maxASC)) OF
										NS-IP

InitialUE-Identity ::=				CHOICE {
	imsi								IMSI-GSM-MAP,
	tmsi-and-LAI						TMSI-and-LAI-GSM-MAP,
	p-TMSI-and-RAI						P-TMSI-and-RAI-GSM-MAP,
	imei								IMEI,
	esn-DS-41							ESN-DS-41,
	imsi-DS-41							IMSI-DS-41,
	imsi-and-ESN-DS-41					IMSI-and-ESN-DS-41,
	tmsi-DS-41							TMSI-DS-41
}

IntegrityCheckInfo ::=				SEQUENCE {
	messageAuthenticationCode			MessageAuthenticationCode,
	rrc-MessageSequenceNumber			RRC-MessageSequenceNumber
}

IntegrityProtActivationInfo ::=		SEQUENCE {
	rrc-MessageSequenceNumberList		RRC-MessageSequenceNumberList
}

IntegrityProtectionAlgorithm ::=	ENUMERATED {
										uia1 }


IntegrityProtectionModeCommand ::= 	CHOICE {
	startIntegrityProtection			SEQUENCE {
		integrityProtInitNumber				IntegrityProtInitNumber
	},
	modify								SEQUENCE {
		dl-IntegrityProtActivationInfo		IntegrityProtActivationInfo
	}
}

IntegrityProtectionModeInfo ::=		SEQUENCE {
	-- TABULAR: DL integrity protection activation info and Integrity
	-- protection intialisation number have been nested inside 
	-- IntegrityProtectionModeCommand.
	integrityProtectionModeCommand		IntegrityProtectionModeCommand,
	integrityProtectionAlgorithm		IntegrityProtectionAlgorithm		OPTIONAL	
}

IntegrityProtInitNumber ::=			BIT STRING (SIZE (32))

-- dummy is not used in this version of the specification, it should
-- not be sent and if received it should be ignored.
MaxHcContextSpace ::=					ENUMERATED	{
											dummy, by1024, by2048, by4096, 
											by8192 }

MaxHcContextSpace-r5-ext ::=			ENUMERATED	{
											by16384, by32768, by65536, by131072 }


MaxROHC-ContextSessions-r4 ::=		ENUMERATED	{
											s2, s4, s8, s12, s16, s24, s32, s48,
											s64, s128, s256, s512, s1024, s16384 }

MaximumAM-EntityNumberRLC-Cap ::=	ENUMERATED {
										dummy, am4, am5, am6, 
										am8, am16, am30 }

-- Actual value MaximumBitRate = IE value * 16
MaximumBitRate ::=					INTEGER (0..32)

MaximumRLC-WindowSize ::=			ENUMERATED { mws2047, mws4095 }

MaxNoDPDCH-BitsTransmitted ::=		ENUMERATED {
										b600, b1200, b2400, b4800, 
										b9600, b19200, b28800, b38400,
										b48000, b57600 }

MaxNoBits ::=						ENUMERATED {
										b640, b1280, b2560, b3840, b5120,
										b6400, b7680, b8960, b10240,
										b20480, b40960, b81920, b163840 }

MaxNoPhysChBitsReceived ::=			ENUMERATED {
										dummy, b1200, b2400, b3600, 
										b4800, b7200, b9600, b14400, 
										b19200, b28800, b38400, b48000, 
										b57600, b67200, b76800 }

MaxNoSCCPCH-RL ::=					ENUMERATED {
										rl1 }

MaxNumberOfTF ::=					ENUMERATED {
										tf32, tf64, tf128, tf256,
										tf512, tf1024 }

MaxNumberOfTFC-DL ::=				ENUMERATED {
										tfc16, tfc32, tfc48, tfc64, tfc96, 
										tfc128, tfc256, tfc512, tfc1024 }

MaxNumberOfTFC-UL ::=				ENUMERATED {
										dummy1, dummy2, tfc16, tfc32, tfc48, tfc64, 
										tfc96, tfc128, tfc256, tfc512, tfc1024 }

-- the values 1 …4 for MaxPhysChPerFrame are not used in this version of the protocol 
MaxPhysChPerFrame ::=				INTEGER (1..224)

MaxPhysChPerFrame-768 ::=			INTEGER (1..448)

MaxPhysChPerSubFrame-r4 ::=			INTEGER (1..96)

MaxPhysChPerTimeslot ::=			ENUMERATED {
										ts1, ts2 }

-- the values 1 …4 for MaxPhysChPerTS are not used in this version of the protocol 
MaxPhysChPerTS ::=					INTEGER (1..16)

MaxPhysChPerTS-768 ::=				INTEGER (1..32)

MaxSimultaneousCCTrCH-Count ::=		INTEGER (1..8)

MaxSimultaneousTransChsDL ::=		ENUMERATED {
										e4, e8, e16, e32 }

MaxSimultaneousTransChsUL ::=		ENUMERATED {
										dummy, e4, e8, e16, e32 }

MaxTransportBlocksDL ::=			ENUMERATED {
										tb4, tb8, tb16, tb32, tb48,
										tb64, tb96, tb128, tb256, tb512 }

MaxTransportBlocksUL ::=			ENUMERATED {
										dummy, tb4, tb8, tb16, tb32, tb48,
										tb64, tb96, tb128, tb256, tb512 }

MaxTS-PerFrame ::=					INTEGER (1..14)

MaxTS-PerSubFrame-r4 ::=			INTEGER (1..6)

-- TABULAR: MeasurementCapability contains dependencies to UE-MultiModeRAT-Capability,
-- the conditional fields have been left mandatory for now.
MeasurementCapability ::=			SEQUENCE {
	downlinkCompressedMode				CompressedModeMeasCapability,
	uplinkCompressedMode				CompressedModeMeasCapability	
}

MeasurementCapabilityExt ::= 		SEQUENCE{
	compressedModeMeasCapabFDDList		CompressedModeMeasCapabFDDList,
	compressedModeMeasCapabTDDList		CompressedModeMeasCapabTDDList	OPTIONAL,
	compressedModeMeasCapabGSMList		CompressedModeMeasCapabGSMList	OPTIONAL,
	compressedModeMeasCapabMC			CompressedModeMeasCapabMC		OPTIONAL
}

MeasurementCapabilityExt2 ::= 		SEQUENCE{
	compressedModeMeasCapabFDDList		CompressedModeMeasCapabFDDList2,
	compressedModeMeasCapabTDDList		CompressedModeMeasCapabTDDList	OPTIONAL,
	compressedModeMeasCapabGSMList		CompressedModeMeasCapabGSMList	OPTIONAL,
	compressedModeMeasCapabMC			CompressedModeMeasCapabMC		OPTIONAL
}


MeasurementCapability-r4-ext ::=	SEQUENCE {
	downlinkCompressedMode-LCR			CompressedModeMeasCapability-LCR-r4,
	uplinkCompressedMode-LCR			CompressedModeMeasCapability-LCR-r4
}

MessageAuthenticationCode ::=		BIT STRING (SIZE (32))

MinimumSF-DL ::=					ENUMERATED {
										sf1, sf16 }

MinimumSF-DL-768 ::=				ENUMERATED {
										sf1, sf32 }

MinimumSF-UL ::=					ENUMERATED {
										sf1, sf2, sf4, sf8, dummy }

MultiModeCapability ::=				ENUMERATED {
										tdd, fdd, fdd-tdd }

MultiRAT-Capability ::=				SEQUENCE {
	supportOfGSM						BOOLEAN,
	supportOfMulticarrier				BOOLEAN
} 

MultiModeRAT-Capability-v590ext ::=	SEQUENCE {
	supportOfUTRAN-ToGERAN-NACC			BOOLEAN
}

MultiModeRAT-Capability-v680ext ::=	SEQUENCE {
	supportOfHandoverToGAN				ENUMERATED { doesSupportHandoverToGAN }		OPTIONAL
}

N-300 ::=							INTEGER (0..7)

N-301 ::=							INTEGER (0..7)

N-302 ::=							INTEGER (0..7)

N-304 ::=							INTEGER (0..7)

N-308 ::=							INTEGER (1..8)

N-310 ::=							INTEGER (0..7)

N-312 ::=							ENUMERATED {
										s1, s50, s100, s200, s400,
										s600, s800, s1000 }

N-312ext ::=						ENUMERATED {
										s2, s4, s10, s20 }

N-312-r5 ::=							ENUMERATED {
										s1, s2, s4, s10, s20,
										s50, s100, s200, s400,
										s600, s800, s1000 }

N-313 ::=							ENUMERATED {
										s1, s2, s4, s10, s20,
										 s50, s100, s200 }

N-315 ::=							ENUMERATED {
										s1, s50, s100, s200, s400,
										s600, s800, s1000 }

N-315ext ::=						ENUMERATED {
										s2, s4, s10, s20 }

N-315-r5 ::=							ENUMERATED {
										s1, s2, s4, s10, s20,
										s50, s100, s200, s400,
										s600, s800, s1000 }


N-AccessFails ::=					INTEGER (1..64)

N-AP-RetransMax ::=					INTEGER (1..64)

NetworkAssistedGPS-Supported ::=	ENUMERATED {
										networkBased, 
										ue-Based,
										bothNetworkAndUE-Based,
										noNetworkAssistedGPS }

NF-BO-AllBusy ::=					INTEGER (0..31)

NF-BO-NoAICH ::=					INTEGER (0..31)

NF-BO-Mismatch ::=					INTEGER (0..127)

NS-BO-Busy ::=						INTEGER (0..63)

NS-IP ::=							INTEGER (0..28)

P-TMSI-and-RAI-GSM-MAP ::=			SEQUENCE {
	p-TMSI								P-TMSI-GSM-MAP,
	rai									RAI
}

PagingCause ::=						ENUMERATED {
										terminatingConversationalCall,
										terminatingStreamingCall,
										terminatingInteractiveCall,
										terminatingBackgroundCall,
										terminatingHighPrioritySignalling,
										terminatingLowPrioritySignalling,
										terminatingCauseUnknown,
										spare
 }

PagingRecord ::=					CHOICE {
	cn-Identity							SEQUENCE {
		pagingCause							PagingCause,
		cn-DomainIdentity					CN-DomainIdentity,
		cn-pagedUE-Identity					CN-PagedUE-Identity
	},
	utran-Identity						SEQUENCE {
		u-RNTI								U-RNTI,
		cn-OriginatedPage-connectedMode-UE	SEQUENCE {
			pagingCause							PagingCause,
			cn-DomainIdentity					CN-DomainIdentity,
			pagingRecordTypeID					PagingRecordTypeID
		}																	OPTIONAL
	}
}

PagingRecord2-r5 ::=				CHOICE {
	utran-SingleUE-Identity				SEQUENCE {
		u-RNTI								U-RNTI,
		cn-OriginatedPage-connectedMode-UE	SEQUENCE {
			pagingCause							PagingCause,
			cn-DomainIdentity					CN-DomainIdentity,
			pagingRecordTypeID					PagingRecordTypeID
		}																	OPTIONAL,
		rrc-ConnectionReleaseInformation		RRC-ConnectionReleaseInformation
	},
	utran-GroupIdentity						SEQUENCE ( SIZE (1 .. maxURNTI-Group) ) OF
												GroupIdentityWithReleaseInformation
}

PagingRecordList ::=				SEQUENCE (SIZE (1..maxPage1)) OF
										PagingRecord

PagingRecord2List-r5 ::=			SEQUENCE (SIZE (1..maxPage1)) OF
										PagingRecord2-r5

PDCP-Capability ::=					SEQUENCE {
	losslessSRNS-RelocationSupport		BOOLEAN,
	-- If present, the "maxHcContextSpace" in the IE "PDCP-Capability-r5-ext" overrides the
	-- "supported" value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN.
	supportForRfc2507					CHOICE {
		notSupported						NULL,
		supported							MaxHcContextSpace
	}
}

PDCP-Capability-r4-ext ::=			SEQUENCE {
	supportForRfc3095				CHOICE {
		notSupported						NULL,
		supported							SEQUENCE {
			maxROHC-ContextSessions				MaxROHC-ContextSessions-r4	DEFAULT s16,
			reverseCompressionDepth				INTEGER (0..65535)			DEFAULT 0
		}
	}
}

PDCP-Capability-r5-ext ::=			SEQUENCE {
	supportForRfc3095ContextRelocation		BOOLEAN,
	maxHcContextSpace						MaxHcContextSpace-r5-ext	OPTIONAL
}

PDCP-Capability-r5-ext2 ::=			SEQUENCE {
	losslessDLRLC-PDUSizeChange			ENUMERATED { true }					OPTIONAL
}

PhysicalChannelCapability ::=		SEQUENCE {
		fddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityFDD,
			uplinkPhysChCapability				UL-PhysChCapabilityFDD
		}											OPTIONAL,
		-- tddPhysChCapability describes the 3.84Mcps TDD physical channel capability
		tddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD
		}											OPTIONAL
}

PhysicalChannelCapability-r7 ::=		SEQUENCE {
		fddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityFDD,
			uplinkPhysChCapability				UL-PhysChCapabilityFDD
		}											OPTIONAL,
		-- tddPhysChCapability describes the 3.84Mcps TDD physical channel capability
		tddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD
		}											OPTIONAL,
		-- tddPhysicalChaCapability-768 describes the 7.68 TDD physical channel capability
		tddPhysChCapability-768				SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD-768,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD
		}
}

-- PhysicalChannelCapability-LCR-r4 describes the 1.28Mcps TDD physical channel capability
PhysicalChannelCapability-LCR-r4 ::=		SEQUENCE {
		tdd128-PhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD-LCR-r4,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD-LCR-r4
		}											OPTIONAL
}

-- PhysicalChannelCapability-hspdsch-r5 describes the HS-PDSCH physical channel capability
PhysicalChannelCapability-hspdsch-r5 ::=		SEQUENCE {
	fdd-hspdsch										CHOICE {
		supported										SEQUENCE {
			hsdsch-physical-layer-category					HSDSCH-physical-layer-category,
			-- dummy and dummy2 are not used in this version of the specification
			-- and if received they should be ignored.
			dummy											BOOLEAN,
			dummy2											BOOLEAN
		},
		unsupported										NULL
	},
	tdd384-hspdsch									CHOICE {
		supported										HSDSCH-physical-layer-category,
		unsupported										NULL
	},
	tdd128-hspdsch									CHOICE {
		supported										HSDSCH-physical-layer-category,
		unsupported										NULL
	}
}

PNBSCH-Allocation-r4 ::=				SEQUENCE {
		numberOfRepetitionsPerSFNPeriod	ENUMERATED {
											c2, c3, c4, c5, c6, c7, c8, c9, c10,
											c12, c14, c16, c18, c20, c24, c28, c32,
											c36, c40, c48, c56, c64, c72, c80  }
}

ProtocolErrorCause ::=				ENUMERATED {
										asn1-ViolationOrEncodingError,
										messageTypeNonexistent,
										messageNotCompatibleWithReceiverState,
										ie-ValueNotComprehended,
										informationElementMissing,
										messageExtensionNotComprehended,
										spare2, spare1 }

ProtocolErrorIndicator ::=			ENUMERATED {
										noError, errorOccurred }

ProtocolErrorIndicatorWithMoreInfo ::= 
									CHOICE {
	noError								NULL,
	errorOccurred						SEQUENCE {		
		rrc-TransactionIdentifier			RRC-TransactionIdentifier, 
		protocolErrorInformation			ProtocolErrorInformation
	}
}

ProtocolErrorMoreInformation ::=	SEQUENCE {
	diagnosticsType						CHOICE {
		type1								CHOICE {
			asn1-ViolationOrEncodingError		NULL,
			messageTypeNonexistent				NULL,
			messageNotCompatibleWithReceiverState
												IdentificationOfReceivedMessage,
			ie-ValueNotComprehended				IdentificationOfReceivedMessage,
			conditionalInformationElementError	IdentificationOfReceivedMessage,
			messageExtensionNotComprehended		IdentificationOfReceivedMessage,
			spare1								NULL, 
			spare2								NULL 
		},
		spare								NULL
	}
}

RadioFrequencyBandFDD ::=			ENUMERATED {
	-- fdd2100, fdd1900, fdd1800 correspond to Band I, Band II and Band III respectively
										fdd2100,
										fdd1900,
										fdd1800, 
										bandVI, 
										bandIV,
										bandV,
										bandVII,
										extension-indicator }

RadioFrequencyBandFDD2 ::=			ENUMERATED {
										bandVIII,
										bandIX,
										bandX,
										bandXI,
										bandXII,
										bandXIII,
										bandXIV,
										bandXV,
										bandXVI,
										bandXVII, 
										bandXVIII,
										bandXIX,
										bandXX,
										bandXXI,
										bandXXII,
										extension-indicator }

RadioFrequencyBandTDDList ::=		ENUMERATED {
										a, b, c, ab, ac, bc, abc, spare }

RadioFrequencyBandTDD ::=			ENUMERATED {a, b, c, spare}

RadioFrequencyBandGSM ::=			ENUMERATED {
										gsm450,
										gsm480,
										gsm850,
										gsm900P,
										gsm900E,
										gsm1800,
										gsm1900,
										spare9, spare8, spare7, spare6, spare5,
										spare4, spare3, spare2, spare1}

Rb-timer-indicator ::=				SEQUENCE {
	t314-expired						BOOLEAN,
	t315-expired						BOOLEAN }

Re-EstablishmentTimer ::=			ENUMERATED {
										useT314, useT315
}

RedirectionInfo ::=					CHOICE {
	frequencyInfo						FrequencyInfo,
	interRATInfo						InterRATInfo
}

RedirectionInfo-r6 ::=				CHOICE {
	frequencyInfo						FrequencyInfo,
	interRATInfo						InterRATInfo-r6
}

RejectionCause ::=					ENUMERATED {
										congestion,
										unspecified }

ReleaseCause ::=					ENUMERATED {
										normalEvent,
										unspecified,
										pre-emptiveRelease,
										congestion,
										re-establishmentReject,
										directedsignallingconnectionre-establishment,
										userInactivity,
										spare }

RF-Capability ::=					SEQUENCE {
		fddRF-Capability				SEQUENCE {
			ue-PowerClass					UE-PowerClass,
			txRxFrequencySeparation			TxRxFrequencySeparation
		}									OPTIONAL,
		tddRF-Capability							SEQUENCE {
			ue-PowerClass				UE-PowerClass,
			radioFrequencyTDDBandList	RadioFrequencyBandTDDList,
			chipRateCapability			ChipRateCapability
		}									OPTIONAL
}

RF-Capability-r4-ext ::=				SEQUENCE {
		tddRF-Capability							SEQUENCE {
			ue-PowerClass				UE-PowerClass,
			radioFrequencyBandTDDList	RadioFrequencyBandTDDList,
			chipRateCapability			ChipRateCapability
		}									OPTIONAL
}

RF-Capability-r7 ::=				SEQUENCE {
		fddRF-Capability				SEQUENCE {
			ue-PowerClass					UE-PowerClass,
			txRxFrequencySeparation			TxRxFrequencySeparation
		}									OPTIONAL,
		tddRF-Capability				SEQUENCE {
			ue-PowerClass					UE-PowerClass,
			radioFrequencyTDDBandList		RadioFrequencyBandTDDList,
			chipRateCapability				ChipRateCapability-r7
		}	OPTIONAL
}

RLC-Capability ::=					SEQUENCE {
	-- If present, the "totalRLC-AM-BufferSize" in the IE "RLC-Capability-r5-ext" overrides the
	-- corresponding value in this IE. The value in this IE may be used by a pre-REL-5 UTRAN.
	totalRLC-AM-BufferSize				TotalRLC-AM-BufferSize,
	maximumRLC-WindowSize				MaximumRLC-WindowSize,
	maximumAM-EntityNumber				MaximumAM-EntityNumberRLC-Cap
}

RLC-Capability-r5-ext ::=					SEQUENCE {
	totalRLC-AM-BufferSize				TotalRLC-AM-BufferSize-r5-ext		OPTIONAL
}

RRC-ConnectionReleaseInformation ::=	CHOICE {
	noRelease								NULL,
	release									SEQUENCE {
		releaseCause							ReleaseCause
	}
}

RRC-MessageSequenceNumber ::=		INTEGER (0..15)


RRC-MessageSequenceNumberList ::=	SEQUENCE (SIZE (4..5)) OF
										RRC-MessageSequenceNumber

RRC-StateIndicator ::=				ENUMERATED {
										cell-DCH, cell-FACH, cell-PCH, ura-PCH }

RRC-TransactionIdentifier ::=		INTEGER (0..3)

S-RNTI ::=							BIT STRING (SIZE (20))

S-RNTI-2 ::=						BIT STRING (SIZE (10))

SecurityCapability ::=				SEQUENCE {
	cipheringAlgorithmCap				BIT STRING {
										-- For each bit value “0” means false/ not supported
											spare15(0),
											spare14(1),
											spare13(2),
											spare12(3),
											spare11(4),
											spare10(5),
											spare9(6),
											spare8(7),
											spare7(8),
											spare6(9),
											spare5(10),
											spare4(11),
											spare3(12),
											spare2(13),
											uea1(14),
											uea0(15)
											}	(SIZE (16)),
	integrityProtectionAlgorithmCap		BIT STRING {
										-- For each bit value “0” means false/ not supported
											spare15(0),
											spare14(1),
											spare13(2),
											spare12(3),
											spare11(4),
											spare10(5),
											spare9(6),
											spare8(7),
											spare7(8),
											spare6(9),
											spare5(10),
											spare4(11),
											spare3(12),
											spare2(13),
											uia1(14),
											spare0(15)
										 	} 	 (SIZE (16))
}

Serving-HSDSCH-CellInformation ::=		SEQUENCE {
	deltaACK						DeltaACK					OPTIONAL,
	deltaNACK						DeltaNACK					OPTIONAL,
	harq-Preamble-Mode				HARQ-Preamble-Mode,
	primaryCPICH-Info				PrimaryCPICH-Info			OPTIONAL,
	dl-hspdsch-Information			DL-HSPDSCH-Information		OPTIONAL,
	harqInfo						HARQ-Info 					OPTIONAL,
	mac-hsResetIndicator			ENUMERATED { true }			OPTIONAL 
}

SimultaneousSCCPCH-DPCH-Reception ::= CHOICE {
	notSupported						NULL,
	supported							SEQUENCE {
		maxNoSCCPCH-RL						MaxNoSCCPCH-RL,
		-- simultaneousSCCPCH-DPCH-DPDCH-Reception is applicable only if 
		-- the IE Support of PDSCH = TRUE
		-- Note: the reference to DPDCH in the element name below is incorrect (see tabular). The 
		-- name is not changed, to keep it aligned with R99.
		simultaneousSCCPCH-DPCH-DPDCH-Reception		BOOLEAN
	}
}

SRNC-Identity ::=					BIT STRING (SIZE (12))


START-Value ::=						BIT STRING (SIZE (20))

STARTList ::=						SEQUENCE (SIZE (1..maxCNdomains)) OF
										STARTSingle

STARTSingle ::=						SEQUENCE {
	cn-DomainIdentity					CN-DomainIdentity,
	start-Value							START-Value			
}

CapabilityUpdateRequirement-r5 ::=	SEQUENCE {
	ue-RadioCapabilityFDDUpdateRequirement-FDD	BOOLEAN,
	ue-RadioCapabilityTDDUpdateRequirement-TDD384	BOOLEAN,
	ue-RadioCapabilityTDDUpdateRequirement-TDD128	BOOLEAN,
	systemSpecificCapUpdateReqList		SystemSpecificCapUpdateReqList-r5		OPTIONAL
}

SystemSpecificCapUpdateReq ::=		ENUMERATED {
										gsm }

SystemSpecificCapUpdateReq-v590ext ::=		ENUMERATED {
										geranIu }

SystemSpecificCapUpdateReq-r5 ::=		ENUMERATED {
										gsm, geranIu }

SystemSpecificCapUpdateReqList ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF 
										SystemSpecificCapUpdateReq

SystemSpecificCapUpdateReqList-r5 ::= SEQUENCE (SIZE (1..maxSystemCapability)) OF 
										SystemSpecificCapUpdateReq-r5

T-300 ::=							ENUMERATED {
										ms100, ms200, ms400, ms600, ms800,
										ms1000, ms1200, ms1400, ms1600,
										ms1800, ms2000, ms3000, ms4000,
										ms6000, ms8000 }

T-301 ::=							ENUMERATED {
										ms100, ms200, ms400, ms600, ms800,
										ms1000, ms1200, ms1400, ms1600,
										ms1800, ms2000, ms3000, ms4000,
										ms6000, ms8000, spare }

T-302 ::=							ENUMERATED {
										ms100, ms200, ms400, ms600, ms800,
										ms1000, ms1200, ms1400, ms1600,
										ms1800, ms2000, ms3000, ms4000,
										ms6000, ms8000, spare }

T-304 ::=							ENUMERATED {
										ms100, ms200, ms400, 
										ms1000, ms2000, spare3, spare2, spare1 }

T-305 ::=							ENUMERATED {
										noUpdate, m5, m10, m30,
										m60, m120, m360, m720 }

T-307 ::=							ENUMERATED {
										s5, s10, s15, s20,
										s30, s40, s50, spare }

T-308 ::=							ENUMERATED {
										ms40, ms80, ms160, ms320 }

T-309 ::=							INTEGER (1..8)

T-310 ::=							ENUMERATED {
										ms40, ms80, ms120, ms160,
										ms200, ms240, ms280, ms320 }

T-311 ::=							ENUMERATED {
										ms250, ms500, ms750, ms1000,
										ms1250, ms1500, ms1750, ms2000 }

-- The value 0 for T-312 is not used in this version of the specification
T-312 ::=							INTEGER (0..15)

T-313 ::=							INTEGER (0..15)

T-314 ::=							ENUMERATED {
										s0, s2, s4, s6, s8,
										s12, s16, s20 }

T-315 ::=							ENUMERATED {
										s0, s10, s30, s60, s180,
										s600, s1200, s1800 }

T-316 ::=							ENUMERATED {
										s0, s10, s20, s30, s40,
										s50, s-inf, spare }

-- All the values are changed to "infinity" in Rel-5
T-317 ::=							ENUMERATED {
										infinity0,  infinity1,  infinity2, infinity3, infinity4,
										infinity5, infinity6, infinity7}

T-318 ::=							ENUMERATED {
										ms250, ms500, ms750, ms1000, ms1250, ms1500,
										ms1750, ms2000, ms3000, ms4000, ms6000, ms8000,
										ms10000, ms12000, ms16000 }

T-CPCH ::=							ENUMERATED {
										ct0, ct1 }

TMSI-and-LAI-GSM-MAP ::=			SEQUENCE {
	tmsi								TMSI-GSM-MAP,
	lai									LAI
}

TMSI-DS-41 ::=						OCTET STRING (SIZE (2..17))

TotalRLC-AM-BufferSize ::=			ENUMERATED {
										dummy, kb10, kb50, kb100,
										kb150, kb500, kb1000, spare }

TotalRLC-AM-BufferSize-r5-ext ::=	ENUMERATED {
										kb200, kb300, kb400, kb750 }

-- Actual value TransmissionProbability = IE value * 0.125
TransmissionProbability ::=			INTEGER (1..8)

TransportChannelCapability ::=		SEQUENCE {
	dl-TransChCapability				DL-TransChCapability,
	ul-TransChCapability				UL-TransChCapability	
}

TurboSupport ::=					CHOICE {
	notSupported						NULL,
	supported							MaxNoBits
}

-- Values defined as spare shall not be sent in this version of the protocol. If a spare value is
-- received, it should be interpreted as 'default-RxTX-sparation'.
TxRxFrequencySeparation ::=			ENUMERATED {
										default-TxRx-separation, spare2, spare1 }

U-RNTI ::=							SEQUENCE {
	srnc-Identity						SRNC-Identity,
	s-RNTI								S-RNTI
}

U-RNTI-Group ::=					CHOICE {
-- TABULAR: not following the tabular strictly, but this will most likely save bits
	all									NULL,
	u-RNTI-BitMaskIndex-b1				BIT STRING (SIZE (31)),
	u-RNTI-BitMaskIndex-b2				BIT STRING (SIZE (30)),
	u-RNTI-BitMaskIndex-b3				BIT STRING (SIZE (29)),
	u-RNTI-BitMaskIndex-b4				BIT STRING (SIZE (28)),
	u-RNTI-BitMaskIndex-b5				BIT STRING (SIZE (27)),
	u-RNTI-BitMaskIndex-b6				BIT STRING (SIZE (26)),
	u-RNTI-BitMaskIndex-b7				BIT STRING (SIZE (25)),
	u-RNTI-BitMaskIndex-b8				BIT STRING (SIZE (24)),
	u-RNTI-BitMaskIndex-b9				BIT STRING (SIZE (23)),
	u-RNTI-BitMaskIndex-b10				BIT STRING (SIZE (22)),
	u-RNTI-BitMaskIndex-b11				BIT STRING (SIZE (21)),
	u-RNTI-BitMaskIndex-b12				BIT STRING (SIZE (20)),
	u-RNTI-BitMaskIndex-b13				BIT STRING (SIZE (19)),
	u-RNTI-BitMaskIndex-b14				BIT STRING (SIZE (18)),
	u-RNTI-BitMaskIndex-b15				BIT STRING (SIZE (17)),
	u-RNTI-BitMaskIndex-b16				BIT STRING (SIZE (16)),
	u-RNTI-BitMaskIndex-b17				BIT STRING (SIZE (15)),
	u-RNTI-BitMaskIndex-b18				BIT STRING (SIZE (14)),
	u-RNTI-BitMaskIndex-b19				BIT STRING (SIZE (13)),
	u-RNTI-BitMaskIndex-b20				BIT STRING (SIZE (12)),
	u-RNTI-BitMaskIndex-b21				BIT STRING (SIZE (11)),
	u-RNTI-BitMaskIndex-b22				BIT STRING (SIZE (10)),
	u-RNTI-BitMaskIndex-b23				BIT STRING (SIZE (9)),
	u-RNTI-BitMaskIndex-b24				BIT STRING (SIZE (8)),
	u-RNTI-BitMaskIndex-b25				BIT STRING (SIZE (7)),
	u-RNTI-BitMaskIndex-b26				BIT STRING (SIZE (6)),
	u-RNTI-BitMaskIndex-b27				BIT STRING (SIZE (5)),
	u-RNTI-BitMaskIndex-b28				BIT STRING (SIZE (4)),
	u-RNTI-BitMaskIndex-b29				BIT STRING (SIZE (3)),
	u-RNTI-BitMaskIndex-b30				BIT STRING (SIZE (2)),
	u-RNTI-BitMaskIndex-b31				BIT STRING (SIZE (1))
}

U-RNTI-Short ::=					SEQUENCE {
	srnc-Identity						SRNC-Identity,
	s-RNTI-2							S-RNTI-2
}

UE-CapabilityContainer-IEs ::= 			SEQUENCE {
-- Container for transparent transfer of capability information not related to
-- features for which early implementation is desired
		ue-RadioAccessCapability-v690ext	UE-RadioAccessCapability-v690ext,
		ue-RATSpecificCapability-v690ext	InterRAT-UE-RadioAccessCapability-v690ext	OPTIONAL,
		nonCriticalExtensions				SEQUENCE {}		OPTIONAL
}

UE-ConnTimersAndConstants ::=		SEQUENCE {
-- Optional is used also for parameters for which the default value is the last one read in SIB1
-- t-301 and n-301 should not be used by the UE in this version of the specification
	t-301								T-301								DEFAULT ms2000,
	n-301								N-301								DEFAULT 2,
	t-302								T-302								DEFAULT ms4000,
	n-302								N-302								DEFAULT 3,
	t-304								T-304								DEFAULT ms2000,
	n-304								N-304								DEFAULT 2,
	t-305								T-305								DEFAULT m30,
	t-307								T-307								DEFAULT s30,
	t-308								T-308								DEFAULT ms160,
	t-309								T-309								DEFAULT 5,
	t-310								T-310								DEFAULT ms160,
	n-310								N-310								DEFAULT 4,
	t-311								T-311								DEFAULT ms2000,
	t-312								T-312								DEFAULT 1,
	-- n-312 shall be ignored if n-312 in UE-ConnTimersAndConstants-v3a0ext is present, and the
	-- value of that element shall be used instead.
	n-312								N-312								DEFAULT s1,
	t-313								T-313								DEFAULT 3,
	n-313								N-313								DEFAULT s20,
	t-314								T-314								DEFAULT s12,
	t-315								T-315								DEFAULT s180,
	-- n-315 shall be ignored if n-315 in UE-ConnTimersAndConstants-v3a0ext is present, and the
	-- value of that element shall be used instead.
	n-315								N-315								DEFAULT s1,
	t-316								T-316								DEFAULT s30,
	t-317								T-317								DEFAULT infinity4
}

UE-ConnTimersAndConstants-v3a0ext ::=		SEQUENCE {
	n-312								N-312ext								OPTIONAL,
	n-315								N-315ext								OPTIONAL
}

UE-ConnTimersAndConstants-r5 ::=		SEQUENCE {
-- Optional is used also for parameters for which the default value is the last one read in SIB1
-- t-301 and n-301 should not be used by the UE in this version of the specification
	t-301								T-301								DEFAULT ms2000,
	n-301								N-301								DEFAULT 2,
	t-302								T-302								DEFAULT ms4000,
	n-302								N-302								DEFAULT 3,
	t-304								T-304								DEFAULT ms2000,
	n-304								N-304								DEFAULT 2,
	t-305								T-305								DEFAULT m30,
	t-307								T-307								DEFAULT s30,
	t-308								T-308								DEFAULT ms160,
	t-309								T-309								DEFAULT 5,
	t-310								T-310								DEFAULT ms160,
	n-310								N-310								DEFAULT 4,
	t-311								T-311								DEFAULT ms2000,
	t-312								T-312								DEFAULT 1,
	n-312								N-312-r5							DEFAULT s1,
	t-313								T-313								DEFAULT 3,
	n-313								N-313								DEFAULT s20,
	t-314								T-314								DEFAULT s12,
	t-315								T-315								DEFAULT s180,
	n-315								N-315-r5							DEFAULT s1,
	t-316								T-316								DEFAULT s30,
	t-317								T-317								DEFAULT infinity4
}

UE-IdleTimersAndConstants ::=		SEQUENCE {
	t-300								T-300,
	n-300								N-300,
	t-312								T-312,
	-- n-312 shall be ignored if n-312 in UE-IdleTimersAndConstants-v3a0ext is present, and the
	-- value of that element shall be used instead.
	n-312								N-312	
}

UE-IdleTimersAndConstants-v3a0ext ::=		SEQUENCE {
	n-312								N-312ext								OPTIONAL
}

UE-MultiModeRAT-Capability ::=		SEQUENCE {
	multiRAT-CapabilityList				MultiRAT-Capability,
	multiModeCapability					MultiModeCapability
}

UE-PowerClass ::=					INTEGER (1..4)

UE-PowerClassExt ::=				ENUMERATED {class1, class2, class3, class4,
										 spare4, spare3, spare2, spare1 }

UE-RadioAccessCapability ::=		SEQUENCE {
	-- UE-RadioAccessCapability is compatible with R99, although accessStratumReleaseIndicator 
	-- is removed from this IE, since its encoding did not does in bits. The 
	-- accessStratumReleaseIndicator is provided in the relevant REL-4 extension IEs.
	pdcp-Capability						PDCP-Capability,
	rlc-Capability						RLC-Capability,
	transportChannelCapability			TransportChannelCapability,
	rf-Capability						RF-Capability,
	physicalChannelCapability			PhysicalChannelCapability,
	ue-MultiModeRAT-Capability			UE-MultiModeRAT-Capability,
	securityCapability					SecurityCapability,
	ue-positioning-Capability			UE-Positioning-Capability,
	measurementCapability				MeasurementCapability		OPTIONAL
}

UE-RadioAccessCapabilityInfo ::=		SEQUENCE {
	ue-RadioAccessCapability			UE-RadioAccessCapability,
	ue-RadioAccessCapability-v370ext	UE-RadioAccessCapability-v370ext
}

UE-RadioAccessCapability-v370ext ::=	SEQUENCE {
	ue-RadioAccessCapabBandFDDList		UE-RadioAccessCapabBandFDDList
}

UE-RadioAccessCapability-v380ext ::=	SEQUENCE {
	ue-PositioningCapabilityExt-v380		UE-PositioningCapabilityExt-v380
}

UE-RadioAccessCapability-v3a0ext ::=	SEQUENCE {
	ue-PositioningCapabilityExt-v3a0		UE-PositioningCapabilityExt-v3a0
}

UE-RadioAccessCapability-v3g0ext ::=	SEQUENCE {
	ue-PositioningCapabilityExt-v3g0		UE-PositioningCapabilityExt-v3g0
}

UE-RadioAccessCapability-v650ext ::=	SEQUENCE {
	ue-RadioAccessCapabBandFDDList2		UE-RadioAccessCapabBandFDDList2,
	-- This IE shall be included if the UE also supports Band I-VII
	ue-RadioAccessCapabBandFDDList-ext	UE-RadioAccessCapabBandFDDList-ext	OPTIONAL
}

UE-RadioAccessCapability-v690ext ::= SEQUENCE {
		physicalchannelcapability-edch	PhysicalChannelCapability-edch-r6,
		-- TABULAR: deviceType is MD in tabular description
		-- Default value is 'doesBenefitFromBatteryConsumptionOptimisation'
		deviceType		ENUMERATED { doesNotBenefitFromBatteryConsumptionOptimisation }	OPTIONAL
}

UE-RadioAccessCapability-v7xyext ::=		SEQUENCE {
	rf-Capability								RF-Capability-r7				OPTIONAL,
	physicalChannelCapability-r7				PhysicalChannelCapability-r7	OPTIONAL
}

UE-RadioAccessCapabBandFDDList2 ::=	SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
											UE-RadioAccessCapabBandFDD2

UE-RadioAccessCapabBandFDD2 ::=	SEQUENCE {
	radioFrequencyBandFDD2				RadioFrequencyBandFDD2,
	fddRF-Capability					SEQUENCE {
		ue-PowerClass						UE-PowerClassExt,
		txRxFrequencySeparation				TxRxFrequencySeparation
	}		OPTIONAL,
	measurementCapability2				MeasurementCapabilityExt2
}


UE-PositioningCapabilityExt-v380 ::=	SEQUENCE {
	rx-tx-TimeDifferenceType2Capable		BOOLEAN
}

UE-PositioningCapabilityExt-v3a0 ::=	SEQUENCE {
	validity-CellPCH-UraPCH					ENUMERATED { true }
}

UE-PositioningCapabilityExt-v3g0 ::=	SEQUENCE {
	sfn-sfnType2Capability				ENUMERATED { true }
}

UE-RadioAccessCapabBandFDDList ::=	SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
											UE-RadioAccessCapabBandFDD

UE-RadioAccessCapabBandFDDList-ext ::= SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF 
										UE-RadioAccessCapabBandFDD-ext

UE-RadioAccessCapabBandFDD ::=	SEQUENCE{
	radioFrequencyBandFDD				RadioFrequencyBandFDD,
	fddRF-Capability					SEQUENCE {
		ue-PowerClass						UE-PowerClassExt,
		txRxFrequencySeparation				TxRxFrequencySeparation
	}																OPTIONAL,
	measurementCapability				MeasurementCapabilityExt
}

UE-RadioAccessCapabBandFDD-ext ::= SEQUENCE {
	radioFrequencyBandFDD				RadioFrequencyBandFDD,
	compressedModeMeasCapabFDDList-ext	CompressedModeMeasCapabFDDList-ext
}

UE-RadioAccessCapability-v4b0ext ::=	SEQUENCE {
	pdcp-Capability-r4-ext				PDCP-Capability-r4-ext,
	tdd-CapabilityExt					SEQUENCE {
		rf-Capability						RF-Capability-r4-ext,
		physicalChannelCapability-LCR		PhysicalChannelCapability-LCR-r4,
		measurementCapability-r4-ext		MeasurementCapability-r4-ext
	}											OPTIONAL,
	-- IE " AccessStratumReleaseIndicator" is not needed in RRC CONNECTION SETUP COMPLETE
	accessStratumReleaseIndicator				AccessStratumReleaseIndicator 	OPTIONAL
}

UE-RadioAccessCapabilityComp ::= SEQUENCE {
	totalAM-RLCMemoryExceeds10kB			BOOLEAN,
	rf-CapabilityComp						RF-CapabilityComp
}

UE-RadioAccessCapabilityComp-ext ::= SEQUENCE {
	rf-CapabilityFDDComp				RF-CapabBandListFDDComp-ext
}

UE-RadioAccessCapabilityComp-r7 ::= SEQUENCE {
	totalAM-RLCMemoryExceeds10kB			BOOLEAN,
	rf-CapabilityComp						RF-CapabilityComp-r7
}

UE-RadioAccessCapabilityComp2 ::=		SEQUENCE {
	fddPhysicalChannelCapab-hspdsch-edch	SEQUENCE {
		dl-CapabilityWithSimultaneousHS-DSCHConfig
												DL-CapabilityWithSimultaneousHS-DSCHConfig	OPTIONAL,
		physicalChannelCapabComp-hspdsch-r6		HSDSCH-physical-layer-category,
		physicalChannelCapability-edch-r6		PhysicalChannelCapability-edch-r6
	}		OPTIONAL
}

RF-CapabilityComp ::= SEQUENCE {
	fdd 					CHOICE {
		notSupported					NULL,
		supported						RF-CapabBandListFDDComp
	},
	tdd384-RF-Capability	CHOICE {
		notSupported					NULL,
		supported						RadioFrequencyBandTDDList
	},
	tdd128-RF-Capability	CHOICE {
		notSupported					NULL,
		supported						RadioFrequencyBandTDDList
	}
}

RF-CapabilityComp-r7 ::= SEQUENCE {
	fdd 					CHOICE {
		notSupported					NULL,
		supported						RF-CapabBandListFDDComp
	},
	tdd384-RF-Capability	CHOICE {
		notSupported					NULL,
		supported						RadioFrequencyBandTDDList
	},
	tdd768-RF-Capability	CHOICE	{
		notSupported					NULL,
		supported						RadioFrequencyBandTDDList
	},
	tdd128-RF-Capability	CHOICE {
		notSupported					NULL,
		supported						RadioFrequencyBandTDDList
	}
}

-- NOTE: This IE defines the supported TX/RX frequency separation for the respective supported
-- frequency band. Values defined as spare shall not be sent in this version of the protocol.
-- If a spare value is received, it should be interpreted as 'default-RxTX-sparation'.
RF-CapabBandFDDComp ::=				ENUMERATED { notSupported,
										default-TxRx-separation, spare2, spare1 }

RF-CapabBandListFDDComp ::=			SEQUENCE (SIZE (1..maxFreqBandsFDD)) OF
	-- The first entry corresponds with the first value of IE RadioFrequencyBandFDD,
	-- fdd2100, and so on. No more than seven entries should be included in this IE. The
	-- 8'th entry, if present, shall be ignored.
	-- An extension of this IE may be provided using the IE 'RF-CapabBandListFDDComp-ext'.
	RF-CapabBandFDDComp

RF-CapabBandListFDDComp-ext ::=		SEQUENCE (SIZE (1..maxFreqBandsFDD-ext)) OF
	-- The first entry corresponds with the first value of IE RadioFrequencyBandFDD2,
	-- bandVIII, and so on.
	RF-CapabBandFDDComp

UE-RadioAccessCapability-v590ext ::=	SEQUENCE {
	dl-CapabilityWithSimultaneousHS-DSCHConfig	DL-CapabilityWithSimultaneousHS-DSCHConfig	OPTIONAL,
	pdcp-Capability-r5-ext				PDCP-Capability-r5-ext,
	rlc-Capability-r5-ext				RLC-Capability-r5-ext,
	physicalChannelCapability			PhysicalChannelCapability-hspdsch-r5,
	multiModeRAT-Capability-v590ext		MultiModeRAT-Capability-v590ext
}

UE-RadioAccessCapability-v5c0ext ::= SEQUENCE {
	pdcp-Capability-r5-ext2				PDCP-Capability-r5-ext2
}

UE-RadioAccessCapability-v680ext ::= SEQUENCE {
	multiModeRAT-Capability-v680ext		MultiModeRAT-Capability-v680ext
}

UL-PhysChCapabilityFDD ::=			SEQUENCE {
	maxNoDPDCH-BitsTransmitted			MaxNoDPDCH-BitsTransmitted,
	-- dummy is not used in this version of the specification and
	-- it should be ignored by the receiver.
	dummy								BOOLEAN	
}

UL-PhysChCapabilityFDD-r6 ::=			SEQUENCE {
	maxNoDPDCH-BitsTransmitted				MaxNoDPDCH-BitsTransmitted,
	physicalchannelcapability-edch			PhysicalChannelCapability-edch-r6
}

UL-PhysChCapabilityTDD ::=			SEQUENCE {
	maxTS-PerFrame						MaxTS-PerFrame,
	maxPhysChPerTimeslot				MaxPhysChPerTimeslot,
	minimumSF							MinimumSF-UL,
	supportOfPUSCH						BOOLEAN	
}

UL-PhysChCapabilityTDD-LCR-r4 ::=	SEQUENCE {
	maxTS-PerSubFrame					MaxTS-PerSubFrame-r4,
	maxPhysChPerTimeslot				MaxPhysChPerTimeslot,
	minimumSF							MinimumSF-UL,
	supportOfPUSCH						BOOLEAN,
	supportOf8PSK						BOOLEAN
}

PhysicalChannelCapability-edch-r6 ::=	SEQUENCE {
	fdd-edch								CHOICE {
		supported								SEQUENCE {
			edch-PhysicalLayerCategory				INTEGER (1..16)
		},
		unsupported								NULL
	}
}

UL-TransChCapability ::=			SEQUENCE {
	maxNoBitsTransmitted				MaxNoBits,
	maxConvCodeBitsTransmitted			MaxNoBits,
	turboEncodingSupport				TurboSupport,
	maxSimultaneousTransChs				MaxSimultaneousTransChsUL,
	modeSpecificInfo					CHOICE {
		fdd									NULL,
		tdd									SEQUENCE {
			maxSimultaneousCCTrCH-Count			MaxSimultaneousCCTrCH-Count
		}
	},
	maxTransmittedBlocks				MaxTransportBlocksUL,
	maxNumberOfTFC						MaxNumberOfTFC-UL,
	maxNumberOfTF						MaxNumberOfTF
}

UE-Positioning-Capability ::=		SEQUENCE {
	standaloneLocMethodsSupported			BOOLEAN,
	ue-BasedOTDOA-Supported					BOOLEAN,
	networkAssistedGPS-Supported			NetworkAssistedGPS-Supported,
	supportForUE-GPS-TimingOfCellFrames		BOOLEAN,
	supportForIPDL							BOOLEAN
}

UE-SecurityInformation ::=			SEQUENCE {
	start-CS							START-Value
}

UE-SecurityInformation2 ::=			SEQUENCE {
	start-PS							START-Value
}

URA-UpdateCause ::=					ENUMERATED { 
										changeOfURA, 
										periodicURAUpdate, 
										dummy,
										spare1 }

UTRAN-DRX-CycleLengthCoefficient ::= INTEGER (3..9)

WaitTime ::=						INTEGER (0..15)

-- ***************************************************
--
--     RADIO BEARER INFORMATION ELEMENTS (10.3.4)
--
-- ***************************************************

AlgorithmSpecificInfo ::=			CHOICE {
	rfc2507-Info						RFC2507-Info
}

AlgorithmSpecificInfo-r4 ::=		CHOICE {
	rfc2507-Info						RFC2507-Info,
	rfc3095-Info						RFC3095-Info-r4
}

CID-InclusionInfo-r4 ::=			ENUMERATED {
										pdcp-Header,
										rfc3095-PacketFormat }

-- Upper limit of COUNT-C is 2^32 - 1
COUNT-C ::=							INTEGER (0..4294967295)

-- Upper limit of COUNT-C-MSB is 2^25 - 1
COUNT-C-MSB ::=						INTEGER (0..33554431)

DefaultConfigIdentity ::=			INTEGER (0..10)

DefaultConfigIdentity-r4 ::=		INTEGER (0..12)

DefaultConfigIdentity-r5 ::=		INTEGER (0..13)

-- DefaultConfigIdentity-r6 values 23..31 are spare and shall not be used in this version of 
-- the protocol
DefaultConfigIdentity-r6 ::=		INTEGER (0..31)

DefaultConfigMode ::=				ENUMERATED {
										fdd,
										tdd }

DDI ::=								INTEGER (0..62)

DL-AM-RLC-Mode ::=					SEQUENCE {
	inSequenceDelivery					BOOLEAN,
	receivingWindowSize					ReceivingWindowSize,
	dl-RLC-StatusInfo					DL-RLC-StatusInfo
}

DL-AM-RLC-Mode-r5 ::=					SEQUENCE {
	dl-RLC-PDU-size						OctetModeRLC-SizeInfoType1,
	inSequenceDelivery					BOOLEAN,
	receivingWindowSize					ReceivingWindowSize,
	dl-RLC-StatusInfo					DL-RLC-StatusInfo
}

DL-CounterSynchronisationInfo ::=		SEQUENCE {
	rB-WithPDCP-InfoList					RB-WithPDCP-InfoList	OPTIONAL
}

DL-CounterSynchronisationInfo-r5 ::=	SEQUENCE {
	rb-WithPDCP-InfoList					RB-WithPDCP-InfoList			OPTIONAL,
	rb-PDCPContextRelocationList			RB-PDCPContextRelocationList	OPTIONAL
}

DL-LogicalChannelMapping ::=		SEQUENCE {
	-- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well.
	dl-TransportChannelType				DL-TransportChannelType,
	logicalChannelIdentity				LogicalChannelIdentity				OPTIONAL
}

DL-LogicalChannelMapping-r5 ::=		SEQUENCE {
	-- TABULAR: DL-TransportChannelType contains TransportChannelIdentity as well.
	dl-TransportChannelType				DL-TransportChannelType-r5,
	logicalChannelIdentity				LogicalChannelIdentity				OPTIONAL
}

DL-LogicalChannelMappingList ::=	SEQUENCE (SIZE (1..maxLoCHperRLC)) OF
										DL-LogicalChannelMapping

DL-LogicalChannelMappingList-r5 ::=	SEQUENCE (SIZE (1..maxLoCHperRLC)) OF
										DL-LogicalChannelMapping-r5

DL-Reception-Window-Size-r6 ::=		ENUMERATED { size32, size48, size64, size80, size96, size112 }

DL-RFC3095-r4 ::=					SEQUENCE {
	cid-InclusionInfo					CID-InclusionInfo-r4,
	max-CID								INTEGER (1..16383)					DEFAULT 15,
	reverseDecompressionDepth			INTEGER (0..65535)					DEFAULT 0
}

DL-RLC-Mode ::=						CHOICE {
	dl-AM-RLC-Mode						DL-AM-RLC-Mode,
	dl-UM-RLC-Mode						NULL,
	dl-TM-RLC-Mode						DL-TM-RLC-Mode
}

DL-RLC-Mode-r5 ::=					CHOICE {
	dl-AM-RLC-Mode						DL-AM-RLC-Mode-r5,
	dl-UM-RLC-Mode						DL-UM-RLC-Mode-r5,
	dl-TM-RLC-Mode						DL-TM-RLC-Mode
}

DL-RLC-Mode-r6 ::=					CHOICE {
	dl-AM-RLC-Mode						DL-AM-RLC-Mode-r5,
	dl-UM-RLC-Mode						DL-UM-RLC-Mode-r6,
	dl-TM-RLC-Mode						DL-TM-RLC-Mode
}

DL-RLC-StatusInfo ::=				SEQUENCE {
	timerStatusProhibit					TimerStatusProhibit					OPTIONAL,
	-- dummy is not used in this version of the specification, it should not be sent 
	-- and if received they should be ignored.
	dummy							TimerEPC							OPTIONAL,
	missingPDU-Indicator					BOOLEAN,
	timerStatusPeriodic					TimerStatusPeriodic					OPTIONAL
}

DL-TM-RLC-Mode ::=					SEQUENCE {
	segmentationIndication					BOOLEAN
}

DL-TransportChannelType ::=			CHOICE {
	dch									TransportChannelIdentity,
	fach								NULL,
	-- The choice “dsch” should not be used in FDD mode, and if received
	-- the UE behaviour is unspecified.
	dsch								TransportChannelIdentity,
	-- The choice “dch-and-dsch” should not be used in FDD mode, and if received the UE
	-- behaviour is unspecified
	dch-and-dsch						TransportChannelIdentityDCHandDSCH
}

DL-TransportChannelType-r5 ::=			CHOICE {
	dch									TransportChannelIdentity,
	fach								NULL,
	-- The choice “dsch” should not be used in FDD mode, and if received
	-- the UE behaviour is unspecified.
	dsch								TransportChannelIdentity,
	-- The choice “dch-and-dsch” should not be used in FDD mode, and if received the UE 
	-- behaviour is unspecified
	dch-and-dsch						TransportChannelIdentityDCHandDSCH,
	hsdsch								MAC-d-FlowIdentity,
	dch-and-hsdsch						MAC-d-FlowIdentityDCHandHSDSCH
}

DL-UM-RLC-LI-size ::=					ENUMERATED {
										size7, size15 }

DL-UM-RLC-Mode-r5 ::=					SEQUENCE {
	dl-UM-RLC-LI-size					DL-UM-RLC-LI-size
}

DL-UM-RLC-Mode-r6 ::=				SEQUENCE {
	dl-UM-RLC-LI-size					DL-UM-RLC-LI-size,
	dl-Reception-Window-Size			DL-Reception-Window-Size-r6			OPTIONAL
}

ExpectReordering ::=				ENUMERATED {
										reorderingNotExpected,
										reorderingExpected }

ExplicitDiscard ::=					SEQUENCE {
	timerMRW							TimerMRW,
	timerDiscard						TimerDiscard,
	maxMRW								MaxMRW
}

HeaderCompressionInfo ::=			SEQUENCE {
	algorithmSpecificInfo				AlgorithmSpecificInfo
}

HeaderCompressionInfoList ::=		SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF
										HeaderCompressionInfo

HeaderCompressionInfo-r4 ::=		SEQUENCE {
	algorithmSpecificInfo				AlgorithmSpecificInfo-r4
}

HeaderCompressionInfoList-r4 ::=	SEQUENCE (SIZE (1..maxPDCPAlgoType)) OF
										HeaderCompressionInfo-r4

LogicalChannelIdentity ::=			INTEGER (1..15)

LosslessSRNS-RelocSupport ::=		CHOICE {
	supported							MaxPDCP-SN-WindowSize,
	notSupported						NULL
}

MAC-d-HFN-initial-value ::=			BIT STRING (SIZE (24))

MAC-LogicalChannelPriority ::= 		INTEGER (1..8)

MaxDAT ::=							ENUMERATED {
										dat1, dat2, dat3, dat4, dat5, dat6,
										dat7, dat8, dat9, dat10, dat15, dat20,
										dat25, dat30, dat35, dat40 }

MaxDAT-Retransmissions ::=			SEQUENCE {
	maxDAT								MaxDAT,
	timerMRW							TimerMRW,
	maxMRW								MaxMRW
}

MaxMRW ::=							ENUMERATED {
										mm1, mm4, mm6, mm8, mm12, mm16,
										mm24, mm32 }

MaxPDCP-SN-WindowSize ::=			ENUMERATED {
										sn255, sn65535 }

MaxRST ::=							ENUMERATED {
										rst1, rst4, rst6, rst8, rst12,
										rst16, rst24, rst32 }

NoExplicitDiscard ::=				ENUMERATED {
										dt10, dt20, dt30, dt40, dt50,
										dt60, dt70, dt80, dt90, dt100 }

PDCP-Info ::=						SEQUENCE {
	losslessSRNS-RelocSupport			LosslessSRNS-RelocSupport			OPTIONAL,
	-- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded
	-- in one bit, so the OPTIONAL is removed for compactness.
	pdcp-PDU-Header						PDCP-PDU-Header,
	headerCompressionInfoList			HeaderCompressionInfoList			OPTIONAL
}

PDCP-Info-r4 ::=					SEQUENCE {
	losslessSRNS-RelocSupport			LosslessSRNS-RelocSupport			OPTIONAL,
	-- TABULAR: pdcp-PDU-Header is MD in the tabular format and it can be encoded
	-- in one bit, so the OPTIONAL is removed for compactness.
	pdcp-PDU-Header						PDCP-PDU-Header,
	headerCompressionInfoList			HeaderCompressionInfoList-r4		OPTIONAL
}

PDCP-InfoReconfig ::=				SEQUENCE {
	pdcp-Info							PDCP-Info,
	-- dummy is not used in this version of the specification and
	-- it should be ignored.
	dummy								INTEGER (0..65535)
}

PDCP-InfoReconfig-r4 ::=			SEQUENCE {
	pdcp-Info							PDCP-Info-r4
}

PDCP-PDU-Header ::=					ENUMERATED {
										present, absent }

PDCP-ROHC-TargetMode ::=			ENUMERATED { o-Mode, r-Mode }

PDCP-SN-Info ::=					INTEGER (0..65535)

Poll-PDU ::=						ENUMERATED {
										pdu1, pdu2, pdu4, pdu8, pdu16, 
										pdu32, pdu64, pdu128 }

Poll-SDU ::=						ENUMERATED {
										sdu1, sdu4, sdu16, sdu64 }

PollingInfo ::=						SEQUENCE {
	timerPollProhibit					TimerPollProhibit					OPTIONAL,
	timerPoll							TimerPoll							OPTIONAL,
	poll-PDU							Poll-PDU							OPTIONAL,
	poll-SDU							Poll-SDU							OPTIONAL,
	lastTransmissionPDU-Poll			BOOLEAN,
	lastRetransmissionPDU-Poll			BOOLEAN,
	pollWindow							PollWindow							OPTIONAL,
	timerPollPeriodic					TimerPollPeriodic					OPTIONAL
}

PollWindow ::=						ENUMERATED {
										pw50, pw60, pw70, pw80, pw85, 
										pw90, pw95, pw99 }

PredefinedConfigIdentity ::=		INTEGER (0..15)

PredefinedConfigValueTag ::=		INTEGER (0..15)

PredefinedRB-Configuration ::=		SEQUENCE {
	re-EstablishmentTimer				Re-EstablishmentTimer,
	srb-InformationList					SRB-InformationSetupList,
	rb-InformationList					RB-InformationSetupList
}

PreDefRadioConfiguration ::=		SEQUENCE {
	-- Radio bearer IEs
		predefinedRB-Configuration			PredefinedRB-Configuration,
	-- Transport channel IEs
		preDefTransChConfiguration			PreDefTransChConfiguration,
	-- Physical channel IEs
		preDefPhyChConfiguration			PreDefPhyChConfiguration
}

PredefinedConfigStatusList ::=				SEQUENCE (SIZE (maxPredefConfig)) OF
											PredefinedConfigStatusInfo

PredefinedConfigStatusInfo ::=		CHOICE {
	storedWithValueTagSameAsPrevius		NULL,
	other								CHOICE {
		notStored							NULL,
		storedWithDifferentValueTag			PredefinedConfigValueTag
	}
}

PredefinedConfigStatusListComp ::= SEQUENCE {
	setsWithDifferentValueTag			PredefinedConfigSetsWithDifferentValueTag,
	otherEntries						PredefinedConfigStatusListVarSz				OPTIONAL
}

PredefinedConfigSetsWithDifferentValueTag ::= SEQUENCE (SIZE (1..2)) OF
												PredefinedConfigSetWithDifferentValueTag

PredefinedConfigSetWithDifferentValueTag ::= SEQUENCE {
	startPosition								INTEGER (0..10)		DEFAULT 0,
	-- numberOfEntries							INTEGER (6..16),
	-- numberOfEntries is covered by the size of the list in IE PredefinedConfigValueTagList
	valueTagList								PredefinedConfigValueTagList
}


PredefinedConfigValueTagList ::=		SEQUENCE (SIZE (1..maxPredefConfig)) OF
											PredefinedConfigValueTag

PredefinedConfigStatusListVarSz ::=		SEQUENCE (SIZE (1..maxPredefConfig)) OF
											PredefinedConfigStatusInfo

RAB-Info ::=						SEQUENCE {
	rab-Identity						RAB-Identity,
	cn-DomainIdentity					CN-DomainIdentity,
	nas-Synchronisation-Indicator		NAS-Synchronisation-Indicator	OPTIONAL,
	re-EstablishmentTimer				Re-EstablishmentTimer
}

RAB-Info-r6-ext ::=					SEQUENCE {
	mbms-SessionIdentity				MBMS-SessionIdentity				OPTIONAL
}

RAB-Info-r6 ::=						SEQUENCE {
	rab-Identity						RAB-Identity,
	mbms-SessionIdentity				MBMS-SessionIdentity				OPTIONAL,
	cn-DomainIdentity					CN-DomainIdentity,
	nas-Synchronisation-Indicator		NAS-Synchronisation-Indicator		OPTIONAL,
	re-EstablishmentTimer				Re-EstablishmentTimer
}

RAB-InformationList ::=				SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-Info

RAB-InformationList-r6 ::=			SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-Info-r6

RAB-InformationReconfigList ::= 	SEQUENCE (SIZE (1.. maxRABsetup)) OF
										RAB-InformationReconfig

RAB-InformationReconfig ::=			SEQUENCE {
	rab-Identity						RAB-Identity,
	cn-DomainIdentity					CN-DomainIdentity,
	nas-Synchronisation-Indicator		NAS-Synchronisation-Indicator
}

RAB-Info-Post ::=						SEQUENCE {
	rab-Identity						RAB-Identity,
	cn-DomainIdentity					CN-DomainIdentity,
	nas-Synchronisation-Indicator		NAS-Synchronisation-Indicator	OPTIONAL
}

RAB-InformationSetup ::=			SEQUENCE {
	rab-Info							RAB-Info,
	rb-InformationSetupList				RB-InformationSetupList
}

RAB-InformationSetup-r4 ::=			SEQUENCE {
	rab-Info							RAB-Info,
	rb-InformationSetupList				RB-InformationSetupList-r4
}

RAB-InformationSetup-r5 ::=			SEQUENCE {
	rab-Info							RAB-Info,
	rb-InformationSetupList				RB-InformationSetupList-r5
}

RAB-InformationSetup-r6-ext ::=		SEQUENCE {
	rab-Info-r6-ext						RAB-Info-r6-ext
}

RAB-InformationSetup-r6 ::=			SEQUENCE {
	rab-Info							RAB-Info-r6,
	rb-InformationSetupList				RB-InformationSetupList-r6
}

RAB-InformationSetupList ::=		SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-InformationSetup

RAB-InformationSetupList-r4 ::=		SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-InformationSetup-r4

RAB-InformationSetupList-r5 ::=		SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-InformationSetup-r5

RAB-InformationSetupList-r6 ::=		SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-InformationSetup-r6

-- The IE 'RAB-InformationSetupList-r6-ext' provides elements of extension information, which
-- are added to the corresponding elements of the IE 'RAB-InformationSetupList/-r4/-r5'.
RAB-InformationSetupList-r6-ext ::= SEQUENCE (SIZE (1..maxRABsetup)) OF
										RAB-InformationSetup-r6-ext

RB-ActivationTimeInfo ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	rlc-SequenceNumber					RLC-SequenceNumber
}	

RB-ActivationTimeInfoList ::=		SEQUENCE (SIZE (1..maxRB)) OF
										RB-ActivationTimeInfo

RB-COUNT-C-Information ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	count-C-UL							COUNT-C,
	count-C-DL							COUNT-C
}

RB-COUNT-C-InformationList ::=		SEQUENCE (SIZE (1..maxRBallRABs)) OF
										RB-COUNT-C-Information

RB-COUNT-C-MSB-Information ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	count-C-MSB-UL						COUNT-C-MSB,
	count-C-MSB-DL						COUNT-C-MSB
}

RB-COUNT-C-MSB-InformationList ::=	SEQUENCE (SIZE (1..maxRBallRABs)) OF
										RB-COUNT-C-MSB-Information

RB-Identity ::=						INTEGER (1..32)

RB-IdentityList ::=					SEQUENCE (SIZE (1..maxRB)) OF
										RB-Identity

RB-InformationAffected ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	rb-MappingInfo						RB-MappingInfo
}

RB-InformationAffected-r5 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	rb-MappingInfo						RB-MappingInfo-r5
}

RB-InformationAffected-r6 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	rb-MappingInfo						RB-MappingInfo-r6
}

RB-InformationAffectedList ::= 		SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationAffected

RB-InformationAffectedList-r5 ::= 	SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationAffected-r5

RB-InformationAffectedList-r6 ::= 	SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationAffected-r6

RB-InformationChanged-r6 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	rb-Change							CHOICE {
		release								NULL,
		re-mapToDefaultRb					RB-Identity
	}
}

RB-InformationChangedList-r6 ::= 		SEQUENCE (SIZE (1..maxRB)) OF
											RB-InformationChanged-r6

RB-InformationReconfig ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-InfoReconfig					OPTIONAL,
	pdcp-SN-Info						PDCP-SN-Info						OPTIONAL,
	rlc-Info							RLC-Info							OPTIONAL,
	rb-MappingInfo						RB-MappingInfo						OPTIONAL,
	rb-StopContinue						RB-StopContinue						OPTIONAL
}

RB-InformationReconfig-r4 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-InfoReconfig-r4				OPTIONAL,
	pdcp-SN-Info						PDCP-SN-Info						OPTIONAL,
	rlc-Info							RLC-Info							OPTIONAL,
	rb-MappingInfo						RB-MappingInfo						OPTIONAL,
	rb-StopContinue						RB-StopContinue						OPTIONAL
}

RB-InformationReconfig-r5 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-InfoReconfig-r4				OPTIONAL,
	pdcp-SN-Info						PDCP-SN-Info						OPTIONAL,
	rlc-Info							RLC-Info-r5							OPTIONAL,
	rb-MappingInfo						RB-MappingInfo-r5					OPTIONAL,
	rb-StopContinue						RB-StopContinue						OPTIONAL
}

RB-InformationReconfig-r6 ::=		SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-InfoReconfig-r4				OPTIONAL,
	pdcp-SN-Info						PDCP-SN-Info						OPTIONAL,
	rlc-Info							RLC-Info-r6							OPTIONAL,
	rb-MappingInfo						RB-MappingInfo-r6					OPTIONAL,
	rb-StopContinue						RB-StopContinue						OPTIONAL
}

RB-InformationReconfigList ::= 		SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationReconfig

RB-InformationReconfigList-r4 ::= 	SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationReconfig-r4

RB-InformationReconfigList-r5 ::= 	SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationReconfig-r5

RB-InformationReconfigList-r6 ::= 	SEQUENCE (SIZE (1..maxRB)) OF
										RB-InformationReconfig-r6

RB-InformationReleaseList ::=		SEQUENCE (SIZE (1..maxRB)) OF
										RB-Identity

RB-InformationSetup ::=				SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-Info							OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice,
	rb-MappingInfo						RB-MappingInfo
}

RB-InformationSetup-r4 ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-Info-r4						OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice,
	rb-MappingInfo						RB-MappingInfo
}

RB-InformationSetup-r5 ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-Info-r4						OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice-r5,
	rb-MappingInfo						RB-MappingInfo-r5
}

RB-InformationSetup-r6 ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-Info							PDCP-Info-r4						OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice-r6,
	rb-MappingInfo						RB-MappingInfo-r6
}

RB-InformationSetupList ::=			SEQUENCE (SIZE (1..maxRBperRAB)) OF
										RB-InformationSetup

RB-InformationSetupList-r4 ::=		SEQUENCE (SIZE (1..maxRBperRAB)) OF
										RB-InformationSetup-r4

RB-InformationSetupList-r5 ::=		SEQUENCE (SIZE (1..maxRBperRAB)) OF
										RB-InformationSetup-r5

RB-InformationSetupList-r6 ::=		SEQUENCE (SIZE (1..maxRBperRAB)) OF
										RB-InformationSetup-r6

RB-MappingInfo ::=					SEQUENCE (SIZE (1..maxRBMuxOptions)) OF
										RB-MappingOption

RB-MappingInfo-r5 ::=					SEQUENCE (SIZE (1..maxRBMuxOptions)) OF
										RB-MappingOption-r5

RB-MappingInfo-r6 ::=					SEQUENCE (SIZE (1..maxRBMuxOptions)) OF
										RB-MappingOption-r6

RB-MappingOption ::= 				SEQUENCE {
	ul-LogicalChannelMappings			UL-LogicalChannelMappings			OPTIONAL,
	dl-LogicalChannelMappingList		DL-LogicalChannelMappingList		OPTIONAL
}

RB-MappingOption-r5 ::= 				SEQUENCE {
	ul-LogicalChannelMappings			UL-LogicalChannelMappings			OPTIONAL,
	dl-LogicalChannelMappingList		DL-LogicalChannelMappingList-r5		OPTIONAL
}

RB-MappingOption-r6 ::= 				SEQUENCE {
	ul-LogicalChannelMappings			UL-LogicalChannelMappings-r6		OPTIONAL,
	dl-LogicalChannelMappingList		DL-LogicalChannelMappingList-r5		OPTIONAL
}

RB-PDCPContextRelocation ::=			SEQUENCE {
	rb-Identity								RB-Identity,
	dl-RFC3095-Context-Relocation			BOOLEAN,
	ul-RFC3095-Context-Relocation			BOOLEAN
}

RB-PDCPContextRelocationList ::=			SEQUENCE (SIZE (1..maxRBallRABs)) OF
											RB-PDCPContextRelocation

RB-StopContinue ::=					ENUMERATED {
										stopRB, continueRB }

RB-WithPDCP-Info ::=				SEQUENCE {
	rb-Identity							RB-Identity,
	pdcp-SN-Info						PDCP-SN-Info
}

RB-WithPDCP-InfoList ::=			SEQUENCE (SIZE (1..maxRBallRABs)) OF
										RB-WithPDCP-Info

ReceivingWindowSize ::=				ENUMERATED {
										rw1, rw8, rw16, rw32, rw64, rw128, rw256,
										rw512, rw768, rw1024, rw1536, rw2047, 
										rw2560, rw3072, rw3584, rw4095 }

RFC2507-Info ::=					SEQUENCE {
	f-MAX-PERIOD						INTEGER (1..65535)					DEFAULT 256,
	f-MAX-TIME							INTEGER (1..255)					DEFAULT 5,
	max-HEADER							INTEGER (60..65535)					DEFAULT 168,
	tcp-SPACE							INTEGER (3..255)					DEFAULT 15,
	non-TCP-SPACE						INTEGER (3..65535)					DEFAULT 15,
	-- TABULAR: expectReordering has only two possible values, so using Optional or Default
	-- would be wasteful
	expectReordering					ExpectReordering
}

RFC3095-Info-r4 ::=				SEQUENCE {
	rohcProfileList						ROHC-ProfileList-r4,
	ul-RFC3095							UL-RFC3095-r4						OPTIONAL,
	dl-RFC3095							DL-RFC3095-r4						OPTIONAL
}

RLC-Info ::=						SEQUENCE {
	ul-RLC-Mode							UL-RLC-Mode							OPTIONAL,
	dl-RLC-Mode							DL-RLC-Mode							OPTIONAL
}

RLC-Info-r5 ::=						SEQUENCE {
	ul-RLC-Mode							UL-RLC-Mode							OPTIONAL,
	dl-RLC-Mode							DL-RLC-Mode-r5						OPTIONAL,
	rlc-OneSidedReEst					BOOLEAN
}

RLC-Info-r6 ::=						SEQUENCE {
	ul-RLC-Mode							UL-RLC-Mode							OPTIONAL,
	dl-RLC-Mode							DL-RLC-Mode-r6						OPTIONAL,
	rlc-OneSidedReEst					BOOLEAN,
	altE-bitInterpretation				ENUMERATED { true }					OPTIONAL
}

RLC-Info-MCCH-r6 ::=				SEQUENCE {
	dl-UM-RLC-LI-size					DL-UM-RLC-LI-size,
	dl-UM-RLC-OutOSeqDelivery-Info		UM-RLC-OutOSeqDelivery-Info-r6		OPTIONAL
}

RLC-Info-MSCH-r6 ::=				SEQUENCE {
	dl-UM-RLC-LI-size					DL-UM-RLC-LI-size
}

RLC-Info-MTCH-r6 ::=				SEQUENCE {
	dl-UM-RLC-LI-size					DL-UM-RLC-LI-size,
	dl-UM-RLC-DuplAvoid-Reord-Info		UM-RLC-DuplAvoid-Reord-Info-r6		OPTIONAL
}

RLC-InfoChoice ::=					CHOICE {
	rlc-Info							RLC-Info,
	same-as-RB							RB-Identity
}

RLC-InfoChoice-r5 ::=				CHOICE {
	rlc-Info							RLC-Info-r5,
	same-as-RB							RB-Identity
}

RLC-InfoChoice-r6 ::=				CHOICE {
	rlc-Info							RLC-Info-r6,
	same-as-RB							RB-Identity
}

RLC-PDU-Size ::=					OctetModeRLC-SizeInfoType1

RLC-PDU-SizeList ::=				SEQUENCE (SIZE (1..maxRLCPDUsizePerLogChan)) OF
										RLC-PDU-Size

RLC-SequenceNumber ::=				INTEGER (0..4095)

RLC-SizeInfo ::=					SEQUENCE {
	rlc-SizeIndex						INTEGER (1..maxTF)
}

RLC-SizeExplicitList ::=			SEQUENCE (SIZE	(1..maxTF))	OF
										RLC-SizeInfo

ROHC-Profile-r4 ::=					INTEGER (1..3)

ROHC-ProfileList-r4 ::=				SEQUENCE (SIZE	(1..maxROHC-Profile-r4))	OF
										ROHC-Profile-r4

ROHC-PacketSize-r4 ::=				INTEGER (2..1500)

ROHC-PacketSizeList-r4 ::=			SEQUENCE (SIZE	(1..maxROHC-PacketSizes-r4))	OF
										ROHC-PacketSize-r4

SRB-InformationSetup ::=			SEQUENCE {
	-- The default value for rb-Identity is the smallest value not used yet.
	rb-Identity							RB-Identity							OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice,
	rb-MappingInfo						RB-MappingInfo
}

SRB-InformationSetup-r5 ::=			SEQUENCE {
	-- The default value for rb-Identity is the smallest value not used yet.
	rb-Identity							RB-Identity							OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice-r5,
	rb-MappingInfo						RB-MappingInfo-r5
}

SRB-InformationSetup-r6 ::=			SEQUENCE {
	-- The default value for rb-Identity is the smallest value not used yet.
	rb-Identity							RB-Identity							OPTIONAL,
	rlc-InfoChoice						RLC-InfoChoice-r6,
	rb-MappingInfo						RB-MappingInfo-r6
}

SRB-InformationSetupList ::=		SEQUENCE (SIZE (1..maxSRBsetup)) OF
										SRB-InformationSetup

SRB-InformationSetupList-r5 ::=		SEQUENCE (SIZE (1..maxSRBsetup)) OF
										SRB-InformationSetup-r5

SRB-InformationSetupList-r6 ::=		SEQUENCE (SIZE (1..maxSRBsetup)) OF
										SRB-InformationSetup-r6

SRB-InformationSetupList2 ::=		SEQUENCE (SIZE (3..4)) OF
										SRB-InformationSetup

SRB-InformationSetupList2-r6 ::=	SEQUENCE (SIZE (3..4)) OF
										SRB-InformationSetup-r6

TimerDAR-r6 ::=						ENUMERATED {
										ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640,
										ms960, ms1280, ms1920, ms2560, ms3840, ms5120 }

TimerDiscard ::=					ENUMERATED {
										td0-1, td0-25, td0-5, td0-75,
										td1, td1-25, td1-5, td1-75,
										td2, td2-5, td3, td3-5, td4,
										td4-5, td5, td7-5 }

TimerEPC ::=						ENUMERATED {
										te50, te60, te70, te80, te90,
										te100, te120, te140, te160, te180,
										te200, te300, te400, te500, te700,
										te900 }

TimerMRW ::=						ENUMERATED {
										te50, te60, te70, te80, te90, te100, 
										te120, te140, te160, te180, te200, 
										te300, te400, te500, te700, te900 }

TimerOSD-r6 ::=						ENUMERATED {
										ms40, ms80, ms120, ms160, ms240, ms320, ms480, ms640,
										ms960, ms1280, ms1920, ms2560, ms3840, ms5120 }

TimerPoll ::=						ENUMERATED {
										tp10, tp20, tp30, tp40, tp50,
										tp60, tp70, tp80, tp90, tp100,
										tp110, tp120, tp130, tp140, tp150,
										tp160, tp170, tp180, tp190, tp200,
										tp210, tp220, tp230, tp240, tp250,
										tp260, tp270, tp280, tp290, tp300,
										tp310, tp320, tp330, tp340, tp350,
										tp360, tp370, tp380, tp390, tp400,
										tp410, tp420, tp430, tp440, tp450,
										tp460, tp470, tp480, tp490, tp500,
										tp510, tp520, tp530, tp540, tp550,
										tp600, tp650, tp700, tp750, tp800,
										tp850, tp900, tp950, tp1000 }

TimerPollPeriodic ::=				ENUMERATED {
										tper100, tper200, tper300, tper400,
										tper500, tper750, tper1000, tper2000 }

TimerPollProhibit ::=				ENUMERATED {
										tpp10, tpp20, tpp30, tpp40, tpp50,
										tpp60, tpp70, tpp80, tpp90, tpp100,
										tpp110, tpp120, tpp130, tpp140, tpp150,
										tpp160, tpp170, tpp180, tpp190, tpp200,
										tpp210, tpp220, tpp230, tpp240, tpp250,
										tpp260, tpp270, tpp280, tpp290, tpp300,
										tpp310, tpp320, tpp330, tpp340, tpp350,
										tpp360, tpp370, tpp380, tpp390, tpp400,
										tpp410, tpp420, tpp430, tpp440, tpp450,
										tpp460, tpp470, tpp480, tpp490, tpp500,
										tpp510, tpp520, tpp530, tpp540, tpp550,
										tpp600, tpp650, tpp700, tpp750, tpp800,
										tpp850, tpp900, tpp950, tpp1000 }

TimerRST ::=						ENUMERATED {
										tr50, tr100, tr150, tr200, tr250, tr300, 
										tr350, tr400, tr450, tr500, tr550,
										tr600, tr700, tr800, tr900, tr1000 }

TimerStatusPeriodic ::=				ENUMERATED {
										tsp100, tsp200,	tsp300, tsp400, tsp500,
										tsp750, tsp1000, tsp2000 }

TimerStatusProhibit ::=				ENUMERATED {
										tsp10,tsp20,tsp30,tsp40,tsp50,
										tsp60,tsp70,tsp80,tsp90,tsp100,
										tsp110,tsp120,tsp130,tsp140,tsp150,
										tsp160,tsp170,tsp180,tsp190,tsp200,
										tsp210,tsp220,tsp230,tsp240,tsp250,
										tsp260,tsp270,tsp280,tsp290,tsp300,
										tsp310,tsp320,tsp330,tsp340,tsp350,
										tsp360,tsp370,tsp380,tsp390,tsp400,
										tsp410,tsp420,tsp430,tsp440,tsp450,
										tsp460,tsp470,tsp480,tsp490,tsp500,
										tsp510,tsp520,tsp530,tsp540,tsp550,
										tsp600,tsp650,tsp700,tsp750,tsp800,
										tsp850,tsp900,tsp950,tsp1000 }

TransmissionRLC-Discard ::=			CHOICE {
	timerBasedExplicit					ExplicitDiscard,
	timerBasedNoExplicit				NoExplicitDiscard,
	maxDAT-Retransmissions				MaxDAT-Retransmissions,
	noDiscard							MaxDAT
}

TransmissionWindowSize ::=			ENUMERATED {
										tw1, tw8, tw16, tw32, tw64, tw128, tw256,
										tw512, tw768, tw1024, tw1536, tw2047, 
										tw2560, tw3072, tw3584, tw4095 }

UL-AM-RLC-Mode ::=					SEQUENCE {
	transmissionRLC-Discard				TransmissionRLC-Discard,
	transmissionWindowSize				TransmissionWindowSize,
	timerRST							TimerRST,
	max-RST								MaxRST,
	pollingInfo							PollingInfo							OPTIONAL
}

UL-CounterSynchronisationInfo ::=		SEQUENCE {
	rB-WithPDCP-InfoList					RB-WithPDCP-InfoList 	OPTIONAL,
	startList								STARTList
}

UL-LogicalChannelMapping ::=		SEQUENCE {
	-- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well.
	ul-TransportChannelType				UL-TransportChannelType,
	logicalChannelIdentity				LogicalChannelIdentity				OPTIONAL,
	rlc-SizeList						CHOICE {
		allSizes							NULL,
		configured							NULL,
		explicitList						RLC-SizeExplicitList
	},
	mac-LogicalChannelPriority			MAC-LogicalChannelPriority
}

UL-LogicalChannelMapping-r6 ::=		SEQUENCE {
	ul-TrCH-Type						CHOICE {
		dch-rach-usch						SEQUENCE {
			-- TABULAR: UL-TransportChannelType contains TransportChannelIdentity as well.
			ul-TransportChannelType				UL-TransportChannelType,
			logicalChannelIdentity				LogicalChannelIdentity				OPTIONAL,
			rlc-SizeList						CHOICE {
				allSizes							NULL,
				configured							NULL,
				explicitList						RLC-SizeExplicitList
			}
		},
		e-dch								SEQUENCE {
			logicalChannelIdentity				LogicalChannelIdentity,
			e-DCH-MAC-d-FlowIdentity			E-DCH-MAC-d-FlowIdentity,
			ddi									DDI,
			rlc-PDU-SizeList					RLC-PDU-SizeList,
			includeInSchedulingInfo				BOOLEAN
		}
	},
	mac-LogicalChannelPriority			MAC-LogicalChannelPriority
}

UL-LogicalChannelMappingList ::=	SEQUENCE {
	-- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version
	-- of the specification
	rlc-LogicalChannelMappingIndicator	BOOLEAN,
	ul-LogicalChannelMapping			SEQUENCE (SIZE (maxLoCHperRLC)) OF
										UL-LogicalChannelMapping
}

UL-LogicalChannelMappingList-r6 ::=	SEQUENCE {
	-- rlc-LogicalChannelMappingIndicator shall be set to TRUE in this version
	-- of the specification
	rlc-LogicalChannelMappingIndicator	BOOLEAN,
	ul-LogicalChannelMapping			SEQUENCE (SIZE (maxLoCHperRLC)) OF
											UL-LogicalChannelMapping-r6
}

UL-LogicalChannelMappings ::=		CHOICE {
	oneLogicalChannel					UL-LogicalChannelMapping,
	twoLogicalChannels					UL-LogicalChannelMappingList
}

UL-LogicalChannelMappings-r6 ::=	CHOICE {
	oneLogicalChannel					UL-LogicalChannelMapping-r6,
	twoLogicalChannels					UL-LogicalChannelMappingList-r6
}

UL-RFC3095-r4 ::=					SEQUENCE {
	cid-InclusionInfo					CID-InclusionInfo-r4,
	max-CID								INTEGER (1..16383)					DEFAULT 15,
	-- dummy is not used in this version of the specification and
	-- it should be ignored by the receiver.
	dummy								ROHC-PacketSizeList-r4
}

UL-RLC-Mode ::=						CHOICE {
	ul-AM-RLC-Mode						UL-AM-RLC-Mode,
	ul-UM-RLC-Mode						UL-UM-RLC-Mode,
	ul-TM-RLC-Mode						UL-TM-RLC-Mode,
	spare								NULL
}

UL-TM-RLC-Mode ::=					SEQUENCE {
	transmissionRLC-Discard				TransmissionRLC-Discard				OPTIONAL,
	segmentationIndication				BOOLEAN
}

UL-UM-RLC-Mode ::=					SEQUENCE {
	transmissionRLC-Discard				TransmissionRLC-Discard				OPTIONAL
}

UL-TransportChannelType ::=			CHOICE {
	dch									TransportChannelIdentity,
	rach								NULL,
	-- dummy is not used in this version of the specification and
	-- if received the UE behaviour is not specified.
	dummy								NULL,
	usch								TransportChannelIdentity
}

UM-RLC-DuplAvoid-Reord-Info-r6 ::=	SEQUENCE {
	timer-DAR							TimerDAR-r6,
	widowSize-DAR						WindowSizeDAR-r6
}

UM-RLC-OutOSeqDelivery-Info-r6 ::=	SEQUENCE {
	timer-OSD							TimerOSD-r6							OPTIONAL,
	windowSize-OSD						WindowSizeOSD-r6
}

WindowSizeDAR-r6 ::=				ENUMERATED {
										ws4, ws8, ws16, ws32, ws40, ws48,
										ws56, ws64 }

WindowSizeOSD-r6 ::=				ENUMERATED {
										ws8, ws16, ws32, ws40, ws48,
										ws56, ws64 }

-- ***************************************************
--
--     TRANSPORT CHANNEL INFORMATION ELEMENTS (10.3.5)
--
-- ***************************************************

AddOrReconfMAC-dFlow ::=			SEQUENCE {
	mac-hs-AddReconfQueue-List					MAC-hs-AddReconfQueue-List	OPTIONAL,
	mac-hs-DelQueue-List						MAC-hs-DelQueue-List	OPTIONAL
}

AllowedTFC-List ::=					SEQUENCE (SIZE (1..maxTFC)) OF
										TFC-Value

AllowedTFI-List ::=					SEQUENCE (SIZE (1..maxTF)) OF
										INTEGER (0..31)

BitModeRLC-SizeInfo ::=				CHOICE {
	sizeType1							INTEGER (0..127),
	-- Actual value sizeType2 = (part1 * 8) + 128 + part2
	sizeType2							SEQUENCE {
		part1								INTEGER (0..15),
		part2								INTEGER (1..7)					OPTIONAL
	},
	-- Actual value sizeType3 = (part1 * 16) + 256 + part2
	sizeType3							SEQUENCE {
		part1								INTEGER (0..47),
		part2								INTEGER (1..15)					OPTIONAL
	},
	-- Actual value sizeType4 = (part1 * 64) + 1024 + part2
	sizeType4							SEQUENCE {
		part1								INTEGER (0..62),
		part2								INTEGER (1..63)					OPTIONAL
	}
}

-- Actual value BLER-QualityValue = IE value * 0.1
BLER-QualityValue ::=				INTEGER (-63..0)

ChannelCodingType ::=				CHOICE { 
	-- noCoding is only used for TDD in this version of the specification,
	-- otherwise it should be ignored
	noCoding							NULL,
	convolutional						CodingRate,
	turbo								NULL 
}

CodingRate ::=						ENUMERATED {
										half,
										third }

CommonDynamicTF-Info ::=			SEQUENCE {
	rlc-Size							CHOICE {
		fdd									SEQUENCE {
			octetModeRLC-SizeInfoType2			OctetModeRLC-SizeInfoType2
		},
		tdd									SEQUENCE {
			commonTDD-Choice					CHOICE {
				bitModeRLC-SizeInfo					BitModeRLC-SizeInfo,
				octetModeRLC-SizeInfoType1			OctetModeRLC-SizeInfoType1
			}
		}
	},
	numberOfTbSizeList				SEQUENCE (SIZE (1..maxTF)) OF		
											NumberOfTransportBlocks,
	logicalChannelList				LogicalChannelList
}

CommonDynamicTF-Info-DynamicTTI ::=	SEQUENCE {
	commonTDD-Choice					CHOICE {
		bitModeRLC-SizeInfo					BitModeRLC-SizeInfo,
		octetModeRLC-SizeInfoType1			OctetModeRLC-SizeInfoType1
	},
	numberOfTbSizeAndTTIList			NumberOfTbSizeAndTTIList,
	logicalChannelList					LogicalChannelList
}

CommonDynamicTF-InfoList ::=		SEQUENCE (SIZE (1..maxTF)) OF
										CommonDynamicTF-Info

CommonDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF
										CommonDynamicTF-Info-DynamicTTI

CommonTransChTFS ::=				SEQUENCE {
	tti									CHOICE {
		tti10								CommonDynamicTF-InfoList,
		tti20								CommonDynamicTF-InfoList,
		tti40								CommonDynamicTF-InfoList,
		tti80								CommonDynamicTF-InfoList,
		dynamic								CommonDynamicTF-InfoList-DynamicTTI
	},
	semistaticTF-Information			SemistaticTF-Information
}

CommonTransChTFS-LCR ::=				SEQUENCE {
	tti									CHOICE {
		tti5								CommonDynamicTF-InfoList,
		tti10								CommonDynamicTF-InfoList,
		tti20								CommonDynamicTF-InfoList,
		tti40								CommonDynamicTF-InfoList,
		tti80								CommonDynamicTF-InfoList,
		dynamic								CommonDynamicTF-InfoList-DynamicTTI
	},
	semistaticTF-Information			SemistaticTF-Information
}

CPCH-SetID ::=						INTEGER (1..maxCPCHsets)

CRC-Size ::=						ENUMERATED { 
										crc0, crc8, crc12, crc16, crc24 }

DedicatedDynamicTF-Info ::=			SEQUENCE {
	rlc-Size							CHOICE {
		bitMode								BitModeRLC-SizeInfo,
		octetModeType1						OctetModeRLC-SizeInfoType1
	},
	numberOfTbSizeList				SEQUENCE (SIZE (1..maxTF)) OF										NumberOfTransportBlocks,
	logicalChannelList				LogicalChannelList 
}

DedicatedDynamicTF-Info-DynamicTTI ::= SEQUENCE {
	rlc-Size							CHOICE {
		bitMode								BitModeRLC-SizeInfo,
		octetModeType1						OctetModeRLC-SizeInfoType1
	},
	numberOfTbSizeAndTTIList			NumberOfTbSizeAndTTIList,
	logicalChannelList				LogicalChannelList 
}

DedicatedDynamicTF-InfoList ::=		SEQUENCE (SIZE (1..maxTF)) OF
										DedicatedDynamicTF-Info

DedicatedDynamicTF-InfoList-DynamicTTI ::= SEQUENCE (SIZE (1..maxTF)) OF
										DedicatedDynamicTF-Info-DynamicTTI

DedicatedTransChTFS ::=				SEQUENCE {
	tti									CHOICE {
		tti10								DedicatedDynamicTF-InfoList,
		tti20								DedicatedDynamicTF-InfoList,
		tti40								DedicatedDynamicTF-InfoList,
		tti80								DedicatedDynamicTF-InfoList,
		dynamic								DedicatedDynamicTF-InfoList-DynamicTTI
	},
	semistaticTF-Information			SemistaticTF-Information
}

-- The maximum allowed size of DL-AddReconfTransChInfo2List sequence is 16
DL-AddReconfTransChInfo2List ::=	SEQUENCE (SIZE (1..maxTrCHpreconf)) OF
										DL-AddReconfTransChInformation2

-- The maximum allowed size of DL-AddReconfTransChInfoList sequence is 16
DL-AddReconfTransChInfoList ::=		SEQUENCE (SIZE (1..maxTrCHpreconf)) OF
										DL-AddReconfTransChInformation

-- The maximum allowed size of DL-AddReconfTransChInfoList-r4 sequence is 16
DL-AddReconfTransChInfoList-r4 ::=	SEQUENCE (SIZE (1..maxTrCHpreconf)) OF
										DL-AddReconfTransChInformation-r4

-- The maximum allowed size of DL-AddReconfTransChInfoList-r5 sequence is 16
DL-AddReconfTransChInfoList-r5 ::=	SEQUENCE (SIZE (1..maxTrCHpreconf)) OF
										DL-AddReconfTransChInformation-r5

-- ASN.1 for IE "Added or Reconfigured DL TrCH information" 
-- in case of messages other than: Radio Bearer Release message and 
-- Radio Bearer Reconfiguration message
DL-AddReconfTransChInformation ::= 	SEQUENCE {
	dl-TransportChannelType				DL-TrCH-Type,
	dl-transportChannelIdentity			TransportChannelIdentity,
	tfs-SignallingMode					CHOICE {
		explicit-config						TransportFormatSet,
		sameAsULTrCH						UL-TransportChannelIdentity
	},
	dch-QualityTarget					QualityTarget						OPTIONAL,
	-- dummy is not used in this version of the specification, it should 
	-- not be sent and if received it should be ignored.
	dummy								TM-SignallingInfo					OPTIONAL
}

DL-AddReconfTransChInformation-r4 ::= 	SEQUENCE {
	dl-TransportChannelType				DL-TrCH-Type,
	dl-transportChannelIdentity			TransportChannelIdentity,
	tfs-SignallingMode					CHOICE {
		explicit-config						TransportFormatSet,
		sameAsULTrCH						UL-TransportChannelIdentity
	},
	dch-QualityTarget					QualityTarget						OPTIONAL
}

DL-AddReconfTransChInformation-r5 ::= 	SEQUENCE {
	dl-TransportChannelType				DL-TrCH-TypeId1-r5,
	tfs-SignallingMode					CHOICE {
		explicit-config						TransportFormatSet,
		sameAsULTrCH						UL-TransportChannelIdentity,
		hsdsch								HSDSCH-Info
	},
	dch-QualityTarget					QualityTarget						OPTIONAL
}

-- ASN.1 for IE "Added or Reconfigured DL TrCH information" 
-- in case of Radio Bearer Release message and 
-- Radio Bearer Reconfiguration message
DL-AddReconfTransChInformation2 ::= SEQUENCE {
	dl-TransportChannelType				DL-TrCH-Type,
	transportChannelIdentity			TransportChannelIdentity,
	tfs-SignallingMode					CHOICE {
		explicit-config						TransportFormatSet,
		sameAsULTrCH						UL-TransportChannelIdentity
	},
	qualityTarget						QualityTarget						OPTIONAL
}

DL-CommonTransChInfo ::=			SEQUENCE {
	sccpch-TFCS							TFCS								OPTIONAL,
	-- modeSpecificInfo should be optional. A new version of this IE should be defined 
	-- to be used in later versions of messages using this IE
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			dl-Parameters						CHOICE {
				dl-DCH-TFCS							TFCS,
				sameAsUL							NULL
			}																OPTIONAL
		},
		tdd									SEQUENCE {
			individualDL-CCTrCH-InfoList		IndividualDL-CCTrCH-InfoList
																			OPTIONAL
		}
	}
}

DL-CommonTransChInfo-r4 ::=			SEQUENCE {
	sccpch-TFCS							TFCS								OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			dl-Parameters						CHOICE {
				dl-DCH-TFCS							SEQUENCE {
					tfcs								TFCS				OPTIONAL
				},
				sameAsUL							NULL
			}																OPTIONAL
		},
		tdd									SEQUENCE {
			individualDL-CCTrCH-InfoList		IndividualDL-CCTrCH-InfoList
																			OPTIONAL
		}
	}	OPTIONAL
}

DL-DeletedTransChInfoList ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										DL-TransportChannelIdentity

DL-DeletedTransChInfoList-r5 ::=	SEQUENCE (SIZE (1..maxTrCH)) OF
										DL-TransportChannelIdentity-r5	

DL-TransportChannelIdentity ::= 		SEQUENCE {
	dl-TransportChannelType				DL-TrCH-Type,
	dl-TransportChannelIdentity			TransportChannelIdentity
}

DL-TransportChannelIdentity-r5 ::= 		SEQUENCE {
	dl-TransportChannelType				DL-TrCH-TypeId2-r5
}

-- The choice “dsch” should not be used in FDD mode, and if received the UE behaviour is unspecified
DL-TrCH-Type ::=					ENUMERATED {dch, dsch}

DL-TrCH-TypeId1-r5 ::=				CHOICE {
	dch									TransportChannelIdentity,
	-- The choice “dsch” should not be used in FDD mode, and if received
	-- the UE behaviour is unspecified.
	dsch								TransportChannelIdentity,
	hsdsch								NULL
}

DL-TrCH-TypeId2-r5 ::=				CHOICE {
	dch									TransportChannelIdentity,
	-- The choice “dsch” should not be used in FDD mode, and if received
	-- the UE behaviour is unspecified.
	dsch								TransportChannelIdentity,
	hsdsch								MAC-d-FlowIdentity
}

DRAC-ClassIdentity ::=				INTEGER (1..maxDRACclasses)

DRAC-StaticInformation ::=			SEQUENCE {
	transmissionTimeValidity			TransmissionTimeValidity,
	timeDurationBeforeRetry				TimeDurationBeforeRetry,
	drac-ClassIdentity					DRAC-ClassIdentity
}

DRAC-StaticInformationList ::=		SEQUENCE (SIZE (1..maxTrCH)) OF 
										DRAC-StaticInformation

E-DCH-AddReconf-MAC-d-Flow ::=		SEQUENCE {
	mac-d-FlowIdentity					E-DCH-MAC-d-FlowIdentity,
	mac-d-FlowPowerOffset				E-DCH-MAC-d-FlowPowerOffset			OPTIONAL,
	mac-d-FlowMaxRetrans				E-DCH-MAC-d-FlowMaxRetrans			OPTIONAL,
	mac-d-FlowMultiplexingList			E-DCH-MAC-d-FlowMultiplexingList	OPTIONAL,
	transmissionGrantType				CHOICE {
		non-ScheduledTransGrantInfo			SEQUENCE {
			maxMAC-e-PDUContents				INTEGER (1..19982),
			ms2-NonSchedTransmGrantHARQAlloc	BIT STRING (SIZE (8))		OPTIONAL
		},
		scheduledTransmissionGrantInfo		NULL
	}	OPTIONAL
}

E-DCH-AddReconf-MAC-d-FlowList ::=	SEQUENCE (SIZE (1..maxE-DCHMACdFlow)) OF
							E-DCH-AddReconf-MAC-d-Flow

E-DCH-MAC-d-FlowIdentity ::=		INTEGER (0..maxE-DCHMACdFlow-1)

E-DCH-MAC-d-FlowMaxRetrans ::=		INTEGER (0..15)

E-DCH-MAC-d-FlowMultiplexingList ::= BIT STRING (SIZE (maxE-DCHMACdFlow))

E-DCH-MAC-d-FlowPowerOffset ::=		INTEGER (0..6)

E-DCH-TTI ::=						ENUMERATED { tti2, tti10 }

ExplicitTFCS-Configuration ::=		CHOICE {
	complete							TFCS-ReconfAdd,
	addition							TFCS-ReconfAdd,
	removal								TFCS-RemovalList,
	replacement							SEQUENCE {
		tfcsRemoval							TFCS-RemovalList,
		tfcsAdd								TFCS-ReconfAdd
	}
}

GainFactor ::=						INTEGER (0..15)

GainFactorInformation ::=			CHOICE {
	signalledGainFactors				SignalledGainFactors,
	computedGainFactors					ReferenceTFC-ID
}

HSDSCH-Info ::=						SEQUENCE {
	harqInfo							HARQ-Info 				OPTIONAL,
	addOrReconfMAC-dFlow				AddOrReconfMAC-dFlow	OPTIONAL
}

HARQ-Info ::=						SEQUENCE {
	numberOfProcesses					INTEGER (1..8),
	memoryPartitioning					CHOICE {
		implicit							NULL,
		explicit							SEQUENCE (SIZE (1..maxHProcesses)) OF
												HARQMemorySize
	}
}

HARQMemorySize ::= 					ENUMERATED {
										hms800, hms1600, hms2400, hms3200, hms4000,
										hms4800, hms5600, hms6400, hms7200, hms8000,
										hms8800, hms9600, hms10400, hms11200, hms12000,
										hms12800, hms13600, hms14400, hms15200, hms16000,
										hms17600, hms19200, hms20800, hms22400, hms24000,
										hms25600, hms27200, hms28800, hms30400, hms32000,
										hms36000, hms40000, hms44000, hms48000, hms52000,
										hms56000, hms60000, hms64000, hms68000, hms72000,
										hms76000, hms80000, hms88000, hms96000, hms104000,
										hms112000, hms120000, hms128000, hms136000, hms144000,
										hms152000, hms160000, hms176000, hms192000, hms208000,
										hms224000, hms240000, hms256000, hms272000, hms288000,
										hms304000 }

IndividualDL-CCTrCH-Info ::=		SEQUENCE {
	dl-TFCS-Identity					TFCS-Identity,
	tfcs-SignallingMode					CHOICE {
		explicit-config						TFCS,
		sameAsUL							TFCS-Identity
	}
}

IndividualDL-CCTrCH-InfoList ::=	SEQUENCE (SIZE (1..maxCCTrCH)) OF
										IndividualDL-CCTrCH-Info

IndividualUL-CCTrCH-Info ::=		SEQUENCE {
	ul-TFCS-Identity					TFCS-Identity,
	ul-TFCS								TFCS ,
	tfc-Subset							TFC-Subset
}

IndividualUL-CCTrCH-InfoList ::=	SEQUENCE (SIZE (1..maxCCTrCH)) OF
										IndividualUL-CCTrCH-Info

LogicalChannelByRB ::=				SEQUENCE {
	rb-Identity							RB-Identity,	
	logChOfRb							INTEGER (0..1)						OPTIONAL
}

LogicalChannelList ::=				CHOICE {
		allSizes							NULL,
		configured							NULL,
		explicitList						SEQUENCE (SIZE (1..15)) OF
												LogicalChannelByRB				
}

MAC-d-FlowIdentityDCHandHSDSCH ::=	SEQUENCE {
	dch-transport-ch-id				TransportChannelIdentity,
	hsdsch-mac-d-flow-id			MAC-d-FlowIdentity
}

MAC-d-FlowIdentity ::=				INTEGER (0..7)

MAC-d-PDU-SizeInfo-List ::=			SEQUENCE (SIZE(1.. maxMAC-d-PDUsizes)) OF
										MAC-d-PDUsizeInfo

--MAC-d-Pdu sizes need to be defined
MAC-d-PDUsizeInfo ::=				SEQUENCE{
	mac-d-PDU-Size						INTEGER (1..5000),
	mac-d-PDU-Index						INTEGER(0..7)
}

MAC-hs-AddReconfQueue-List ::=				SEQUENCE (SIZE(1..maxQueueIDs)) OF
										MAC-hs-AddReconfQueue

MAC-hs-AddReconfQueue ::=			SEQUENCE {
	mac-hsQueueId						INTEGER(0..7),
	mac-dFlowId							MAC-d-FlowIdentity,
	reorderingReleaseTimer				T1-ReleaseTimer,
	mac-hsWindowSize					MAC-hs-WindowSize,
	mac-d-PDU-SizeInfo-List				MAC-d-PDU-SizeInfo-List				OPTIONAL
}

MAC-hs-DelQueue-List ::=				SEQUENCE (SIZE(1..maxQueueIDs)) OF
										MAC-hs-DelQueue

MAC-hs-DelQueue ::=					SEQUENCE {
	mac-hsQueueId						INTEGER(0..7)
}

MAC-hs-WindowSize ::=				ENUMERATED {
										mws4, mws6, mws8, mws12, mws16, mws24, mws32 }

NumberOfTbSizeAndTTIList ::=		SEQUENCE (SIZE (1..maxTF)) OF SEQUENCE {
		numberOfTransportBlocks				NumberOfTransportBlocks,
		transmissionTimeInterval			TransmissionTimeInterval
}

MessType ::=						ENUMERATED {
										transportFormatCombinationControl }

Non-allowedTFC-List ::=				SEQUENCE (SIZE (1..maxTFC)) OF
										TFC-Value

NumberOfTransportBlocks ::=			CHOICE {
	zero								NULL,
	one									NULL,
	small								INTEGER (2..17),
	large								INTEGER (18..512)
}

OctetModeRLC-SizeInfoType1 ::=		CHOICE {
	-- Actual size = (8 * sizeType1) + 16
	sizeType1							INTEGER (0..31),
	sizeType2							SEQUENCE {
		-- Actual size = (32 * part1) + 272 + (part2 * 8)
		part1								INTEGER (0..23),
		part2								INTEGER (1..3)					OPTIONAL
	},
	sizeType3							SEQUENCE {
		-- Actual size = (64 * part1) + 1040 + (part2 * 8)
		part1								INTEGER (0..61),
		part2								INTEGER (1..7)					OPTIONAL
	}
}

OctetModeRLC-SizeInfoType2 ::=		CHOICE {
	-- Actual size = (sizeType1 * 8) + 48
	sizeType1							INTEGER (0..31),
	-- Actual size = (sizeType2 * 16) + 312
	sizeType2							INTEGER (0..63),
	-- Actual size = (sizeType3 *64) + 1384
	sizeType3							INTEGER (0..56)
}

PowerOffsetInfoShort ::=			SEQUENCE {
	referenceTFC						TFC-Value,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			gainFactorBetaC						GainFactor
		},
		tdd									NULL
	},
	gainFactorBetaD						GainFactor
}

PowerOffsetInformation ::=			SEQUENCE {
	gainFactorInformation				GainFactorInformation,
	-- PowerOffsetPp-m is always absent in TDD
	powerOffsetPp-m						PowerOffsetPp-m						OPTIONAL
}

PowerOffsetPp-m ::=					INTEGER (-5..10)

PreDefTransChConfiguration ::=		SEQUENCE {
	ul-CommonTransChInfo				UL-CommonTransChInfo,
	ul-AddReconfTrChInfoList			UL-AddReconfTransChInfoList,
	dl-CommonTransChInfo				DL-CommonTransChInfo,
	dl-TrChInfoList						DL-AddReconfTransChInfoList
}	

QualityTarget ::=					SEQUENCE {
	bler-QualityValue					BLER-QualityValue
}

RateMatchingAttribute ::=			INTEGER (1..hiRM)


ReferenceTFC-ID ::=					INTEGER (0..3)

RestrictedTrChInfo ::=				SEQUENCE {
	ul-TransportChannelType				UL-TrCH-Type,
	restrictedTrChIdentity				TransportChannelIdentity,
	allowedTFI-List						AllowedTFI-List						OPTIONAL
}

RestrictedTrChInfoList ::=			SEQUENCE (SIZE (1..maxTrCH)) OF
										RestrictedTrChInfo

SemistaticTF-Information ::=		SEQUENCE {
	-- TABULAR: Transmission time interval has been included in the IE CommonTransChTFS.
	channelCodingType					ChannelCodingType,
	rateMatchingAttribute				RateMatchingAttribute,
	crc-Size							CRC-Size
}

SignalledGainFactors ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			gainFactorBetaC						GainFactor
		},
		tdd									NULL
	},
	gainFactorBetaD						GainFactor,
	referenceTFC-ID						ReferenceTFC-ID						OPTIONAL
}

SplitTFCI-Signalling ::=			SEQUENCE {
	splitType							SplitType						OPTIONAL,
	tfci-Field2-Length					INTEGER (1..10)					OPTIONAL,
	tfci-Field1-Information				ExplicitTFCS-Configuration		OPTIONAL,
	tfci-Field2-Information				TFCI-Field2-Information			OPTIONAL
}

SplitType ::=						ENUMERATED {
										hardSplit, logicalSplit }

T1-ReleaseTimer ::=					ENUMERATED {
										rt10, rt20, rt30, rt40, rt50,
										rt60, rt70, rt80, rt90, rt100,
										rt120, rt140, rt160, rt200, rt300,
										rt400 }

TFC-Subset ::=						CHOICE {
	minimumAllowedTFC-Number			TFC-Value,
	allowedTFC-List						AllowedTFC-List,
	non-allowedTFC-List					Non-allowedTFC-List,
	restrictedTrChInfoList				RestrictedTrChInfoList,
	fullTFCS							NULL
}

TFC-SubsetList ::=					SEQUENCE (SIZE (1.. maxTFCsub)) OF SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									NULL,
		tdd									SEQUENCE {
			tfcs-ID								TFCS-Identity				OPTIONAL
		}
	},
	tfc-Subset							TFC-Subset
}

TFC-Value ::=						INTEGER (0..1023)

TFCI-Field2-Information ::=			CHOICE {
	tfci-Range							TFCI-RangeList,
	explicit-config						ExplicitTFCS-Configuration
}

TFCI-Range ::=						SEQUENCE {
	maxTFCIField2Value					INTEGER (1..1023),
	tfcs-InfoForDSCH					TFCS-InfoForDSCH
}

TFCI-RangeList ::=					SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF
										TFCI-Range

TFCS ::=							CHOICE {
	normalTFCI-Signalling				ExplicitTFCS-Configuration,
	-- dummy is not used in this version of specification, it should
	-- not be sent and if received the UE behaviour is not specified.
	dummy								SplitTFCI-Signalling
}

TFCS-Identity ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	sharedChannelIndicator				BOOLEAN
}

TFCS-IdentityPlain ::=				INTEGER (1..8)

TFCS-InfoForDSCH ::=				CHOICE {
	ctfc2bit							INTEGER (0..3),
	ctfc4bit							INTEGER (0..15),
	ctfc6bit							INTEGER (0..63),
	ctfc8bit							INTEGER (0..255),
	ctfc12bit							INTEGER (0..4095),
	ctfc16bit							INTEGER (0..65535),
	ctfc24bit							INTEGER (0..16777215)
}

TFCS-ReconfAdd ::=					SEQUENCE{
	ctfcSize							CHOICE{
		ctfc2Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc2								INTEGER (0..3),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc4Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc4 								INTEGER (0..15),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc6Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc6								INTEGER (0..63),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc8Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc8								INTEGER (0..255),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc12Bit							SEQUENCE (SIZE(1..maxTFC)) OF SEQUENCE {
			ctfc12								INTEGER (0..4095),
 			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc16Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc16								INTEGER(0..65535),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		},
		ctfc24Bit							SEQUENCE (SIZE (1..maxTFC)) OF SEQUENCE {
			ctfc24								INTEGER(0..16777215),
			powerOffsetInformation				PowerOffsetInformation			OPTIONAL
		}
	}
}

TFCS-Removal ::=					SEQUENCE {
	tfci								INTEGER (0..1023)
}

TFCS-RemovalList ::=				SEQUENCE (SIZE (1..maxTFC)) OF
										TFCS-Removal

TimeDurationBeforeRetry ::=			INTEGER (1..256)

TM-SignallingInfo ::=				SEQUENCE {
	messType							MessType,
	tm-SignallingMode					CHOICE {
		mode1								NULL,
		mode2								SEQUENCE {
			-- in ul-controlledTrChList, TrCH-Type is always DCH
			ul-controlledTrChList				UL-ControlledTrChList
		}
	}
}

TransmissionTimeInterval ::=		ENUMERATED {
										tti10, tti20, tti40, tti80 }

TransmissionTimeValidity ::=		INTEGER (1..256)

TransportChannelIdentity ::=		INTEGER (1..32)

TransportChannelIdentityDCHandDSCH ::=	SEQUENCE {
	dch-transport-ch-id				TransportChannelIdentity,
	dsch-transport-ch-id			TransportChannelIdentity
}


TransportFormatSet ::=				CHOICE {
	dedicatedTransChTFS					DedicatedTransChTFS,
	commonTransChTFS					CommonTransChTFS
}

TransportFormatSet-LCR ::=				CHOICE {
	dedicatedTransChTFS					DedicatedTransChTFS,
	commonTransChTFS-LCR				CommonTransChTFS-LCR
}

-- The maximum allowed size of UL-AddReconfTransChInfoList sequence is 16
UL-AddReconfTransChInfoList ::=		SEQUENCE (SIZE (1..maxTrCHpreconf)) OF
										UL-AddReconfTransChInformation

-- The maximum allowed size of UL-AddReconfTransChInfoList-r6 sequence is 32
UL-AddReconfTransChInfoList-r6 ::=	SEQUENCE (SIZE (1..maxTrCH)) OF
										UL-AddReconfTransChInformation-r6

UL-AddReconfTransChInformation ::= SEQUENCE {
	ul-TransportChannelType				UL-TrCH-Type,
	transportChannelIdentity			TransportChannelIdentity,
	transportFormatSet					TransportFormatSet
}

UL-AddReconfTransChInformation-r6 ::= CHOICE {
	dch-usch							SEQUENCE {
		ul-TransportChannelType				UL-TrCH-Type,
		transportChannelIdentity			TransportChannelIdentity,
		transportFormatSet					TransportFormatSet
	},
	e-dch								SEQUENCE {
		tti									E-DCH-TTI,
		harq-Info							ENUMERATED { rv0, rvtable },
		addReconf-MAC-d-FlowList			E-DCH-AddReconf-MAC-d-FlowList	OPTIONAL
	}
}

UL-CommonTransChInfo ::=			SEQUENCE {
	-- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual 
	-- CCTrCH Info.
	tfc-Subset							TFC-Subset							OPTIONAL,
	prach-TFCS							TFCS								OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ul-TFCS							TFCS
		},
		tdd									SEQUENCE {

			individualUL-CCTrCH-InfoList		IndividualUL-CCTrCH-InfoList
																			OPTIONAL
		}
	}																		OPTIONAL
}

UL-CommonTransChInfo-r4 ::=			SEQUENCE {
	-- TABULAR: tfc-subset is applicable to FDD only, TDD specifies tfc-subset in individual 
	-- CCTrCH Info.
	tfc-Subset							TFC-Subset							OPTIONAL,
	prach-TFCS							TFCS								OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ul-TFCS								TFCS
		},
		tdd									SEQUENCE {
			individualUL-CCTrCH-InfoList		IndividualUL-CCTrCH-InfoList		OPTIONAL
		}
	}																		OPTIONAL,
	tfc-SubsetList						TFC-SubsetList						OPTIONAL
}

-- In UL-ControlledTrChList, TrCH-Type is always DCH
UL-ControlledTrChList ::=			SEQUENCE (SIZE (1..maxTrCH)) OF
										TransportChannelIdentity

UL-DeletedTransChInfoList ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										UL-TransportChannelIdentity

UL-DeletedTransChInfoList-r6 ::=	SEQUENCE (SIZE (1..maxTrCH)) OF
										UL-TransportChannelIdentity-r6

UL-TransportChannelIdentity ::=		SEQUENCE {
	ul-TransportChannelType				UL-TrCH-Type,
	ul-TransportChannelIdentity			TransportChannelIdentity
}

UL-TransportChannelIdentity-r6 ::=	CHOICE {
	dch-usch							SEQUENCE {
		ul-TransportChannelType				UL-TrCH-Type,
		ul-TransportChannelIdentity			TransportChannelIdentity
	},
	e-dch								E-DCH-MAC-d-FlowIdentity
}

UL-TrCH-Type ::=					ENUMERATED {dch, usch}

USCH-TransportChannelsInfo ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										SEQUENCE {
	usch-TransportChannelIdentity			TransportChannelIdentity,
	usch-TFS								TransportFormatSet
}
-- ***************************************************
--
--     PHYSICAL CHANNEL INFORMATION ELEMENTS (10.3.6)
--
-- ***************************************************

ACK-NACK-repetitionFactor ::=		INTEGER(1..4)

AC-To-ASC-Mapping ::=				INTEGER (0..7)

AC-To-ASC-MappingTable ::=			SEQUENCE (SIZE (maxASCmap)) OF
										AC-To-ASC-Mapping

AccessServiceClass-FDD ::=			SEQUENCE {
	availableSignatureStartIndex		INTEGER (0..15),
	availableSignatureEndIndex			INTEGER (0..15),

	assignedSubChannelNumber			BIT STRING {
											b3(0),
											b2(1),
											b1(2),
											b0(3)
											}	 (SIZE(4))
}

AccessServiceClass-TDD ::=			SEQUENCE {
	channelisationCodeIndices			BIT STRING	{
											chCodeIndex7(0),
											chCodeIndex6(1),
											chCodeIndex5(2),
											chCodeIndex4(3),
											chCodeIndex3(4),
											chCodeIndex2(5),
											chCodeIndex1(6),
											chCodeIndex0(7)
											} (SIZE(8))				OPTIONAL,
	subchannelSize						CHOICE {
		size1								NULL,
		size2								SEQUENCE {
			-- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10'
			subchannels							ENUMERATED	{ subch0, subch1 }	OPTIONAL
		},
		size4								SEQUENCE {
			subchannels							BIT STRING	{
													subCh3(0), 
													subCh2(1), 
													subCh1(2), 
													subCh0(3) 
													} (SIZE(4))		OPTIONAL
		},
		size8								SEQUENCE {
			subchannels							BIT STRING	{
													subCh7(0), 
													subCh6(1), 
													subCh5(2), 
													subCh4(3), 
													subCh3(4), 
													subCh2(5), 
													subCh1(6), 
													subCh0(7) 
													} (SIZE(8))		OPTIONAL
		}
	}
}

AccessServiceClass-TDD-r7 ::=			SEQUENCE {
	channelisationCodeIndices			BIT STRING	{
											chCodeIndex15(0),
											chCodeIndex14(1),
											chCodeIndex13(2),
											chCodeIndex12(3),
											chCodeIndex11(4),
											chCodeIndex10(5),
											chCodeIndex9(6),
											chCodeIndex8(7),
											chCodeIndex7(8),
											chCodeIndex6(9),
											chCodeIndex5(10),
											chCodeIndex4(11),
											chCodeIndex3(12),
											chCodeIndex2(13),
											chCodeIndex1(14),
											chCodeIndex0(15)
											} (SIZE(16))				OPTIONAL,
	subchannelSize						CHOICE {
		size1								NULL,
		size2								SEQUENCE {
			-- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10'
			subchannels							ENUMERATED	{ subch0, subch1 }	OPTIONAL
		},
		size4								SEQUENCE {
			subchannels							BIT STRING	{
													subCh3(0), 
													subCh2(1), 
													subCh1(2), 
													subCh0(3) 
													} (SIZE(4))		OPTIONAL
		},
		size8								SEQUENCE {
			subchannels							BIT STRING	{
													subCh7(0), 
													subCh6(1), 
													subCh5(2), 
													subCh4(3), 
													subCh3(4), 
													subCh2(5), 
													subCh1(6), 
													subCh0(7) 
													} (SIZE(8))		OPTIONAL
		},
		size16								SEQUENCE {
			subchannels							BIT STRING	{
													subCh15(0), 
													subCh14(1), 
													subCh13(2), 
													subCh12(3), 
													subCh11(4), 
													subCh10(5), 
													subCh9(6), 
													subCh8(7),
													subCh7(8),
													subCh6(9),
													subCh5(10),
													subCh4(11),
													subCh3(12),
													subCh2(13),
													subCh1(14),
													subCh0(15) 
													} (SIZE(16))		OPTIONAL
		}
	}
}

AccessServiceClass-TDD-LCR-r4 ::=	SEQUENCE {
	availableSYNC-UlCodesIndics		    BIT STRING {
											sulCodeIndex7(0),
											sulCodeIndex6(1),
											sulCodeIndex5(2),
											sulCodeIndex4(3),
											sulCodeIndex3(4),
											sulCodeIndex2(5),
											sulCodeIndex1(6),
											sulCodeIndex0(7)
											} (SIZE(8))               OPTIONAL,
	subchannelSize						CHOICE {
		size1								NULL,
		size2								SEQUENCE {
			-- subch0 means bitstring '01' in the tabular, subch1 means bitsring '10'.
			subchannels							ENUMERATED	{ subch0, subch1 }	OPTIONAL
		},
		size4								SEQUENCE {
			subchannels							BIT STRING	{
													subCh3(0), 
													subCh2(1), 
													subCh1(2), 
													subCh0(3) 
													} (SIZE(4))			OPTIONAL
		},
		size8								SEQUENCE {
			subchannels							BIT STRING	{
													subCh7(0), 
													subCh6(1), 
													subCh5(2), 
													subCh4(3), 
													subCh3(4), 
													subCh2(5), 
													subCh1(6), 
													subCh0(7) 
													} (SIZE(8))			OPTIONAL
		}
	}
	
}

AdditionalPRACH-TF-and-TFCS-CCCH-IEs ::= SEQUENCE {
	powerOffsetInformation				PowerOffsetInformation,
	dynamicTFInformationCCCH			DynamicTFInformationCCCH
}

AdditionalPRACH-TF-and-TFCS-CCCH ::=	SEQUENCE {
	additionalPRACH-TF-and-TFCS-CCCH-IEs	AdditionalPRACH-TF-and-TFCS-CCCH-IEs	OPTIONAL
}

-- The order is the same as in the PRACH-SystemInformationList
AdditionalPRACH-TF-and-TFCS-CCCH-List ::=	SEQUENCE (SIZE (1..maxPRACH)) OF
										AdditionalPRACH-TF-and-TFCS-CCCH

AICH-Info ::=						SEQUENCE {
	channelisationCode256				ChannelisationCode256,
	sttd-Indicator						BOOLEAN,
	aich-TransmissionTiming				AICH-TransmissionTiming
}

AICH-PowerOffset ::=				INTEGER (-22..5)

AICH-TransmissionTiming ::=			ENUMERATED {
										e0, e1 }

AllocationPeriodInfo ::=			SEQUENCE {
	allocationActivationTime			INTEGER (0..255),
	allocationDuration					INTEGER (1..256)
}

-- Actual value Alpha = IE value * 0.125
Alpha ::=							INTEGER (0..8)

AP-AICH-ChannelisationCode ::=		INTEGER (0..255)

AP-PreambleScramblingCode ::=		INTEGER (0..79)

AP-Signature ::=					INTEGER (0..15)

AP-Signature-VCAM ::=				SEQUENCE {
	ap-Signature						AP-Signature,
	availableAP-SubchannelList			AvailableAP-SubchannelList OPTIONAL
}

AP-Subchannel ::=					INTEGER (0..11)

ASCSetting-FDD ::=						SEQUENCE {
	-- TABULAR: accessServiceClass-FDD is MD in tabular description
	-- Default value is previous ASC
	-- If this is the first ASC, the default value is all available signature and sub-channels
	accessServiceClass-FDD					AccessServiceClass-FDD	OPTIONAL
}

ASCSetting-TDD ::=						SEQUENCE {
	-- TABULAR: accessServiceClass-TDD is MD in tabular description
	-- Default value is previous ASC
	-- If this is the first ASC, the default value is all available channelisation codes and
	-- all available sub-channels with subchannelSize=size1.
	accessServiceClass-TDD					AccessServiceClass-TDD	OPTIONAL
}

ASCSetting-TDD-r7 ::=						SEQUENCE {
	-- TABULAR: accessServiceClass-TDD is MD in tabular description
	-- Default value is previous ASC
	-- If this is the first ASC, the default value is all available channelisation codes and
	-- all available sub-channels with subchannelSize=size1.
	accessServiceClass-TDD						AccessServiceClass-TDD-r7	OPTIONAL
}

ASCSetting-TDD-LCR-r4 ::=						SEQUENCE {
	-- TABULAR: accessServiceClass-TDD-LCR is MD in tabular description
	-- Default value is previous ASC
	-- If this is the first ASC, the default value is all available SYNC_UL codes and
	-- all available sub-channels with subchannelSize=size1. 
	accessServiceClass-TDD-LCR					AccessServiceClass-TDD-LCR-r4  	OPTIONAL
}

AvailableAP-Signature-VCAMList ::=	SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF
										AP-Signature-VCAM

AvailableAP-SignatureList ::=		SEQUENCE (SIZE (1..maxPCPCH-APsig)) OF
										AP-Signature

AvailableAP-SubchannelList ::=		SEQUENCE (SIZE (1..maxPCPCH-APsubCh)) OF
										AP-Subchannel

AvailableMinimumSF-ListVCAM ::=		SEQUENCE (SIZE (1..maxPCPCH-SF)) OF
										AvailableMinimumSF-VCAM

AvailableMinimumSF-VCAM ::=			SEQUENCE {
	minimumSpreadingFactor				MinimumSpreadingFactor,
	nf-Max								NF-Max,
	maxAvailablePCPCH-Number			MaxAvailablePCPCH-Number,
	availableAP-Signature-VCAMList		AvailableAP-Signature-VCAMList
}

AvailableSignatures ::=			BIT STRING {
									signature15(0),
									signature14(1),
									signature13(2),
									signature12(3),
									signature11(4),
									signature10(5),
									signature9(6),
									signature8(7),
									signature7(8),
									signature6(9),
									signature5(10),
									signature4(11),
									signature3(12),
									signature2(13),
									signature1(14),
									signature0(15)
									}	 (SIZE(16))

AvailableSubChannelNumbers ::=		BIT STRING {
										subCh11(0),
										subCh10(1),
									 	subCh9(2),
									 	subCh8(3),
									 	subCh7(4),
									 	subCh6(5),
									 	subCh5(6),
									 	subCh4(7),
									 	subCh3(8),
									 	subCh2(9),
									 	subCh1(10),
									 	subCh0(11)
										} 	 (SIZE(12))

BEACON-PL-Est ::=					ENUMERATED { true }

BurstType ::=						ENUMERATED {
										type1, type2 }

-- Actual value Bler-Target = IE value * 0.05
Bler-Target ::=						INTEGER (-63..0)

CCTrCH-PowerControlInfo ::=			SEQUENCE {
	tfcs-Identity						TFCS-Identity						OPTIONAL,
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo
}

CCTrCH-PowerControlInfo-r4 ::=		SEQUENCE {
	tfcs-Identity						TFCS-Identity						OPTIONAL,
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r4
}

CCTrCH-PowerControlInfo-r5 ::=		SEQUENCE {
	tfcs-Identity						TFCS-Identity						OPTIONAL,
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r5
}

CCTrCH-PowerControlInfo-r7 ::=		SEQUENCE {
	tfcs-Identity						TFCS-Identity						OPTIONAL,
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r7
}

CD-AccessSlotSubchannel ::=			INTEGER (0..11)

CD-AccessSlotSubchannelList ::=		SEQUENCE (SIZE (1..maxPCPCH-CDsubCh)) OF
										CD-AccessSlotSubchannel

CD-CA-ICH-ChannelisationCode ::=	INTEGER (0..255)

CD-PreambleScramblingCode ::=		INTEGER (0..79)

CD-SignatureCode ::=				INTEGER (0..15)

CD-SignatureCodeList ::=			SEQUENCE (SIZE (1..maxPCPCH-CDsig)) OF
										CD-SignatureCode

CellAndChannelIdentity ::=			SEQUENCE {
	-- burstType may be set to either value and should be ignored by the receiver for 1.28 Mcps TDD.
	burstType							BurstType,
	midambleShift						MidambleShiftLong,
	timeslot							TimeslotNumber,
	cellParametersID					CellParametersID
	}

CellParametersID ::=				INTEGER (0..127)

Cfntargetsfnframeoffset ::=				INTEGER(0..255)

ChannelAssignmentActive ::=			CHOICE {
	notActive							NULL,
	isActive							AvailableMinimumSF-ListVCAM
}

ChannelisationCode256 ::=			INTEGER (0..255)

ChannelReqParamsForUCSM ::=			SEQUENCE {
	availableAP-SignatureList			AvailableAP-SignatureList,
	availableAP-SubchannelList			AvailableAP-SubchannelList			OPTIONAL
}

ClosedLoopTimingAdjMode ::=			ENUMERATED {
										slot1, slot2 }

CodeNumberDSCH ::=					INTEGER (0..255)

CodeRange ::=						SEQUENCE {
	pdsch-CodeMapList					PDSCH-CodeMapList
}

CodeWordSet ::=						ENUMERATED {
										longCWS,
										mediumCWS,
										shortCWS,
										ssdtOff }

CommonTimeslotInfo ::=				SEQUENCE {
	-- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single
	-- bit it is not defined as OPTIONAL.
	secondInterleavingMode				SecondInterleavingMode,
	tfci-Coding							TFCI-Coding							OPTIONAL,
	puncturingLimit						PuncturingLimit,
	repetitionPeriodAndLength			RepetitionPeriodAndLength			OPTIONAL
}

CommonTimeslotInfoSCCPCH ::=		SEQUENCE {
	-- TABULAR: secondInterleavingMode is MD, but since it can be encoded in a single
	-- bit it is not defined as OPTIONAL.
	secondInterleavingMode				SecondInterleavingMode,
	tfci-Coding							TFCI-Coding							OPTIONAL,
	puncturingLimit						PuncturingLimit,
	repetitionPeriodLengthAndOffset		RepetitionPeriodLengthAndOffset		OPTIONAL
}

ConstantValue ::=					INTEGER (-35..-10)

ConstantValueTdd ::=				INTEGER (-35..10)

CPCH-PersistenceLevels ::=			SEQUENCE {
	cpch-SetID							CPCH-SetID,
	dynamicPersistenceLevelTF-List		DynamicPersistenceLevelTF-List	
}

CPCH-PersistenceLevelsList ::=		SEQUENCE (SIZE (1..maxCPCHsets)) OF
										CPCH-PersistenceLevels

CPCH-SetInfo ::=					SEQUENCE {
	cpch-SetID							CPCH-SetID,
	transportFormatSet					TransportFormatSet,
	tfcs								TFCS,
	ap-PreambleScramblingCode			AP-PreambleScramblingCode,
	ap-AICH-ChannelisationCode			AP-AICH-ChannelisationCode,
	cd-PreambleScramblingCode			CD-PreambleScramblingCode,
	cd-CA-ICH-ChannelisationCode		CD-CA-ICH-ChannelisationCode,
	cd-AccessSlotSubchannelList			CD-AccessSlotSubchannelList			OPTIONAL,
	cd-SignatureCodeList				CD-SignatureCodeList				OPTIONAL,
	deltaPp-m							DeltaPp-m,
	ul-DPCCH-SlotFormat					UL-DPCCH-SlotFormat,
	n-StartMessage						N-StartMessage,
	n-EOT								N-EOT,
	-- TABULAR: VCAM info has been nested inside ChannelAssignmentActive,
	-- which in turn is mandatory since it's only a binary choice.
	channelAssignmentActive				ChannelAssignmentActive,
	cpch-StatusIndicationMode			CPCH-StatusIndicationMode,
	pcpch-ChannelInfoList				PCPCH-ChannelInfoList
}

CPCH-SetInfoList ::=				SEQUENCE (SIZE (1..maxCPCHsets)) OF
										CPCH-SetInfo

CPCH-StatusIndicationMode ::=		ENUMERATED {
										pa-mode,
										pamsf-mode }

CQI-RepetitionFactor ::=			INTEGER(1..4)

CSICH-PowerOffset ::=				INTEGER (-10..5)

-- DefaultDPCH-OffsetValueFDD and DefaultDPCH-OffsetValueTDD corresponds to 
-- IE "Default DPCH Offset Value" depending on the mode.
-- Actual value DefaultDPCH-OffsetValueFDD = IE value * 512 
DefaultDPCH-OffsetValueFDD ::=		INTEGER (0..599)

DefaultDPCH-OffsetValueTDD ::=		INTEGER (0..7)

DeltaPp-m ::=						INTEGER (-10..10)

DeltaCQI ::=						INTEGER (0..8)

DeltaNACK ::=						INTEGER (0..8)

DeltaACK ::=						INTEGER (0..8)

-- Actual value DeltaSIR = IE value * 0.1
DeltaSIR ::=						INTEGER (0..30)

DHS-Sync ::=						INTEGER (-20..10)

DL-CCTrCh ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes				OPTIONAL,
	ul-CCTrChTPCList					UL-CCTrChTPCList					OPTIONAL	
}

DL-CCTrCh-r4 ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes	OPTIONAL
		},
		tdd128								SEQUENCE {
			dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	},
	ul-CCTrChTPCList					UL-CCTrChTPCList		OPTIONAL
}

DL-CCTrCh-r7 ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes	OPTIONAL
		},
		tdd768								SEQUENCE {
			dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes-VHCR		OPTIONAL
		},
		tdd128								SEQUENCE {
			dl-CCTrCH-TimeslotsCodes			DownlinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	},
	ul-CCTrChTPCList					UL-CCTrChTPCList		OPTIONAL
}

DL-CCTrChList ::=					SEQUENCE (SIZE (1..maxCCTrCH)) OF
										DL-CCTrCh

DL-CCTrChList-r7 ::=				SEQUENCE (SIZE (1..maxCCTrCH)) OF
										DL-CCTrCh-r7

DL-CCTrChList-r4 ::=				SEQUENCE (SIZE (1..maxCCTrCH)) OF
										DL-CCTrCh-r4

DL-CCTrChListToRemove ::=			SEQUENCE (SIZE (1..maxCCTrCH)) OF
										TFCS-IdentityPlain

DL-CCTrChTPCList ::=				SEQUENCE (SIZE (0..maxCCTrCH)) OF
											TFCS-Identity

DL-ChannelisationCode ::=			SEQUENCE {
	secondaryScramblingCode				SecondaryScramblingCode				OPTIONAL,
	sf-AndCodeNumber					SF512-AndCodeNumber,
	scramblingCodeChange				ScramblingCodeChange				OPTIONAL
}

DL-ChannelisationCodeList ::=		SEQUENCE (SIZE (1..maxDPCH-DLchan)) OF
										DL-ChannelisationCode

DL-CommonInformation ::=			SEQUENCE {
	dl-DPCH-InfoCommon					DL-DPCH-InfoCommon			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueFDD	OPTIONAL,
			dpch-CompressedModeInfo				DPCH-CompressedModeInfo		OPTIONAL,
			tx-DiversityMode					TX-DiversityMode			OPTIONAL,
			-- dummy is not used in this version of the specification, it should
			-- not be sent and if received it should be ignored.
			dummy								SSDT-Information			OPTIONAL
		},
		tdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueTDD	OPTIONAL
		}
	}
}

DL-CommonInformation-r4 ::=			SEQUENCE {
	dl-DPCH-InfoCommon					DL-DPCH-InfoCommon-r4		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueFDD	OPTIONAL,
			dpch-CompressedModeInfo				DPCH-CompressedModeInfo		OPTIONAL,
			tx-DiversityMode					TX-DiversityMode			OPTIONAL,
			-- dummy is not used in this version of the specification, it should
			-- not be sent and if received it should be ignored.
			dummy								SSDT-Information-r4			OPTIONAL
		},
		tdd									SEQUENCE {
			tddOption							CHOICE {
				tdd384								NULL,
				tdd128								SEQUENCE {
					tstd-Indicator						BOOLEAN
				}
			},
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueTDD	OPTIONAL
		}
	}
}


DL-CommonInformation-r5 ::=			SEQUENCE {
	dl-DPCH-InfoCommon					DL-DPCH-InfoCommon-r4			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueFDD	OPTIONAL,
			dpch-CompressedModeInfo				DPCH-CompressedModeInfo		OPTIONAL,
			tx-DiversityMode					TX-DiversityMode			OPTIONAL,
			-- dummy is not used in this version of the specification, it should
			-- not be sent and if received it should be ignored.
			dummy								SSDT-Information-r4			OPTIONAL
		},
		tdd									SEQUENCE {
			tddOption							CHOICE {
				tdd384								NULL,
				tdd128								SEQUENCE {
					tstd-Indicator						BOOLEAN
				}
			},
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueTDD	OPTIONAL
		}
	},
	mac-hsResetIndicator				ENUMERATED { true }			OPTIONAL
}

DL-CommonInformation-r6 ::=			SEQUENCE {
	dl-dpchInfoCommon					CHOICE {
		dl-DPCH-InfoCommon					DL-DPCH-InfoCommon-r6,
		dl-FDPCH-InfoCommon					DL-FDPCH-InfoCommon-r6
	}																		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueFDD	OPTIONAL,
			dpch-CompressedModeInfo				DPCH-CompressedModeInfo		OPTIONAL,
			tx-DiversityMode					TX-DiversityMode			OPTIONAL
		},
		tdd									SEQUENCE {
			tddOption							CHOICE {
				tdd384								NULL,
				tdd128								SEQUENCE {
					tstd-Indicator						BOOLEAN
				}
			},
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueTDD	OPTIONAL
		}
	},
	mac-hsResetIndicator				ENUMERATED { true }			OPTIONAL,
	postVerificationPeriod				ENUMERATED { true }			OPTIONAL
}

DL-CommonInformation-r7 ::=			SEQUENCE {
	dl-dpchInfoCommon					CHOICE {
		dl-DPCH-InfoCommon					DL-DPCH-InfoCommon-r6,
		dl-FDPCH-InfoCommon					DL-FDPCH-InfoCommon-r6
	}																		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueFDD	OPTIONAL,
			dpch-CompressedModeInfo				DPCH-CompressedModeInfo		OPTIONAL,
			tx-DiversityMode					TX-DiversityMode			OPTIONAL
		},
		tdd									SEQUENCE {
			tddOption							CHOICE {
				tdd384								NULL,
				tdd768								NULL,
				tdd128								SEQUENCE {
					tstd-Indicator						BOOLEAN
				}
			},
			defaultDPCH-OffsetValue				DefaultDPCH-OffsetValueTDD	OPTIONAL
		}
	},
	mac-hsResetIndicator				ENUMERATED { true }			OPTIONAL,
	postVerificationPeriod				ENUMERATED { true }			OPTIONAL
}

DL-CommonInformationPost ::=		SEQUENCE {
	dl-DPCH-InfoCommon					DL-DPCH-InfoCommonPost
}

DL-CommonInformationPredef ::=		SEQUENCE {
	dl-DPCH-InfoCommon					DL-DPCH-InfoCommonPredef	OPTIONAL
}

DL-CompressedModeMethod ::=			ENUMERATED {
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received the UE behaviour is not specified.
										dummy, sf-2,
										higherLayerScheduling }

DL-DPCH-InfoCommon ::=				SEQUENCE {
	cfnHandling							CHOICE {
		maintain							NULL,
		initialise							SEQUENCE {
			-- IE dummy is not used in this version of the specification
			-- The IE should not be sent and if received it should be ignored
			dummy								Cfntargetsfnframeoffset				OPTIONAL
		}
	},
	modeSpecificInfo					CHOICE {
		fdd 								SEQUENCE {
			dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL,
			powerOffsetPilot-pdpdch				PowerOffsetPilot-pdpdch,
			dl-rate-matching-restriction		Dl-rate-matching-restriction		OPTIONAL,
			-- TABULAR: The number of pilot bits is nested inside the spreading factor.
			spreadingFactorAndPilot				SF512-AndPilot,
			positionFixedOrFlexible				PositionFixedOrFlexible,
			tfci-Existence						BOOLEAN
		},
		tdd									SEQUENCE {
			dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL
		}
	}
}

DL-DPCH-InfoCommon-r4 ::=			SEQUENCE {
	cfnHandling							CHOICE {
		maintain							NULL,
		initialise							SEQUENCE {
			-- IE dummy is not used in this version of the specification
			-- The IE should not be sent and if received it should be ignored
			dummy								Cfntargetsfnframeoffset				OPTIONAL
		}
	},
	modeSpecificInfo					CHOICE {
		fdd 								SEQUENCE {
			dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL,
			powerOffsetPilot-pdpdch				PowerOffsetPilot-pdpdch,
			dl-rate-matching-restriction		Dl-rate-matching-restriction		OPTIONAL,
			-- TABULAR: The number of pilot bits is nested inside the spreading factor.
			spreadingFactorAndPilot				SF512-AndPilot,
			positionFixedOrFlexible				PositionFixedOrFlexible,
			tfci-Existence						BOOLEAN
		},
		tdd									SEQUENCE {
			dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL
		}
	},
-- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup-r4-IEs or 
-- RRCConnectionSetup-r5-IEs or HandoverToUTRANCommand-r4-IEs or HandoverToUTRANCommand-r5-IEs and
-- if the IE is included, the general error handling for conditional IEs applies.
	mac-d-HFN-initial-value				MAC-d-HFN-initial-value				OPTIONAL

}

DL-DPCH-InfoCommon-r6 ::=				SEQUENCE {
	cfnHandling								CHOICE {
		maintain								SEQUENCE {
			timingmaintainedsynchind				TimingMaintainedSynchInd			OPTIONAL
		},
		initialise								NULL
	},
	modeSpecificInfo						CHOICE {
		fdd 									SEQUENCE {
			dl-DPCH-PowerControlInfo				DL-DPCH-PowerControlInfo			OPTIONAL,
			powerOffsetPilot-pdpdch					PowerOffsetPilot-pdpdch,
			dl-rate-matching-restriction			Dl-rate-matching-restriction		OPTIONAL,
			-- TABULAR: The number of pilot bits is nested inside the spreading factor.
			spreadingFactorAndPilot					SF512-AndPilot,
			positionFixedOrFlexible					PositionFixedOrFlexible,
			tfci-Existence							BOOLEAN
		},
		tdd									SEQUENCE {
			dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL
		}
	},
	-- The IE mac-d-HFN-initial-value should be absent in the RRCConnectionSetup and the
	-- HandoverToUTRANCommand messages. If the IE is included, the general error handling
	-- for conditional IEs applies.
	mac-d-HFN-initial-value				MAC-d-HFN-initial-value				OPTIONAL
}

DL-DPCH-InfoCommonPost ::=			SEQUENCE {
	dl-DPCH-PowerControlInfo			DL-DPCH-PowerControlInfo				OPTIONAL
}

DL-DPCH-InfoCommonPredef ::=		SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			-- TABULAR: The number of pilot bits is nested inside the spreading factor.
			spreadingFactorAndPilot				SF512-AndPilot,
			positionFixedOrFlexible				PositionFixedOrFlexible,
			tfci-Existence						BOOLEAN
		},
		tdd									SEQUENCE {
			commonTimeslotInfo					CommonTimeslotInfo
		}
	}
}

DL-DPCH-InfoPerRL ::=				CHOICE {
	fdd									SEQUENCE {
		pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
		dpch-FrameOffset					DPCH-FrameOffset,
		secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
		dl-ChannelisationCodeList			DL-ChannelisationCodeList,
		tpc-CombinationIndex				TPC-CombinationIndex,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-CellIdentity				OPTIONAL,
		closedLoopTimingAdjMode				ClosedLoopTimingAdjMode			OPTIONAL
	},
	tdd									SEQUENCE {
		dl-CCTrChListToEstablish			DL-CCTrChList					OPTIONAL,
		dl-CCTrChListToRemove				DL-CCTrChListToRemove			OPTIONAL
	}
}

DL-DPCH-InfoPerRL-r4 ::=			CHOICE {
	fdd									SEQUENCE {
		pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
		dpch-FrameOffset					DPCH-FrameOffset,
		secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
		dl-ChannelisationCodeList			DL-ChannelisationCodeList,
		tpc-CombinationIndex				TPC-CombinationIndex,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-CellIdentity				OPTIONAL,
		closedLoopTimingAdjMode				ClosedLoopTimingAdjMode			OPTIONAL
	},
	tdd									SEQUENCE {
		dl-CCTrChListToEstablish			DL-CCTrChList-r4				OPTIONAL,
		dl-CCTrChListToRemove				DL-CCTrChListToRemove			OPTIONAL
	}
}

DL-DPCH-InfoPerRL-r5 ::=			CHOICE {
	fdd									SEQUENCE {
		pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
		dpch-FrameOffset					DPCH-FrameOffset,
		secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
		dl-ChannelisationCodeList			DL-ChannelisationCodeList,
		tpc-CombinationIndex				TPC-CombinationIndex,
		powerOffsetTPC-pdpdch				PowerOffsetTPC-pdpdch			OPTIONAL,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy								SSDT-CellIdentity				OPTIONAL,
		closedLoopTimingAdjMode				ClosedLoopTimingAdjMode			OPTIONAL
	},
	tdd									SEQUENCE {
		dl-CCTrChListToEstablish			DL-CCTrChList-r4				OPTIONAL,
		dl-CCTrChListToRemove				DL-CCTrChListToRemove			OPTIONAL
	}
}

DL-DPCH-InfoPerRL-r6 ::=			CHOICE {
	fdd									SEQUENCE {
		pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
		dpch-FrameOffset					DPCH-FrameOffset,
		secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
		dl-ChannelisationCodeList			DL-ChannelisationCodeList,
		tpc-CombinationIndex				TPC-CombinationIndex,
		powerOffsetTPC-pdpdch				PowerOffsetTPC-pdpdch			OPTIONAL,
		closedLoopTimingAdjMode				ClosedLoopTimingAdjMode			OPTIONAL
	},
	tdd									SEQUENCE {
		dl-CCTrChListToEstablish			DL-CCTrChList-r4				OPTIONAL,
		dl-CCTrChListToRemove				DL-CCTrChListToRemove			OPTIONAL
	}
}

DL-DPCH-InfoPerRL-r7 ::=			CHOICE {
	fdd									SEQUENCE {
		pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
		dpch-FrameOffset					DPCH-FrameOffset,
		secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
		dl-ChannelisationCodeList			DL-ChannelisationCodeList,
		tpc-CombinationIndex				TPC-CombinationIndex,
		powerOffsetTPC-pdpdch				PowerOffsetTPC-pdpdch			OPTIONAL,
		closedLoopTimingAdjMode				ClosedLoopTimingAdjMode			OPTIONAL
	},
	tdd									SEQUENCE {
		dl-CCTrChListToEstablish			DL-CCTrChList-r7				OPTIONAL,
		dl-CCTrChListToRemove				DL-CCTrChListToRemove			OPTIONAL
	}
}

DL-FDPCH-InfoPerRL-r6 ::=			SEQUENCE {
	pCPICH-UsageForChannelEst			PCPICH-UsageForChannelEst,
	fdpch-FrameOffset					DPCH-FrameOffset,
	secondaryCPICH-Info					SecondaryCPICH-Info				OPTIONAL,
	secondaryScramblingCode				SecondaryScramblingCode			OPTIONAL,
	dl-ChannelisationCode				INTEGER (0..255),
	tpc-CombinationIndex				TPC-CombinationIndex
}

DL-DPCH-InfoPerRL-PostFDD ::=								SEQUENCE {
		pCPICH-UsageForChannelEst				PCPICH-UsageForChannelEst,
		dl-ChannelisationCode					DL-ChannelisationCode,
		tpc-CombinationIndex					TPC-CombinationIndex
}

DL-DPCH-InfoPerRL-PostTDD ::=				SEQUENCE {
	dl-DPCH-TimeslotsCodes						DownlinkTimeslotsCodes
}

DL-DPCH-InfoPerRL-PostTDD-LCR-r4 ::=		SEQUENCE {
	dl-CCTrCH-TimeslotsCodes					DownlinkTimeslotsCodes-LCR-r4
}

DL-DPCH-PowerControlInfo ::=			SEQUENCE {
	modeSpecificInfo						CHOICE {
		fdd										SEQUENCE {
			dpc-Mode								DPC-Mode
		},
		tdd										SEQUENCE {
			tpc-StepSizeTDD							TPC-StepSizeTDD			OPTIONAL
		}
	}
}

DL-FDPCH-InfoCommon-r6 ::=			SEQUENCE {
	cfnHandling							CHOICE {
		maintain							SEQUENCE {
			timingmaintainedsynchind			TimingMaintainedSynchInd			OPTIONAL
		},
		initialise							NULL
	},
	dl-FDPCH-PowerControlInfo			DL-DPCH-PowerControlInfo			OPTIONAL,
-- Actual value dl-FDPCH-TPCcommandErrorRate = IE value * 0.01
-- dl-FDPCH-TPCcommandErrorRate values 11..16 are spare and shall not be used in this version of 
-- the protocol
	dl-FDPCH-TPCcommandErrorRate		INTEGER (1..16)		OPTIONAL
}

DL-FrameType ::=					ENUMERATED {
										dl-FrameTypeA, dl-FrameTypeB }

DL-HSPDSCH-Information ::=			SEQUENCE {
	hs-scch-Info					HS-SCCH-Info	OPTIONAL,
	measurement-feedback-Info		Measurement-Feedback-Info	OPTIONAL,
	modeSpecificInfo				CHOICE {
	tdd								CHOICE{
			tdd384							SEQUENCE {
				dl-HSPDSCH-TS-Configuration	DL-HSPDSCH-TS-Configuration	  	OPTIONAL
			},
			tdd128							SEQUENCE {
				hs-PDSCH-Midamble-Configuration-tdd128
						HS-PDSCH-Midamble-Configuration-TDD128				OPTIONAL
			}
		},
		fdd							NULL
	}
}

DL-HSPDSCH-Information-r6 ::=	SEQUENCE {
	hs-scch-Info					HS-SCCH-Info-r6							OPTIONAL,
	measurement-feedback-Info		Measurement-Feedback-Info				OPTIONAL,
	modeSpecificInfo				CHOICE {
		tdd								CHOICE {
			tdd384							SEQUENCE {
				dl-HSPDSCH-TS-Configuration		DL-HSPDSCH-TS-Configuration	OPTIONAL
			},
			tdd128							SEQUENCE {
				hs-PDSCH-Midamble-Configuration-tdd128
						HS-PDSCH-Midamble-Configuration-TDD128				OPTIONAL
			}
		},
		fdd							NULL
	}
}

DL-HSPDSCH-Information-r7 ::=	SEQUENCE {
	hs-scch-Info					HS-SCCH-Info-r7							OPTIONAL,
	measurement-feedback-Info		Measurement-Feedback-Info				OPTIONAL,
	modeSpecificInfo				CHOICE {
		tdd								CHOICE {
			tdd384							SEQUENCE {
				dl-HSPDSCH-TS-Configuration		DL-HSPDSCH-TS-Configuration	OPTIONAL
			},
			tdd768							SEQUENCE {
				dl-HSPDSCH-TS-Configuration		DL-HSPDSCH-TS-Configuration-VHCR	OPTIONAL
			},
			tdd128							SEQUENCE {
				hs-PDSCH-Midamble-Configuration-tdd128
						HS-PDSCH-Midamble-Configuration-TDD128						OPTIONAL
			}
		},
		fdd							NULL
	}
}

-- The IE 'DL-HSPDSCH-TS-Configuration' applies to tdd-384 REL-5 onward
DL-HSPDSCH-TS-Configuration ::=		SEQUENCE (SIZE (1..maxTS-1)) OF
										SEQUENCE {
	timeslot								TimeslotNumber,
	midambleShiftAndBurstType				MidambleShiftAndBurstType-DL
}

-- The IE 'DL-HSPDSCH-TS-Configuration-VHCR' applies to tdd-768 REL-7 onward
DL-HSPDSCH-TS-Configuration-VHCR ::= SEQUENCE (SIZE (1..maxTS-1)) OF
										SEQUENCE {
	timeslot								TimeslotNumber,
	midambleShiftAndBurstType				MidambleShiftAndBurstType-DL-VHCR
}

DL-InformationPerRL ::=				SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			-- dummy1 and dummy 2 are not used in this version of specification, they should
			-- not be sent and if received they should be ignored.
			dummy1								PDSCH-SHO-DCH-Info			OPTIONAL,
			dummy2								PDSCH-CodeMapping			OPTIONAL
		},
		tdd									PrimaryCCPCH-Info
	},
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL					OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy								SCCPCH-InfoForFACH					OPTIONAL
}

DL-InformationPerRL-r4 ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			-- dummy1 and dummy 2 are not used in this version of specification, they should
			-- not be sent and if received they should be ignored.
			dummy1								PDSCH-SHO-DCH-Info			OPTIONAL,
			dummy2								PDSCH-CodeMapping			OPTIONAL
		},
		tdd									PrimaryCCPCH-Info-r4
	},
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r4				OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy								SCCPCH-InfoForFACH-r4				OPTIONAL,
	cell-id								CellIdentity						OPTIONAL
}

DL-InformationPerRL-r5 ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			-- dummy1 and dummy 2 are not used in this version of specification, they should
			-- not be sent and if received they should be ignored.
			dummy1								PDSCH-SHO-DCH-Info			OPTIONAL,
			dummy2								PDSCH-CodeMapping			OPTIONAL,
			servingHSDSCH-RL-indicator			BOOLEAN
		},
		tdd									PrimaryCCPCH-Info-r4
	},
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r5				OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy								SCCPCH-InfoForFACH-r4				OPTIONAL,
	cell-id								CellIdentity						OPTIONAL
}

DL-InformationPerRL-r5bis ::=		SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			-- dummy1 and dummy 2 are not used in this version of specification, they should
			-- not be sent and if received they should be ignored.
			dummy1								PDSCH-SHO-DCH-Info			OPTIONAL,
			dummy2								PDSCH-CodeMapping			OPTIONAL
		},
		tdd									PrimaryCCPCH-Info-r4
	},
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r5				OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy								SCCPCH-InfoForFACH-r4				OPTIONAL,
	cell-id								CellIdentity						OPTIONAL
}

DL-InformationPerRL-r6 ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			servingHSDSCH-RL-indicator			BOOLEAN,
			servingEDCH-RL-indicator			BOOLEAN
		},
		tdd									PrimaryCCPCH-Info-r4
	},
	dl-dpchInfo							CHOICE {
		dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r6,
		dl-FDPCH-InfoPerRL					DL-FDPCH-InfoPerRL-r6
	}																		OPTIONAL,
	e-AGCH-Information					E-AGCH-Information					OPTIONAL,
	e-HICH-Info							CHOICE	{
		e-HICH-Information					E-HICH-Information,
		releaseIndicator					NULL
	}	OPTIONAL,
	e-RGCH-Info							CHOICE	{
		e-RGCH-Information					E-RGCH-Information,
		releaseIndicator					NULL
	}	OPTIONAL,
	cell-id								CellIdentity						OPTIONAL
}

DL-InformationPerRL-r7 ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			servingHSDSCH-RL-indicator			BOOLEAN,
			servingEDCH-RL-indicator			BOOLEAN
		},
		tdd									PrimaryCCPCH-Info-r7
	},
	dl-dpchInfo							CHOICE {
		dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r7,
		dl-FDPCH-InfoPerRL					DL-FDPCH-InfoPerRL-r6
	}																		OPTIONAL,
	e-AGCH-Information					E-AGCH-Information					OPTIONAL,
	e-HICH-Info							CHOICE	{
		e-HICH-Information					E-HICH-Information,
		releaseIndicator					NULL
	}	OPTIONAL,
	e-RGCH-Info							CHOICE	{
		e-RGCH-Information					E-RGCH-Information,
		releaseIndicator					NULL
	}	OPTIONAL,
	cell-id								CellIdentity						OPTIONAL
}

DL-InformationPerRL-List ::=		SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL

DL-InformationPerRL-List-r4 ::=		SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL-r4

DL-InformationPerRL-List-r5 ::=		SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL-r5

DL-InformationPerRL-List-r6 ::=		SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL-r6

DL-InformationPerRL-List-r5bis ::=		SEQUENCE (SIZE (1..maxRL)) OF
											DL-InformationPerRL-r5bis

DL-InformationPerRL-List-r7 ::=		SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL-r7

DL-InformationPerRL-ListPostFDD ::=	SEQUENCE (SIZE (1..maxRL)) OF
										DL-InformationPerRL-PostFDD

DL-InformationPerRL-PostFDD ::=		SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-PostFDD
}

DL-InformationPerRL-PostTDD ::=		SEQUENCE {
	primaryCCPCH-Info					PrimaryCCPCH-InfoPost,
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-PostTDD
}

DL-InformationPerRL-PostTDD-LCR-r4 ::=	SEQUENCE {
	primaryCCPCH-Info					PrimaryCCPCH-InfoPostTDD-LCR-r4,
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-PostTDD-LCR-r4
}

DL-PDSCH-Information ::=			SEQUENCE {
	-- dummy1 and dummy 2 are not used in this version of specification, it should
	-- not be sent and if received it should be ignored.
	dummy1								PDSCH-SHO-DCH-Info					OPTIONAL,
	dummy2								PDSCH-CodeMapping					OPTIONAL
}

Dl-rate-matching-restriction ::=	SEQUENCE {
	restrictedTrCH-InfoList				RestrictedTrCH-InfoList				OPTIONAL
}

DL-TPC-PowerOffsetPerRL ::=		SEQUENCE {
		powerOffsetTPC-pdpdch				PowerOffsetTPC-pdpdch			OPTIONAL
}

-- NOTE: The radio links in the following list have a one-to-one mapping with the 
-- radio links in the message.
DL-TPC-PowerOffsetPerRL-List ::=	SEQUENCE (SIZE (1..maxRL)) OF
										DL-TPC-PowerOffsetPerRL

DL-TS-ChannelisationCode ::=		ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

DL-TS-ChannelisationCode-VHCR ::=	ENUMERATED {
										cc32-1, cc32-2, cc32-3, cc32-4,
										cc132-5, cc32-6, cc32-7, cc32-8,
										cc32-9, cc32-10, cc32-11, cc32-12,
										cc32-13, cc32-14, cc32-15, cc32-16,
										cc32-17, cc32-18, cc32-19, cc32-20,
										cc32-21, cc32-22, cc32-23, cc32-24,
										cc32-25, cc32-26, cc32-27, cc32-28,
										cc32-29, cc32-30, cc32-31, cc32-32 }

DL-TS-ChannelisationCodesShort ::=	SEQUENCE {
	codesRepresentation					CHOICE {
		consecutive							SEQUENCE {
			firstChannelisationCode				DL-TS-ChannelisationCode,
			lastChannelisationCode				DL-TS-ChannelisationCode
		},
		bitmap								BIT STRING {
												chCode16-SF16(0),
												chCode15-SF16(1),
												chCode14-SF16(2),
												chCode13-SF16(3),
												chCode12-SF16(4),
												chCode11-SF16(5),
												chCode10-SF16(6),
												chCode9-SF16(7),
												chCode8-SF16(8),
												chCode7-SF16(9),
												chCode6-SF16(10),
												chCode5-SF16(11),
												chCode4-SF16(12),
												chCode3-SF16(13),
												chCode2-SF16(14),
												chCode1-SF16(15)
												} 	(SIZE (16))
	}
}

DL-TS-ChannelisationCodesShort-VHCR ::=	SEQUENCE {
	codesRepresentation					CHOICE {
		consecutive							SEQUENCE {
			firstChannelisationCode				DL-TS-ChannelisationCode-VHCR,
			lastChannelisationCode				DL-TS-ChannelisationCode-VHCR
		},
		bitmap								BIT STRING {
												chCode32-SF32(0),
												chCode31-SF32(1),
												chCode30-SF32(2),
												chCode29-SF32(3),
												chCode28-SF32(4),
												chCode27-SF32(5),
												chCode26-SF32(6),
												chCode25-SF32(7),
												chCode24-SF32(8),
												chCode23-SF32(9),
												chCode22-SF32(10),
												chCode21-SF32(11),
												chCode20-SF32(12),
												chCode19-SF32(13),
												chCode18-SF32(14),
												chCode17-SF32(15),
												chCode16-SF32(16),
												chCode15-SF32(17),
												chCode14-SF32(18),
												chCode13-SF32(19),
												chCode12-SF32(20),
												chCode11-SF32(21),
												chCode10-SF32(22),
												chCode9-SF32(23),
												chCode8-SF32(24),
												chCode7-SF32(25),
												chCode6-SF32(26),
												chCode5-SF32(27),
												chCode4-SF32(28),
												chCode3-SF32(29),
												chCode2-SF32(30),
												chCode1-SF32(31)
												} 	(SIZE (32))
	}
}

DownlinkAdditionalTimeslots ::=		SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo				IndividualTimeslotInfo,
			dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort
		}
	}
}

DownlinkAdditionalTimeslots-VHCR ::= SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo				IndividualTimeslotInfo-VHCR,
			dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort-VHCR
		}
	}
}

DownlinkAdditionalTimeslots-LCR-r4 ::=	SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber-LCR-r4
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo				IndividualTimeslotInfo-LCR-r4,
			dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort
		}
	}
}

DownlinkTimeslotsCodes ::=		SEQUENCE {
	firstIndividualTimeslotInfo			IndividualTimeslotInfo,
	dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							INTEGER (1..maxTS-1),
			timeslotList						SEQUENCE (SIZE (1..maxTS-1)) OF
													DownlinkAdditionalTimeslots
		}
	}
}

DownlinkTimeslotsCodes-VHCR ::=		SEQUENCE {
	firstIndividualTimeslotInfo			IndividualTimeslotInfo-VHCR,
	dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							INTEGER (1..maxTS-1),
			timeslotList						SEQUENCE (SIZE (1..maxTS-1)) OF
													DownlinkAdditionalTimeslots-VHCR
		}
	}
}

DownlinkTimeslotsCodes-LCR-r4 ::=	SEQUENCE {
	firstIndividualTimeslotInfo			IndividualTimeslotInfo-LCR-r4,
	dl-TS-ChannelisationCodesShort		DL-TS-ChannelisationCodesShort,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							INTEGER (1..maxTS-LCR-1),
			timeslotList						SEQUENCE (SIZE (1..maxTS-LCR-1)) OF
													DownlinkAdditionalTimeslots-LCR-r4
		}
	}
}

DPC-Mode ::=						ENUMERATED {
										singleTPC,
										tpcTripletInSoft }	

-- Actual value DPCCH-PowerOffset = IE value * 2
DPCCH-PowerOffset ::=				INTEGER (-82..-3)

-- Actual value DPCCH-PowerOffset2 = 2 + (IE value * 4)
DPCCH-PowerOffset2 ::=				INTEGER (-28..-13)

DPCH-CompressedModeInfo ::=			SEQUENCE {
	tgp-SequenceList					TGP-SequenceList
}

DPCH-CompressedModeStatusInfo ::=	SEQUENCE {
	tgps-Reconfiguration-CFN			TGPS-Reconfiguration-CFN,
	tgp-SequenceShortList					SEQUENCE (SIZE (1..maxTGPS)) OF
											TGP-SequenceShort
}

-- Actual value DPCH-FrameOffset = IE value * 256
DPCH-FrameOffset::=					INTEGER (0..149)

DSCH-Mapping ::=					SEQUENCE {
	maxTFCI-Field2Value					MaxTFCI-Field2Value,
	spreadingFactor						SF-PDSCH,
	codeNumber							CodeNumberDSCH,
	multiCodeInfo						MultiCodeInfo
}

DSCH-MappingList ::=				SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF
										DSCH-Mapping

DSCH-RadioLinkIdentifier ::=		INTEGER (0..511)

DSCH-TransportChannelsInfo ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										SEQUENCE {
	dsch-transport-channel-identity			TransportChannelIdentity,
	dsch-TFS								TransportFormatSet
}
DurationTimeInfo ::=				INTEGER (1..4096)

DynamicPersistenceLevel ::=			INTEGER (1..8)

DynamicPersistenceLevelList ::=		SEQUENCE (SIZE (1..maxPRACH)) OF
										DynamicPersistenceLevel

DynamicPersistenceLevelTF-List ::= SEQUENCE (SIZE (1..maxTF-CPCH)) OF
										DynamicPersistenceLevel

DynamicTFInformationCCCH ::=		SEQUENCE {
	octetModeRLC-SizeInfoType2			OctetModeRLC-SizeInfoType2
}

E-AGCH-ChannelisationCode ::=		INTEGER (0..255)

E-AGCH-Information ::=				SEQUENCE {
	e-AGCH-ChannelisationCode			E-AGCH-ChannelisationCode
}

E-DCH-MinimumSet-E-TFCI ::=			INTEGER (0..127)

E-DCH-ReconfigurationInfo ::=	SEQUENCE {
	e-DCH-RL-InfoNewServingCell			E-DCH-RL-InfoNewServingCell				OPTIONAL,
	e-DCH-RL-InfoOtherCellList			SEQUENCE (SIZE (1..maxEDCHRL)) OF
											E-DCH-RL-InfoOtherCell				OPTIONAL
}

E-DCH-RL-InfoNewServingCell ::=		SEQUENCE {
	primaryCPICH-Info					PrimaryCPICH-Info,
	e-AGCH-Information					E-AGCH-Information,
	servingGrant						SEQUENCE {
		value								INTEGER (0..38)						OPTIONAL,
		primary-Secondary-GrantSelector		ENUMERATED { primary, secondary }
	}	OPTIONAL,
	e-DPCCH-DPCCH-PowerOffset			E-DPCCH-DPCCH-PowerOffset				OPTIONAL,
	reference-E-TFCIs					E-DPDCH-Reference-E-TFCIList			OPTIONAL,
	powerOffsetForSchedInfo				INTEGER (0..6)							OPTIONAL,
	threeIndexStepThreshold				INTEGER (0..37)							OPTIONAL,
	twoIndexStepThreshold				INTEGER (0..37)							OPTIONAL,
	e-HICH-Information					E-HICH-Information		OPTIONAL,
	e-RGCH-Info							CHOICE	{
		e-RGCH-Information					E-RGCH-Information,
		releaseIndicator					NULL
	}	OPTIONAL
}

E-DCH-RL-InfoOtherCell ::=			SEQUENCE {
	primaryCPICH-Info					PrimaryCPICH-Info,
	e-HICH-Info							CHOICE {
		e-HICH-Information					E-HICH-Information,
		releaseIndicator					NULL
	}	OPTIONAL,
	e-RGCH-Info							CHOICE {
		e-RGCH-Information					E-RGCH-Information,
		releaseIndicator					NULL
	}	OPTIONAL
}

E-DPCCH-Info ::=					SEQUENCE {
	e-DPCCH-DPCCH-PowerOffset			E-DPCCH-DPCCH-PowerOffset,
	happyBit-DelayCondition				HappyBit-DelayCondition
}

E-DPCCH-DPCCH-PowerOffset ::=		INTEGER (0..8)

E-DPDCH-Info ::=					SEQUENCE {
	e-TFCI-TableIndex					E-TFCI-TableIndex,
	e-DCH-MinimumSet-E-TFCI				E-DCH-MinimumSet-E-TFCI				OPTIONAL,
	reference-E-TFCIs					E-DPDCH-Reference-E-TFCIList,
	maxChannelisationCodes				E-DPDCH-MaxChannelisationCodes,
	pl-NonMax							E-DPDCH-PL-NonMax,
	schedulingInfoConfiguration			E-DPDCH-SchedulingInfoConfiguration,
	threeIndexStepThreshold				INTEGER (0..37)						OPTIONAL,
	twoIndexStepThreshold				INTEGER (0..37)						OPTIONAL
}

E-DPDCH-PeriodicyOfSchedInfo ::=	ENUMERATED {
										everyEDCHTTI, ms4, ms10, ms20, ms50, ms100, ms200, ms500,
										ms1000 }

-- The actual value of E-DPDCH-PL-NonMax is: IE value * 0.04
E-DPDCH-PL-NonMax ::=				INTEGER (11..25)

E-DPDCH-Reference-E-TFCI ::=		SEQUENCE {
	reference-E-TFCI					INTEGER (0..127),
	reference-E-TFCI-PO					INTEGER (0..29)
}

E-DPDCH-Reference-E-TFCIList ::=	SEQUENCE (SIZE (1..8)) OF E-DPDCH-Reference-E-TFCI

E-DPDCH-SchedulingInfoConfiguration ::= SEQUENCE {
	periodicityOfSchedInfo-NoGrant		E-DPDCH-PeriodicyOfSchedInfo		OPTIONAL,
	periodicityOfSchedInfo-Grant		E-DPDCH-PeriodicyOfSchedInfo		OPTIONAL,
	powerOffsetForSchedInfo				INTEGER (0..6)
}

E-DPDCH-SchedulingTransmConfiguration ::= SEQUENCE {
	ms2-SchedTransmGrantHARQAlloc		BIT STRING (SIZE (8))				OPTIONAL,
	servingGrant						SEQUENCE {
		value								INTEGER (0..38),
		primary-Secondary-GrantSelector		ENUMERATED { primary, secondary }
	}		OPTIONAL
}

E-DPDCH-MaxChannelisationCodes ::=	ENUMERATED {
										sf256, sf128, sf64, sf32, sf16, sf8, sf4, sf4x2, sf2x2, sf4x2-and-sf2x2 }

E-HICH-ChannelisationCode ::=		INTEGER (0..127)

E-HICH-Information ::=				SEQUENCE {
	channelisationCode					E-HICH-ChannelisationCode,
	signatureSequence					E-HICH-RGCH-SignatureSequence
}

E-HICH-RGCH-SignatureSequence ::=	INTEGER (0..39)

E-RGCH-CombinationIndex ::=			INTEGER (0..5)

E-RGCH-Information ::=				SEQUENCE {
	signatureSequence					E-HICH-RGCH-SignatureSequence,
	rg-CombinationIndex					E-RGCH-CombinationIndex
}

E-TFCI-TableIndex ::=				INTEGER (0..1)

EXT-UL-TimingAdvance ::=			SEQUENCE {
	modeSpecificInfo				CHOICE {
		tdd384							SEQUENCE {
			ex-ul-TimingAdvance			INTEGER (0..255)
		},
		tdd768							SEQUENCE {
			ex-ul-TimingAdvance			INTEGER (0..511)
		}
	}
}

FACH-PCH-Information ::=			SEQUENCE {
	transportFormatSet					TransportFormatSet,
	transportChannelIdentity			TransportChannelIdentity,
	ctch-Indicator						BOOLEAN
}

FACH-PCH-InformationList ::=		SEQUENCE (SIZE (1..maxFACHPCH)) OF
										FACH-PCH-Information

Feedback-cycle ::=					ENUMERATED {
										fc0, fc2, fc4, fc8, fc10, fc20, fc40, fc80, fc160}

FPACH-Info-r4 ::=						SEQUENCE {
	timeslot							TimeslotNumber-LCR-r4,
	channelisationCode					TDD-FPACH-CCode16-r4,
	midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
    wi                                  Wi-LCR
}

FrequencyInfo ::=					SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									FrequencyInfoFDD,
		tdd									FrequencyInfoTDD	}
}

FrequencyInfoFDD ::=				SEQUENCE {
	uarfcn-UL							UARFCN				OPTIONAL,
	uarfcn-DL							UARFCN
}

FrequencyInfoTDD ::=				SEQUENCE {
	uarfcn-Nt							UARFCN
}

HappyBit-DelayCondition ::=			ENUMERATED { 
										ms2, ms10, ms20, ms50, ms100, ms200, ms500, ms1000 }

HARQ-Preamble-Mode ::=				INTEGER (0..1)

HS-ChannelisationCode-LCR ::=		ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

HS-PDSCH-Midamble-Configuration-TDD128 ::=	SEQUENCE {
	midambleAllocationMode				CHOICE{
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					INTEGER (0..15)
    },
	-- Actual value midambleConfiguration = IE value * 2
	midambleConfiguration				INTEGER (1..8)
}

HS-SCCH-Info ::=					SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			hS-SCCHChannelisationCodeInfo		SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-Codes,
			dl-ScramblingCode					SecondaryScramblingCode		OPTIONAL
		},
		tdd									CHOICE {
			tdd384								SEQUENCE {
                nack-ack-power-offset      		   INTEGER (-7..8), 
                hs-SICH-PowerControl-Info  		   HS-SICH-Power-Control-Info-TDD384,
				hS-SCCH-SetConfiguration 		   SEQUENCE (SIZE (1..maxHSSCCHs)) OF
						HS-SCCH-TDD384
				},
			tdd128								SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-TDD128
		}
	}
}

HS-SCCH-Info-r6 ::=					SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			hS-SCCHChannelisationCodeInfo		SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-Codes,
			dl-ScramblingCode					SecondaryScramblingCode			OPTIONAL
		},
		tdd									CHOICE {
			tdd384								SEQUENCE {
				nack-ack-power-offset				INTEGER (-7..8), 
				hs-SICH-PowerControl-Info			HS-SICH-Power-Control-Info-TDD384,
				dhs-sync							DHS-Sync					OPTIONAL,
				bler-target							Bler-Target,
				hS-SCCH-SetConfiguration			SEQUENCE (SIZE (1..maxHSSCCHs)) OF
														HS-SCCH-TDD384-r6
				},
			tdd128								SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-TDD128
		}
	}
}

HS-SCCH-Info-r7 ::=					SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			hS-SCCHChannelisationCodeInfo		SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-Codes,
			dl-ScramblingCode					SecondaryScramblingCode			OPTIONAL
		},
		tdd									CHOICE {
			tdd384								SEQUENCE {
				nack-ack-power-offset				INTEGER (-7..8), 
				hs-SICH-PowerControl-Info			HS-SICH-Power-Control-Info-TDD384,
				dhs-sync							DHS-Sync					OPTIONAL,
				hS-SCCH-SetConfiguration			SEQUENCE (SIZE (1..maxHSSCCHs)) OF
														HS-SCCH-TDD384-r6
				},
			tdd768								SEQUENCE {
				nack-ack-power-offset				INTEGER (-7..8), 
				hs-SICH-PowerControl-Info			HS-SICH-Power-Control-Info-TDD768,
				dhs-sync							DHS-Sync					OPTIONAL,
				bler-target							Bler-Target,
				hS-SCCH-SetConfiguration			SEQUENCE (SIZE (1..maxHSSCCHs)) OF
														HS-SCCH-TDD768
				},
			tdd128								SEQUENCE (SIZE (1..maxHSSCCHs)) OF
													HS-SCCH-TDD128
		}
	}
}

HS-SCCH-Codes ::=					INTEGER (0..127)

HS-SCCH-TDD128 ::=				SEQUENCE {
	timeslotNumber						TimeslotNumber-LCR-r4,
	firstChannelisationCode				HS-ChannelisationCode-LCR,
	secondChannelisationCode			HS-ChannelisationCode-LCR,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					INTEGER(0..15)
	},
	-- Actual value midambleConfiguration = IE value * 2
	midambleConfiguration				INTEGER (1..8),
	bler-target							Bler-Target,
	hs-sich-configuration				HS-SICH-Configuration-TDD128
}

HS-SICH-Configuration-TDD128 ::=	SEQUENCE {
	timeslotNumber						TimeslotNumber-LCR-r4,
	channelisationCode					HS-ChannelisationCode-LCR,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	-- Actual value midambleConfiguration = IE value * 2
	midambleConfiguration				INTEGER (1..8),
	nack-ack-power-offset				INTEGER (-7..8),
	power-level-HSSICH					INTEGER (-120..-58),
	tpc-step-size						ENUMERATED { s1, s2, s3 , spare1}
}



HS-SCCH-TDD384 ::=				SEQUENCE {
	timeslotNumber						TimeslotNumber,
	channelisationCode					DL-TS-ChannelisationCode,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	midambleconfiguration				MidambleConfigurationBurstType1and3,
	bler-target							Bler-Target,
	hs-sich-configuration				HS-SICH-Configuration-TDD384
}

HS-SCCH-TDD384-r6 ::=				SEQUENCE {
	timeslotNumber						TimeslotNumber,
	channelisationCode					DL-TS-ChannelisationCode,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	midambleconfiguration				MidambleConfigurationBurstType1and3,
	hs-sich-configuration				HS-SICH-Configuration-TDD384
}

HS-SCCH-TDD768 ::=				SEQUENCE {
	timeslotNumber						TimeslotNumber,
	channelisationCode					DL-TS-ChannelisationCode-VHCR,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	midambleconfiguration				MidambleConfigurationBurstType1and3,
	hs-sich-configuration				HS-SICH-Configuration-TDD768
}

HS-SICH-Configuration-TDD384 ::=	SEQUENCE {
	timeslotNumber						TimeslotNumber,
	channelisationCode					DL-TS-ChannelisationCode,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	midambleconfiguration				MidambleConfigurationBurstType1and3
}

HS-SICH-Configuration-TDD768 ::=	SEQUENCE {
	timeslotNumber						TimeslotNumber,
	channelisationCode					DL-TS-ChannelisationCode-VHCR,
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						MidambleShiftLong
		}
	},
	midambleconfiguration				MidambleConfigurationBurstType1and3
}

HS-SICH-Power-Control-Info-TDD384 ::= SEQUENCE {
	-- Actual value ul-target-SIR = IE value * 0.5
	ul-target-SIR						INTEGER (-22..40),
    hs-sich-ConstantValue			    ConstantValue
}

HS-SICH-Power-Control-Info-TDD768 ::= SEQUENCE {
	-- Actual value ul-target-SIR = IE value * 0.5
	ul-target-SIR						INTEGER (-22..40),
	hs-sich-ConstantValue				ConstantValue
}

IndividualTimeslotInfo ::=			SEQUENCE {
	timeslotNumber						TimeslotNumber,
	tfci-Existence						BOOLEAN,
	midambleShiftAndBurstType			MidambleShiftAndBurstType
}

IndividualTimeslotInfo-VHCR ::=			SEQUENCE {
	timeslotNumber						TimeslotNumber,
	tfci-Existence						BOOLEAN,
	midambleShiftAndBurstType-VHCR		MidambleShiftAndBurstType-VHCR
}

IndividualTimeslotInfo-LCR-r4 ::=	SEQUENCE {
	timeslotNumber						TimeslotNumber-LCR-r4,
	tfci-Existence						BOOLEAN,
	midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
	modulation							ENUMERATED { mod-QPSK, mod-8PSK },
	ss-TPC-Symbols						ENUMERATED { zero, one, sixteenOverSF },
	additionalSS-TPC-Symbols			INTEGER(1..15)		OPTIONAL
}

IndividualTimeslotInfo-LCR-r4-ext ::=		SEQUENCE {
-- timeslotNumber and tfci-Existence is taken from IndividualTimeslotInfo.
-- midambleShiftAndBurstType in IndividualTimeslotInfo shall be ignored.
	midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
	modulation							ENUMERATED { mod-QPSK, mod-8PSK },
	ss-TPC-Symbols						ENUMERATED { zero, one, sixteenOverSF }
}

IndividualTS-Interference ::=		SEQUENCE {
	timeslot							TimeslotNumber,
	ul-TimeslotInterference				TDD-UL-Interference
}

IndividualTS-InterferenceList ::=	SEQUENCE (SIZE (1..maxTS)) OF
										IndividualTS-Interference

ITP ::=								ENUMERATED {
										mode0, mode1 }

NidentifyAbort ::=	INTEGER (1..128)

MaxAllowedUL-TX-Power ::=			INTEGER (-50..33)

MaxAvailablePCPCH-Number ::=		INTEGER (1..64)
MaxPowerIncrease-r4 ::=				INTEGER (0..3)

MaxTFCI-Field2Value ::=				INTEGER (1..1023)

Measurement-Feedback-Info ::=		SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			measurementPowerOffset			MeasurementPowerOffset,
			feedback-cycle					Feedback-cycle,
			cqi-RepetitionFactor			CQI-RepetitionFactor,
			deltaCQI						DeltaCQI
		},
		tdd								NULL
	}
}


MidambleConfigurationBurstType1and3 ::= ENUMERATED {ms4, ms8, ms16}

MidambleConfigurationBurstType2 ::=		ENUMERATED {ms3, ms6}

MidambleConfigurationBurstType2-VHCR ::=		ENUMERATED {ms4, ms8}

MidambleShiftAndBurstType ::=		SEQUENCE {
	burstType							CHOICE {	
		type1								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		},
		type2								SEQUENCE {
			midambleConfigurationBurstType2		MidambleConfigurationBurstType2,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftShort
				}
			}
		},
		type3								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		}
	}
}

MidambleShiftAndBurstType-VHCR ::=	SEQUENCE {
	burstType							CHOICE {
		type1								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		},
		type2								SEQUENCE {
			midambleConfigurationBurstType2		MidambleConfigurationBurstType2-VHCR,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftShort-VHCR
				}
			}
		},
		type3								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		}
	}
}

MidambleShiftAndBurstType-DL ::=		SEQUENCE {
	burstType							CHOICE {	
		type1								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		},
		type2								SEQUENCE {
			midambleConfigurationBurstType2		MidambleConfigurationBurstType2,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftShort
				}
			}
		}
	}
}

MidambleShiftAndBurstType-DL-VHCR ::= SEQUENCE {
	burstType							CHOICE {	
		type1								SEQUENCE {
			midambleConfigurationBurstType1and3	MidambleConfigurationBurstType1and3,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftLong
				}
			}
		},
		type2								SEQUENCE {
			midambleConfigurationBurstType2		MidambleConfigurationBurstType2-VHCR,
			midambleAllocationMode				CHOICE {
				defaultMidamble						NULL,
				commonMidamble						NULL,
				ueSpecificMidamble					SEQUENCE {
					midambleShift						MidambleShiftShort-VHCR
				}
			}
		}
	}
}

MidambleShiftAndBurstType-LCR-r4 ::=	SEQUENCE {
	midambleAllocationMode				CHOICE {
		defaultMidamble						NULL,
		commonMidamble						NULL,
		ueSpecificMidamble					SEQUENCE {
			midambleShift						INTEGER (0..15)
		}
	},
	-- Actual value midambleConfiguration = IE value * 2
	midambleConfiguration				INTEGER (1..8)
}

MidambleShiftLong ::=				INTEGER (0..15)


MidambleShiftShort ::=				INTEGER (0..5)

MidambleShiftShort-VHCR ::=			INTEGER (0..7)

MinimumSpreadingFactor ::=			ENUMERATED {
										sf4, sf8, sf16, sf32,
										sf64, sf128, sf256 }

MultiCodeInfo ::=					INTEGER (1..16)


N-EOT ::=							INTEGER (0..7)

N-GAP ::=							ENUMERATED {
										f2, f4, f8 }

N-PCH ::=							INTEGER (1..8)

N-StartMessage ::=					INTEGER (1..8)

NB01 ::=							INTEGER (0..50)

NF-Max ::=							INTEGER (1..64)

NumberOfDPDCH ::=					INTEGER (1..maxDPDCH-UL)

NumberOfFBI-Bits ::=				INTEGER (1..2)

OpenLoopPowerControl-TDD ::=		SEQUENCE {
	primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power,
	-- alpha, prach-ConstantValue, dpch-ConstantValue and pusch-ConstantValue
	-- shall be ignored in 1.28Mcps TDD mode.
	alpha								Alpha						OPTIONAL,
	prach-ConstantValue					ConstantValueTdd,
	dpch-ConstantValue					ConstantValueTdd,
	pusch-ConstantValue					ConstantValueTdd			OPTIONAL
}

OpenLoopPowerControl-IPDL-TDD-r4 ::=	SEQUENCE {
	ipdl-alpha							Alpha,
	maxPowerIncrease					MaxPowerIncrease-r4
}

PagingIndicatorLength ::=			ENUMERATED {
										pi4, pi8, pi16 }

PC-Preamble ::=						INTEGER (0..7)

PCP-Length ::=						ENUMERATED {
										as0, as8 }

PCPCH-ChannelInfo ::=				SEQUENCE {
	pcpch-UL-ScramblingCode				INTEGER (0..79),
	pcpch-DL-ChannelisationCode			INTEGER (0..511),
	pcpch-DL-ScramblingCode				SecondaryScramblingCode				OPTIONAL,
	pcp-Length							PCP-Length,
	ucsm-Info							UCSM-Info							OPTIONAL
}

PCPCH-ChannelInfoList ::=			SEQUENCE (SIZE (1..maxPCPCHs)) OF
										PCPCH-ChannelInfo

PCPICH-UsageForChannelEst ::=		ENUMERATED {
										mayBeUsed,
										shallNotBeUsed }

PDSCH-CapacityAllocationInfo ::=	SEQUENCE {
	-- pdsch-PowerControlInfo is conditional on new-configuration branch below, if this
	-- selected the IE is OPTIONAL otherwise it should not be sent
	pdsch-PowerControlInfo				PDSCH-PowerControlInfo				OPTIONAL,
	pdsch-AllocationPeriodInfo			AllocationPeriodInfo,
	configuration						CHOICE {
		old-Configuration					SEQUENCE {
			tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
			pdsch-Identity						PDSCH-Identity
		},
		new-Configuration					SEQUENCE {
			pdsch-Info							PDSCH-Info,
			pdsch-Identity						PDSCH-Identity				OPTIONAL
		}
	}
}

PDSCH-CapacityAllocationInfo-r4 ::=	SEQUENCE {
	pdsch-AllocationPeriodInfo			AllocationPeriodInfo,
	configuration						CHOICE {
		old-Configuration					SEQUENCE {
			tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
			pdsch-Identity						PDSCH-Identity
		},
		new-Configuration					SEQUENCE {
			pdsch-Info							PDSCH-Info-r4,
			pdsch-Identity						PDSCH-Identity				OPTIONAL,
			pdsch-PowerControlInfo				PDSCH-PowerControlInfo		OPTIONAL
		}
	}
}

PDSCH-CapacityAllocationInfo-r7 ::=	SEQUENCE {
	pdsch-AllocationPeriodInfo			AllocationPeriodInfo,
	configuration						CHOICE {
		old-Configuration					SEQUENCE {
			tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
			pdsch-Identity						PDSCH-Identity
		},
		new-Configuration					SEQUENCE {
			pdsch-Info							PDSCH-Info-r7,
			pdsch-Identity						PDSCH-Identity				OPTIONAL,
			pdsch-PowerControlInfo				PDSCH-PowerControlInfo		OPTIONAL
		}
	}
}

PDSCH-CodeInfo ::=					SEQUENCE {
	spreadingFactor						SF-PDSCH,
	codeNumber							CodeNumberDSCH,
	multiCodeInfo						MultiCodeInfo
}

PDSCH-CodeInfoList ::=				SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF
										PDSCH-CodeInfo

PDSCH-CodeMap ::=					SEQUENCE {
	spreadingFactor						SF-PDSCH,
	multiCodeInfo						MultiCodeInfo,
	codeNumberStart						CodeNumberDSCH,
	codeNumberStop						CodeNumberDSCH
}

PDSCH-CodeMapList ::=				SEQUENCE (SIZE (1..maxPDSCH-TFCIgroups)) OF
										PDSCH-CodeMap

PDSCH-CodeMapping ::=				SEQUENCE {
	dl-ScramblingCode					SecondaryScramblingCode				OPTIONAL,
	signallingMethod					CHOICE {
		codeRange							CodeRange,
		tfci-Range							DSCH-MappingList,
		explicit-config						PDSCH-CodeInfoList,
		replace								ReplacedPDSCH-CodeInfoList
	}
}	

PDSCH-Identity ::=					INTEGER (1..hiPDSCHidentities)

 
PDSCH-Info ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	pdsch-TimeslotsCodes				DownlinkTimeslotsCodes				OPTIONAL
}

PDSCH-Info-r4 ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			pdsch-TimeslotsCodes				DownlinkTimeslotsCodes		OPTIONAL
		},
		tdd128								SEQUENCE {
			pdsch-TimeslotsCodes				DownlinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	}
}

PDSCH-Info-r7 ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			pdsch-TimeslotsCodes				DownlinkTimeslotsCodes		OPTIONAL
		},
		tdd768								SEQUENCE {
			pdsch-TimeslotsCodes				DownlinkTimeslotsCodes-VHCR		OPTIONAL
		},
		tdd128								SEQUENCE {
			pdsch-TimeslotsCodes				DownlinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	}
}

PDSCH-Info-LCR-r4 ::=				SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	pdsch-TimeslotsCodes				DownlinkTimeslotsCodes-LCR-r4		OPTIONAL
}

PDSCH-PowerControlInfo ::=			SEQUENCE {
	tpc-StepSizeTDD						TPC-StepSizeTDD						OPTIONAL,
	ul-CCTrChTPCList					UL-CCTrChTPCList					OPTIONAL
}

PDSCH-SHO-DCH-Info ::=				SEQUENCE {
	dsch-RadioLinkIdentifier			DSCH-RadioLinkIdentifier,
	rl-IdentifierList					RL-IdentifierList					OPTIONAL
}

PDSCH-SysInfo ::=					SEQUENCE {
	pdsch-Identity						PDSCH-Identity,
	pdsch-Info							PDSCH-Info,
	dsch-TFS							TransportFormatSet					OPTIONAL,
	dsch-TFCS							TFCS								OPTIONAL
}

PDSCH-SysInfo-r7 ::=				SEQUENCE {
	pdsch-Identity						PDSCH-Identity,
	pdsch-Info							PDSCH-Info-r7,
	dsch-TransportChannelsInfo			DSCH-TransportChannelsInfo			OPTIONAL,
	dsch-TFCS							TFCS								OPTIONAL
}

PDSCH-SysInfo-HCR-r5 ::=					SEQUENCE {
	pdsch-Identity						PDSCH-Identity,
	pdsch-Info							PDSCH-Info,
	dsch-TransportChannelsInfo			DSCH-TransportChannelsInfo			OPTIONAL,
	dsch-TFCS							TFCS								OPTIONAL
}

PDSCH-SysInfo-LCR-r4 ::=			SEQUENCE {
	pdsch-Identity						PDSCH-Identity,
	pdsch-Info							PDSCH-Info-LCR-r4,
	dsch-TFS							TransportFormatSet					OPTIONAL,
	dsch-TFCS							TFCS								OPTIONAL
}

PDSCH-SysInfoList ::=				SEQUENCE (SIZE (1..maxPDSCH)) OF
										PDSCH-SysInfo

PDSCH-SysInfoList-r7 ::=			SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-r7

PDSCH-SysInfoList-HCR-r5 ::=			SEQUENCE (SIZE (1..maxPDSCH)) OF PDSCH-SysInfo-HCR-r5

PDSCH-SysInfoList-LCR-r4 ::=		SEQUENCE (SIZE (1..maxPDSCH)) OF
										PDSCH-SysInfo-LCR-r4

PDSCH-SysInfoList-SFN ::=			SEQUENCE (SIZE (1..maxPDSCH)) OF
										SEQUENCE {
	pdsch-SysInfo							PDSCH-SysInfo,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PDSCH-SysInfoList-SFN-HCR-r5 ::=			SEQUENCE (SIZE (1..maxPDSCH)) OF
										SEQUENCE {
	pdsch-SysInfo							PDSCH-SysInfo-HCR-r5,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PDSCH-SysInfoList-SFN-LCR-r4 ::=	SEQUENCE (SIZE (1..maxPDSCH)) OF
										SEQUENCE {
	pdsch-SysInfo							PDSCH-SysInfo-LCR-r4,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PersistenceScalingFactor ::=		ENUMERATED {
										psf0-9, psf0-8, psf0-7, psf0-6,
										psf0-5, psf0-4, psf0-3, psf0-2 }

PersistenceScalingFactorList ::=	SEQUENCE (SIZE (1..maxASCpersist)) OF
										PersistenceScalingFactor

PI-CountPerFrame ::=				ENUMERATED {
										e18, e36, e72, e144 }

PichChannelisationCodeList-LCR-r4 ::=	SEQUENCE (SIZE (1..2)) OF
											DL-TS-ChannelisationCode

PICH-Info ::=						CHOICE {
	fdd									SEQUENCE {
		channelisationCode256				ChannelisationCode256,
		pi-CountPerFrame					PI-CountPerFrame,
		sttd-Indicator						BOOLEAN
	},
	tdd									SEQUENCE {
		channelisationCode					TDD-PICH-CCode					OPTIONAL,
		timeslot							TimeslotNumber					OPTIONAL,
		midambleShiftAndBurstType			MidambleShiftAndBurstType,
		repetitionPeriodLengthOffset		RepPerLengthOffset-PICH			OPTIONAL,
		pagingIndicatorLength				PagingIndicatorLength			DEFAULT pi4,
		n-GAP								N-GAP							DEFAULT f4,
		n-PCH								N-PCH							DEFAULT 2
	}	
}

PICH-Info-r7 ::=					CHOICE {
	fdd									SEQUENCE {
		channelisationCode256				ChannelisationCode256,
		pi-CountPerFrame					PI-CountPerFrame,
		sttd-Indicator						BOOLEAN
	},
	tdd384									SEQUENCE {
		channelisationCode					TDD-PICH-CCode					OPTIONAL,
		timeslot							TimeslotNumber					OPTIONAL,
		midambleShiftAndBurstType			MidambleShiftAndBurstType,
		repetitionPeriodLengthOffset		RepPerLengthOffset-PICH			OPTIONAL,
		pagingIndicatorLength				PagingIndicatorLength			DEFAULT pi4,
		n-GAP								N-GAP							DEFAULT f4,
		n-PCH								N-PCH							DEFAULT 2
	},
	tdd768									SEQUENCE {
		channelisationCode					TDD768-PICH-CCode				OPTIONAL,
		timeslot							TimeslotNumber					OPTIONAL,
		midambleShiftAndBurstType			MidambleShiftAndBurstType,
		repetitionPeriodLengthOffset		RepPerLengthOffset-PICH			OPTIONAL,
		pagingIndicatorLength				PagingIndicatorLength			DEFAULT pi4,
		n-GAP								N-GAP							DEFAULT f4,
		n-PCH								N-PCH							DEFAULT 2
	}
}

PICH-Info-LCR-r4 ::=				SEQUENCE {
	timeslot							TimeslotNumber-LCR-r4				OPTIONAL,
	pichChannelisationCodeList-LCR-r4	PichChannelisationCodeList-LCR-r4,
	midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
	repetitionPeriodLengthOffset		RepPerLengthOffset-PICH				OPTIONAL,
	pagingIndicatorLength				PagingIndicatorLength			DEFAULT pi4,
	n-GAP								N-GAP							DEFAULT f4,
	n-PCH								N-PCH							DEFAULT 2
}

PICH-PowerOffset ::=				INTEGER (-10..5)

PilotBits128 ::=					ENUMERATED {
										pb4, pb8 }

PilotBits256 ::=					ENUMERATED {
										pb2, pb4, pb8 }

	-- Actual measurement power offset value = IE value * 0.5
MeasurementPowerOffset ::=			INTEGER (-12..26)

PLCCH-Info		::=					SEQUENCE {
	plcchSequenceNumber				INTEGER(1..17),
	timeslotNumber					TimeslotNumber-LCR-r4,
	channelisationCode				DL-TS-ChannelisationCode,
	tpcCommandTargetRate			TPC-CommandTargetRate
}

PositionFixedOrFlexible ::=			ENUMERATED {
										fixed,
										flexible }

PowerControlAlgorithm ::=			CHOICE {
	algorithm1							TPC-StepSizeFDD,
	algorithm2							NULL
}

PowerOffsetPilot-pdpdch ::=			INTEGER (0..24)

PowerOffsetTPC-pdpdch ::=			INTEGER (0..24)

PowerRampStep ::=					INTEGER (1..8)

PRACH-ChanCodes-LCR-r4 ::=			SEQUENCE (SIZE (1..4)) OF
										TDD-PRACH-CCode-LCR-r4

PRACH-Definition-LCR-r4 ::=			SEQUENCE {
	timeslot							TimeslotNumber-PRACH-LCR-r4,
	prach-ChanCodes-LCR					PRACH-ChanCodes-LCR-r4,
	midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
	fpach-Info							FPACH-Info-r4
}

PRACH-Midamble ::=					ENUMERATED {
										direct,
										direct-Inverted }

PRACH-Partitioning ::=				CHOICE {
	fdd									SEQUENCE (SIZE (1..maxASC)) OF
	-- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed, 
	-- the remaining (NumASC+2 through maxASC) ASCs are unspecified.
											ASCSetting-FDD,
	tdd									SEQUENCE (SIZE (1..maxASC)) OF
	-- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed, 
	-- the remaining (NumASC+2 through maxASC) ASCs are unspecified.
											ASCSetting-TDD
}	

PRACH-Partitioning-r7 ::=			CHOICE {
	fdd									SEQUENCE (SIZE (1..maxASC)) OF
	-- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-FDD are listed,
	-- the remaining (NumASC+2 through maxASC) ASCs are unspecified.
											ASCSetting-FDD,
	tdd									SEQUENCE (SIZE (1..maxASC)) OF
	-- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD are listed,
	-- the remaining (NumASC+2 through maxASC) ASCs are unspecified.
											ASCSetting-TDD-r7
}

PRACH-Partitioning-LCR-r4 ::=		SEQUENCE (SIZE (1..maxASC)) OF
	-- TABULAR: If only "NumASC+1" (with, NumASC+1 < maxASC) ASCSetting-TDD-LCR-r4 are listed, 
	-- the remaining (NumASC+2 through maxASC) ASCs are unspecified.
											ASCSetting-TDD-LCR-r4

PRACH-PowerOffset ::=				SEQUENCE {
	powerRampStep						PowerRampStep,
	preambleRetransMax					PreambleRetransMax
}

PRACH-RACH-Info ::=					SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			availableSignatures					AvailableSignatures,
			availableSF							SF-PRACH,
			preambleScramblingCodeWordNumber	PreambleScramblingCodeWordNumber,
			puncturingLimit						PuncturingLimit,
			availableSubChannelNumbers			AvailableSubChannelNumbers
		},
		tdd									SEQUENCE {
			timeslot							TimeslotNumber,
			channelisationCodeList				TDD-PRACH-CCodeList,
			prach-Midamble						PRACH-Midamble
		}
	}
}

PRACH-RACH-Info-r7 ::=				SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			availableSignatures					AvailableSignatures,
			availableSF							SF-PRACH,
			preambleScramblingCodeWordNumber	PreambleScramblingCodeWordNumber,
			puncturingLimit						PuncturingLimit,
			availableSubChannelNumbers			AvailableSubChannelNumbers
		},
		tdd384									SEQUENCE {
			timeslot							TimeslotNumber,
			channelisationCodeList				TDD-PRACH-CCodeList,
			prach-Midamble						PRACH-Midamble
		},
		tdd768									SEQUENCE {
			timeslot							TimeslotNumber,
			channelisationCodeList				TDD768-PRACH-CCodeList,
			prach-Midamble						PRACH-Midamble
		}
	}
}

PRACH-RACH-Info-LCR-r4 ::=			SEQUENCE {
	sync-UL-Info						SYNC-UL-Info-r4,
	prach-DefinitionList				SEQUENCE (SIZE (1..maxPRACH-FPACH)) OF
											PRACH-Definition-LCR-r4
}

PRACH-SystemInformation ::=			SEQUENCE {
	prach-RACH-Info						PRACH-RACH-Info,
	transportChannelIdentity			TransportChannelIdentity,
	rach-TransportFormatSet				TransportFormatSet					OPTIONAL,
	rach-TFCS							TFCS								OPTIONAL,
	prach-Partitioning					PRACH-Partitioning					OPTIONAL,
	persistenceScalingFactorList		PersistenceScalingFactorList		OPTIONAL,
	ac-To-ASC-MappingTable				AC-To-ASC-MappingTable				OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			constantValue						ConstantValue				OPTIONAL,
			prach-PowerOffset					PRACH-PowerOffset			OPTIONAL,
			rach-TransmissionParameters			RACH-TransmissionParameters	OPTIONAL,
			aich-Info							AICH-Info					OPTIONAL
		},
		tdd									NULL
	}	
}

PRACH-SystemInformation-r7 ::=		SEQUENCE {
	prach-RACH-Info						PRACH-RACH-Info-r7,
	transportChannelIdentity			TransportChannelIdentity,
	rach-TransportFormatSet				TransportFormatSet					OPTIONAL,
	rach-TFCS							TFCS								OPTIONAL,
	prach-Partitioning					PRACH-Partitioning-r7				OPTIONAL,
	persistenceScalingFactorList		PersistenceScalingFactorList		OPTIONAL,
	ac-To-ASC-MappingTable				AC-To-ASC-MappingTable				OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			constantValue						ConstantValue				OPTIONAL,
			prach-PowerOffset					PRACH-PowerOffset			OPTIONAL,
			rach-TransmissionParameters			RACH-TransmissionParameters	OPTIONAL,
			aich-Info							AICH-Info					OPTIONAL
		},
		tdd									NULL
	}
}

PRACH-SystemInformation-LCR-r4 ::=	SEQUENCE {
	prach-RACH-Info-LCR					PRACH-RACH-Info-LCR-r4,
	rach-TransportFormatSet-LCR			TransportFormatSet-LCR			OPTIONAL,
	prach-Partitioning-LCR				PRACH-Partitioning-LCR-r4		OPTIONAL
}

PRACH-SystemInformationList ::=		SEQUENCE (SIZE (1..maxPRACH)) OF
										PRACH-SystemInformation

PRACH-SystemInformationList-r7 ::=	SEQUENCE (SIZE (1..maxPRACH)) OF
										PRACH-SystemInformation-r7

PRACH-SystemInformationList-LCR-r4 ::=	SEQUENCE (SIZE (1..maxPRACH)) OF
											PRACH-SystemInformation-LCR-r4

PreambleRetransMax ::=				INTEGER (1..64)

PreambleScramblingCodeWordNumber ::=	INTEGER (0..15)

PreDefPhyChConfiguration ::=		SEQUENCE {
	ul-DPCH-InfoPredef					UL-DPCH-InfoPredef,
	dl-CommonInformationPredef			DL-CommonInformationPredef	OPTIONAL
}

PrimaryCCPCH-Info ::=				CHOICE {
	fdd									SEQUENCE {
		tx-DiversityIndicator				BOOLEAN
	},
	tdd									SEQUENCE {
		-- syncCase should be ignored for 1.28Mcps TDD mode
		syncCase 							CHOICE {
			syncCase1							SEQUENCE {
				timeslot							TimeslotNumber					
			},
			syncCase2							SEQUENCE {
				timeslotSync2						TimeslotSync2
			}
		}																	OPTIONAL,
		cellParametersID					CellParametersID				OPTIONAL,
		sctd-Indicator						BOOLEAN
	}
}

PrimaryCCPCH-Info-r4 ::=			CHOICE {
	fdd									SEQUENCE {
		tx-DiversityIndicator				BOOLEAN
	},
	tdd									SEQUENCE {
		tddOption							CHOICE {
			tdd384								SEQUENCE {
				syncCase 							CHOICE {
					syncCase1							SEQUENCE {
						timeslot							TimeslotNumber
					},
					syncCase2							SEQUENCE {
						timeslotSync2						TimeslotSync2
					}
				}															OPTIONAL
			},
			tdd128								SEQUENCE {
				tstd-Indicator						BOOLEAN
			}
		},
		cellParametersID					CellParametersID				OPTIONAL,
		sctd-Indicator						BOOLEAN
	}
}

PrimaryCCPCH-Info-r7 ::=			CHOICE {
	fdd									SEQUENCE {
		tx-DiversityIndicator				BOOLEAN
	},
	tdd									SEQUENCE {
		tddOption							CHOICE {
			tdd384								SEQUENCE {
				syncCase 							CHOICE {
					syncCase1							SEQUENCE {
						timeslot							TimeslotNumber
					},
					syncCase2							SEQUENCE {
						timeslotSync2						TimeslotSync2
					}
				}															OPTIONAL
			},
			tdd768 						SEQUENCE {
				syncCase 						CHOICE {
					syncCase1						SEQUENCE {
						timeslot						TimeslotNumber
					},
					syncCase2							SEQUENCE {
						timeslotSync2						TimeslotSync2
					}
				}															OPTIONAL
			},
			tdd128								SEQUENCE {
				tstd-Indicator						BOOLEAN
			}
		},
		cellParametersID					CellParametersID				OPTIONAL,
		sctd-Indicator						BOOLEAN
	}
}

PrimaryCCPCH-Info-LCR-r4 ::=		SEQUENCE {
	tstd-Indicator						BOOLEAN,
	cellParametersID					CellParametersID				OPTIONAL,
	sctd-Indicator						BOOLEAN
}

-- For 1.28Mcps TDD, the following IE includes elements for the PCCPCH Info additional to those
-- in PrimaryCCPCH-Info
PrimaryCCPCH-Info-LCR-r4-ext ::=	SEQUENCE {
	tstd-Indicator						BOOLEAN
}

PrimaryCCPCH-InfoPost ::=			SEQUENCE {
	syncCase 							CHOICE {
		syncCase1							SEQUENCE {
			timeslot							TimeslotNumber					
		},
		syncCase2							SEQUENCE {
			timeslotSync2						TimeslotSync2
		}
	},
	cellParametersID					CellParametersID,
	sctd-Indicator						BOOLEAN
}

PrimaryCCPCH-InfoPostTDD-LCR-r4 ::=	SEQUENCE {
	tstd-Indicator						BOOLEAN,
	cellParametersID					CellParametersID,
	sctd-Indicator						BOOLEAN
}

PrimaryCCPCH-TX-Power ::=			INTEGER (6..43)

PrimaryCPICH-Info ::=				SEQUENCE {
	primaryScramblingCode				PrimaryScramblingCode
}

PrimaryCPICH-TX-Power ::=			INTEGER (-10..50)

PrimaryScramblingCode ::=			INTEGER (0..511)

PuncturingLimit ::=					ENUMERATED {
										pl0-40, pl0-44, pl0-48, pl0-52, pl0-56,
										pl0-60, pl0-64, pl0-68, pl0-72, pl0-76,
										pl0-80, pl0-84, pl0-88, pl0-92, pl0-96, pl1 }

PUSCH-CapacityAllocationInfo ::=	SEQUENCE {
	pusch-Allocation					CHOICE {
		pusch-AllocationPending				NULL,
		pusch-AllocationAssignment			SEQUENCE {
			pusch-AllocationPeriodInfo			AllocationPeriodInfo,
			pusch-PowerControlInfo				UL-TargetSIR				OPTIONAL,
			configuration						CHOICE {
				old-Configuration					SEQUENCE {
					tfcs-ID								TFCS-IdentityPlain			DEFAULT 1,
					pusch-Identity						PUSCH-Identity
				},
				new-Configuration					SEQUENCE {
					pusch-Info							PUSCH-Info,
					pusch-Identity						PUSCH-Identity		OPTIONAL
				}
			}
		}
	}
}

PUSCH-CapacityAllocationInfo-r4 ::=	SEQUENCE {
	pusch-Allocation					CHOICE {
		pusch-AllocationPending				NULL,
		pusch-AllocationAssignment			SEQUENCE {
			pusch-AllocationPeriodInfo			AllocationPeriodInfo,
			pusch-PowerControlInfo				PUSCH-PowerControlInfo-r4	OPTIONAL,
			configuration						CHOICE {
				old-Configuration					SEQUENCE {
					tfcs-ID								TFCS-IdentityPlain			DEFAULT 1,
					pusch-Identity						PUSCH-Identity
				},
				new-Configuration					SEQUENCE {
					pusch-Info							PUSCH-Info-r4,
					pusch-Identity						PUSCH-Identity		OPTIONAL
				}
			}
		}
	}
}

PUSCH-CapacityAllocationInfo-r7 ::=	SEQUENCE {
	pusch-Allocation					CHOICE {
		pusch-AllocationPending				NULL,
		pusch-AllocationAssignment			SEQUENCE {
			pusch-AllocationPeriodInfo			AllocationPeriodInfo,
			pusch-PowerControlInfo				PUSCH-PowerControlInfo-r7	OPTIONAL,
			configuration						CHOICE {
				old-Configuration					SEQUENCE {
					tfcs-ID								TFCS-IdentityPlain			DEFAULT 1,
					pusch-Identity						PUSCH-Identity
				},
				new-Configuration					SEQUENCE {
					pusch-Info							PUSCH-Info-VHCR,
					pusch-Identity						PUSCH-Identity		OPTIONAL
				}
			}
		}
	}
}

PUSCH-Identity ::=					INTEGER (1..hiPUSCHidentities)

PUSCH-Info ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	pusch-TimeslotsCodes				UplinkTimeslotsCodes				OPTIONAL
}

PUSCH-Info-r4 ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			pusch-TimeslotsCodes				UplinkTimeslotsCodes		OPTIONAL
		},
		tdd128								SEQUENCE {
			pusch-TimeslotsCodes				UplinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	}
}

PUSCH-Info-VHCR ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	pusch-TimeslotsCodes-VHCR			UplinkTimeslotsCodes-VHCR			OPTIONAL
}

PUSCH-Info-LCR-r4 ::=				SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,

	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	pusch-TimeslotsCodes				UplinkTimeslotsCodes-LCR-r4			OPTIONAL
}

PUSCH-PowerControlInfo-r4 ::=		SEQUENCE {
	-- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD
	-- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" – 120)
	ul-TargetSIR						UL-TargetSIR,
	tddOption							CHOICE {
		tdd384								NULL,
		tdd128								SEQUENCE {
			tpc-StepSize						TPC-StepSizeTDD				OPTIONAL
		}
	}
}

PUSCH-PowerControlInfo-r7 ::=		SEQUENCE {
	-- The IE ul-TargetSIR corresponds to PRX-PUSCHdes for 1.28Mcps TDD
	-- Actual value PRX-PUSCHdes = (value of IE "ul-TargetSIR" – 120)
	ul-TargetSIR						UL-TargetSIR,
	tddOption							CHOICE {
		tdd384								NULL,
		tdd768								NULL,
		tdd128								SEQUENCE {
			tpc-StepSize						TPC-StepSizeTDD				OPTIONAL
		}
	}
}

PUSCH-SysInfo ::=					SEQUENCE {
	pusch-Identity						PUSCH-Identity,
	pusch-Info							PUSCH-Info,
	usch-TFS							TransportFormatSet					OPTIONAL,
	usch-TFCS							TFCS								OPTIONAL
}

PUSCH-SysInfo-VHCR ::=					SEQUENCE {
	pusch-Identity						PUSCH-Identity,
	pusch-Info-VHCR						PUSCH-Info-VHCR,
	usch-TransportChannelsInfo			USCH-TransportChannelsInfo			OPTIONAL,
	usch-TFCS							TFCS								OPTIONAL
}

PUSCH-SysInfo-HCR-r5 ::=					SEQUENCE {
	pusch-Identity						PUSCH-Identity,
	pusch-Info							PUSCH-Info,
	usch-TransportChannelsInfo			USCH-TransportChannelsInfo			OPTIONAL,
	usch-TFCS							TFCS								OPTIONAL
}

PUSCH-SysInfo-LCR-r4 ::=			SEQUENCE {
	pusch-Identity						PUSCH-Identity,
	pusch-Info							PUSCH-Info-LCR-r4,
	usch-TFS							TransportFormatSet					OPTIONAL,
	usch-TFCS							TFCS								OPTIONAL
}

PUSCH-SysInfoList ::=				SEQUENCE (SIZE (1..maxPUSCH)) OF
										PUSCH-SysInfo

PUSCH-SysInfoList-HCR-r5 ::=			SEQUENCE (SIZE (1..maxPUSCH)) OF PUSCH-SysInfo-HCR-r5

PUSCH-SysInfoList-LCR-r4 ::=		SEQUENCE (SIZE (1..maxPUSCH)) OF
										PUSCH-SysInfo-LCR-r4

PUSCH-SysInfoList-SFN ::=			SEQUENCE (SIZE (1..maxPUSCH)) OF
										SEQUENCE {
	pusch-SysInfo							PUSCH-SysInfo,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PUSCH-SysInfoList-SFN-HCR-r5 ::=			SEQUENCE (SIZE (1..maxPUSCH)) OF
										SEQUENCE {
	pusch-SysInfo							PUSCH-SysInfo-HCR-r5,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PUSCH-SysInfoList-SFN-LCR-r4 ::=		SEQUENCE (SIZE (1..maxPUSCH)) OF
										SEQUENCE {
	pusch-SysInfo							PUSCH-SysInfo-LCR-r4,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

PUSCH-SysInfoList-SFN-VHCR ::=		SEQUENCE (SIZE (1..maxPUSCH)) OF
										SEQUENCE {
	pusch-SysInfo-VHCR						PUSCH-SysInfo-VHCR,
	sfn-TimeInfo							SFN-TimeInfo					OPTIONAL
}

RACH-TransmissionParameters ::=		SEQUENCE {
	mmax								INTEGER (1..32),
	nb01Min								NB01,
	nb01Max								NB01
}

ReducedScramblingCodeNumber ::=		INTEGER (0..8191)

RepetitionPeriodAndLength ::=		CHOICE {
	repetitionPeriod1					NULL,
	-- repetitionPeriod2 could just as well be NULL also.
	repetitionPeriod2					INTEGER (1..1),
	repetitionPeriod4					INTEGER (1..3),
	repetitionPeriod8					INTEGER (1..7),
	repetitionPeriod16					INTEGER (1..15),
	repetitionPeriod32					INTEGER (1..31),
	repetitionPeriod64					INTEGER (1..63)
}

RepetitionPeriodLengthAndOffset ::= CHOICE {
	repetitionPeriod1					NULL,
	repetitionPeriod2					SEQUENCE {
		length								NULL,
		offset								INTEGER (0..1)
	},
	repetitionPeriod4					SEQUENCE {
		length								INTEGER (1..3),
		offset								INTEGER (0..3)
	},
	repetitionPeriod8					SEQUENCE {
		length								INTEGER (1..7),
		offset								INTEGER (0..7)
	},
	repetitionPeriod16					SEQUENCE {
		length								INTEGER (1..15),
		offset								INTEGER (0..15)
	},
	repetitionPeriod32					SEQUENCE {
		length								INTEGER (1..31),
		offset								INTEGER (0..31)
	},
	repetitionPeriod64					SEQUENCE {
		length								INTEGER (1..63),
		offset								INTEGER (0..63)
	}
}

ReplacedPDSCH-CodeInfo ::=			SEQUENCE {
	tfci-Field2							MaxTFCI-Field2Value,
	spreadingFactor						SF-PDSCH,
	codeNumber							CodeNumberDSCH,
	multiCodeInfo						MultiCodeInfo
}

ReplacedPDSCH-CodeInfoList ::=		SEQUENCE (SIZE (1..maxTFCI-2-Combs)) OF
										ReplacedPDSCH-CodeInfo

RepPerLengthOffset-PICH ::=			CHOICE {
	rpp4-2								INTEGER (0..3), 
	rpp8-2								INTEGER (0..7), 
	rpp8-4								INTEGER (0..7),
	rpp16-2								INTEGER (0..15), 
	rpp16-4								INTEGER (0..15), 
	rpp32-2								INTEGER (0..31), 
	rpp32-4								INTEGER (0..31), 
	rpp64-2								INTEGER (0..63), 
	rpp64-4								INTEGER (0..63)
}

RepPerLengthOffset-MICH ::=			CHOICE {
	rpp4-2								INTEGER (0..3),
	rpp8-2								INTEGER (0..7),
	rpp8-4								INTEGER (0..7),
	rpp16-2								INTEGER (0..15),
	rpp16-4								INTEGER (0..15),
	rpp32-2								INTEGER (0..31),
	rpp32-4								INTEGER (0..31),
	rpp64-2								INTEGER (0..63),
	rpp64-4								INTEGER (0..63)
}

RestrictedTrCH ::=					SEQUENCE {
	dl-restrictedTrCh-Type				DL-TrCH-Type,
	restrictedDL-TrCH-Identity			TransportChannelIdentity,
	allowedTFIList						AllowedTFI-List
}

RestrictedTrCH-InfoList ::=			SEQUENCE (SIZE(1..maxTrCH)) OF
										RestrictedTrCH

RL-AdditionInformation ::=			SEQUENCE {
	primaryCPICH-Info					PrimaryCPICH-Info,
	dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL,
	-- dummy and dummy2 are not used in this version of specification
	-- and the IEs should be ignored.
	dummy								BOOLEAN,
	dummy2								SCCPCH-InfoForFACH					OPTIONAL
}

RL-AdditionInformation-r6 ::=		SEQUENCE {
	primaryCPICH-Info					PrimaryCPICH-Info,
	cell-Id								CellIdentity						OPTIONAL,
	dl-dpchInfo							CHOICE {
		dl-DPCH-InfoPerRL					DL-DPCH-InfoPerRL-r5,
		dl-FDPCH-InfoPerRL					DL-FDPCH-InfoPerRL-r6
	},
	e-HICH-Information					E-HICH-Information					OPTIONAL,
	e-RGCH-Information					E-RGCH-Information					OPTIONAL
}

RL-AdditionInformationList ::=		SEQUENCE (SIZE (1..maxRL-1)) OF
										RL-AdditionInformation

RL-AdditionInformationList-r6 ::=	SEQUENCE (SIZE (1..maxRL-1)) OF
										RL-AdditionInformation-r6

RL-IdentifierList ::=				SEQUENCE (SIZE (1..maxRL)) OF
										PrimaryCPICH-Info

RL-RemovalInformationList ::=		SEQUENCE (SIZE (1..maxRL)) OF
										PrimaryCPICH-Info

RPP ::=								ENUMERATED {
										mode0, mode1 }

S-Field ::=							ENUMERATED {
										e1bit, e2bits }

SCCPCH-ChannelisationCode ::=		ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

SCCPCH-ChannelisationCode-VHCR ::=	ENUMERATED {
										cc32-1, cc32-2, cc32-3, cc32-4,
										cc32-5, cc32-6, cc32-7, cc32-8,
										cc32-9, cc32-10, cc32-11, cc32-12,
										cc32-13, cc32-14, cc32-15, cc32-16,
										cc32-17, cc32-18, cc32-19, cc32-20,
										cc32-21, cc32-22, cc32-23, cc32-24,
										cc32-25, cc32-26, cc32-27, cc32-28,
										cc32-29, cc32-30, cc32-31, cc32-32 }

SCCPCH-ChannelisationCodeList ::=	SEQUENCE (SIZE (1..16)) OF
										SCCPCH-ChannelisationCode

SCCPCH-ChannelisationCodeList-VHCR ::= SEQUENCE (SIZE (1..32)) OF
										SCCPCH-ChannelisationCode-VHCR

SCCPCH-InfoForFACH ::=				SEQUENCE {
	secondaryCCPCH-Info					SecondaryCCPCH-Info,
	tfcs								TFCS,
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			fach-PCH-InformationList			FACH-PCH-InformationList,
			sib-ReferenceListFACH				SIB-ReferenceListFACH
		},
		tdd								SEQUENCE {
			fach-PCH-InformationList			FACH-PCH-InformationList
		}
	}
}

SCCPCH-InfoForFACH-r4 ::=				SEQUENCE {
	secondaryCCPCH-Info					SecondaryCCPCH-Info-r4,
	tfcs								TFCS,
	fach-PCH-InformationList			FACH-PCH-InformationList,
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			sib-ReferenceListFACH			SIB-ReferenceListFACH
		},
		tdd								NULL
	}
}

SCCPCH-SystemInformation ::=		SEQUENCE {
	secondaryCCPCH-Info					SecondaryCCPCH-Info,
	tfcs								TFCS								OPTIONAL,
	fach-PCH-InformationList			FACH-PCH-InformationList			OPTIONAL,
	pich-Info							PICH-Info							OPTIONAL
}

SCCPCH-SystemInformation-LCR-r4-ext ::=	SEQUENCE {
	secondaryCCPCH-LCR-Extensions	SecondaryCCPCH-Info-LCR-r4-ext,
	-- pich-Info in the SCCPCH-SystemInformation IE shall be absent,
	-- and instead the following used.
	pich-Info						PICH-Info-LCR-r4						OPTIONAL
}

SCCPCH-SystemInformation-r7 ::=		SEQUENCE {
	secondaryCCPCH-Info					SecondaryCCPCH-Info-r7,
	tfcs								TFCS								OPTIONAL,
	fach-PCH-InformationList			FACH-PCH-InformationList			OPTIONAL,
	pich-Info							PICH-Info-r7						OPTIONAL
}

SCCPCH-SystemInformationList ::=	SEQUENCE (SIZE (1..maxSCCPCH)) OF
										SCCPCH-SystemInformation

SCCPCH-SystemInformationList-r7 ::=	SEQUENCE (SIZE (1..maxSCCPCH)) OF
										SCCPCH-SystemInformation-r7

-- SCCPCH-SystemInformationList-LCR-r4-ext includes elements additional to those in
-- SCCPCH-SystemInformationList for the 1.28Mcps TDD. The order of the IEs
-- indicates which SCCPCH-SystemInformation-LCR-r4-ext IE extends which
-- SCCPCH-SystemInformation IE.
SCCPCH-SystemInformationList-LCR-r4-ext ::=	SEQUENCE (SIZE (1..maxSCCPCH)) OF
												SCCPCH-SystemInformation-LCR-r4-ext

-- The SCCPCH-SystemInformation-MBMS-r6 is used for an S-CCPCH dedicated for MBMS purposes.
SCCPCH-SystemInformation-MBMS-r6 ::= SEQUENCE {
	secondaryCCPCHInfo-MBMS				SecondaryCCPCHInfo-MBMS-r6,
	transportFormatCombinationSet		TFCS,
	fachCarryingMCCH					SEQUENCE {
		mcch-transportFormatSet				TransportFormatSet,
		mcch-ConfigurationInfo				MBMS-MCCH-ConfigurationInfo-r6
	},
	fachCarryingMTCH-List				MBMS-FACHCarryingMTCH-List			OPTIONAL,
	-- If schedulingInformation is provided
	fachCarryingMSCH					SEQUENCE {
		msch-transportFormatSet				TransportFormatSet,
		msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6
	}		OPTIONAL
}

-- The SCCPCH-SystemInformation-MBMS-r7 is used for an S-CCPCH dedicated for MBMS purposes.
SCCPCH-SystemInformation-MBMS-r7 ::= SEQUENCE {
	secondaryCCPCHInfo-MBMS				SecondaryCCPCHInfo-MBMS-r7,
	transportFormatCombinationSet		TFCS,
	fachCarryingMCCH					SEQUENCE {
		mcch-transportFormatSet				TransportFormatSet,
		mcch-ConfigurationInfo				MBMS-MCCH-ConfigurationInfo-r6
	},
	fachCarryingMTCH-List				MBMS-FACHCarryingMTCH-List			OPTIONAL,
	-- If schedulingInformation is provided
	fachCarryingMSCH					SEQUENCE {
		msch-transportFormatSet				TransportFormatSet,
		msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6
	}		OPTIONAL
}

ScramblingCodeChange ::=			ENUMERATED {
										codeChange, noCodeChange }

ScramblingCodeType ::=				ENUMERATED {
										shortSC,
										longSC }

SecondaryCCPCH-Info ::=				SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			-- dummy1 is not used in this version of the specification and should be ignored.
			dummy1							PCPICH-UsageForChannelEst,
			-- dummy2 is not used in this version of the specification.  It should not
			-- be sent and if received it should be ignored.
			dummy2							SecondaryCPICH-Info				OPTIONAL,
			secondaryScramblingCode			SecondaryScramblingCode			OPTIONAL,
			sttd-Indicator					BOOLEAN,
			sf-AndCodeNumber				SF256-AndCodeNumber,
			pilotSymbolExistence			BOOLEAN,
			tfci-Existence					BOOLEAN,
			positionFixedOrFlexible			PositionFixedOrFlexible,
			timingOffset					TimingOffset					DEFAULT 0
		},
		tdd 							SEQUENCE {
			-- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH
			commonTimeslotInfo				CommonTimeslotInfoSCCPCH,
			individualTimeslotInfo			IndividualTimeslotInfo,
			channelisationCode				SCCPCH-ChannelisationCodeList
		}
	}
}

SecondaryCCPCH-Info-r4 ::=		SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			secondaryScramblingCode			SecondaryScramblingCode			OPTIONAL,
			sttd-Indicator					BOOLEAN,
			sf-AndCodeNumber				SF256-AndCodeNumber,
			pilotSymbolExistence			BOOLEAN,
			tfci-Existence					BOOLEAN,
			positionFixedOrFlexible			PositionFixedOrFlexible,
			timingOffset					TimingOffset					DEFAULT 0
		},
		tdd 							SEQUENCE {
			-- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH
			commonTimeslotInfo				CommonTimeslotInfoSCCPCH,
			tddOption						CHOICE {
				tdd384							SEQUENCE {
					individualTimeslotInfo			IndividualTimeslotInfo
				},
				tdd128							SEQUENCE {
					individualTimeslotInfo			IndividualTimeslotInfo-LCR-r4
				}
			},
			channelisationCode				SCCPCH-ChannelisationCodeList
		}
	}
}

SecondaryCCPCH-Info-r7 ::=		SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			secondaryScramblingCode			SecondaryScramblingCode			OPTIONAL,
			sttd-Indicator					BOOLEAN,
			sf-AndCodeNumber				SF256-AndCodeNumber,
			pilotSymbolExistence			BOOLEAN,
			tfci-Existence					BOOLEAN,
			positionFixedOrFlexible			PositionFixedOrFlexible,
			timingOffset					TimingOffset					DEFAULT 0
		},
		tdd 							SEQUENCE {
			-- TABULAR: the offset is included in CommonTimeslotInfoSCCPCH
			commonTimeslotInfo				CommonTimeslotInfoSCCPCH,
			tddOption						CHOICE {
				tdd384							SEQUENCE {
					individualTimeslotInfo			IndividualTimeslotInfo,
					channelisationCode				SCCPCH-ChannelisationCodeList
				},
				tdd768							SEQUENCE {
					individualTimeslotInfo			IndividualTimeslotInfo-VHCR,
					channelisationCode				SCCPCH-ChannelisationCodeList-VHCR
				},
				tdd128							SEQUENCE {
					individualTimeslotInfo			IndividualTimeslotInfo-LCR-r4,
					channelisationCode				SCCPCH-ChannelisationCodeList
				}
			}
		}
	}
}

SecondaryCCPCH-Info-LCR-r4-ext ::=	SEQUENCE {
	individualTimeslotLCR-Ext			IndividualTimeslotInfo-LCR-r4-ext
}

SecondaryCCPCHInfo-MBMS-r6 ::=		SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			secondaryScramblingCode			SecondaryScramblingCode			OPTIONAL,
			sttd-Indicator					BOOLEAN,
			sf-AndCodeNumber				SF256-AndCodeNumber,
			timingOffset					TimingOffset					DEFAULT 0
		},
		tdd384							DownlinkTimeslotsCodes,
		tdd128							DownlinkTimeslotsCodes-LCR-r4
	}
}

SecondaryCCPCHInfo-MBMS-r7 ::=		SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			secondaryScramblingCode			SecondaryScramblingCode			OPTIONAL,
			sttd-Indicator					BOOLEAN,
			sf-AndCodeNumber				SF256-AndCodeNumber,
			timingOffset					TimingOffset					DEFAULT 0
		},
		tdd384							DownlinkTimeslotsCodes,
		tdd768							DownlinkTimeslotsCodes-VHCR,
		tdd128							DownlinkTimeslotsCodes-LCR-r4
	}
}

SecondaryCPICH-Info ::=				SEQUENCE {
	secondaryDL-ScramblingCode			SecondaryScramblingCode				OPTIONAL,
	channelisationCode					ChannelisationCode256
}

SecondaryScramblingCode ::=			INTEGER (1..15)

SecondInterleavingMode ::=			ENUMERATED {
										frameRelated, timeslotRelated }

-- SF256-AndCodeNumber encodes both "Spreading factor" and "Code Number"
SF256-AndCodeNumber ::=				CHOICE {
	sf4									INTEGER (0..3),
	sf8									INTEGER (0..7),
	sf16								INTEGER (0..15),
	sf32								INTEGER (0..31),
	sf64								INTEGER (0..63),
	sf128								INTEGER (0..127),
	sf256								INTEGER (0..255)
}

-- SF512-AndCodeNumber encodes both "Spreading factor" and "Code Number"
SF512-AndCodeNumber ::=				CHOICE {
	sf4									INTEGER (0..3),
	sf8									INTEGER (0..7),
	sf16								INTEGER (0..15),
	sf32								INTEGER (0..31),
	sf64								INTEGER (0..63),
	sf128								INTEGER (0..127),
	sf256								INTEGER (0..255),
	sf512								INTEGER (0..511)
}

-- SF512-AndPilot encodes both "Spreading factor" and "Number of bits for Pilot bits"
SF512-AndPilot ::=					CHOICE {
	sfd4								NULL, 
	sfd8								NULL, 
	sfd16								NULL, 
	sfd32								NULL,
	sfd64								NULL, 
	sfd128								PilotBits128, 
	sfd256								PilotBits256, 
	sfd512								NULL
}
SF-PDSCH ::=						ENUMERATED {
										sfp4, sfp8, sfp16, sfp32,
										sfp64, sfp128, sfp256 }

SF-PRACH ::=						ENUMERATED {
										sfpr32, sfpr64, sfpr128, sfpr256 }

SFN-TimeInfo ::=					SEQUENCE {
	activationTimeSFN					INTEGER (0..4095),
	physChDuration					DurationTimeInfo
}

-- actual scheduling value = 2(signalled value +1) and is the periodicity of sending special burst frames
SpecialBurstScheduling ::=				INTEGER (0..7)

SpreadingFactor ::=					ENUMERATED {
										sf4, sf8, sf16, sf32,
										sf64, sf128, sf256 }

SRB-delay ::=						INTEGER (0..7)

SSDT-CellIdentity ::=				ENUMERATED {
										ssdt-id-a, ssdt-id-b, ssdt-id-c,
										ssdt-id-d, ssdt-id-e, ssdt-id-f,
										ssdt-id-g, ssdt-id-h }

SSDT-Information ::=				SEQUENCE {
	s-Field								S-Field,
	codeWordSet							CodeWordSet
}

SSDT-Information-r4 ::=				SEQUENCE {
	s-Field								S-Field,
	codeWordSet							CodeWordSet,
	ssdt-UL-r4							SSDT-UL									OPTIONAL
}

SSDT-UL ::=							ENUMERATED {
										ul, ul-AndDL }

SynchronisationParameters-r4 ::=	SEQUENCE {
	sync-UL-CodesBitmap					BIT STRING {
											code7(0),
											code6(1),
											code5(2),
											code4(3),
											code3(4),
											code2(5),
											code1(6),
											code0(7)
											} (SIZE (8)),
	fpach-Info							FPACH-Info-r4,
	-- Actual value prxUpPCHdes = IE value - 120
	prxUpPCHdes							INTEGER (0..62),
	sync-UL-Procedure					SYNC-UL-Procedure-r4					OPTIONAL
}

SYNC-UL-Procedure-r4 ::=			SEQUENCE {
	max-SYNC-UL-Transmissions			ENUMERATED { tr1, tr2, tr4, tr8 },
	powerRampStep						INTEGER (0..3)
}

SYNC-UL-Info-r4 ::=					SEQUENCE {
	sync-UL-Codes-Bitmap				BIT STRING {
											code7(0),
											code6(1),
											code5(2),
											code4(3),
											code3(4),
											code2(5),
											code1(6),
											code0(7)
											} ( SIZE (8)),
	-- Actual value prxUpPCHdes = IE value - 120
	prxUpPCHdes							INTEGER (0..62),
	powerRampStep						INTEGER (0..3),
	max-SYNC-UL-Transmissions			ENUMERATED { tr1, tr2, tr4, tr8 } ,
    mmax                                INTEGER(1..32)
}

TDD-FPACH-CCode16-r4 ::=			ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

TDD-UL-Interference ::=				INTEGER (-110..-52)

TDD-PICH-CCode ::=					ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

TDD768-PICH-CCode ::=				ENUMERATED {
										cc32-1, cc32-2, cc32-3, cc32-4,
										cc32-5, cc32-6, cc32-7, cc32-8,
										cc32-9, cc32-10, cc32-11, cc32-12,
										cc32-13, cc32-14, cc32-15, cc32-16,
										cc32-17, cc32-18, cc32-19, cc32-20,
										cc32-21, cc32-22, cc32-23, cc32-24,
										cc32-25, cc32-26, cc32-27, cc32-28,
										cc32-29, cc32-30, cc32-31, cc32-32 }

TDD-PRACH-CCode8 ::=				ENUMERATED {
										cc8-1, cc8-2, cc8-3, cc8-4,
										cc8-5, cc8-6, cc8-7, cc8-8 }

TDD-PRACH-CCode16 ::=				ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

TDD-PRACH-CCode-LCR-r4 ::=			ENUMERATED {
										cc4-1, cc4-2, cc4-3, cc4-4,
										cc8-1, cc8-2, cc8-3, cc8-4,
										cc8-5, cc8-6, cc8-7, cc8-8,
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

TDD-PRACH-CCodeList ::= 			CHOICE {
	sf8									SEQUENCE (SIZE (1..8)) OF 
											TDD-PRACH-CCode8,
-- Channelisation codes cc16-9, cc16-10, cc16-11, cc16-12, cc16-13, cc16-14,
-- cc16-15 and cc16-16 shall not be used
	sf16								SEQUENCE (SIZE (1..8)) OF
											TDD-PRACH-CCode16
}

TDD768-PRACH-CCode8 ::=				ENUMERATED {
										cc8-1, cc8-2, cc8-3, cc8-4,
										cc8-5, cc8-6, cc8-7, cc8-8 }

TDD768-PRACH-CCode16 ::=				ENUMERATED {
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

TDD768-PRACH-CCode32 ::=				ENUMERATED {
										cc32-1, cc32-2, cc32-3, cc32-4,
										cc32-5, cc32-6, cc32-7, cc32-8,
										cc32-9, cc32-10, cc32-11, cc32-12,
										cc32-13, cc32-14, cc32-15, cc32-16 }

TDD768-PRACH-CCodeList ::= 			CHOICE {
	sf32								SEQUENCE (SIZE (1..16)) OF 
											TDD768-PRACH-CCode32,
-- Channelisation codes cc32-17, cc32-18, cc32-19, cc32-20, cc32-21, cc32-22,
-- cc32-23, cc32-24, cc32-25, cc32-26, cc32-27, cc32-28, cc32-29, cc32-30, cc32-31
-- and cc32-32 shall not be used
	sf16								SEQUENCE (SIZE (1..16)) OF
											TDD768-PRACH-CCode16,
	sf8									SEQUENCE (SIZE (1..8)) OF
											TDD768-PRACH-CCode8
}

TFC-ControlDuration ::=				ENUMERATED {
										tfc-cd1, tfc-cd2, tfc-cd4, tfc-cd8,
										tfc-cd16, tfc-cd24, tfc-cd32,
										tfc-cd48, tfc-cd64, tfc-cd128,
										tfc-cd192, tfc-cd256, tfc-cd512 }

TFCI-Coding ::=						ENUMERATED { 
										tfci-bits-4, tfci-bits-8,
										tfci-bits-16, tfci-bits-32 }

TGCFN ::=							INTEGER (0..255)

-- In TGD, value 270 represents "undefined" in the tabular description.
TGD ::=								INTEGER (15..270)

TGL ::=								INTEGER (1..14)

TGMP ::=							ENUMERATED {
										tdd-Measurement, fdd-Measurement,
										gsm-CarrierRSSIMeasurement, 
										gsm-initialBSICIdentification, gsmBSICReconfirmation,
										multi-carrier }

TGP-Sequence ::=					SEQUENCE {
	tgpsi								TGPSI,
	tgps-Status							CHOICE {
		activate							SEQUENCE {
			tgcfn								TGCFN
		},
		deactivate							NULL
	},
	tgps-ConfigurationParams			TGPS-ConfigurationParams			OPTIONAL
}

TGPS-Reconfiguration-CFN ::=		INTEGER (0..255)

TGP-SequenceList ::=				SEQUENCE (SIZE (1..maxTGPS)) OF
										TGP-Sequence

TGP-SequenceShort ::=				SEQUENCE {
	tgpsi								TGPSI,
	tgps-Status							CHOICE {
		activate							SEQUENCE {
			tgcfn								TGCFN
		},
		deactivate							NULL
	}
}

TGPL ::=							INTEGER (1..144)

-- TABULAR: In TGPRC, value 0 represents "infinity" in the tabular description.
TGPRC ::=							INTEGER (0..511)

TGPS-ConfigurationParams ::=		SEQUENCE {
	tgmp								TGMP,
	tgprc								TGPRC,
	tgsn								TGSN,
	tgl1								TGL,
	tgl2								TGL									OPTIONAL,
	tgd									TGD,
	tgpl1								TGPL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it shall be ignored.
	dummy							TGPL								OPTIONAL,
	rpp									RPP,
	itp									ITP,
	-- TABULAR: Compressed mode method is nested inside UL-DL-Mode
	ul-DL-Mode							UL-DL-Mode,
	dl-FrameType						DL-FrameType,
	deltaSIR1							DeltaSIR,
	deltaSIRAfter1						DeltaSIR,
	deltaSIR2							DeltaSIR							OPTIONAL,
	deltaSIRAfter2						DeltaSIR							OPTIONAL,
	nidentifyAbort						NidentifyAbort						OPTIONAL,
	treconfirmAbort						TreconfirmAbort						OPTIONAL
}

TGPSI ::=							INTEGER (1..maxTGPS)

TGSN ::=							INTEGER (0..14)

TimeInfo ::=						SEQUENCE {
	activationTime						ActivationTime						OPTIONAL,
	durationTimeInfo					DurationTimeInfo					OPTIONAL
}

TimeslotList ::=					SEQUENCE (SIZE (1..maxTS)) OF
										TimeslotNumber

TimeslotList-r4 ::=					CHOICE {
-- the choice for 7.68 Mcps TDD is as for 3.84 Mcps TDD  --
	tdd384								SEQUENCE (SIZE (1..maxTS)) OF
											TimeslotNumber,
	tdd128								SEQUENCE (SIZE (1..maxTS-LCR)) OF
											TimeslotNumber-LCR-r4
}

-- If TimeslotNumber is included for a 1.28Mcps TDD description, it shall take values from 0..6
TimeslotNumber ::=						INTEGER (0..14)

TimeslotNumber-LCR-r4 ::=				INTEGER (0..6)

TimeslotNumber-PRACH-LCR-r4 ::=		INTEGER (1..6)

TimeslotSync2 ::=				INTEGER (0..6)

-- Actual value TimingOffset = IE value * 256
TimingOffset ::=					INTEGER (0..149)

TimingMaintainedSynchInd ::=		ENUMERATED { false }

TPC-CombinationIndex ::=			INTEGER (0..5)

TPC-CommandTargetRate ::=			INTEGER (0..10)

-- Actual value TPC-StepSizeFDD = IE value + 1
TPC-StepSizeFDD ::=					INTEGER (0..1)

TPC-StepSizeTDD ::=					INTEGER (1..3)

-- Actual value TreconfirmAbort = IE value * 0.5 seconds
TreconfirmAbort ::=	INTEGER (1..20)

TX-DiversityMode ::=				ENUMERATED {
										noDiversity,
										sttd,
										closedLoopMode1,
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
										dummy }

UARFCN ::=						INTEGER (0..16383)

UCSM-Info ::=						SEQUENCE {
	minimumSpreadingFactor				MinimumSpreadingFactor,
	nf-Max								NF-Max,
	channelReqParamsForUCSM				ChannelReqParamsForUCSM
}

UL-CCTrCH ::=						SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	ul-TargetSIR						UL-TargetSIR,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes				OPTIONAL
}

UL-CCTrCH-r4 ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
	-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
	ul-TargetSIR						UL-TargetSIR,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes		OPTIONAL
		},
		tdd128								SEQUENCE {
			ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes-LCR-r4	OPTIONAL
		}
	}
}

UL-CCTrCH-r7 ::=					SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain					DEFAULT 1,
	-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
	-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
	ul-TargetSIR						UL-TargetSIR,
	timeInfo							TimeInfo,
	commonTimeslotInfo					CommonTimeslotInfo					OPTIONAL,
	tddOption							CHOICE {
		tdd384								SEQUENCE {
			ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes		OPTIONAL
		},
		tdd768								SEQUENCE {
			ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes-VHCR	OPTIONAL
		},
		tdd128								SEQUENCE {
			ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes-LCR-r7	OPTIONAL
		}
	}
}

UL-CCTrCHList ::=					SEQUENCE (SIZE (1..maxCCTrCH)) OF
										UL-CCTrCH

UL-CCTrCHList-r4 ::=				SEQUENCE (SIZE (1..maxCCTrCH)) OF
										UL-CCTrCH-r4

UL-CCTrCHList-r7 ::=				SEQUENCE (SIZE (1..maxCCTrCH)) OF
										UL-CCTrCH-r7

UL-CCTrCHListToRemove ::=			SEQUENCE (SIZE (1..maxCCTrCH)) OF
										TFCS-IdentityPlain

UL-CCTrChTPCList ::=				SEQUENCE (SIZE (0..maxCCTrCH)) OF
											TFCS-Identity

UL-ChannelRequirement ::=			CHOICE {
	ul-DPCH-Info						UL-DPCH-Info,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received the UE behaviour is not specified.
	dummy								CPCH-SetInfo
}

UL-ChannelRequirement-r4 ::=		CHOICE {
	ul-DPCH-Info						UL-DPCH-Info-r4,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received the UE behaviour is not specified.
	dummy								CPCH-SetInfo
}

UL-ChannelRequirement-r5 ::=		CHOICE {
	ul-DPCH-Info						UL-DPCH-Info-r5,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received the UE behaviour is not specified.
	dummy								CPCH-SetInfo
}

-- Note: the reference to CPCH in the element name below is incorrect. The name is not
-- changed to keep it aligned with R99.
UL-ChannelRequirementWithCPCH-SetID ::=	CHOICE {
	ul-DPCH-Info						UL-DPCH-Info,
	-- dummy1 and dummy 2 are not used in this version of the specification, they should
	-- not be sent and if received the UE behaviour is not specified.
	dummy1								CPCH-SetInfo,
	dummy2								CPCH-SetID
}

-- Note: the reference to CPCH in the element name below is incorrect. The name is not
-- changed to keep it aligned with R99.
UL-ChannelRequirementWithCPCH-SetID-r4 ::=	CHOICE {
	ul-DPCH-Info						UL-DPCH-Info-r4,
	-- dummy1 and dummy2 are not used in this version of the specification, they 
	-- should not be sent and if received the UE behaviour is not specified.
	dummy1								CPCH-SetInfo,
	dummy2								CPCH-SetID
}

-- Note: the reference to CPCH in the element name below is incorrect. The name is not
-- changed to keep it aligned with R99.
UL-ChannelRequirementWithCPCH-SetID-r5 ::=	CHOICE {
	ul-DPCH-Info						UL-DPCH-Info-r5,
	-- dummy1 and dummy2 are not used in this version of the specification, they should
	-- not be sent and if received the UE behaviour is not specified.
	dummy1								CPCH-SetInfo,
	dummy2								CPCH-SetID
}

UL-CompressedModeMethod ::=			ENUMERATED {
										sf-2, 
										higherLayerScheduling }

UL-DL-Mode ::=						CHOICE {
	ul									UL-CompressedModeMethod,
	dl									DL-CompressedModeMethod,
	ul-and-dl								SEQUENCE {
		ul									UL-CompressedModeMethod,
		dl									DL-CompressedModeMethod
	}}

UL-DPCCH-SlotFormat ::=				ENUMERATED {
										slf0, slf1, slf2 }

UL-DPCH-Info ::=					SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			scramblingCodeType					ScramblingCodeType,
			scramblingCode						UL-ScramblingCode,
			numberOfDPDCH						NumberOfDPDCH				DEFAULT 1,
			spreadingFactor						SpreadingFactor,
			tfci-Existence						BOOLEAN,
			-- numberOfFBI-Bits is conditional based on history
			numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL,
			puncturingLimit						PuncturingLimit
		},
		tdd									SEQUENCE {
			ul-TimingAdvance					UL-TimingAdvanceControl		OPTIONAL,
			ul-CCTrCHList						UL-CCTrCHList				OPTIONAL,
			ul-CCTrCHListToRemove				UL-CCTrCHListToRemove		OPTIONAL
		}
	}
}

UL-DPCH-Info-r4 ::=					SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r4			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			scramblingCodeType					ScramblingCodeType,
			scramblingCode						UL-ScramblingCode,
			numberOfDPDCH						NumberOfDPDCH				DEFAULT 1,
			spreadingFactor						SpreadingFactor,
			tfci-Existence						BOOLEAN,
			-- numberOfFBI-Bits is conditional based on history
			numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL,
			puncturingLimit						PuncturingLimit
		},
		tdd									SEQUENCE {
			ul-TimingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
			ul-CCTrCHList						UL-CCTrCHList-r4			OPTIONAL,
			ul-CCTrCHListToRemove				UL-CCTrCHListToRemove		OPTIONAL
		}
	}
}

UL-DPCH-Info-r5 ::=					SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r5			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			scramblingCodeType					ScramblingCodeType,
			scramblingCode						UL-ScramblingCode,
			numberOfDPDCH						NumberOfDPDCH				DEFAULT 1,
			spreadingFactor						SpreadingFactor,
			tfci-Existence						BOOLEAN,
			-- numberOfFBI-Bits is conditional based on history
			numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL,
			puncturingLimit						PuncturingLimit
		},
		tdd									SEQUENCE {
			ul-TimingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
			ul-CCTrCHList						UL-CCTrCHList-r4			OPTIONAL,
			ul-CCTrCHListToRemove				UL-CCTrCHListToRemove		OPTIONAL
		}
	}
}

UL-DPCH-Info-r6 ::=					SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r6			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			scramblingCodeType					ScramblingCodeType,
			scramblingCode						UL-ScramblingCode,
			dpdchPresence						CHOICE {
				present								SEQUENCE {
					numberOfDPDCH						NumberOfDPDCH				DEFAULT 1,
					spreadingFactor						SpreadingFactor,
					tfci-Existence						BOOLEAN,
					-- numberOfFBI-Bits is conditional based on history
					numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL,
					puncturingLimit						PuncturingLimit
				},
				notPresent							SEQUENCE {
					tfci-Existence						BOOLEAN,
					-- numberOfFBI-Bits is conditional based on history
					numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL
				}
			}
		},
		tdd									SEQUENCE {
			ul-TimingAdvance					UL-TimingAdvanceControl-r4	OPTIONAL,
			ul-CCTrCHList						UL-CCTrCHList-r4			OPTIONAL,
			ul-CCTrCHListToRemove				UL-CCTrCHListToRemove		OPTIONAL
		}
	}
}

UL-DPCH-Info-r7 ::=					SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfo-r6			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			scramblingCodeType					ScramblingCodeType,
			scramblingCode						UL-ScramblingCode,
			dpdchPresence						CHOICE {
				present								SEQUENCE {
					numberOfDPDCH						NumberOfDPDCH				DEFAULT 1,
					spreadingFactor						SpreadingFactor,
					tfci-Existence						BOOLEAN,
					-- numberOfFBI-Bits is conditional based on history
					numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL,
					puncturingLimit						PuncturingLimit
						},
				notPresent							SEQUENCE {
					tfci-Existence						BOOLEAN,
					-- numberOfFBI-Bits is conditional based on history
					numberOfFBI-Bits					NumberOfFBI-Bits			OPTIONAL
				}
			}
		},
		tdd									SEQUENCE {
			ul-TimingAdvance					UL-TimingAdvanceControl-r7	OPTIONAL,
			ul-CCTrCHList						UL-CCTrCHList-r7			OPTIONAL,
			ul-CCTrCHListToRemove				UL-CCTrCHListToRemove		OPTIONAL
		}
	}
}

UL-DPCH-InfoPostFDD ::=				SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfoPostFDD,
			scramblingCodeType					ScramblingCodeType,
			reducedScramblingCodeNumber			ReducedScramblingCodeNumber,
			spreadingFactor						SpreadingFactor

}

UL-DPCH-InfoPostTDD ::=				SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfoPostTDD,
	ul-TimingAdvance					UL-TimingAdvanceControl					OPTIONAL,
	ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes
}

UL-DPCH-InfoPostTDD-LCR-r4 ::=		SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfoPostTDD-LCR-r4,
	ul-TimingAdvance					UL-TimingAdvanceControl-LCR-r4				OPTIONAL,
	ul-CCTrCH-TimeslotsCodes			UplinkTimeslotsCodes-LCR-r4
}

UL-DPCH-InfoPredef ::=				SEQUENCE {
	ul-DPCH-PowerControlInfo			UL-DPCH-PowerControlInfoPredef,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			tfci-Existence						BOOLEAN,
			puncturingLimit						PuncturingLimit
		},
		tdd									SEQUENCE {
			commonTimeslotInfo					CommonTimeslotInfo
		}
	}
}

UL-DPCH-PowerControlInfo ::=		CHOICE {
	fdd									SEQUENCE {
		dpcch-PowerOffset					DPCCH-PowerOffset,
		pc-Preamble							PC-Preamble,
		sRB-delay							SRB-delay,
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm
	},
	tdd									SEQUENCE {
		ul-TargetSIR						UL-TargetSIR				OPTIONAL,
		ul-OL-PC-Signalling					CHOICE {
			broadcast-UL-OL-PC-info				NULL,
			individuallySignalled				SEQUENCE {
				individualTS-InterferenceList		IndividualTS-InterferenceList,
				dpch-ConstantValue					ConstantValueTdd,
				primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power	
			}	
		}																OPTIONAL
	}
}

UL-DPCH-PowerControlInfo-r4 ::=		CHOICE {
	fdd									SEQUENCE {
		dpcch-PowerOffset					DPCCH-PowerOffset,
		pc-Preamble							PC-Preamble,
		sRB-delay							SRB-delay,
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm
	},
	tdd									SEQUENCE {
		-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
		-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
		ul-TargetSIR						UL-TargetSIR				OPTIONAL,
		ul-OL-PC-Signalling					CHOICE {
			broadcast-UL-OL-PC-info				NULL,
			individuallySignalled				SEQUENCE {
				tddOption							CHOICE {
					tdd384								SEQUENCE {
						individualTS-InterferenceList		IndividualTS-InterferenceList,
						dpch-ConstantValue					ConstantValue
					},
					tdd128								SEQUENCE {
						tpc-StepSize						TPC-StepSizeTDD
					}
				},
				primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power
			}
		}
	}
}

UL-DPCH-PowerControlInfo-r5 ::=		CHOICE {
	fdd									SEQUENCE {
		dpcch-PowerOffset					DPCCH-PowerOffset,
		pc-Preamble							PC-Preamble,
		sRB-delay							SRB-delay,
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm,
		deltaACK							DeltaACK	OPTIONAL,
		deltaNACK							DeltaNACK	OPTIONAL,
		ack-NACK-repetition-factor			ACK-NACK-repetitionFactor	OPTIONAL
	},
	tdd									SEQUENCE {
		-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
		-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
		ul-TargetSIR						UL-TargetSIR				OPTIONAL,
		ul-OL-PC-Signalling					CHOICE {
			broadcast-UL-OL-PC-info				NULL,
			individuallySignalled				SEQUENCE {
				tddOption							CHOICE {
					tdd384								SEQUENCE {
						individualTS-InterferenceList		IndividualTS-InterferenceList,
						dpch-ConstantValue					ConstantValue
					},
					tdd128								SEQUENCE {
						tpc-StepSize						TPC-StepSizeTDD
					}
				},
				primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power
			}
		}
	}
}

UL-DPCH-PowerControlInfo-r6 ::=		CHOICE {
	fdd									SEQUENCE {
		dpcch-PowerOffset					DPCCH-PowerOffset,
		pc-Preamble							PC-Preamble,
		sRB-delay							SRB-delay,
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm,
		deltaACK							DeltaACK	OPTIONAL,
		deltaNACK							DeltaNACK	OPTIONAL,
		ack-NACK-repetition-factor			ACK-NACK-repetitionFactor	OPTIONAL,
		harq-Preamble-Mode					HARQ-Preamble-Mode
	},
	tdd									SEQUENCE {
		-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
		-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
		ul-TargetSIR						UL-TargetSIR				OPTIONAL,
		ul-OL-PC-Signalling					CHOICE {
			broadcast-UL-OL-PC-info				NULL,
			individuallySignalled				SEQUENCE {
				tddOption							CHOICE {
					tdd384								SEQUENCE {
						individualTS-InterferenceList		IndividualTS-InterferenceList,
						dpch-ConstantValue					ConstantValue
					},
					tdd128								SEQUENCE {
						beaconPLEst							BEACON-PL-Est		OPTIONAL,
						tpc-StepSize						TPC-StepSizeTDD
					}
				},
				primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power
			}
		}
	}
}

UL-DPCH-PowerControlInfo-r7 ::=		CHOICE {
	fdd									SEQUENCE {
		dpcch-PowerOffset					DPCCH-PowerOffset,
		pc-Preamble							PC-Preamble,
		sRB-delay							SRB-delay,
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm,
		deltaACK							DeltaACK	OPTIONAL,
		deltaNACK							DeltaNACK	OPTIONAL,
		ack-NACK-repetition-factor			ACK-NACK-repetitionFactor	OPTIONAL,
		harq-Preamble-Mode					HARQ-Preamble-Mode
	},
	tdd									SEQUENCE {
		-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
		-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
		ul-TargetSIR						UL-TargetSIR				OPTIONAL,
		ul-OL-PC-Signalling					CHOICE {
			broadcast-UL-OL-PC-info				NULL,
			individuallySignalled				SEQUENCE {
				tddOption							CHOICE {
					tdd384								SEQUENCE {
						individualTS-InterferenceList		IndividualTS-InterferenceList,
						dpch-ConstantValue					ConstantValue
					},
					tdd768								SEQUENCE {
						individualTS-InterferenceList		IndividualTS-InterferenceList,
						dpch-ConstantValue					ConstantValue
					},
					tdd128								SEQUENCE {
						beaconPLEst							BEACON-PL-Est		OPTIONAL,
						tpc-StepSize						TPC-StepSizeTDD
					}
				},
				primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power
			}
		}
	}
}

UL-DPCH-PowerControlInfoPostFDD ::=	SEQUENCE {
	-- DPCCH-PowerOffset2 has a smaller range to save bits
	dpcch-PowerOffset					DPCCH-PowerOffset2,
	pc-Preamble							PC-Preamble,
	sRB-delay							SRB-delay
}

UL-DPCH-PowerControlInfoPostTDD ::=	SEQUENCE {
	ul-TargetSIR						UL-TargetSIR,
	ul-TimeslotInterference				TDD-UL-Interference
}

UL-DPCH-PowerControlInfoPostTDD-LCR-r4 ::=	SEQUENCE {
	-- The IE ul-TargetSIR corresponds to PRX-DPCHdes for 1.28Mcps TDD
	-- Actual value PRX-DPCHdes = (value of IE "ul-TargetSIR" – 120)
	ul-TargetSIR						UL-TargetSIR
}

UL-DPCH-PowerControlInfoPredef ::=		CHOICE {
	fdd									SEQUENCE {
		-- TABULAR: TPC step size nested inside PowerControlAlgorithm
		powerControlAlgorithm				PowerControlAlgorithm
	},
	tdd									SEQUENCE {
		-- dpch-ConstantValue shall be ignored if in 1.28Mcps TDD mode.
		dpch-ConstantValue					ConstantValueTdd
	}
}

UL-EDCH-Information-r6 ::=			SEQUENCE {
	mac-es-e-resetIndicator				ENUMERATED { true }						OPTIONAL,
	e-DPCCH-Info						E-DPCCH-Info							OPTIONAL,
	e-DPDCH-Info						E-DPDCH-Info							OPTIONAL,
	schedulingTransmConfiguration		E-DPDCH-SchedulingTransmConfiguration	OPTIONAL
}

UL-Interference ::=					INTEGER (-110..-70)

UL-ScramblingCode ::=				INTEGER (0..16777215)


UL-SynchronisationParameters-r4 ::=	SEQUENCE {
	stepSize							INTEGER (1..8),
	frequency							INTEGER (1..8)
}

-- Actual value UL-TargetSIR = (IE value * 0.5) - 11
UL-TargetSIR ::=					INTEGER (0..62)

UL-TimingAdvance ::=				INTEGER (0..63)

UL-TimingAdvance-VHCR ::=			INTEGER (0..127)

UL-TimingAdvanceControl ::=			CHOICE {
	disabled							NULL,
	enabled								SEQUENCE {
		ul-TimingAdvance					UL-TimingAdvance				OPTIONAL,
		activationTime						ActivationTime					OPTIONAL
	}
}

UL-TimingAdvanceControl-r4 ::=		CHOICE {
	disabled							NULL,
	enabled								SEQUENCE {
		tddOption							CHOICE {
			tdd384								SEQUENCE {
				ul-TimingAdvance					UL-TimingAdvance				OPTIONAL,
				activationTime						ActivationTime					OPTIONAL
			},
			tdd128								SEQUENCE {
				ul-SynchronisationParameters		UL-SynchronisationParameters-r4	OPTIONAL,
				synchronisationParameters			SynchronisationParameters-r4	OPTIONAL
			}
		}
	}
}

UL-TimingAdvanceControl-r7 ::=		CHOICE {
	disabled							NULL,
	enabled								SEQUENCE {
		tddOption							CHOICE {
			tdd384								SEQUENCE {
				ul-TimingAdvance					UL-TimingAdvance				OPTIONAL,
				ext-ul-TimingAdvance				EXT-UL-TimingAdvance			OPTIONAL,
				activationTime						ActivationTime					OPTIONAL
			},
			tdd768								SEQUENCE {
				ext-ul-TimingAdvance				EXT-UL-TimingAdvance			OPTIONAL,
				activationTime						ActivationTime					OPTIONAL
			},
			tdd128								SEQUENCE {
				ul-SynchronisationParameters		UL-SynchronisationParameters-r4	OPTIONAL,
				synchronisationParameters			SynchronisationParameters-r4	OPTIONAL
			}
		}
	}
}

UL-TimingAdvanceControl-LCR-r4 ::=	CHOICE {
	disabled							NULL,
	enabled								SEQUENCE {
		ul-SynchronisationParameters		UL-SynchronisationParameters-r4	OPTIONAL,
		synchronisationParameters			SynchronisationParameters-r4	OPTIONAL
	}
}

UL-TS-ChannelisationCode ::=		ENUMERATED {
										cc1-1, cc2-1, cc2-2,
										cc4-1, cc4-2, cc4-3, cc4-4,
										cc8-1, cc8-2, cc8-3, cc8-4,
										cc8-5, cc8-6, cc8-7, cc8-8,
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16 }

UL-TS-ChannelisationCodeList ::= 	SEQUENCE (SIZE (1..2)) OF
										UL-TS-ChannelisationCode

UL-TS-ChannelisationCodeList-r7 ::= 	SEQUENCE (SIZE (1..2)) OF
											SEQUENCE {
		ul-TS-Channelisation-Code				UL-TS-ChannelisationCode,
		plcch-info								PLCCH-Info		OPTIONAL
}

UL-TS-ChannelisationCode-VHCR ::=		ENUMERATED {
										cc1-1, cc2-1, cc2-2,
										cc4-1, cc4-2, cc4-3, cc4-4,
										cc8-1, cc8-2, cc8-3, cc8-4,
										cc8-5, cc8-6, cc8-7, cc8-8,
										cc16-1, cc16-2, cc16-3, cc16-4,
										cc16-5, cc16-6, cc16-7, cc16-8,
										cc16-9, cc16-10, cc16-11, cc16-12,
										cc16-13, cc16-14, cc16-15, cc16-16,
										cc32-1, cc32-2, cc32-3, cc32-4,
										cc32-5, cc32-6, cc32-7, cc32-8,
										cc32-9, cc32-10, cc32-11, cc32-12,
										cc32-13, cc32-14, cc32-15, cc32-16,
										cc32-17, cc32-18, cc32-19, cc32-20,
										cc32-21, cc32-22, cc32-23, cc32-24,
										cc32-25, cc32-26, cc32-27, cc32-28,
										cc32-29, cc32-30, cc32-31, cc32-32 }

UL-TS-ChannelisationCodeList-VHCR ::=	SEQUENCE (SIZE (1..2)) OF
											UL-TS-ChannelisationCode-VHCR

UplinkAdditionalTimeslots ::=		SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo						IndividualTimeslotInfo,
			ul-TS-ChannelisationCodeList				UL-TS-ChannelisationCodeList
		}
	}
}

UplinkAdditionalTimeslots-LCR-r4 ::=	SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo						IndividualTimeslotInfo-LCR-r4,
			ul-TS-ChannelisationCodeList				UL-TS-ChannelisationCodeList
		}
	}
}

UplinkAdditionalTimeslots-LCR-r7 ::=	SEQUENCE {
	parameters							CHOICE {
		sameAsLast							SEQUENCE {
			timeslotNumber						TimeslotNumber
			-- plcch-info assigned as previously defined slot
		},
		newParameters						SEQUENCE {
			individualTimeslotInfo				IndividualTimeslotInfo-LCR-r4,
			ul-TS-ChannelisationCodeList		UL-TS-ChannelisationCodeList-r7
		}
	}
}

UplinkTimeslotsCodes ::=			SEQUENCE {
	dynamicSFusage						BOOLEAN,
	firstIndividualTimeslotInfo			IndividualTimeslotInfo,
	ul-TS-ChannelisationCodeList		UL-TS-ChannelisationCodeList,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							SEQUENCE {
				numAdditionalTimeslots				INTEGER (1..maxTS-1)
			},
			timeslotList						SEQUENCE (SIZE (1..maxTS-1)) OF
													UplinkAdditionalTimeslots
		}
	}
}

UplinkTimeslotsCodes-VHCR ::=		SEQUENCE {
	dynamicSFusage						BOOLEAN,
	firstIndividualTimeslotInfo			IndividualTimeslotInfo-VHCR,
	ul-TS-ChannelisationCodeList		UL-TS-ChannelisationCodeList-VHCR,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							SEQUENCE {
				numAdditionalTimeslots				INTEGER (1..maxTS-1)
			},
			timeslotList						SEQUENCE (SIZE (1..maxTS-1)) OF
													UplinkAdditionalTimeslots
		}
	}
}

UplinkTimeslotsCodes-LCR-r4 ::=		SEQUENCE {
	dynamicSFusage						BOOLEAN,
	firstIndividualTimeslotInfo			IndividualTimeslotInfo-LCR-r4,
	ul-TS-ChannelisationCodeList		UL-TS-ChannelisationCodeList,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							SEQUENCE {
				numAdditionalTimeslots				INTEGER (1..maxTS-LCR-1)
			},
			timeslotList						SEQUENCE (SIZE (1..maxTS-LCR-1)) OF
													UplinkAdditionalTimeslots-LCR-r4
		}
	}
}

UplinkTimeslotsCodes-LCR-r7 ::=		SEQUENCE {
	dynamicSFusage						BOOLEAN,
	firstIndividualTimeslotInfo			IndividualTimeslotInfo-LCR-r4,
	ul-TS-ChannelisationCodeList		UL-TS-ChannelisationCodeList-r7,
	moreTimeslots						CHOICE {
		noMore								NULL,
		additionalTimeslots					CHOICE {
			consecutive							SEQUENCE {
			-- the choice of 'consecutive' is not needed because there is only 1 option. 
				numAdditionalTimeslots				INTEGER (1..maxTS-LCR-1)
			},
			timeslotList						SEQUENCE (SIZE (1..maxTS-LCR-1)) OF
													UplinkAdditionalTimeslots-LCR-r7
		}
	}
}

Wi-LCR ::=                                                               INTEGER(1..4)

-- ***************************************************
--
--     MEASUREMENT INFORMATION ELEMENTS (10.3.7)
--
-- ***************************************************

AcquisitionSatInfo ::=				SEQUENCE {
	satID								SatID,
	-- Actual value dopplerOthOrder = IE value * 2.5
	doppler0thOrder						INTEGER (-2048..2047),
	extraDopplerInfo					ExtraDopplerInfo					OPTIONAL,
	codePhase							INTEGER (0..1022),
	integerCodePhase					INTEGER (0..19),
	gps-BitNumber						INTEGER (0..3),
	codePhaseSearchWindow				CodePhaseSearchWindow,
	azimuthAndElevation					AzimuthAndElevation					OPTIONAL
}	

AcquisitionSatInfoList ::=			SEQUENCE (SIZE (1..maxSat)) OF
										AcquisitionSatInfo


AdditionalMeasurementID-List ::=	SEQUENCE (SIZE (1..maxAdditionalMeas)) OF
										MeasurementIdentity

AlmanacSatInfo ::=					SEQUENCE {
	dataID								INTEGER (0..3),
	satID								SatID,
	e									BIT STRING (SIZE (16)),
	t-oa								BIT STRING (SIZE (8)),
	deltaI								BIT STRING (SIZE (16)),
	omegaDot							BIT STRING (SIZE (16)),
	satHealth							BIT STRING (SIZE (8)),
	a-Sqrt								BIT STRING (SIZE (24)),
	omega0								BIT STRING (SIZE (24)),
	m0									BIT STRING (SIZE (24)),
	omega								BIT STRING (SIZE (24)),
	af0									BIT STRING (SIZE (11)),
	af1									BIT STRING (SIZE (11))
}

AlmanacSatInfoList ::=				SEQUENCE (SIZE (1..maxSat)) OF
										AlmanacSatInfo

AverageRLC-BufferPayload ::=		ENUMERATED {
										pla0, pla4, pla8, pla16, pla32,
										pla64, pla128, pla256, pla512,
										pla1024, pla2k, pla4k, pla8k, pla16k,
										pla32k, pla64k, pla128k, pla256k,
										pla512k, pla1024k, spare12, spare11,
										spare10, spare9, spare8, spare7, spare6,
										spare5, spare4, spare3, spare2, spare1 }
	
AzimuthAndElevation ::=				SEQUENCE {
	-- Actual value azimuth = IE value * 11.25
	azimuth								INTEGER (0..31),
	-- Actual value elevation = IE value * 11.25
	elevation							INTEGER (0..7)
}

BadSatList ::=						SEQUENCE (SIZE (1..maxSat)) OF
										INTEGER (0..63)

Frequency-Band ::=					ENUMERATED {
										dcs1800BandUsed, pcs1900BandUsed }

BCCH-ARFCN ::=						INTEGER (0..1023)

BLER-MeasurementResults ::=			SEQUENCE {
	transportChannelIdentity			TransportChannelIdentity,
	dl-TransportChannelBLER				DL-TransportChannelBLER				OPTIONAL
}

BLER-MeasurementResultsList ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										BLER-MeasurementResults

BLER-TransChIdList ::=				SEQUENCE (SIZE (1..maxTrCH)) OF
										TransportChannelIdentity

BSIC-VerificationRequired ::=		ENUMERATED {
										required, notRequired }

BSICReported ::=					CHOICE {
	-- Value maxCellMeas is not allowed for verifiedBSIC
	verifiedBSIC						INTEGER (0..maxCellMeas),
	nonVerifiedBSIC						BCCH-ARFCN
}

BurstModeParameters ::=				SEQUENCE {
	burstStart							INTEGER (0..15),
	burstLength							INTEGER (10..25),
	burstFreq							INTEGER (1..16)
}

CellDCH-ReportCriteria ::=			CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria,
	periodicalReportingCriteria			PeriodicalReportingCriteria
}

CellDCH-ReportCriteria-LCR-r4 ::=	CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria-LCR-r4,
	periodicalReportingCriteria			PeriodicalReportingCriteria
}

-- Actual value CellIndividualOffset = IE value * 0.5
CellIndividualOffset ::=			INTEGER (-20..20)


CellInfo ::=						SEQUENCE {
	cellIndividualOffset				CellIndividualOffset			 	DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList			OPTIONAL,
			readSFN-Indicator					BOOLEAN
		}
	}
}

CellInfo-r4 ::=						SEQUENCE {
	cellIndividualOffset				CellIndividualOffset			 	DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info-r4,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList-r4			OPTIONAL,
			readSFN-Indicator					BOOLEAN

		}
	}
}

CellInfoSI-RSCP ::=					SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList			OPTIONAL,
			readSFN-Indicator					BOOLEAN
		}
	},
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-RSCP		OPTIONAL
}

CellInfoSI-RSCP-LCR-r4 ::=			SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	primaryCCPCH-Info					PrimaryCCPCH-Info-LCR-r4,
	primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power				OPTIONAL,
	timeslotInfoList					TimeslotInfoList-LCR-r4				OPTIONAL,
	readSFN-Indicator					BOOLEAN,
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-RSCP		OPTIONAL
}

CellInfoSI-ECN0 ::=					SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList			OPTIONAL,
			readSFN-Indicator					BOOLEAN
		}
	},
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-ECN0	OPTIONAL
}

CellInfoSI-ECN0-LCR-r4 ::=			SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	primaryCCPCH-Info					PrimaryCCPCH-Info-LCR-r4,
	primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power				OPTIONAL,
	timeslotInfoList					TimeslotInfoList-LCR-r4				OPTIONAL,
	readSFN-Indicator					BOOLEAN,
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-ECN0	OPTIONAL
}

CellInfoSI-HCS-RSCP ::=				SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList			OPTIONAL,
			readSFN-Indicator					BOOLEAN
		}
	},
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-HCS-RSCP	OPTIONAL
}

CellInfoSI-HCS-RSCP-LCR-r4 ::=		SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	primaryCCPCH-Info					PrimaryCCPCH-Info-LCR-r4,
	primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power				OPTIONAL,
	timeslotInfoList					TimeslotInfoList-LCR-r4				OPTIONAL,
	readSFN-Indicator					BOOLEAN,
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-HCS-RSCP	OPTIONAL
}

CellInfoSI-HCS-ECN0 ::=				SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info			OPTIONAL,
			primaryCPICH-TX-Power				PrimaryCPICH-TX-Power		OPTIONAL,
			readSFN-Indicator					BOOLEAN,
			tx-DiversityIndicator				BOOLEAN		
		},
		tdd									SEQUENCE {
			primaryCCPCH-Info					PrimaryCCPCH-Info,
			primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power		OPTIONAL,
			timeslotInfoList					TimeslotInfoList			OPTIONAL,
			readSFN-Indicator					BOOLEAN
		}
	},
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-HCS-ECN0	OPTIONAL
}

CellInfoSI-HCS-ECN0-LCR-r4 ::=		SEQUENCE {
	cellIndividualOffset				CellIndividualOffset		 		DEFAULT 0,
	referenceTimeDifferenceToCell		ReferenceTimeDifferenceToCell		OPTIONAL,
	primaryCCPCH-Info					PrimaryCCPCH-Info-LCR-r4,
	primaryCCPCH-TX-Power				PrimaryCCPCH-TX-Power				OPTIONAL,
	timeslotInfoList					TimeslotInfoList-LCR-r4				OPTIONAL,
	readSFN-Indicator					BOOLEAN,
	cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12-HCS-ECN0	OPTIONAL
}

CellMeasuredResults ::=				SEQUENCE {
	cellIdentity						CellIdentity						OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy			SFN-SFN-ObsTimeDifference			OPTIONAL,
	cellSynchronisationInfo			CellSynchronisationInfo			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			cpich-Ec-N0							CPICH-Ec-N0					OPTIONAL,
			cpich-RSCP							CPICH-RSCP					OPTIONAL,
			pathloss							Pathloss					OPTIONAL
		},
		tdd									SEQUENCE {
			cellParametersID					CellParametersID,
			proposedTGSN						TGSN						OPTIONAL,
			primaryCCPCH-RSCP					PrimaryCCPCH-RSCP			OPTIONAL,
			pathloss							Pathloss					OPTIONAL,
			timeslotISCP-List					TimeslotISCP-List			OPTIONAL
		}
	}
}

CellMeasurementEventResults ::=		CHOICE {
	fdd									SEQUENCE (SIZE (1..maxCellMeas)) OF
											PrimaryCPICH-Info,
	tdd									SEQUENCE (SIZE (1..maxCellMeas)) OF
											PrimaryCCPCH-Info
}

CellMeasurementEventResults-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
											PrimaryCCPCH-Info-LCR-r4

CellReportingQuantities ::=			SEQUENCE {
	-- dummy is not used in this version of the specification
	-- and if received it should be ignored.
	dummy					SFN-SFN-OTD-Type,
	cellIdentity-reportingIndicator						BOOLEAN,
	cellSynchronisationInfoReportingIndicator			BOOLEAN,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			cpich-Ec-N0-reportingIndicator							BOOLEAN,
			cpich-RSCP-reportingIndicator							BOOLEAN,
			pathloss-reportingIndicator							BOOLEAN
		},
		tdd									SEQUENCE {
			timeslotISCP-reportingIndicator						BOOLEAN,
			proposedTGSN-ReportingRequired						BOOLEAN,
			primaryCCPCH-RSCP-reportingIndicator					BOOLEAN,
			pathloss-reportingIndicator							BOOLEAN
		}
	}
}

CellSelectReselectInfoSIB-11-12 ::=	SEQUENCE {
	q-Offset1S-N						Q-OffsetS-N							DEFAULT 0,
	q-Offset2S-N						Q-OffsetS-N							OPTIONAL,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
	hcs-NeighbouringCellInformation-RSCP		HCS-NeighbouringCellInformation-RSCP		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			q-QualMin							Q-QualMin					OPTIONAL,
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		tdd									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		gsm									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		}
	}
}

CellSelectReselectInfoSIB-11-12-RSCP ::=	SEQUENCE {
	q-OffsetS-N						Q-OffsetS-N						DEFAULT 0,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			q-QualMin							Q-QualMin					OPTIONAL,
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		tdd									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		gsm									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		}
	}
}

CellSelectReselectInfoSIB-11-12-ECN0 ::=	SEQUENCE {
	q-Offset1S-N						Q-OffsetS-N						DEFAULT 0,
	q-Offset2S-N						Q-OffsetS-N						DEFAULT 0,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			q-QualMin							Q-QualMin					OPTIONAL,
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		tdd									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		gsm									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		}
	}
}

CellSelectReselectInfoSIB-11-12-HCS-RSCP ::=	SEQUENCE {
	q-OffsetS-N						Q-OffsetS-N						DEFAULT 0,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
	hcs-NeighbouringCellInformation-RSCP		HCS-NeighbouringCellInformation-RSCP		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			q-QualMin							Q-QualMin					OPTIONAL,
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		tdd									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		gsm									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		}
	}
}

CellSelectReselectInfoSIB-11-12-HCS-ECN0 ::=	SEQUENCE {
	q-Offset1S-N						Q-OffsetS-N						DEFAULT 0,
	q-Offset2S-N						Q-OffsetS-N						DEFAULT 0,
	maxAllowedUL-TX-Power				MaxAllowedUL-TX-Power				OPTIONAL,
	hcs-NeighbouringCellInformation-ECN0		HCS-NeighbouringCellInformation-ECN0		OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			q-QualMin							Q-QualMin					OPTIONAL,
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		tdd									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		},
		gsm									SEQUENCE {
			q-RxlevMin							Q-RxlevMin					OPTIONAL
		}
	}
}

CellSelectReselectInfo-v590ext ::= SEQUENCE {
	deltaQrxlevmin					DeltaQrxlevmin					OPTIONAL,
	deltaQhcs						DeltaRSCP						OPTIONAL
}

CellSelectReselectInfoPCHFACH-v5b0ext ::= SEQUENCE {
	q-Hyst-l-S-PCH				Q-Hyst-S-Fine						OPTIONAL,
	q-Hyst-l-S-FACH				Q-Hyst-S-Fine						OPTIONAL,
	q-Hyst-2-S-PCH				Q-Hyst-S-Fine						OPTIONAL,
	q-Hyst-2-S-FACH				Q-Hyst-S-Fine						OPTIONAL,
	t-Reselection-S-PCH			T-Reselection-S						OPTIONAL,
	t-Reselection-S-FACH		T-Reselection-S-Fine				OPTIONAL
}

CellSelectReselectInfoTreselectionScaling-v5c0ext ::= SEQUENCE {
	-- For speed detection, the same HCS parameters are utilised
	non-HCS-t-CR-Max							T-CRMax									OPTIONAL,
	speedDependentScalingFactor					SpeedDependentScalingFactor				OPTIONAL,
	interFrequencyTreselectionScalingFactor		TreselectionScalingFactor				OPTIONAL,
	interRATTreselectionScalingFactor			TreselectionScalingFactor				OPTIONAL
}

CellsForInterFreqMeasList ::=		SEQUENCE (SIZE  (1..maxCellMeas)) OF
										InterFreqCellID
CellsForInterRATMeasList ::=			SEQUENCE (SIZE  (1..maxCellMeas)) OF
										InterRATCellID
CellsForIntraFreqMeasList ::=		SEQUENCE (SIZE  (1..maxCellMeas)) OF
										IntraFreqCellID

CellSynchronisationInfo ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			countC-SFN-Frame-difference			CountC-SFN-Frame-difference		OPTIONAL,
			tm									INTEGER(0..38399)	
		},
		tdd									SEQUENCE {
			countC-SFN-Frame-difference			CountC-SFN-Frame-difference		OPTIONAL
		}
	}							
}

CellToReport ::=					SEQUENCE {
	bsicReported						BSICReported
}

CellToReportList ::=				SEQUENCE (SIZE (1..maxCellMeas)) OF
										CellToReport

CodePhaseSearchWindow ::=			ENUMERATED {
										w1023, w1, w2, w3, w4, w6, w8,
										w12, w16, w24, w32, w48, w64,
										w96, w128, w192 }

CountC-SFN-Frame-difference ::= SEQUENCE {
	-- Actual value countC-SFN-High = IE value * 256
	countC-SFN-High					INTEGER(0..15),
	off								INTEGER(0..255)
}

-- SPARE: CPICH-Ec-No, Max = 49
-- Values above Max are spare
CPICH-Ec-N0 ::=						INTEGER (0..63)

-- SPARE: CPICH- RSCP, Max = 91
-- Values above Max are spare
CPICH-RSCP ::=						INTEGER (0..127)


DeltaPRC ::=						INTEGER (-127..127)

--Actual value DeltaQrxlevmin = IE value * 2
DeltaQrxlevmin ::= INTEGER (-2..-1)

DeltaRSCP ::= INTEGER (-5..-1)

DeltaRSCPPerCell ::= SEQUENCE {
	deltaRSCP						DeltaRSCP	OPTIONAL
}

-- Actual value DeltaRRC = IE value * 0.032
DeltaRRC ::=						INTEGER (-7..7)

DGPS-CorrectionSatInfo ::=			SEQUENCE {
	satID								SatID,
	iode								IODE,
	udre								UDRE,
	prc									PRC,
	rrc									RRC,
-- dummy1 and dummy2 are not used in this version of the specification and should be ignored.
	dummy1							DeltaPRC,
	dummy2							DeltaRRC,
	-- dummy3 and dummy4 are not used in this version of the specification. They should not
	-- be sent and if received they should be ignored.
	dummy3							DeltaPRC			OPTIONAL,
	dummy4							DeltaRRC			OPTIONAL
}

DGPS-CorrectionSatInfoList ::=		SEQUENCE (SIZE (1..maxSat)) OF
										DGPS-CorrectionSatInfo

DiffCorrectionStatus ::=			ENUMERATED {
										udre-1-0, udre-0-75, udre-0-5, udre-0-3,
										udre-0-2, udre-0-1, noData, invalidData }

DL-TransportChannelBLER ::=			INTEGER (0..63)

DopplerUncertainty ::=				ENUMERATED {
										hz12-5, hz25, hz50, hz100, hz200,
										spare3, spare2, spare1 }

EllipsoidPoint ::=					SEQUENCE {	
	latitudeSign		ENUMERATED { north, south },
	latitude			INTEGER (0..8388607),
	longitude			INTEGER (-8388608..8388607)
}


EllipsoidPointAltitude ::=			SEQUENCE {
	latitudeSign		ENUMERATED { north, south },
	latitude			INTEGER (0..8388607),
	longitude			INTEGER (-8388608..8388607),
	altitudeDirection	ENUMERATED {height, depth},
	altitude			INTEGER (0..32767)
}


EllipsoidPointAltitudeEllipsoide ::=	SEQUENCE {
	latitudeSign			ENUMERATED { north, south },
	latitude				INTEGER (0..8388607),
	longitude				INTEGER (-8388608..8388607),
	altitudeDirection		ENUMERATED {height, depth},
	altitude				INTEGER (0..32767),
	uncertaintySemiMajor	INTEGER (0..127),
	uncertaintySemiMinor	INTEGER (0..127),
	-- Actual value orientationMajorAxis = IE value * 2
	orientationMajorAxis	INTEGER (0..89),
	uncertaintyAltitude		INTEGER (0..127),
	confidence				INTEGER (0..100)
}


EllipsoidPointUncertCircle ::=		SEQUENCE {
	latitudeSign			ENUMERATED { north, south },
	latitude				INTEGER (0..8388607),
	longitude				INTEGER (-8388608..8388607),
	uncertaintyCode			INTEGER (0..127)
}


EllipsoidPointUncertEllipse ::=		SEQUENCE {
	latitudeSign			ENUMERATED { north, south },
	latitude				INTEGER (0..8388607),
	longitude				INTEGER (-8388608..8388607),
	uncertaintySemiMajor	INTEGER (0..127),
	uncertaintySemiMinor	INTEGER (0..127),
	-- Actual value orientationMajorAxis = IE value * 2
	orientationMajorAxis	INTEGER (0..89),
	confidence				INTEGER (0..100)
}


EnvironmentCharacterisation ::=		ENUMERATED {
										possibleHeavyMultipathNLOS,
										lightMultipathLOS,
										notDefined,
										spare }

Event1a ::=							SEQUENCE {
	triggeringCondition					TriggeringCondition2,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList				OPTIONAL,
	w									W,
	reportDeactivationThreshold			ReportDeactivationThreshold,
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

Event1a-r4 ::=						SEQUENCE {
	triggeringCondition					TriggeringCondition2,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList-r4			OPTIONAL,
	w									W,
	reportDeactivationThreshold			ReportDeactivationThreshold,
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

Event1a-LCR-r4 ::=					SEQUENCE {
	triggeringCondition					TriggeringCondition2,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList-LCR-r4			OPTIONAL,
	w									W,
	reportDeactivationThreshold			ReportDeactivationThreshold,
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

Event1b ::=							SEQUENCE {
	triggeringCondition					TriggeringCondition1,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList				OPTIONAL,
	w									W
}

Event1b-r4 ::=						SEQUENCE {
	triggeringCondition					TriggeringCondition1,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList-r4			OPTIONAL,
	w									W
}

Event1b-LCR-r4 ::=					SEQUENCE {
	triggeringCondition					TriggeringCondition1,
	reportingRange						ReportingRange,
	forbiddenAffectCellList				ForbiddenAffectCellList-LCR-r4			OPTIONAL,
	w									W
}

Event1c ::=							SEQUENCE {
	replacementActivationThreshold		ReplacementActivationThreshold,
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

Event1d ::=							SEQUENCE {
	triggeringCondition					TriggeringCondition2	OPTIONAL,
	useCIO								BOOLEAN					OPTIONAL
}

Event1e ::=						SEQUENCE {
	triggeringCondition					TriggeringCondition2,
	thresholdUsedFrequency				ThresholdUsedFrequency
}

Event1e-r6 ::=					SEQUENCE {
	triggeringCondition					TriggeringCondition2,
	thresholdUsedFrequency				ThresholdUsedFrequency-r6
}

Event1f ::=						SEQUENCE {
	triggeringCondition					TriggeringCondition1,
	thresholdUsedFrequency				ThresholdUsedFrequency
}

Event1f-r6 ::=					SEQUENCE {
	triggeringCondition					TriggeringCondition1,
	thresholdUsedFrequency				ThresholdUsedFrequency-r6
}

Event1j-r6 ::=					SEQUENCE {
	replacementActivationThreshold		ReplacementActivationThreshold,
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

Event2a ::=							SEQUENCE {
	-- dummy is not used in this version of the specification and should be ignored
	dummy								Threshold,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList			OPTIONAL
}

Event2a-r6 ::=						SEQUENCE {
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqWList-r6					OPTIONAL
}

Event2b ::=							SEQUENCE {
	usedFreqThreshold					Threshold,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList			OPTIONAL
}

Event2b-r6 ::=						SEQUENCE {
	usedFreqThreshold					Threshold-r6,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList-r6			OPTIONAL
}

Event2c ::=							SEQUENCE {
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList			OPTIONAL
}

Event2c-r6 ::=						SEQUENCE {
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList-r6			OPTIONAL
}

Event2d ::=							SEQUENCE {
	usedFreqThreshold					Threshold,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

Event2d-r6 ::=						SEQUENCE {
	usedFreqThreshold					Threshold-r6,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

Event2e ::=							SEQUENCE {
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList			OPTIONAL
}

Event2e-r6 ::=						SEQUENCE {
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL,
	nonUsedFreqParameterList			NonUsedFreqParameterList-r6			OPTIONAL
}

Event2f ::=							SEQUENCE {
	usedFreqThreshold					Threshold,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}	

Event2f-r6 ::=						SEQUENCE {
	usedFreqThreshold					Threshold-r6,
	usedFreqW							W,
	hysteresis							HysteresisInterFreq,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

Event3a ::=							SEQUENCE {
	thresholdOwnSystem					Threshold,
	w									W,
	thresholdOtherSystem				Threshold,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}	

Event3b ::=							SEQUENCE {
	thresholdOtherSystem				Threshold,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
	
}	

Event3c ::=							SEQUENCE {
	thresholdOtherSystem				Threshold,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}	

Event3d ::=							SEQUENCE {
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}	

EventIDInterFreq ::=				ENUMERATED {
										e2a, e2b, e2c, e2d, e2e, e2f, spare2, spare1 }

EventIDInterRAT ::=					ENUMERATED {
										e3a, e3b, e3c, e3d }

EventIDIntraFreq ::=				ENUMERATED {
										e1a, e1b, e1c, e1d, e1e,
										e1f, e1g, e1h, e1i, e1j,
										spare6, spare5, spare4, spare3, spare2,
										spare1 }

EventResults ::=					CHOICE {
	intraFreqEventResults				IntraFreqEventResults,
	interFreqEventResults				InterFreqEventResults,
	interRATEventResults				InterRATEventResults,
	trafficVolumeEventResults			TrafficVolumeEventResults,
	qualityEventResults					QualityEventResults,
	ue-InternalEventResults				UE-InternalEventResults,
	ue-positioning-MeasurementEventResults			UE-Positioning-MeasurementEventResults,
	spare								NULL
}

ExtraDopplerInfo ::=				SEQUENCE {
	-- Actual value doppler1stOrder = IE value * 0.023
	doppler1stOrder						INTEGER (-42..21),
	dopplerUncertainty					DopplerUncertainty
}

FACH-MeasurementOccasionInfo ::=	SEQUENCE {
	fACH-meas-occasion-coeff			INTEGER (1..12)						OPTIONAL,
	inter-freq-FDD-meas-ind				BOOLEAN,
	-- inter-freq-TDD-meas-ind is for 3.84Mcps TDD and 7.68 Mcps TDD. For 1.28Mcps TDD, the IE in
	-- FACH-MeasurementOccasionInfo-LCR-r4-ext is used.
	inter-freq-TDD-meas-ind				BOOLEAN,
	inter-RAT-meas-ind					SEQUENCE (SIZE (1..maxOtherRAT)) OF
											RAT-Type						OPTIONAL
}

FACH-MeasurementOccasionInfo-LCR-r4-ext ::=	SEQUENCE {
	inter-freq-TDD128-meas-ind					BOOLEAN
}

FilterCoefficient ::=				ENUMERATED {
										fc0, fc1, fc2, fc3, fc4, fc5, 
										fc6, fc7, fc8, fc9, fc11, fc13, 
										fc15, fc17, fc19, spare1 }

-- Actual value FineSFN-SFN = IE value * 0.0625
FineSFN-SFN ::=						INTEGER (0..15)

ForbiddenAffectCell ::=				CHOICE {
	fdd									PrimaryCPICH-Info,
	tdd									PrimaryCCPCH-Info
}

ForbiddenAffectCell-r4 ::=			CHOICE {
	fdd									PrimaryCPICH-Info,
	tdd									PrimaryCCPCH-Info-r4
}

ForbiddenAffectCell-LCR-r4 ::=		SEQUENCE {
	tdd									PrimaryCCPCH-Info-LCR-r4
}

ForbiddenAffectCellList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										ForbiddenAffectCell

ForbiddenAffectCellList-r4 ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										ForbiddenAffectCell-r4

ForbiddenAffectCellList-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										ForbiddenAffectCell-LCR-r4

FreqQualityEstimateQuantity-FDD ::= ENUMERATED {
										cpich-Ec-N0,
										cpich-RSCP }

FreqQualityEstimateQuantity-TDD ::= ENUMERATED {
										primaryCCPCH-RSCP }

GPS-MeasurementParam ::=			SEQUENCE {
	satelliteID							INTEGER (0..63),
	c-N0								INTEGER (0..63),
	doppler								INTEGER (-32768..32768),
	wholeGPS-Chips						INTEGER (0..1022),
	fractionalGPS-Chips					INTEGER (0..1023),
	multipathIndicator					MultipathIndicator,
	pseudorangeRMS-Error				INTEGER (0..63)
}

GPS-MeasurementParamList ::=		SEQUENCE (SIZE (1..maxSat)) OF
										GPS-MeasurementParam

GSM-CarrierRSSI ::=					BIT STRING (SIZE (6))


GSM-MeasuredResults ::= 			SEQUENCE {
	gsm-CarrierRSSI						GSM-CarrierRSSI						OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy								INTEGER (46..173)					OPTIONAL,
	bsicReported						BSICReported,
	-- dummy2 is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy2								ObservedTimeDifferenceToGSM			OPTIONAL
}

GSM-MeasuredResultsList ::=			SEQUENCE (SIZE (1..maxReportedGSMCells)) OF
										GSM-MeasuredResults	

GPS-TOW-1msec ::=					INTEGER (0..604799999)

GPS-TOW-Assist ::=					SEQUENCE {
	satID								SatID,
	tlm-Message							BIT STRING (SIZE (14)),
	tlm-Reserved						BIT STRING (SIZE (2)),
	alert								BOOLEAN,
	antiSpoof							BOOLEAN
}

GPS-TOW-AssistList ::=				SEQUENCE (SIZE (1..maxSat)) OF
										GPS-TOW-Assist

HCS-CellReselectInformation-RSCP ::=		SEQUENCE {
	-- TABULAR: The default value for penaltyTime is "notUsed"
	-- Temporary offset is nested inside PenaltyTime-RSCP
	penaltyTime									PenaltyTime-RSCP
}

HCS-CellReselectInformation-ECN0 ::=		SEQUENCE {
	-- TABULAR: The default value for penaltyTime is "notUsed"
	-- Temporary offset is nested inside PenaltyTime-ECN0
	penaltyTime							PenaltyTime-ECN0
}

HCS-NeighbouringCellInformation-RSCP ::= SEQUENCE {
	hcs-PRIO							HCS-PRIO							DEFAULT 0,
	q-HCS								Q-HCS								DEFAULT 0,
	hcs-CellReselectInformation			HCS-CellReselectInformation-RSCP
}

HCS-NeighbouringCellInformation-ECN0 ::= SEQUENCE {
	hcs-PRIO							HCS-PRIO							DEFAULT 0,
	q-HCS								Q-HCS								DEFAULT 0,
	hcs-CellReselectInformation			HCS-CellReselectInformation-ECN0
}

HCS-PRIO ::=						INTEGER (0..7)

HCS-ServingCellInformation ::=		SEQUENCE {
	hcs-PRIO							HCS-PRIO							DEFAULT 0,
	q-HCS								Q-HCS								DEFAULT 0,
	t-CR-Max							T-CRMax								OPTIONAL
}

HorizontalVelocity ::=				SEQUENCE {
	bearing								INTEGER (0..359),
	horizontalSpeed						INTEGER (0..2047)
	}

HorizontalWithVerticalVelocity ::=	SEQUENCE {
	verticalSpeedDirection				ENUMERATED { upward, downward },
	bearing								INTEGER (0..359),
	horizontalSpeed						INTEGER (0..2047),
	verticalSpeed						INTEGER (0..255)
}

HorizontalVelocityWithUncertainty ::=	SEQUENCE {
	bearing								INTEGER (0..359),
	horizontalSpeed						INTEGER (0..2047),
	horizontalSpeedUncertainty			INTEGER (0..255)
}

HorizontalWithVerticalVelocityAndUncertainty ::=	SEQUENCE {
	verticalSpeedDirection				ENUMERATED { upward, downward },
	bearing								INTEGER (0..359),
	horizontalSpeed						INTEGER (0..2047),
	verticalSpeed						INTEGER (0..255),
	horizontalSpeedUncertainty			INTEGER (0..255)
}

-- Actual value Hysteresis = IE value * 0.5
Hysteresis ::=						INTEGER (0..15)

-- Actual value HysteresisInterFreq = IE value * 0.5
HysteresisInterFreq ::=				INTEGER (0..29)

InterFreqCell ::=					SEQUENCE {
	frequencyInfo						FrequencyInfo,
	nonFreqRelatedEventResults			CellMeasurementEventResults
}

InterFreqCell-LCR-r4 ::=			SEQUENCE {
	frequencyInfo						FrequencyInfo,
	nonFreqRelatedEventResults			CellMeasurementEventResults-LCR-r4
}

InterFreqCellID ::=					INTEGER (0..maxCellMeas-1)

InterFreqCellInfoList ::=			SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellList				OPTIONAL,
	cellsForInterFreqMeasList			CellsForInterFreqMeasList			OPTIONAL
}

InterFreqCellInfoList-r4 ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellList-r4				OPTIONAL,
	cellsForInterFreqMeasList			CellsForInterFreqMeasList			OPTIONAL
}

InterFreqCellInfoSI-List-RSCP ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-RSCP		OPTIONAL
}

InterFreqCellInfoSI-List-ECN0 ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-ECN0		OPTIONAL
}

InterFreqCellInfoSI-List-HCS-RSCP ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-HCS-RSCP	OPTIONAL
}
InterFreqCellInfoSI-List-HCS-ECN0 ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-HCS-ECN0	OPTIONAL
}

InterFreqCellInfoSI-List-RSCP-LCR ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-RSCP-LCR-r4		OPTIONAL
}

InterFreqCellInfoSI-List-ECN0-LCR ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-ECN0-LCR-r4		OPTIONAL
}

InterFreqCellInfoSI-List-HCS-RSCP-LCR ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-HCS-RSCP-LCR-r4	OPTIONAL
}
InterFreqCellInfoSI-List-HCS-ECN0-LCR ::=		SEQUENCE {
	removedInterFreqCellList			RemovedInterFreqCellList			OPTIONAL,
	newInterFreqCellList				NewInterFreqCellSI-List-HCS-ECN0-LCR-r4	OPTIONAL
}

InterFreqCellList ::=				SEQUENCE (SIZE (1..maxFreq)) OF
										InterFreqCell

InterFreqCellList-LCR-r4-ext ::=	SEQUENCE (SIZE (1..maxFreq)) OF
										InterFreqCell-LCR-r4

InterFreqCellMeasuredResultsList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
										CellMeasuredResults

InterFreqEvent ::=					CHOICE {
	event2a								Event2a,
	event2b								Event2b,
	event2c								Event2c,
	event2d								Event2d,
	event2e								Event2e,
	event2f								Event2f
}

InterFreqEvent-r6 ::=				CHOICE {
	event2a								Event2a-r6,
	event2b								Event2b-r6,
	event2c								Event2c-r6,
	event2d								Event2d-r6,
	event2e								Event2e-r6,
	event2f								Event2f-r6
}

InterFreqEventList ::=				SEQUENCE (SIZE (1..maxMeasEvent)) OF
										InterFreqEvent

InterFreqEventList-r6 ::=			SEQUENCE (SIZE (1..maxMeasEvent)) OF
										InterFreqEvent-r6

--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD)
--The order of the list corresponds to the order of the cells in InterFrequencyMeasuredResultsList
--The IE is only used for measured results and not for additional measured results.
InterFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
												DeltaRSCPPerCell

Inter-FreqEventCriteria-v590ext ::= SEQUENCE {
	threholdUsedFrequency-delta				DeltaRSCP,
	threholdNonUsedFrequency-deltaList		ThreholdNonUsedFrequency-deltaList  	OPTIONAL
}

--The order of the list corresponds to the order of the events in Inter-FreqEventList
Inter-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF
											Inter-FreqEventCriteria-v590ext

--The order of the list corresponds to the order of relevant events in Intra-FreqEventCriteriaList
--i.e. the first element of the list corresponds to the first occurance of event 1e, 1f, 1h, 1i,
--the second element of the list corresponds to the second occurance of event 1e, 1f, 1h, 1i 
Intra-FreqEventCriteriaList-v590ext ::= SEQUENCE (SIZE (1..maxMeasEvent)) OF
											DeltaRSCP

--Following IE shall be used regardless of CPICH RSCP(FDD) or Primary CCPCH RSCP(TDD)
--The order of the list corresponds to the order of the cells in IntraFrequencyMeasuredResultsList
--The IE is only used for measured results and not for additional measured results.
IntraFrequencyMeasuredResultsList-v590ext ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
												DeltaRSCPPerCell

IntraFreqReportingCriteria-1b-r5 ::= SEQUENCE {
	periodicReportingInfo-1b			PeriodicReportingInfo-1b
}

PeriodicReportingInfo-1b ::= SEQUENCE {
	reportingAmount						ReportingAmount,
	reportingInterval					ReportingInterval
}

InterFreqEventResults ::=			SEQUENCE {
	eventID								EventIDInterFreq,
	interFreqCellList					InterFreqCellList					OPTIONAL
}

InterFreqEventResults-LCR-r4-ext ::=	SEQUENCE {
	eventID								EventIDInterFreq,
	interFreqCellList					InterFreqCellList-LCR-r4-ext		OPTIONAL
}

InterFreqMeasQuantity ::=			SEQUENCE {
	reportingCriteria					CHOICE {
		intraFreqReportingCriteria			SEQUENCE {
			intraFreqMeasQuantity				IntraFreqMeasQuantity
		},
		interFreqReportingCriteria			SEQUENCE {
			filterCoefficient					FilterCoefficient			DEFAULT fc0,
			modeSpecificInfo					CHOICE {
				fdd									SEQUENCE {
					freqQualityEstimateQuantity-FDD		FreqQualityEstimateQuantity-FDD
				},
				tdd									SEQUENCE {
					freqQualityEstimateQuantity-TDD		FreqQualityEstimateQuantity-TDD
				}
			}
		}
	}
}

InterFreqMeasuredResults ::=		SEQUENCE {
	frequencyInfo						FrequencyInfo						OPTIONAL,
	utra-CarrierRSSI					UTRA-CarrierRSSI					OPTIONAL,
	interFreqCellMeasuredResultsList	InterFreqCellMeasuredResultsList	OPTIONAL
}

InterFreqMeasuredResultsList ::=	SEQUENCE (SIZE (1..maxFreq)) OF
										InterFreqMeasuredResults


InterFreqMeasurementSysInfo-RSCP ::=	SEQUENCE {
	interFreqCellInfoSI-List				InterFreqCellInfoSI-List-RSCP		OPTIONAL
}

InterFreqMeasurementSysInfo-ECN0 ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-ECN0		OPTIONAL
}

InterFreqMeasurementSysInfo-HCS-RSCP ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-HCS-RSCP	OPTIONAL
}

InterFreqMeasurementSysInfo-HCS-ECN0 ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-HCS-ECN0	OPTIONAL
}

InterFreqMeasurementSysInfo-RSCP-LCR-r4 ::=	SEQUENCE {
	interFreqCellInfoSI-List				InterFreqCellInfoSI-List-RSCP-LCR		OPTIONAL
}

InterFreqMeasurementSysInfo-ECN0-LCR-r4 ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-ECN0-LCR		OPTIONAL
}

InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-HCS-RSCP-LCR	OPTIONAL
}

InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::=		SEQUENCE {
	interFreqCellInfoSI-List			InterFreqCellInfoSI-List-HCS-ECN0-LCR	OPTIONAL
}

InterFreqRACHRepCellsList ::=			SEQUENCE (SIZE (1..maxFreq)) OF
InterFreqCellID

InterFreqRACHReportingInfo ::= SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			interFreqRepQuantityRACH-FDD		InterFreqRepQuantityRACH-FDD
		},
		tdd									SEQUENCE {
			interFreqRepQuantityRACH-TDDList	InterFreqRepQuantityRACH-TDDList
		},
	interFreqRACHReportingThreshold		Threshold,
	maxReportedCellsOnRACHinterFreq		MaxReportedCellsOnRACHinterFreq
	}
}

InterFreqReportCriteria ::=			CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria,
	interFreqReportingCriteria			InterFreqReportingCriteria,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

InterFreqReportCriteria-r4 ::=		CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria-r4,
	interFreqReportingCriteria			InterFreqReportingCriteria,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

InterFreqReportCriteria-r6 ::=		CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria-r6,
	interFreqReportingCriteria			InterFreqReportingCriteria-r6,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

InterFreqReportingCriteria ::=		SEQUENCE {
	interFreqEventList					InterFreqEventList					OPTIONAL
}

InterFreqReportingCriteria-r6 ::=	SEQUENCE {
	interFreqEventList					InterFreqEventList-r6				OPTIONAL
}

InterFreqReportingQuantity ::=		SEQUENCE {
	utra-Carrier-RSSI					BOOLEAN,
	frequencyQualityEstimate			BOOLEAN,
	nonFreqRelatedQuantities			CellReportingQuantities
}

InterFreqRepQuantityRACH-FDD ::=	ENUMERATED {
										cpich-EcN0, cpich-RSCP }

InterFreqRepQuantityRACH-TDD ::=	ENUMERATED {
										timeslotISCP,
										primaryCCPCH-RSCP }

InterFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF
										InterFreqRepQuantityRACH-TDD

InterFrequencyMeasurement ::=		SEQUENCE {
	interFreqCellInfoList				InterFreqCellInfoList,
	interFreqMeasQuantity				InterFreqMeasQuantity				OPTIONAL,
	interFreqReportingQuantity			InterFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	interFreqSetUpdate					UE-AutonomousUpdateMode				OPTIONAL,
	reportCriteria						InterFreqReportCriteria
}

InterFrequencyMeasurement-r4 ::=	SEQUENCE {
	interFreqCellInfoList				InterFreqCellInfoList-r4,
	interFreqMeasQuantity				InterFreqMeasQuantity				OPTIONAL,
	interFreqReportingQuantity			InterFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	interFreqSetUpdate					UE-AutonomousUpdateMode				OPTIONAL,
	reportCriteria						InterFreqReportCriteria-r4
}

InterFrequencyMeasurement-r6 ::=	SEQUENCE {
	interFreqCellInfoList				InterFreqCellInfoList-r4,
	interFreqMeasQuantity				InterFreqMeasQuantity				OPTIONAL,
	interFreqReportingQuantity			InterFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	interFreqSetUpdate					UE-AutonomousUpdateMode				OPTIONAL,
	reportCriteria						InterFreqReportCriteria-r6
}

InterRAT-TargetCellDescription ::=	SEQUENCE {
	technologySpecificInfo				CHOICE {
		gsm									SEQUENCE {
			bsic								BSIC,
			frequency-band						Frequency-Band,
			bcch-ARFCN							BCCH-ARFCN,
			ncMode								NC-Mode				OPTIONAL
		},
		is-2000								NULL,
		spare2								NULL,
		spare1								NULL
	}
}

InterRATCellID ::=				INTEGER (0..maxCellMeas-1)

InterRATCellInfoIndication ::=		INTEGER (0..3)

InterRATCellInfoList ::=			SEQUENCE {
	removedInterRATCellList			RemovedInterRATCellList,
	-- NOTE: Future revisions of dedicated messages including IE newInterRATCellList
	-- should use a corrected version of this IE
	newInterRATCellList				NewInterRATCellList,
	cellsForInterRATMeasList			CellsForInterRATMeasList			OPTIONAL
}

InterRATCellInfoList-B ::=			SEQUENCE {
	removedInterRATCellList			RemovedInterRATCellList,
	-- NOTE: IE newInterRATCellList should be optional.  However, system information
	-- does not support message versions.  Hence, this can not be corrected
	newInterRATCellList				NewInterRATCellList-B
}

InterRATCellInfoList-r4 ::=			SEQUENCE {
	removedInterRATCellList					RemovedInterRATCellList,
	newInterRATCellList						NewInterRATCellList					OPTIONAL,
	cellsForInterRATMeasList				CellsForInterRATMeasList			OPTIONAL
}

InterRATCellInfoList-r6 ::=			SEQUENCE {
	removedInterRATCellList					RemovedInterRATCellList,
	newInterRATCellList						NewInterRATCellList					OPTIONAL,
	cellsForInterRATMeasList				CellsForInterRATMeasList			OPTIONAL,
	interRATCellInfoIndication-r6			InterRATCellInfoIndication			OPTIONAL
}

InterRATCellIndividualOffset ::=			INTEGER (-50..50)

InterRATEvent ::=				CHOICE {
	event3a								Event3a,
	event3b								Event3b,
	event3c								Event3c,
	event3d								Event3d
}

InterRATEventList ::=			SEQUENCE (SIZE (1..maxMeasEvent)) OF
										InterRATEvent

InterRATEventResults ::=			SEQUENCE {
	eventID								EventIDInterRAT,
	cellToReportList					CellToReportList
}

InterRATInfo ::=					ENUMERATED {
										gsm }

InterRATInfo-r6 ::=					SEQUENCE {
	rat									InterRATInfo,
	gsm-TargetCellInfoList				GSM-TargetCellInfoList			OPTIONAL
}

InterRATMeasQuantity ::=				SEQUENCE {
	measQuantityUTRAN-QualityEstimate		IntraFreqMeasQuantity			OPTIONAL,
	ratSpecificInfo						CHOICE {
		gsm										SEQUENCE {
			measurementQuantity						MeasurementQuantityGSM,
			filterCoefficient						FilterCoefficient		DEFAULT fc0,
			bsic-VerificationRequired				BSIC-VerificationRequired
		},
		is-2000									SEQUENCE {
			tadd-EcIo								INTEGER (0..63),
			tcomp-EcIo								INTEGER (0..15),
			softSlope								INTEGER (0..63)			OPTIONAL,
			addIntercept							INTEGER (0..63)			OPTIONAL
		}
	}	
}

InterRATMeasuredResults ::=		CHOICE {
	gsm									GSM-MeasuredResultsList,
	spare								NULL
}

InterRATMeasuredResultsList ::= SEQUENCE (SIZE (1..maxOtherRAT-16)) OF
										InterRATMeasuredResults

InterRATMeasurement ::=			SEQUENCE {
	interRATCellInfoList				InterRATCellInfoList				OPTIONAL,
	interRATMeasQuantity				InterRATMeasQuantity				OPTIONAL,
	interRATReportingQuantity			InterRATReportingQuantity		OPTIONAL,
	reportCriteria						InterRATReportCriteria
}

InterRATMeasurement-r4 ::=			SEQUENCE {
	interRATCellInfoList				InterRATCellInfoList-r4				OPTIONAL,
	interRATMeasQuantity				InterRATMeasQuantity				OPTIONAL,
	interRATReportingQuantity			InterRATReportingQuantity		OPTIONAL,
	reportCriteria						InterRATReportCriteria
}

InterRATMeasurement-r6 ::=			SEQUENCE {
	interRATCellInfoList				InterRATCellInfoList-r6				OPTIONAL,
	interRATMeasQuantity				InterRATMeasQuantity				OPTIONAL,
	interRATReportingQuantity			InterRATReportingQuantity		OPTIONAL,
	reportCriteria						InterRATReportCriteria
}

InterRATMeasurementSysInfo ::=	SEQUENCE {
	interRATCellInfoList				InterRATCellInfoList				OPTIONAL
}

InterRATMeasurementSysInfo-B ::=	SEQUENCE {
	interRATCellInfoList				InterRATCellInfoList-B			OPTIONAL
}

InterRATReportCriteria ::=		CHOICE {
	interRATReportingCriteria			InterRATReportingCriteria,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}			

InterRATReportingCriteria ::= 	SEQUENCE {
	interRATEventList				InterRATEventList				OPTIONAL
}

InterRATReportingQuantity ::=	SEQUENCE {
	utran-EstimatedQuality				BOOLEAN,
	ratSpecificInfo					CHOICE {
		gsm									SEQUENCE {
			-- dummy and dummy2 are not used in this version of the specification
			-- and when received they should be ignored.
			dummy								BOOLEAN,
			dummy2								BOOLEAN,
			gsm-Carrier-RSSI					BOOLEAN
		}
	}
}

IntraFreqCellID ::=					INTEGER (0..maxCellMeas-1)

IntraFreqCellInfoList ::=			SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellList				OPTIONAL,
	cellsForIntraFreqMeasList			CellsForIntraFreqMeasList			OPTIONAL
}

IntraFreqCellInfoList-r4 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellList-r4				OPTIONAL,
	cellsForIntraFreqMeasList			CellsForIntraFreqMeasList			OPTIONAL
}

IntraFreqCellInfoSI-List-RSCP ::=	SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-RSCP
}

IntraFreqCellInfoSI-List-ECN0 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-ECN0
}

IntraFreqCellInfoSI-List-HCS-RSCP ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-HCS-RSCP
}

IntraFreqCellInfoSI-List-HCS-ECN0 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-HCS-ECN0
}

IntraFreqCellInfoSI-List-RSCP-LCR-r4 ::=	SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-RSCP-LCR-r4
}

IntraFreqCellInfoSI-List-ECN0-LCR-r4 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-ECN0-LCR-r4
}

IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4
}

IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4 ::=		SEQUENCE {
	removedIntraFreqCellList			RemovedIntraFreqCellList			OPTIONAL,
	newIntraFreqCellList				NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4
}

IntraFreqEvent ::=					CHOICE {
	e1a									Event1a,
	e1b									Event1b,
	e1c									Event1c,
	e1d									NULL,
	e1e									Event1e,
	e1f									Event1f,
	e1g									NULL,
	e1h									ThresholdUsedFrequency,
	e1i									ThresholdUsedFrequency
}

IntraFreqEvent-r4 ::=				CHOICE {
	e1a									Event1a-r4,
	e1b									Event1b-r4,
	e1c									Event1c,
	e1d									NULL,
	e1e									Event1e,
	e1f									Event1f,
	e1g									NULL,
	e1h									ThresholdUsedFrequency,
	e1i									ThresholdUsedFrequency
}

IntraFreqEvent-LCR-r4 ::=			CHOICE {
	e1a									Event1a-LCR-r4,
	e1b									Event1b-LCR-r4,
	e1c									Event1c,
	e1d									NULL,
	e1e									Event1e,
	e1f									Event1f,
	e1g									NULL,
	e1h									ThresholdUsedFrequency,
	e1i									ThresholdUsedFrequency
}

IntraFreqEvent-r6 ::=				CHOICE {
	e1a									Event1a-r4,
	e1b									Event1b-r4,
	e1c									Event1c,
	e1d									Event1d,
	e1e									Event1e-r6,
	e1f									Event1f-r6,
	e1g									NULL,
	e1h									ThresholdUsedFrequency-r6,
	e1i									ThresholdUsedFrequency-r6,
	e1j									Event1j-r6
}

IntraFreqEvent-1d-r5 ::=		SEQUENCE {
	triggeringCondition					TriggeringCondition2	OPTIONAL,
	useCIO								BOOLEAN					OPTIONAL
}

IntraFreqEventCriteria ::=			SEQUENCE {
	event								IntraFreqEvent,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

IntraFreqEventCriteria-r4 ::=		SEQUENCE {
	event								IntraFreqEvent-r4,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

IntraFreqEventCriteria-LCR-r4 ::=	SEQUENCE {
	event								IntraFreqEvent-LCR-r4,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

IntraFreqEventCriteria-r6 ::=	SEQUENCE {
	event								IntraFreqEvent-r6,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

IntraFreqEventCriteriaList ::=		SEQUENCE (SIZE (1..maxMeasEvent)) OF
										IntraFreqEventCriteria

IntraFreqEventCriteriaList-r4 ::=	SEQUENCE (SIZE (1..maxMeasEvent)) OF
										IntraFreqEventCriteria-r4

IntraFreqEventCriteriaList-LCR-r4 ::=	SEQUENCE (SIZE (1..maxMeasEvent)) OF
										IntraFreqEventCriteria-LCR-r4

IntraFreqEventCriteriaList-r6 ::=		SEQUENCE (SIZE (1..maxMeasEvent)) OF
										IntraFreqEventCriteria-r6

IntraFreqEventResults ::=			SEQUENCE {
	eventID								EventIDIntraFreq,
	cellMeasurementEventResults			CellMeasurementEventResults
}

IntraFreqMeasQuantity ::=			SEQUENCE {
	filterCoefficient					FilterCoefficient					DEFAULT fc0,
	modeSpecificInfo 					CHOICE {
		fdd								SEQUENCE {
			intraFreqMeasQuantity-FDD		IntraFreqMeasQuantity-FDD
		},
		tdd								SEQUENCE {
			intraFreqMeasQuantity-TDDList	IntraFreqMeasQuantity-TDDList
		}
	}
}

-- If IntraFreqMeasQuantity-FDD is used in InterRATMeasQuantity, then only 
-- cpich-Ec-N0 and cpich-RSCP are allowed.
-- dummy is not used in this version of the specification, it should
-- not be sent and if received the UE behaviour is not specified.
IntraFreqMeasQuantity-FDD ::=		ENUMERATED {
										cpich-Ec-N0,
										cpich-RSCP,
										pathloss,
										dummy }

-- dummy is not used in this version of the specification, it should
-- not be sent and if received the UE behaviour is not specified.
IntraFreqMeasQuantity-TDD ::=		ENUMERATED {
										primaryCCPCH-RSCP,
										pathloss,
										timeslotISCP,
										dummy }

IntraFreqMeasQuantity-TDDList ::=	SEQUENCE (SIZE (1..4)) OF
										IntraFreqMeasQuantity-TDD

IntraFreqMeasuredResultsList ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										CellMeasuredResults

IntraFreqMeasurementSysInfo-RSCP ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-RSCP		OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH				OPTIONAL
}

IntraFreqMeasurementSysInfo-ECN0 ::=		SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-ECN0		OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH				OPTIONAL
}

IntraFreqMeasurementSysInfo-HCS-RSCP ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-HCS-RSCP	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH				OPTIONAL
}

IntraFreqMeasurementSysInfo-HCS-ECN0 ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-HCS-ECN0	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH				OPTIONAL
}

IntraFreqMeasurementSysInfo-RSCP-LCR-r4 ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-RSCP-LCR-r4	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH-LCR-r4		OPTIONAL
}

IntraFreqMeasurementSysInfo-ECN0-LCR-r4 ::=		SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-ECN0-LCR-r4	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH-LCR-r4		OPTIONAL
}

IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4 ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-HCS-RSCP-LCR-r4	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH-LCR-r4		OPTIONAL
}

IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4 ::=	SEQUENCE {
	intraFreqMeasurementID				MeasurementIdentity			DEFAULT 1,
	intraFreqCellInfoSI-List			IntraFreqCellInfoSI-List-HCS-ECN0-LCR-r4	OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantityForRACH	IntraFreqReportingQuantityForRACH	OPTIONAL,
	maxReportedCellsOnRACH				MaxReportedCellsOnRACH				OPTIONAL,
	reportingInfoForCellDCH				ReportingInfoForCellDCH-LCR-r4		OPTIONAL
}

IntraFreqReportCriteria ::=			CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

IntraFreqReportCriteria-r4 ::=		CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria-r4,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

IntraFreqReportCriteria-r6 ::=		CHOICE {
	intraFreqReportingCriteria			IntraFreqReportingCriteria-r6,
	periodicalReportingCriteria			PeriodicalWithReportingCellStatus,
	noReporting							ReportingCellStatusOpt
}

IntraFreqReportingCriteria ::=		SEQUENCE {
	eventCriteriaList					IntraFreqEventCriteriaList		OPTIONAL
}

IntraFreqReportingCriteria-r4 ::=	SEQUENCE {
	eventCriteriaList					IntraFreqEventCriteriaList-r4	OPTIONAL
}

IntraFreqReportingCriteria-LCR-r4 ::=	SEQUENCE {
	eventCriteriaList					IntraFreqEventCriteriaList-LCR-r4	OPTIONAL
}

IntraFreqReportingCriteria-r6 ::= SEQUENCE {
	eventCriteriaList					IntraFreqEventCriteriaList-r6	OPTIONAL
}

IntraFreqReportingQuantity ::=		SEQUENCE {
	activeSetReportingQuantities		CellReportingQuantities,
	monitoredSetReportingQuantities		CellReportingQuantities,
	detectedSetReportingQuantities		CellReportingQuantities				OPTIONAL
}

IntraFreqReportingQuantityForRACH ::= SEQUENCE {
	sfn-SFN-OTD-Type					SFN-SFN-OTD-Type,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			intraFreqRepQuantityRACH-FDD		IntraFreqRepQuantityRACH-FDD
		},
		tdd									SEQUENCE {
			intraFreqRepQuantityRACH-TDDList	IntraFreqRepQuantityRACH-TDDList
		}
	}
}

IntraFreqRepQuantityRACH-FDD ::=	ENUMERATED {
										cpich-EcN0, cpich-RSCP, 
										pathloss, noReport }

IntraFreqRepQuantityRACH-TDD ::=	ENUMERATED {
										timeslotISCP,
										primaryCCPCH-RSCP,
										noReport }

IntraFreqRepQuantityRACH-TDDList ::= SEQUENCE (SIZE (1..2)) OF
										IntraFreqRepQuantityRACH-TDD

IntraFrequencyMeasurement ::=		SEQUENCE {
	intraFreqCellInfoList				IntraFreqCellInfoList				OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantity			IntraFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	reportCriteria						IntraFreqReportCriteria				OPTIONAL
}

IntraFrequencyMeasurement-r4 ::=	SEQUENCE {
	intraFreqCellInfoList				IntraFreqCellInfoList-r4			OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantity			IntraFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	reportCriteria						IntraFreqReportCriteria-r4			OPTIONAL
}

IntraFrequencyMeasurement-r6 ::=		SEQUENCE {
	intraFreqCellInfoList				IntraFreqCellInfoList-r4			OPTIONAL,
	intraFreqMeasQuantity				IntraFreqMeasQuantity				OPTIONAL,
	intraFreqReportingQuantity			IntraFreqReportingQuantity			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	reportCriteria						IntraFreqReportCriteria-r6
}

IODE ::=							INTEGER (0..255)

IP-Length ::=						ENUMERATED {
										ipl5, ipl10 }

IP-PCCPCH-r4 ::=					BOOLEAN

IP-Spacing ::=						ENUMERATED {
										e5, e7, e10, e15, e20,
										e30, e40, e50 }

IP-Spacing-TDD ::=						ENUMERATED {
										e30, e40, e50, e70, e100}

IS-2000SpecificMeasInfo ::=			ENUMERATED {
										frequency, timeslot, colourcode,
										outputpower, pn-Offset }

MaxNumberOfReportingCellsType1 ::=	ENUMERATED {
										e1, e2, e3, e4, e5, e6}

MaxNumberOfReportingCellsType2 ::=	ENUMERATED {
										e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12}

MaxNumberOfReportingCellsType3 ::=	ENUMERATED {
										viactCellsPlus1,
										viactCellsPlus2,
										viactCellsPlus3,
										viactCellsPlus4,
										viactCellsPlus5,
										viactCellsPlus6 }

MaxReportedCellsOnRACH ::=			ENUMERATED {
										noReport,
										currentCell,
										currentAnd-1-BestNeighbour,
										currentAnd-2-BestNeighbour,
										currentAnd-3-BestNeighbour,
										currentAnd-4-BestNeighbour,
										currentAnd-5-BestNeighbour,
										currentAnd-6-BestNeighbour }

MaxReportedCellsOnRACHinterFreq ::=		INTEGER (1..8)

MeasuredResults ::=					CHOICE {
	intraFreqMeasuredResultsList		IntraFreqMeasuredResultsList,
	interFreqMeasuredResultsList		InterFreqMeasuredResultsList,
	interRATMeasuredResultsList		InterRATMeasuredResultsList,
	trafficVolumeMeasuredResultsList	TrafficVolumeMeasuredResultsList,
	qualityMeasuredResults				QualityMeasuredResults,
	ue-InternalMeasuredResults			UE-InternalMeasuredResults,
	ue-positioning-MeasuredResults		UE-Positioning-MeasuredResults,
	spare								NULL
}

MeasuredResults-v390ext ::=					SEQUENCE {
	ue-positioning-MeasuredResults-v390ext					UE-Positioning-MeasuredResults-v390ext
}


MeasuredResults-v590ext ::= CHOICE {
	intraFrequencyMeasuredResultsList		IntraFrequencyMeasuredResultsList-v590ext,
	interFrequencyMeasuredResultsList		InterFrequencyMeasuredResultsList-v590ext
}

MeasuredResults-v7xyext ::= CHOICE {
	ueInternalMeasuredResults		UE-InternalMeasuredResults-r7
}

MeasuredResults-LCR-r4 ::=			CHOICE {
	intraFreqMeasuredResultsList		IntraFreqMeasuredResultsList,
	interFreqMeasuredResultsList		InterFreqMeasuredResultsList,
	interRATMeasuredResultsList		InterRATMeasuredResultsList,
	trafficVolumeMeasuredResultsList	TrafficVolumeMeasuredResultsList,
	qualityMeasuredResults				QualityMeasuredResults,
	ue-InternalMeasuredResults			UE-InternalMeasuredResults-LCR-r4,
	ue-positioniing-MeasuredResults		UE-Positioning-MeasuredResults,
	spare								NULL
}

MeasuredResultsList ::=				SEQUENCE (SIZE (1..maxAdditionalMeas)) OF
										MeasuredResults

MeasuredResultsList-LCR-r4-ext ::=	SEQUENCE (SIZE (1..maxAdditionalMeas)) OF
										MeasuredResults-LCR-r4

MeasuredResultsOnRACH ::=			SEQUENCE {
	currentCell 						SEQUENCE {
		modeSpecificInfo					CHOICE {
			fdd									SEQUENCE {
				measurementQuantity					CHOICE {
					cpich-Ec-N0							CPICH-Ec-N0,
					cpich-RSCP							CPICH-RSCP,
					pathloss							Pathloss,
					spare								NULL 
				}
			},
			tdd									SEQUENCE {
				-- For 3.84 Mcps and 7.68 Mcps TDD   --
				timeslotISCP						TimeslotISCP-List		OPTIONAL,
				primaryCCPCH-RSCP					PrimaryCCPCH-RSCP		OPTIONAL
			}
		}
	},
	monitoredCells						MonitoredCellRACH-List				OPTIONAL
}

MeasuredResultsOnRACHinterFreq ::=		SEQUENCE {
	interFreqCellIndication-SIB11			INTEGER (0..1),
	interFreqCellIndication-SIB12			INTEGER (0..1),
	interFreqRACHRepCellsList				InterFreqRACHRepCellsList
}

MeasurementCommand ::=				CHOICE {
	setup								MeasurementType,
	modify								SEQUENCE {
		measurementType						MeasurementType					OPTIONAL
	},
	release								NULL
}

MeasurementCommand-r4 ::=			CHOICE {
	setup								MeasurementType-r4,
	modify								SEQUENCE {
		measurementType						MeasurementType-r4				OPTIONAL
	},
	release								NULL
}

MeasurementCommand-r6 ::=			CHOICE {
	setup								MeasurementType-r6,
	modify								SEQUENCE {
		measurementType						MeasurementType-r6				OPTIONAL
	},
	release								NULL
}

MeasurementControlSysInfo ::=		SEQUENCE {
	-- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode.
	use-of-HCS							CHOICE	{
		hcs-not-used 					SEQUENCE	{
			cellSelectQualityMeasure	CHOICE	{
				cpich-RSCP				SEQUENCE	{
					intraFreqMeasurementSysInfo			IntraFreqMeasurementSysInfo-RSCP	OPTIONAL,
					interFreqMeasurementSysInfo			InterFreqMeasurementSysInfo-RSCP	OPTIONAL
				},
				cpich-Ec-N0				SEQUENCE	{
					intraFreqMeasurementSysInfo			IntraFreqMeasurementSysInfo-ECN0		OPTIONAL,
					interFreqMeasurementSysInfo			InterFreqMeasurementSysInfo-ECN0	OPTIONAL
				}
			},
			interRATMeasurementSysInfo		InterRATMeasurementSysInfo-B		OPTIONAL
		},
		hcs-used						SEQUENCE	{
			cellSelectQualityMeasure	CHOICE	{
				cpich-RSCP				SEQUENCE	{
					intraFreqMeasurementSysInfo			IntraFreqMeasurementSysInfo-HCS-RSCP			OPTIONAL,
					interFreqMeasurementSysInfo			InterFreqMeasurementSysInfo-HCS-RSCP			OPTIONAL
				},
				cpich-Ec-N0				SEQUENCE	{
					intraFreqMeasurementSysInfo			IntraFreqMeasurementSysInfo-HCS-ECN0			OPTIONAL,
					interFreqMeasurementSysInfo			InterFreqMeasurementSysInfo-HCS-ECN0			OPTIONAL				}
			},
			interRATMeasurementSysInfo		InterRATMeasurementSysInfo		OPTIONAL
		}
	},

	trafficVolumeMeasSysInfo			TrafficVolumeMeasSysInfo			OPTIONAL,
	-- dummy is not used in this version of specification and it shall be ignored by the UE.
	dummy		UE-InternalMeasurementSysInfo		OPTIONAL
}

MeasurementControlSysInfo-LCR-r4-ext ::=	SEQUENCE {
	-- CHOICE use-of-HCS shall have the same value as the use-of-HCS
	-- in MeasurementControlSysInfo
	-- CHOICE cellSelectQualityMeasure represents PCCPCH-RSCP in TDD mode.
	use-of-HCS							CHOICE	{
		hcs-not-used 					SEQUENCE	{
			-- CHOICE cellSelectQualityMeasure shall have the same value as the
			-- cellSelectQualityMeasure in MeasurementControlSysInfo
			cellSelectQualityMeasure	CHOICE	{
				cpich-RSCP				SEQUENCE	{
					intraFreqMeasurementSysInfo	IntraFreqMeasurementSysInfo-RSCP-LCR-r4	OPTIONAL,
					interFreqMeasurementSysInfo	InterFreqMeasurementSysInfo-RSCP-LCR-r4	OPTIONAL
				},
				cpich-Ec-N0				SEQUENCE	{
					intraFreqMeasurementSysInfo	IntraFreqMeasurementSysInfo-ECN0-LCR-r4	OPTIONAL,
					interFreqMeasurementSysInfo	InterFreqMeasurementSysInfo-ECN0-LCR-r4	OPTIONAL
				}
			}
		},
		hcs-used						SEQUENCE	{
			-- CHOICE cellSelectQualityMeasure shall have the same value as the
			-- cellSelectQualityMeasure in MeasurementControlSysInfo
			cellSelectQualityMeasure	CHOICE	{
				cpich-RSCP				SEQUENCE	{
					intraFreqMeasurementSysInfo	IntraFreqMeasurementSysInfo-HCS-RSCP-LCR-r4	OPTIONAL,
					interFreqMeasurementSysInfo	InterFreqMeasurementSysInfo-HCS-RSCP-LCR-r4	OPTIONAL
				},
				cpich-Ec-N0				SEQUENCE	{
					intraFreqMeasurementSysInfo	IntraFreqMeasurementSysInfo-HCS-ECN0-LCR-r4	OPTIONAL,
					interFreqMeasurementSysInfo	InterFreqMeasurementSysInfo-HCS-ECN0-LCR-r4	OPTIONAL
				}
			}
		}
	}
}

MeasurementIdentity ::=		INTEGER (1..16)

MeasurementQuantityGSM ::=			ENUMERATED {
										gsm-CarrierRSSI,
										dummy }

MeasurementReportingMode ::=		SEQUENCE {
	measurementReportTransferMode		TransferMode,
	periodicalOrEventTrigger			PeriodicalOrEventTrigger
}	

MeasurementType ::=					CHOICE {
	intraFrequencyMeasurement			IntraFrequencyMeasurement,
	interFrequencyMeasurement			InterFrequencyMeasurement,
	interRATMeasurement					InterRATMeasurement,
	ue-positioning-Measurement			UE-Positioning-Measurement,
	trafficVolumeMeasurement			TrafficVolumeMeasurement,
	qualityMeasurement					QualityMeasurement,
	ue-InternalMeasurement				UE-InternalMeasurement
}

MeasurementType-r4 ::=				CHOICE {
	intraFrequencyMeasurement			IntraFrequencyMeasurement-r4,
	interFrequencyMeasurement			InterFrequencyMeasurement-r4,
	interRATMeasurement					InterRATMeasurement-r4,
	up-Measurement						UE-Positioning-Measurement-r4,
	trafficVolumeMeasurement			TrafficVolumeMeasurement,
	qualityMeasurement					QualityMeasurement,
	ue-InternalMeasurement				UE-InternalMeasurement-r4
}

MeasurementType-r6 ::=				CHOICE {
	intraFrequencyMeasurement			IntraFrequencyMeasurement-r6,
	interFrequencyMeasurement			InterFrequencyMeasurement-r6,
	interRATMeasurement					InterRATMeasurement-r6,
	up-Measurement						UE-Positioning-Measurement-r4,
	trafficVolumeMeasurement			TrafficVolumeMeasurement,
	qualityMeasurement					QualityMeasurement,
	ue-InternalMeasurement				UE-InternalMeasurement-r4
}

MeasurementValidity ::=				SEQUENCE {
	ue-State							ENUMERATED {
											cell-DCH, all-But-Cell-DCH, all-States }
}

MonitoredCellRACH-List ::=			SEQUENCE (SIZE (1..8)) OF
										MonitoredCellRACH-Result

MonitoredCellRACH-Result ::=		SEQUENCE {
	sfn-SFN-ObsTimeDifference			SFN-SFN-ObsTimeDifference			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info,
			measurementQuantity					CHOICE {
				cpich-Ec-N0							CPICH-Ec-N0,
				cpich-RSCP							CPICH-RSCP,
				pathloss							Pathloss,
				spare								NULL
			}																OPTIONAL
		},
		tdd									SEQUENCE {
			cellParametersID					CellParametersID,
			primaryCCPCH-RSCP					PrimaryCCPCH-RSCP
		}
	}
}

MultipathIndicator ::=				ENUMERATED {
										nm,
										low,
										medium,
										high }

N-CR-T-CRMaxHyst ::=				SEQUENCE {
	n-CR								INTEGER (1..16)						DEFAULT 8,
	t-CRMaxHyst							T-CRMaxHyst
}

NavigationModelSatInfo ::=			SEQUENCE {
	satID								SatID,
	satelliteStatus						SatelliteStatus,
	ephemerisParameter					EphemerisParameter		OPTIONAL
}

NavigationModelSatInfoList ::=		SEQUENCE (SIZE (1..maxSat)) OF
										NavigationModelSatInfo

EphemerisParameter ::=						SEQUENCE {
	codeOnL2							BIT STRING (SIZE (2)),
	uraIndex							BIT STRING (SIZE (4)),
	satHealth							BIT STRING (SIZE (6)),
	iodc								BIT STRING (SIZE (10)),
	l2Pflag								BIT STRING (SIZE (1)),
	sf1Revd								SubFrame1Reserved,
	t-GD								BIT STRING (SIZE (8)),
	t-oc								BIT STRING (SIZE (16)),
	af2									BIT STRING (SIZE (8)),
	af1									BIT STRING (SIZE (16)),
	af0									BIT STRING (SIZE (22)),
	c-rs								BIT STRING (SIZE (16)),
	delta-n								BIT STRING (SIZE (16)),
	m0									BIT STRING (SIZE (32)),
	c-uc								BIT STRING (SIZE (16)),
	e									BIT STRING (SIZE (32)),
	c-us								BIT STRING (SIZE (16)),
	a-Sqrt								BIT STRING (SIZE (32)),
	t-oe								BIT STRING (SIZE (16)),
	fitInterval							BIT STRING (SIZE (1)),
	aodo								BIT STRING (SIZE (5)),
	c-ic								BIT STRING (SIZE (16)),
	omega0								BIT STRING (SIZE (32)),
	c-is								BIT STRING (SIZE (16)),
	i0									BIT STRING (SIZE (32)),
	c-rc								BIT STRING (SIZE (16)),
	omega								BIT STRING (SIZE (32)),
	omegaDot							BIT STRING (SIZE (24)),
	iDot								BIT STRING (SIZE (14))
}
NC-Mode ::=							BIT STRING (SIZE (3))

Neighbour ::=						SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			neighbourIdentity					PrimaryCPICH-Info					OPTIONAL,
			uE-RX-TX-TimeDifferenceType2Info	UE-RX-TX-TimeDifferenceType2Info	OPTIONAL
		},
		tdd								SEQUENCE {
			neighbourAndChannelIdentity		CellAndChannelIdentity					OPTIONAL
		}
	},	
	neighbourQuality					NeighbourQuality,
	sfn-SFN-ObsTimeDifference2			SFN-SFN-ObsTimeDifference2}

Neighbour-v390ext ::=						SEQUENCE {
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			frequencyInfo						FrequencyInfo
		},
		tdd								NULL
	}
}

NeighbourList ::=					SEQUENCE (SIZE (1..maxCellMeas)) OF
										Neighbour

-- The order of the cells in IE NeighbourList-v390ext shall be the
-- same as the order in IE NeighbourList
NeighbourList-v390ext ::=					SEQUENCE (SIZE (1..maxCellMeas)) OF
										Neighbour-v390ext

NeighbourQuality ::=				SEQUENCE {
	ue-Positioning-OTDOA-Quality		UE-Positioning-OTDOA-Quality
}

NewInterFreqCell ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfo
}

NewInterFreqCell-r4 ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfo-r4
}

NewInterFreqCellList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCell

NewInterFreqCellList-r4 ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCell-r4

NewInterFreqCellSI-RSCP ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-RSCP
}

NewInterFreqCellSI-ECN0 ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-ECN0
}

NewInterFreqCellSI-HCS-RSCP ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-HCS-RSCP
}

NewInterFreqCellSI-HCS-ECN0 ::=				SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-HCS-ECN0
}

NewInterFreqCellSI-RSCP-LCR-r4 ::=			SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-RSCP-LCR-r4
}

NewInterFreqCellSI-ECN0-LCR-r4 ::=			SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-ECN0-LCR-r4
}

NewInterFreqCellSI-HCS-RSCP-LCR-r4 ::=		SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-HCS-RSCP-LCR-r4
}

NewInterFreqCellSI-HCS-ECN0-LCR-r4 ::=		SEQUENCE {
	interFreqCellID						InterFreqCellID						OPTIONAL,
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellInfo							CellInfoSI-HCS-ECN0-LCR-r4
}

NewInterFreqCellSI-List-ECN0 ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-ECN0

NewInterFreqCellSI-List-HCS-RSCP ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-HCS-RSCP

NewInterFreqCellSI-List-HCS-ECN0 ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-HCS-ECN0

NewInterFreqCellSI-List-RSCP ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-RSCP

NewInterFreqCellSI-List-ECN0-LCR-r4 ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-ECN0-LCR-r4

NewInterFreqCellSI-List-HCS-RSCP-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-HCS-RSCP-LCR-r4

NewInterFreqCellSI-List-HCS-ECN0-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-HCS-ECN0-LCR-r4

NewInterFreqCellSI-List-RSCP-LCR-r4 ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterFreqCellSI-RSCP-LCR-r4

NewInterRATCell ::=				SEQUENCE {
	interRATCellID						InterRATCellID			OPTIONAL,
	technologySpecificInfo				CHOICE {
		gsm									SEQUENCE {
			cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12		OPTIONAL,
			interRATCellIndividualOffset 		InterRATCellIndividualOffset,
			bsic								BSIC,
			frequency-band						Frequency-Band,
			bcch-ARFCN							BCCH-ARFCN,
			-- dummy is not used in this version of the specification, it should
			-- not be sent and if received it should be ignored.
			dummy								NULL				OPTIONAL
		},
		is-2000								SEQUENCE {
			is-2000SpecificMeasInfo				IS-2000SpecificMeasInfo
		},
		-- ASN.1 inconsistency: NewInterRATCellList should be optional within
		-- InterRATCellInfoList. The UE shall consider IE NewInterRATCell with
		-- technologySpecificInfo set to "absent" as valid and handle the
		-- message as if the IE NewInterRATCell was absent
		absent								NULL,
		spare1								NULL
	}
}

NewInterRATCell-B ::=				SEQUENCE {
	interRATCellID						InterRATCellID				OPTIONAL,
	technologySpecificInfo				CHOICE {
		gsm									SEQUENCE {
			cellSelectionReselectionInfo		CellSelectReselectInfoSIB-11-12		OPTIONAL,
			interRATCellIndividualOffset 		InterRATCellIndividualOffset,
			bsic								BSIC,
			frequency-band						Frequency-Band,
			bcch-ARFCN							BCCH-ARFCN,
			-- dummy is not used in this version of the specification, it should
			-- not be sent and if received it should be ignored.
			dummy								NULL				OPTIONAL
		},
		is-2000								SEQUENCE {
			is-2000SpecificMeasInfo				IS-2000SpecificMeasInfo
		},
		-- ASN.1 inconsistency: NewInterRATCellList-B should be optional within
		-- InterRATCellInfoList-B. The UE shall consider IE NewInterRATCell-B with
		-- technologySpecificInfo set to "absent" as valid and handle the
		-- message as if the IE NewInterRATCell-B was absent
		absent								NULL,
		spare1								NULL
	}
}

NewInterRATCellList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterRATCell

NewInterRATCellList-B ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewInterRATCell-B

NewIntraFreqCell ::=				SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfo
}

NewIntraFreqCell-r4 ::=				SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfo-r4
}

NewIntraFreqCellList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCell

NewIntraFreqCellList-r4 ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCell-r4

NewIntraFreqCellSI-RSCP ::=				SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-RSCP
}

NewIntraFreqCellSI-ECN0 ::=			SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-ECN0
}
NewIntraFreqCellSI-HCS-RSCP ::=		SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-HCS-RSCP
}

NewIntraFreqCellSI-HCS-ECN0 ::=		SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-HCS-ECN0
}

NewIntraFreqCellSI-RSCP-LCR-r4 ::=		SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-RSCP-LCR-r4
}

NewIntraFreqCellSI-ECN0-LCR-r4 ::=		SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-ECN0-LCR-r4
}
NewIntraFreqCellSI-HCS-RSCP-LCR-r4 ::=	SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-HCS-RSCP-LCR-r4
}

NewIntraFreqCellSI-HCS-ECN0-LCR-r4 ::=	SEQUENCE {
	intraFreqCellID						IntraFreqCellID						OPTIONAL,
	cellInfo							CellInfoSI-HCS-ECN0-LCR-r4
}

NewIntraFreqCellSI-List-RSCP ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
											NewIntraFreqCellSI-RSCP

NewIntraFreqCellSI-List-ECN0 ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-ECN0

NewIntraFreqCellSI-List-HCS-RSCP ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-HCS-RSCP

NewIntraFreqCellSI-List-HCS-ECN0 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-HCS-ECN0

NewIntraFreqCellSI-List-RSCP-LCR-r4 ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
											NewIntraFreqCellSI-RSCP-LCR-r4

NewIntraFreqCellSI-List-ECN0-LCR-r4 ::=		SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-ECN0-LCR-r4

NewIntraFreqCellSI-List-HCS-RSCP-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-HCS-RSCP-LCR-r4

NewIntraFreqCellSI-List-HCS-ECN0-LCR-r4 ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
										NewIntraFreqCellSI-HCS-ECN0-LCR-r4

	-- IE "nonUsedFreqThreshold" is not needed in case of event 2a
	-- In case of event 2a UTRAN should include value 0 within IE "nonUsedFreqThreshold"
	-- In case of event 2a, the UE shall be ignore IE "nonUsedFreqThreshold"
	-- In later versions of the message including this IE, a special version of
	-- IE "NonUsedFreqParameterList" may be defined for event 2a, namely a
	-- version not including IE "nonUsedFreqThreshold"
NonUsedFreqParameter ::=			SEQUENCE {
	nonUsedFreqThreshold				Threshold,
	nonUsedFreqW						W
}

NonUsedFreqParameter-r6 ::=			SEQUENCE {
	nonUsedFreqThreshold				Threshold-r6,
	nonUsedFreqW						W
}

NonUsedFreqParameterList ::=		SEQUENCE (SIZE (1..maxFreq)) OF
										NonUsedFreqParameter

NonUsedFreqParameterList-r6 ::=		SEQUENCE (SIZE (1..maxFreq)) OF
										NonUsedFreqParameter-r6

NonUsedFreqWList-r6 ::=		SEQUENCE (SIZE (1..maxFreq)) OF W

ObservedTimeDifferenceToGSM ::=		INTEGER (0..4095)

OTDOA-SearchWindowSize ::=			ENUMERATED {
										c20, c40, c80, c160, c320,
										c640, c1280, moreThan1280 }

-- SPARE: Pathloss, Max = 158
-- Values above Max are spare
Pathloss ::=						INTEGER (46..173)

PenaltyTime-RSCP ::=				CHOICE {
	notUsed								NULL,
	pt10								TemporaryOffset1,
	pt20								TemporaryOffset1,
	pt30								TemporaryOffset1,
	pt40								TemporaryOffset1,
	pt50								TemporaryOffset1,
	pt60								TemporaryOffset1
}

PenaltyTime-ECN0 ::=				CHOICE {
	notUsed								NULL,
	pt10								TemporaryOffsetList,
	pt20								TemporaryOffsetList,
	pt30								TemporaryOffsetList,
	pt40								TemporaryOffsetList,
	pt50								TemporaryOffsetList,
	pt60								TemporaryOffsetList
}

PendingTimeAfterTrigger ::=			ENUMERATED {
										ptat0-25, ptat0-5, ptat1,
										ptat2, ptat4, ptat8, ptat16 }

PeriodicalOrEventTrigger ::=		ENUMERATED {
										periodical,
										eventTrigger }

PeriodicalReportingCriteria ::=		SEQUENCE {
	reportingAmount						ReportingAmount					DEFAULT ra-Infinity,
	reportingInterval					ReportingIntervalLong
}

PeriodicalWithReportingCellStatus ::= SEQUENCE {
	periodicalReportingCriteria			PeriodicalReportingCriteria,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

PLMNIdentitiesOfNeighbourCells ::=	SEQUENCE {
		plmnsOfIntraFreqCellsList		PLMNsOfIntraFreqCellsList			OPTIONAL,
		plmnsOfInterFreqCellsList		PLMNsOfInterFreqCellsList			OPTIONAL,
		plmnsOfInterRATCellsList		PLMNsOfInterRATCellsList			OPTIONAL
}

PLMNsOfInterFreqCellsList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
											SEQUENCE {
	plmn-Identity								PLMN-Identity				OPTIONAL
}

PLMNsOfIntraFreqCellsList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
											SEQUENCE {
	plmn-Identity								PLMN-Identity				OPTIONAL
}

PLMNsOfInterRATCellsList ::=			SEQUENCE (SIZE (1..maxCellMeas)) OF
											SEQUENCE {
	plmn-Identity								PLMN-Identity				OPTIONAL
}

PositionEstimate ::=				CHOICE {
	ellipsoidPoint						EllipsoidPoint,
	ellipsoidPointUncertCircle			EllipsoidPointUncertCircle,
	ellipsoidPointUncertEllipse			EllipsoidPointUncertEllipse,
	ellipsoidPointAltitude				EllipsoidPointAltitude,
	ellipsoidPointAltitudeEllipse		EllipsoidPointAltitudeEllipsoide
}

PositioningMethod ::=				ENUMERATED {
										otdoa,
										gps,
										otdoaOrGPS, cellID }

-- Actual value PRC = IE value * 0.32
PRC ::=								INTEGER (-2047..2047)

-- SPARE: PrimaryCCPCH-RSCP, Max = 91
-- Values above Max are spare
PrimaryCCPCH-RSCP ::=				INTEGER (0..127)

Q-HCS ::=							INTEGER (0..99)

Q-OffsetS-N ::=						INTEGER (-50..50)

Q-QualMin ::=						INTEGER (-24..0)

-- Actual value Q-RxlevMin = (IE value * 2) + 1
Q-RxlevMin ::=						INTEGER (-58..-13)

QualityEventResults ::=				SEQUENCE (SIZE (1..maxTrCH)) OF
										TransportChannelIdentity

QualityMeasuredResults ::=			SEQUENCE {
	blerMeasurementResultsList			BLER-MeasurementResultsList			OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									NULL,
		tdd									SEQUENCE {
			sir-MeasurementResults				SIR-MeasurementList			OPTIONAL
		}
	}
}

QualityMeasurement ::=				SEQUENCE {
	qualityReportingQuantity			QualityReportingQuantity			OPTIONAL,
	reportCriteria						QualityReportCriteria
}

QualityReportCriteria ::=			CHOICE {
	qualityReportingCriteria			QualityReportingCriteria,
	periodicalReportingCriteria			PeriodicalReportingCriteria,
	noReporting							NULL
}

QualityReportingCriteria ::=		SEQUENCE (SIZE (1..maxTrCH)) OF
										QualityReportingCriteriaSingle

QualityReportingCriteriaSingle ::=	SEQUENCE {
	transportChannelIdentity			TransportChannelIdentity,
	totalCRC							INTEGER (1..512),
	badCRC								INTEGER (1..512),
	pendingAfterTrigger					INTEGER (1..512)
}

QualityReportingQuantity ::=		SEQUENCE {
	dl-TransChBLER						BOOLEAN,
	bler-dl-TransChIdList				BLER-TransChIdList					OPTIONAL,
	modeSpecificInfo					CHOICE {
		fdd									NULL,
		tdd									SEQUENCE {
			sir-TFCS-List						SIR-TFCS-List				OPTIONAL
		}
	}
}

RAT-Type ::=						ENUMERATED {
										gsm, is2000 }

ReferenceCellPosition ::=			CHOICE {
	ellipsoidPoint						EllipsoidPoint,
	ellipsoidPointWithAltitude			EllipsoidPointAltitude
}

-- ReferenceLocation, as defined in 23.032
ReferenceLocation ::=			SEQUENCE {
	ellipsoidPointAltitudeEllipsoide		EllipsoidPointAltitudeEllipsoide
}

ReferenceTimeDifferenceToCell ::= 	CHOICE {
	-- Actual value accuracy40 = IE value * 40
	accuracy40							INTEGER (0..960),
	-- Actual value accuracy256 = IE value * 256
	accuracy256							INTEGER (0..150),
	-- Actual value accuracy2560 = IE value * 2560
	accuracy2560						INTEGER (0..15)
}

RemovedInterFreqCellList ::=		CHOICE {
	removeAllInterFreqCells				NULL,
	removeSomeInterFreqCells			SEQUENCE (SIZE (1..maxCellMeas)) OF
											InterFreqCellID,
	removeNoInterFreqCells				NULL
}

RemovedInterRATCellList ::=		CHOICE {
	removeAllInterRATCells			NULL,
	removeSomeInterRATCells			SEQUENCE (SIZE (1..maxCellMeas)) OF
											InterRATCellID,
	removeNoInterRATCells			NULL
}

RemovedIntraFreqCellList ::=		CHOICE {
	removeAllIntraFreqCells				NULL,
	removeSomeIntraFreqCells			SEQUENCE (SIZE (1..maxCellMeas)) OF
											IntraFreqCellID,
	removeNoIntraFreqCells				NULL
}

ReplacementActivationThreshold ::= 	ENUMERATED {
										notApplicable, t1, t2,
										t3, t4, t5, t6, t7 }

ReportDeactivationThreshold ::=		ENUMERATED {
										notApplicable, t1, t2,
										t3, t4, t5, t6, t7 }

ReportingAmount ::=					ENUMERATED {
										ra1, ra2, ra4, ra8, ra16, ra32,
										ra64, ra-Infinity }

ReportingCellStatus ::=				CHOICE{
	withinActiveSet						MaxNumberOfReportingCellsType1,
	withinMonitoredSetUsedFreq			MaxNumberOfReportingCellsType1,
	withinActiveAndOrMonitoredUsedFreq	MaxNumberOfReportingCellsType1,
	withinDetectedSetUsedFreq			MaxNumberOfReportingCellsType1,
	withinMonitoredAndOrDetectedUsedFreq
										MaxNumberOfReportingCellsType1,
	allActiveplusMonitoredSet			MaxNumberOfReportingCellsType3,
	allActivePlusDetectedSet			MaxNumberOfReportingCellsType3,
	allActivePlusMonitoredAndOrDetectedSet
										MaxNumberOfReportingCellsType3,
	withinVirtualActSet				MaxNumberOfReportingCellsType1,
	withinMonitoredSetNonUsedFreq		MaxNumberOfReportingCellsType1,
	withinMonitoredAndOrVirtualActiveSetNonUsedFreq
										MaxNumberOfReportingCellsType1,
	allVirtualActSetplusMonitoredSetNonUsedFreq	
										MaxNumberOfReportingCellsType3,
	withinActSetOrVirtualActSet-InterRATcells
										MaxNumberOfReportingCellsType2,
	withinActSetAndOrMonitoredUsedFreqOrVirtualActSetAndOrMonitoredNonUsedFreq	
										MaxNumberOfReportingCellsType2
}

ReportingCellStatusOpt ::=			SEQUENCE {
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}


ReportingInfoForCellDCH ::=			SEQUENCE {
	intraFreqReportingQuantity			IntraFreqReportingQuantity,
	measurementReportingMode			MeasurementReportingMode,
	reportCriteria						CellDCH-ReportCriteria
}

ReportingInfoForCellDCH-LCR-r4 ::=	SEQUENCE {
	intraFreqReportingQuantity			IntraFreqReportingQuantity,
	measurementReportingMode			MeasurementReportingMode,
	reportCriteria						CellDCH-ReportCriteria-LCR-r4
}

ReportingInterval ::=				ENUMERATED {
										noPeriodicalreporting, ri0-25, 
										ri0-5, ri1, ri2, ri4, ri8, ri16 }

ReportingIntervalLong ::=			ENUMERATED {
										ril0, ril0-25, ril0-5, ril1,
										ril2, ril3, ril4, ril6, ril8,
										ril12, ril16, ril20, ril24,
										ril28, ril32, ril64 }
									-- When the value “ril0” is used, the UE behaviour is not
									-- defined.

-- Actual value ReportingRange = IE value * 0.5
ReportingRange ::=					INTEGER (0..29)

RL-AdditionInfoList ::=				SEQUENCE (SIZE (1..maxRL)) OF
										PrimaryCPICH-Info

RL-InformationLists ::=				SEQUENCE {
	rl-AdditionInfoList					RL-AdditionInfoList					OPTIONAL,
	rL-RemovalInformationList			RL-RemovalInformationList			OPTIONAL
}

RLC-BuffersPayload ::=				ENUMERATED {
										pl0, pl4, pl8, pl16, pl32,
										pl64, pl128, pl256, pl512, pl1024,
										pl2k, pl4k, pl8k, pl16k, pl32k,
										pl64k, pl128k, pl256k, pl512k, pl1024k,
										spare12, spare11, spare10, spare9, spare8,
										spare7, spare6, spare5, spare4, spare3,
										spare2, spare1 }

-- Actual value RRC = IE value * 0.032
RRC ::=								INTEGER (-127..127)

SatData ::=							SEQUENCE{
	satID								SatID,
	iode								IODE
}

SatDataList ::=						SEQUENCE (SIZE (0..maxSat)) OF
										SatData

SatelliteStatus ::=					ENUMERATED {
										ns-NN-U,
										es-SN,
										es-NN-U,
										rev2,
										rev }

-- Identifies the satellite and is equal to (SV ID No - 1) where SV ID No is defined in [12].
SatID ::=							INTEGER (0..63)

SFN-Offset-Validity ::=			ENUMERATED { false }

SFN-SFN-Drift ::= 					ENUMERATED {
										sfnsfndrift0, sfnsfndrift1, sfnsfndrift2,
										sfnsfndrift3, sfnsfndrift4, sfnsfndrift5,
										sfnsfndrift8, sfnsfndrift10, sfnsfndrift15,
										sfnsfndrift25, sfnsfndrift35, sfnsfndrift50,
										sfnsfndrift65, sfnsfndrift80, sfnsfndrift100,
										sfnsfndrift-1, sfnsfndrift-2, sfnsfndrift-3,
										sfnsfndrift-4, sfnsfndrift-5, sfnsfndrift-8,
										sfnsfndrift-10, sfnsfndrift-15, sfnsfndrift-25,
										sfnsfndrift-35, sfnsfndrift-50, sfnsfndrift-65,
										sfnsfndrift-80, sfnsfndrift-100}

SFN-SFN-ObsTimeDifference ::=		CHOICE {
	type1								SFN-SFN-ObsTimeDifference1,
	type2								SFN-SFN-ObsTimeDifference2
}

-- SPARE: SFN-SFN-ObsTimeDifference1, Max = 9830399
-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference1 is 3276799.
-- Values above Max are spare
SFN-SFN-ObsTimeDifference1 ::=		INTEGER (0..16777215)

-- SPARE: SFN-SFN-ObsTimeDifference2, Max = 40961
-- For 1.28Mcps TDD, Max value of SFN-SFN-ObsTimeDifference2 is 27649.
-- Values above Max are spare
SFN-SFN-ObsTimeDifference2 ::=		INTEGER (0..65535)

SFN-SFN-OTD-Type ::=				ENUMERATED {
										noReport,
										type1,
										type2 }

SFN-SFN-RelTimeDifference1 ::=		SEQUENCE {
	sfn-Offset							INTEGER (0 .. 4095),
	sfn-sfn-Reltimedifference			INTEGER (0.. 38399)
}

SFN-TOW-Uncertainty ::=				ENUMERATED {
										lessThan10,
										moreThan10 }


SIR ::=								INTEGER (0..63)


SIR-MeasurementList ::=				SEQUENCE (SIZE (1..maxCCTrCH)) OF
										SIR-MeasurementResults


SIR-MeasurementResults ::=			SEQUENCE {
	tfcs-ID								TFCS-IdentityPlain,
	sir-TimeslotList					SIR-TimeslotList
}

SIR-TFCS ::=						TFCS-IdentityPlain


SIR-TFCS-List ::=					SEQUENCE (SIZE (1..maxCCTrCH)) OF
										SIR-TFCS

SIR-TimeslotList ::=				SEQUENCE (SIZE (1..maxTS)) OF
										SIR

-- SubFrame1Reserved, reserved bits in subframe 1 of the GPS navigation message
SubFrame1Reserved ::= 				SEQUENCE {
 	reserved1							BIT STRING (SIZE (23)),
	reserved2							BIT STRING (SIZE (24)),
	reserved3							BIT STRING (SIZE (24)),
	reserved4							BIT STRING (SIZE (16))
}

T-ADVinfo ::=						SEQUENCE {
				t-ADV					INTEGER(0..2047),
				sfn						INTEGER(0..4095)
}

T-CRMax ::=							CHOICE {
	notUsed								NULL,
	t30									N-CR-T-CRMaxHyst,
	t60									N-CR-T-CRMaxHyst,
	t120								N-CR-T-CRMaxHyst,
	t180								N-CR-T-CRMaxHyst,
	t240								N-CR-T-CRMaxHyst
}

T-CRMaxHyst ::=						ENUMERATED {
										notUsed, t10, t20, t30,
										t40, t50, t60, t70 }

TemporaryOffset1 ::=				ENUMERATED {
										to3, to6, to9, to12, to15,
										to18, to21, infinite }

TemporaryOffset2 ::=				ENUMERATED {
										to2, to3, to4, to6, to8,
										to10, to12, infinite }

TemporaryOffsetList ::=				SEQUENCE 	{
		temporaryOffset1 				TemporaryOffset1,
		temporaryOffset2 				TemporaryOffset2
}

Threshold ::=						INTEGER (-115..0)

Threshold-r6 ::=							INTEGER (-120..0)

-- The order of the list corresponds to the order of frequency defined in Inter-FreqEventCriteria
ThreholdNonUsedFrequency-deltaList ::= SEQUENCE (SIZE (1..maxFreq)) OF
											DeltaRSCPPerCell

ThresholdPositionChange ::=			ENUMERATED {
										pc10, pc20, pc30, pc40, pc50,
										pc100, pc200, pc300, pc500,
										pc1000, pc2000, pc5000, pc10000,
										pc20000, pc50000, pc100000 }

ThresholdSFN-GPS-TOW ::=			ENUMERATED {
										ms1, ms2, ms3, ms5, ms10,
										ms20, ms50, ms100 }

ThresholdSFN-SFN-Change ::=			ENUMERATED {
										c0-25, c0-5, c1, c2, c3, c4, c5,
										c10, c20, c50, c100, c200, c500,
										c1000, c2000, c5000 }

ThresholdUsedFrequency ::=			INTEGER (-115..165)

ThresholdUsedFrequency-r6 ::=		INTEGER (-120..165)

-- Actual value TimeInterval = IE value * 20.
TimeInterval ::=					INTEGER (1..13)


TimeslotInfo ::=					SEQUENCE {
	timeslotNumber						TimeslotNumber,
	burstType							BurstType
}

TimeslotInfo-LCR-r4 ::=				SEQUENCE {
	timeslotNumber						TimeslotNumber-LCR-r4
}

TimeslotInfoList ::=				SEQUENCE (SIZE (1..maxTS)) OF
										TimeslotInfo

TimeslotInfoList-LCR-r4 ::=			SEQUENCE (SIZE (1..maxTS-LCR)) OF
										TimeslotInfo-LCR-r4

TimeslotInfoList-r4 ::=				CHOICE {
	-- the choice for 7.68 Mcps TDD is the same as for 3.84 Mcps TDD --
	tdd384								SEQUENCE (SIZE (1..maxTS)) OF
											TimeslotInfo,
	tdd128								SEQUENCE (SIZE (1..maxTS-LCR)) OF
											TimeslotInfo-LCR-r4
}

-- SPARE: TimeslotISCP, Max = 91
-- Values above Max are spare
TimeslotISCP ::=					INTEGER (0..127)


-- TimeslotISCP-List shall not include more than 6 elements in 1.28Mcps TDD mode.
TimeslotISCP-List ::=				SEQUENCE (SIZE (1..maxTS)) OF
										TimeslotISCP

TimeslotListWithISCP ::=			SEQUENCE (SIZE (1..maxTS)) OF
										TimeslotWithISCP

TimeslotWithISCP ::=				SEQUENCE {
	timeslot							TimeslotNumber,
	timeslotISCP						TimeslotISCP
}

TimeToTrigger ::=					ENUMERATED {
										ttt0, ttt10, ttt20, ttt40, ttt60,
										ttt80, ttt100, ttt120, ttt160,
										ttt200, ttt240, tt320, ttt640,
										ttt1280, ttt2560, ttt5000 }

TrafficVolumeEventParam ::=			SEQUENCE {
	eventID								TrafficVolumeEventType,
	reportingThreshold					TrafficVolumeThreshold,
	timeToTrigger						TimeToTrigger						OPTIONAL,
	pendingTimeAfterTrigger				PendingTimeAfterTrigger				OPTIONAL,
	tx-InterruptionAfterTrigger			TX-InterruptionAfterTrigger			OPTIONAL
}

TrafficVolumeEventResults ::=		SEQUENCE {
	ul-transportChannelCausingEvent		UL-TrCH-Identity,
	trafficVolumeEventIdentity			TrafficVolumeEventType
}

TrafficVolumeEventType ::=			ENUMERATED {
										e4a,
										e4b }

TrafficVolumeMeasQuantity ::=		CHOICE {
	rlc-BufferPayload					NULL,
	averageRLC-BufferPayload			TimeInterval,
	varianceOfRLC-BufferPayload			TimeInterval
}

TrafficVolumeMeasSysInfo ::=		SEQUENCE {
	trafficVolumeMeasurementID			MeasurementIdentity			DEFAULT 4,
	trafficVolumeMeasurementObjectList	TrafficVolumeMeasurementObjectList	OPTIONAL,
	trafficVolumeMeasQuantity			TrafficVolumeMeasQuantity			OPTIONAL,
	trafficVolumeReportingQuantity		TrafficVolumeReportingQuantity		OPTIONAL,
	-- dummy is not used in this version of specification, it should
	-- not be sent and if received it should be ignored.
	dummy								TrafficVolumeReportingCriteria		OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	measurementReportingMode			MeasurementReportingMode,
	reportCriteriaSysInf				TrafficVolumeReportCriteriaSysInfo

}

TrafficVolumeMeasuredResults ::=	SEQUENCE {
	rb-Identity							RB-Identity,
	rlc-BuffersPayload					RLC-BuffersPayload					OPTIONAL,
	averageRLC-BufferPayload			AverageRLC-BufferPayload			OPTIONAL,
	varianceOfRLC-BufferPayload			VarianceOfRLC-BufferPayload			OPTIONAL
}

TrafficVolumeMeasuredResultsList ::= SEQUENCE (SIZE (1..maxRB)) OF
										TrafficVolumeMeasuredResults

TrafficVolumeMeasurement ::= 		SEQUENCE {
	trafficVolumeMeasurementObjectList	TrafficVolumeMeasurementObjectList	OPTIONAL,
	trafficVolumeMeasQuantity			TrafficVolumeMeasQuantity			OPTIONAL,
	trafficVolumeReportingQuantity		TrafficVolumeReportingQuantity		OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	reportCriteria						TrafficVolumeReportCriteria
}

TrafficVolumeMeasurementObjectList ::= SEQUENCE (SIZE (1..maxTrCH)) OF
											UL-TrCH-Identity

TrafficVolumeReportCriteria ::=		CHOICE {
	trafficVolumeReportingCriteria		TrafficVolumeReportingCriteria,
	periodicalReportingCriteria			PeriodicalReportingCriteria,
	noReporting							NULL
}

TrafficVolumeReportCriteriaSysInfo ::=	CHOICE {
	trafficVolumeReportingCriteria		TrafficVolumeReportingCriteria,
	periodicalReportingCriteria			PeriodicalReportingCriteria
}

TrafficVolumeReportingCriteria ::= SEQUENCE {
	-- NOTE: transChCriteriaList should be mandatory in later versions of this message
	transChCriteriaList					TransChCriteriaList					OPTIONAL
}

TrafficVolumeReportingQuantity ::= SEQUENCE {
	rlc-RB-BufferPayload				BOOLEAN,
	rlc-RB-BufferPayloadAverage			BOOLEAN,
	rlc-RB-BufferPayloadVariance		BOOLEAN
}

TrafficVolumeThreshold ::=			ENUMERATED {
										th8, th16, th32, th64, th128,
										th256, th512, th1024, th2k, th3k, 
										th4k, th6k, th8k, th12k, th16k, 
										th24k, th32k, th48k, th64k, th96k, 
										th128k, th192k, th256k, th384k, 
										th512k, th768k }

TransChCriteria ::=					SEQUENCE {
	ul-transportChannelID				UL-TrCH-Identity					OPTIONAL,
	eventSpecificParameters				SEQUENCE (SIZE (1..maxMeasParEvent)) OF 
											TrafficVolumeEventParam			OPTIONAL
}

TransChCriteriaList ::=			SEQUENCE (SIZE (1..maxTrCH)) OF
										TransChCriteria

TransferMode ::=					ENUMERATED {
										acknowledgedModeRLC,
										unacknowledgedModeRLC }

TransmittedPowerThreshold ::=		INTEGER (-50..33)

TriggeringCondition1 ::=			ENUMERATED {
										activeSetCellsOnly,
										monitoredSetCellsOnly,
										activeSetAndMonitoredSetCells }

TriggeringCondition2 ::=			ENUMERATED {
										activeSetCellsOnly,
										monitoredSetCellsOnly,
										activeSetAndMonitoredSetCells,
										detectedSetCellsOnly,
										detectedSetAndMonitoredSetCells }

TX-InterruptionAfterTrigger ::=		ENUMERATED {
										txiat0-25, txiat0-5, txiat1,
										txiat2, txiat4, txiat8, txiat16 }

UDRE ::=							ENUMERATED {
										lessThan1,
										between1-and-4,
										between4-and-8,
										over8 }

UE-6AB-Event ::=					SEQUENCE {
	timeToTrigger						TimeToTrigger,
	transmittedPowerThreshold			TransmittedPowerThreshold
}

UE-6FG-Event ::=					SEQUENCE {
	timeToTrigger						TimeToTrigger,
	-- in 1.28 Mcps TDD ue-RX-TX-TimeDifferenceThreshold corresponds to TADV Threshold
	ue-RX-TX-TimeDifferenceThreshold	UE-RX-TX-TimeDifferenceThreshold
}

-- dummy and dummy2 are not used in this version of the specification, they should
-- not be sent and if received the UE behaviour is not specified.
UE-AutonomousUpdateMode ::=			CHOICE {
	dummy								NULL,
	onWithNoReporting					NULL,
	dummy2								RL-InformationLists 
}

UE-InternalEventParam ::=			CHOICE {
	event6a								UE-6AB-Event,
	event6b								UE-6AB-Event,
	event6c								TimeToTrigger,
	event6d								TimeToTrigger,
	event6e								TimeToTrigger,
	event6f								UE-6FG-Event,
	event6g								UE-6FG-Event
}

UE-InternalEventParamList ::=		SEQUENCE (SIZE (1..maxMeasEvent)) OF
										UE-InternalEventParam

UE-InternalEventResults ::=			CHOICE {
	event6a								NULL,
	event6b								NULL,
	event6c								NULL,
	event6d								NULL,
	event6e								NULL,
	event6f								PrimaryCPICH-Info,
	event6g								PrimaryCPICH-Info,
	spare								NULL
}

UE-InternalMeasQuantity ::=			SEQUENCE {
	measurementQuantity					UE-MeasurementQuantity,
	filterCoefficient					FilterCoefficient					DEFAULT fc0
}

UE-InternalMeasuredResults ::=		SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ue-TransmittedPowerFDD				UE-TransmittedPower			OPTIONAL,
			ue-RX-TX-ReportEntryList			UE-RX-TX-ReportEntryList	OPTIONAL
		},
		tdd									SEQUENCE {
			ue-TransmittedPowerTDD-List			UE-TransmittedPowerTDD-List	OPTIONAL,
			appliedTA							UL-TimingAdvance			OPTIONAL
		}
	}
}

UE-InternalMeasuredResults-r7 ::=		SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ue-TransmittedPowerFDD				UE-TransmittedPower			OPTIONAL,
			ue-RX-TX-ReportEntryList			UE-RX-TX-ReportEntryList	OPTIONAL
		},
		tdd									SEQUENCE {
			ue-TransmittedPowerTDD-List			UE-TransmittedPowerTDD-List	OPTIONAL,
			appliedTA							UL-TimingAdvance-VHCR		OPTIONAL
		}
	}
}

UE-InternalMeasuredResults-LCR-r4 ::=	SEQUENCE {
		ue-TransmittedPowerTDD-List			UE-TransmittedPowerTDD-List		OPTIONAL,
		t-ADVinfo							T-ADVinfo						OPTIONAL
}

UE-InternalMeasurement ::=			SEQUENCE {
	ue-InternalMeasQuantity				UE-InternalMeasQuantity				OPTIONAL,
	ue-InternalReportingQuantity		UE-InternalReportingQuantity		OPTIONAL,
	reportCriteria						UE-InternalReportCriteria
}

UE-InternalMeasurement-r4 ::=		SEQUENCE {
	ue-InternalMeasQuantity				UE-InternalMeasQuantity				OPTIONAL,
	ue-InternalReportingQuantity		UE-InternalReportingQuantity-r4		OPTIONAL,
	reportCriteria						UE-InternalReportCriteria
}

UE-InternalMeasurementSysInfo ::= 	SEQUENCE {
	ue-InternalMeasurementID			MeasurementIdentity			DEFAULT 5,
	ue-InternalMeasQuantity				UE-InternalMeasQuantity
}

UE-InternalReportCriteria ::=		CHOICE {
	ue-InternalReportingCriteria		UE-InternalReportingCriteria,
	periodicalReportingCriteria			PeriodicalReportingCriteria,
	noReporting							NULL
}

UE-InternalReportingCriteria ::=	SEQUENCE {
	ue-InternalEventParamList			UE-InternalEventParamList			OPTIONAL
}

UE-InternalReportingQuantity ::=	SEQUENCE {
	ue-TransmittedPower					BOOLEAN,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ue-RX-TX-TimeDifference				BOOLEAN
		},
		tdd									SEQUENCE {
			appliedTA							BOOLEAN
		}
	}
}

UE-InternalReportingQuantity-r4 ::=	SEQUENCE {
	ue-TransmittedPower					BOOLEAN,
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ue-RX-TX-TimeDifference				BOOLEAN
		},
		tdd									SEQUENCE {
			tddOption							CHOICE {
			-- appliedTA applies to both 3.84 Mcps TDD and to 7.68 Mcps TDD.
			-- Therefore, no additional choice of TDD mode is necessary
				tdd384								SEQUENCE {
					appliedTA							BOOLEAN
				},
				tdd128								SEQUENCE {
					t-ADVinfo							BOOLEAN
				}
			}
		}
	}
}

-- TABULAR: UE-MeasurementQuantity, for 3.84 Mcps TDD only the first two values
-- ue-TransmittedPower and utra-Carrier-RSSI are used.
-- For 1.28 Mcps TDD ue-RX-TX-TimeDifference corresponds to T-ADV in the tabular
UE-MeasurementQuantity ::=			ENUMERATED {
										ue-TransmittedPower,
										utra-Carrier-RSSI,
										ue-RX-TX-TimeDifference }

UE-RX-TX-ReportEntry ::=			SEQUENCE {
	primaryCPICH-Info					PrimaryCPICH-Info,
	ue-RX-TX-TimeDifferenceType1		UE-RX-TX-TimeDifferenceType1
}

UE-RX-TX-ReportEntryList ::=		SEQUENCE (SIZE (1..maxRL)) OF
										UE-RX-TX-ReportEntry

-- SPARE: UE-RX-TX-TimeDifferenceType1, Max = 1280
-- Values above Max are spare
UE-RX-TX-TimeDifferenceType1 ::=			INTEGER (768..1791)


UE-RX-TX-TimeDifferenceType2 ::=	INTEGER (0..8191)

UE-RX-TX-TimeDifferenceType2Info ::=	SEQUENCE {
	ue-RX-TX-TimeDifferenceType2			UE-RX-TX-TimeDifferenceType2,
	neighbourQuality						NeighbourQuality
}

-- In 1.28 Mcps TDD, actual value for
-- T-ADV Threshold = (UE-RX-TX-TimeDifferenceThreshold - 768) * 0.125
UE-RX-TX-TimeDifferenceThreshold ::= INTEGER (768..1280)

UE-TransmittedPower ::=				INTEGER (0..104)

UE-TransmittedPowerTDD-List ::=		SEQUENCE (SIZE (1..maxTS)) OF
										UE-TransmittedPower

UL-TrCH-Identity ::=					CHOICE{
	dch									TransportChannelIdentity,
	-- Note: the reference to CPCH in the element name below is incorrect. The name is not changed
	-- to keep it aligned with R99.
	rachorcpch							NULL,
	usch								TransportChannelIdentity
}

UE-Positioning-Accuracy ::=					BIT STRING (SIZE (7))


UE-Positioning-CipherParameters ::=			SEQUENCE {
	cipheringKeyFlag					BIT STRING (SIZE (1)),
	cipheringSerialNumber				INTEGER (0..65535)
}

UE-Positioning-Error ::=						SEQUENCE {
	errorReason							UE-Positioning-ErrorCause,
	ue-positioning-GPS-additionalAssistanceDataRequest			UE-Positioning-GPS-AdditionalAssistanceDataRequest	OPTIONAL
}

UE-Positioning-ErrorCause ::=					ENUMERATED {
										notEnoughOTDOA-Cells,
										notEnoughGPS-Satellites,
										assistanceDataMissing,
										notAccomplishedGPS-TimingOfCellFrames,
										undefinedError,
										requestDeniedByUser,
										notProcessedAndTimeout,
										referenceCellNotServingCell }

UE-Positioning-EventParam ::=					SEQUENCE {
	reportingAmount						ReportingAmount,
	reportFirstFix						BOOLEAN,
	measurementInterval					UE-Positioning-MeasurementInterval,
	eventSpecificInfo					UE-Positioning-EventSpecificInfo
}

UE-Positioning-EventParamList ::=				SEQUENCE (SIZE (1..maxMeasEvent)) OF
										UE-Positioning-EventParam

UE-Positioning-EventSpecificInfo ::=			CHOICE {
	e7a									ThresholdPositionChange,
	e7b									ThresholdSFN-SFN-Change,
	e7c									ThresholdSFN-GPS-TOW
}

UE-Positioning-GPS-AcquisitionAssistance ::=	SEQUENCE {
	gps-ReferenceTime					INTEGER (0..604799999),
	utran-GPSReferenceTime				UTRAN-GPSReferenceTime			OPTIONAL,
	satelliteInformationList			AcquisitionSatInfoList
}

UE-Positioning-GPS-AdditionalAssistanceDataRequest ::=		SEQUENCE {
	almanacRequest						BOOLEAN,
	utcModelRequest						BOOLEAN,
	ionosphericModelRequest				BOOLEAN,
	navigationModelRequest				BOOLEAN,
	dgpsCorrectionsRequest				BOOLEAN,
	referenceLocationRequest			BOOLEAN,
	referenceTimeRequest				BOOLEAN,
	aquisitionAssistanceRequest			BOOLEAN,
	realTimeIntegrityRequest			BOOLEAN,
	navModelAddDataRequest				UE-Positioning-GPS-NavModelAddDataReq		OPTIONAL
}

UE-Positioning-GPS-Almanac ::=					SEQUENCE {
	wn-a								BIT STRING (SIZE (8)),
	almanacSatInfoList					AlmanacSatInfoList,
	sv-GlobalHealth						BIT STRING (SIZE (364))				OPTIONAL
}

UE-Positioning-GPS-AssistanceData ::=			SEQUENCE {
	ue-positioning-GPS-ReferenceTime				UE-Positioning-GPS-ReferenceTime				OPTIONAL,
	ue-positioning-GPS-ReferenceLocation			ReferenceLocation				OPTIONAL,
	ue-positioning-GPS-DGPS-Corrections				UE-Positioning-GPS-DGPS-Corrections				OPTIONAL,
	ue-positioning-GPS-NavigationModel				UE-Positioning-GPS-NavigationModel				OPTIONAL,
	ue-positioning-GPS-IonosphericModel				UE-Positioning-GPS-IonosphericModel				OPTIONAL,
	ue-positioning-GPS-UTC-Model					UE-Positioning-GPS-UTC-Model					OPTIONAL,
	ue-positioning-GPS-Almanac						UE-Positioning-GPS-Almanac						OPTIONAL,
	ue-positioning-GPS-AcquisitionAssistance		UE-Positioning-GPS-AcquisitionAssistance		OPTIONAL,
	ue-positioning-GPS-Real-timeIntegrity			BadSatList							OPTIONAL,
	-- dummy is not used in this version of the specification, it should
	-- not be sent and if received it should be ignored.
	dummy			UE-Positioning-GPS-ReferenceCellInfo		OPTIONAL
}

UE-Positioning-GPS-DGPS-Corrections ::=		SEQUENCE {
	gps-TOW								INTEGER (0..604799),
	statusHealth						DiffCorrectionStatus,
	dgps-CorrectionSatInfoList			DGPS-CorrectionSatInfoList
}

UE-Positioning-GPS-IonosphericModel ::=		SEQUENCE {
	alfa0								BIT STRING (SIZE (8)),
	alfa1								BIT STRING (SIZE (8)),
	alfa2								BIT STRING (SIZE (8)),
	alfa3								BIT STRING (SIZE (8)),
	beta0								BIT STRING (SIZE (8)),
	beta1								BIT STRING (SIZE (8)),
	beta2								BIT STRING (SIZE (8)),
	beta3								BIT STRING (SIZE (8))
}

UE-Positioning-GPS-MeasurementResults ::=		SEQUENCE {
	referenceTime						CHOICE {
		utran-GPSReferenceTimeResult		UTRAN-GPSReferenceTimeResult,
		gps-ReferenceTimeOnly				INTEGER (0..604799999)
	},
	gps-MeasurementParamList			GPS-MeasurementParamList
}

UE-Positioning-GPS-NavigationModel ::=			SEQUENCE {
	navigationModelSatInfoList			NavigationModelSatInfoList
}

UE-Positioning-GPS-NavModelAddDataReq ::=		SEQUENCE {
	gps-Week							INTEGER (0..1023),
	-- SPARE: gps-Toe, Max = 167
	-- Values above Max are spare
	gps-Toe								INTEGER (0..255),
	-- SPARE: tToeLimit, Max = 10
	-- Values above Max are spare
	tToeLimit							INTEGER (0..15),
	satDataList							SatDataList
}

UE-Positioning-GPS-ReferenceCellInfo ::=		SEQUENCE{
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			referenceIdentity				PrimaryCPICH-Info
		},
		tdd								SEQUENCE {
			referenceIdentity				CellParametersID
		}
	}
}

UE-Positioning-GPS-ReferenceTime ::=			SEQUENCE {
	gps-Week							INTEGER (0..1023),
	gps-tow-1msec						GPS-TOW-1msec,	utran-GPSReferenceTime				UTRAN-GPSReferenceTime				OPTIONAL,
	sfn-tow-Uncertainty					SFN-TOW-Uncertainty					OPTIONAL,
	utran-GPS-DriftRate					UTRAN-GPS-DriftRate					OPTIONAL,
	gps-TOW-AssistList					GPS-TOW-AssistList					OPTIONAL
}

UE-Positioning-GPS-UTC-Model ::=				SEQUENCE {
	a1									BIT STRING (SIZE (24)),
	a0									BIT STRING (SIZE (32)),
	t-ot								BIT STRING (SIZE (8)),
	wn-t								BIT STRING (SIZE (8)),
	delta-t-LS							BIT STRING (SIZE (8)),
	wn-lsf								BIT STRING (SIZE (8)),
	dn									BIT STRING (SIZE (8)),
	delta-t-LSF							BIT STRING (SIZE (8))
}

UE-Positioning-IPDL-Parameters ::=				SEQUENCE {
	ip-Spacing							IP-Spacing,
	ip-Length							IP-Length,
	ip-Offset							INTEGER (0..9),
	seed								INTEGER (0..63),
	burstModeParameters					BurstModeParameters 		OPTIONAL
}

UE-Positioning-IPDL-Parameters-r4 ::=			SEQUENCE {
	modeSpecificInfo					CHOICE {
		fdd									SEQUENCE {
			ip-Spacing							IP-Spacing,
			ip-Length							IP-Length,
			ip-Offset							INTEGER (0..9),
			seed								INTEGER (0..63)
		},
		tdd									SEQUENCE {
			ip-Spacing-TDD						IP-Spacing-TDD,
			ip-slot								INTEGER (0..14),
			ip-Start							INTEGER (0..4095),
			ip-PCCPCG							IP-PCCPCH-r4			OPTIONAL
		}
	},
	burstModeParameters					BurstModeParameters				OPTIONAL
}

UE-Positioning-IPDL-Parameters-TDD-r4-ext ::=	SEQUENCE {
	ip-Spacing							IP-Spacing-TDD,
	ip-slot								INTEGER (0..14),
	ip-Start							INTEGER (0..4095),
	ip-PCCPCG							IP-PCCPCH-r4					OPTIONAL,
	burstModeParameters					BurstModeParameters
}

UE-Positioning-MeasuredResults ::=				SEQUENCE {
	ue-positioning-OTDOA-Measurement				UE-Positioning-OTDOA-Measurement				OPTIONAL,
	ue-positioning-PositionEstimateInfo				UE-Positioning-PositionEstimateInfo						OPTIONAL,
	ue-positioning-GPS-Measurement					UE-Positioning-GPS-MeasurementResults					OPTIONAL,
	ue-positioning-Error							UE-Positioning-Error							OPTIONAL
}

UE-Positioning-MeasuredResults-v390ext ::=		SEQUENCE {
	ue-Positioning-OTDOA-Measurement-v390ext		UE-Positioning-OTDOA-Measurement-v390ext
}

UE-Positioning-Measurement ::=					SEQUENCE {
	ue-positioning-ReportingQuantity				UE-Positioning-ReportingQuantity,
	reportCriteria						UE-Positioning-ReportCriteria,
	ue-positioning-OTDOA-AssistanceData			UE-Positioning-OTDOA-AssistanceData			OPTIONAL,
	ue-positioning-GPS-AssistanceData				UE-Positioning-GPS-AssistanceData				OPTIONAL
}

UE-Positioning-Measurement-v390ext ::=	 		SEQUENCE {
	ue-positioning-ReportingQuantity-v390ext		UE-Positioning-ReportingQuantity-v390ext			OPTIONAL,
	measurementValidity					MeasurementValidity					OPTIONAL,
	ue-positioning-OTDOA-AssistanceData-UEB			UE-Positioning-OTDOA-AssistanceData-UEB		
	OPTIONAL
}

UE-Positioning-Measurement-r4 ::=				SEQUENCE {
	ue-positioning-ReportingQuantity				UE-Positioning-ReportingQuantity-r4,
	measurementValidity								MeasurementValidity						OPTIONAL,
	reportCriteria									UE-Positioning-ReportCriteria,
	ue-positioning-OTDOA-AssistanceData				UE-Positioning-OTDOA-AssistanceData-r4			OPTIONAL,
	ue-positioning-GPS-AssistanceData				UE-Positioning-GPS-AssistanceData				OPTIONAL
}

UE-Positioning-Measurement-v7xyext ::=			SEQUENCE {
	ue-positioning-ReportingQuantity				UE-Positioning-ReportingQuantity-v7xyext
}

UE-Positioning-MeasurementEventResults ::=		CHOICE {
	event7a								UE-Positioning-PositionEstimateInfo,
	event7b								UE-Positioning-OTDOA-Measurement,
	event7c								UE-Positioning-GPS-MeasurementResults,
	spare								NULL	
}

UE-Positioning-MeasurementInterval ::=			ENUMERATED {
										e5, e15, e60, e300,
										e900, e1800, e3600, e7200 }

UE-Positioning-MethodType ::=					ENUMERATED {
										ue-Assisted,
										ue-Based,
										ue-BasedPreferred,
										ue-AssistedPreferred }

UE-Positioning-OTDOA-AssistanceData ::=		SEQUENCE {
	ue-positioning-OTDOA-ReferenceCellInfo			UE-Positioning-OTDOA-ReferenceCellInfo				OPTIONAL,
	ue-positioning-OTDOA-NeighbourCellList				UE-Positioning-OTDOA-NeighbourCellList				OPTIONAL
}

UE-Positioning-OTDOA-AssistanceData-r4 ::=	SEQUENCE {
	ue-positioning-OTDOA-ReferenceCellInfo			UE-Positioning-OTDOA-ReferenceCellInfo-r4				OPTIONAL,
	ue-positioning-OTDOA-NeighbourCellList			UE-Positioning-OTDOA-NeighbourCellList-r4				OPTIONAL
}

UE-Positioning-OTDOA-AssistanceData-r4ext ::= SEQUENCE {
	-- In case of TDD these IPDL parameters shall be used for the reference cell instead of
	-- IPDL Parameters in IE UE-Positioning-OTDOA-ReferenceCellInfo
	ue-Positioning-IPDL-Parameters-TDD-r4-ext		UE-Positioning-IPDL-Parameters-TDD-r4-ext	OPTIONAL,
	-- These IPDL parameters shall be used for the neighbour cells in case of TDD instead of
	-- IPDL Parameters in IE UE-Positioning-OTDOA-NeighbourCellInfoList. The cells shall be 
	-- listed in the same order as in IE UE-Positioning-OTDOA-NeighbourCellInfoList
	ue-Positioning-IPDL-Parameters-TDDList-r4-ext	UE-Positioning-IPDL-Parameters-TDDList-r4-ext		OPTIONAL
}

UE-Positioning-OTDOA-AssistanceData-UEB ::=		SEQUENCE {
	ue-positioning-OTDOA-ReferenceCellInfo-UEB			UE-Positioning-OTDOA-ReferenceCellInfo-UEB				OPTIONAL,
	ue-positioning-OTDOA-NeighbourCellList-UEB				UE-Positioning-OTDOA-NeighbourCellList-UEB				OPTIONAL
}

UE-Positioning-IPDL-Parameters-TDDList-r4-ext ::=	SEQUENCE (SIZE (1..maxCellMeas)) OF
											UE-Positioning-IPDL-Parameters-TDD-r4-ext

UE-Positioning-OTDOA-Measurement ::=			SEQUENCE {
	sfn									INTEGER (0..4095),
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			referenceCellIDentity				PrimaryCPICH-Info,
			ue-RX-TX-TimeDifferenceType2Info	UE-RX-TX-TimeDifferenceType2Info
		},
		tdd									SEQUENCE {
			referenceCellIdentity			CellParametersID
		}
	},
	neighbourList						NeighbourList						OPTIONAL
}

UE-Positioning-OTDOA-Measurement-v390ext ::=			SEQUENCE {
	neighbourList-v390ext						NeighbourList-v390ext
}

UE-Positioning-OTDOA-NeighbourCellInfo ::= SEQUENCE {
	modeSpecificInfo	CHOICE	{
		fdd								SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd								SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	ue-positioning-IPDL-Paremeters					UE-Positioning-IPDL-Parameters					OPTIONAL,
	sfn-SFN-RelTimeDifference			SFN-SFN-RelTimeDifference1,
	sfn-SFN-Drift						SFN-SFN-Drift 						OPTIONAL,
	searchWindowSize					OTDOA-SearchWindowSize,
	positioningMode 	CHOICE{
		ueBased									SEQUENCE {},
		ueAssisted								SEQUENCE {}
	}
}

UE-Positioning-OTDOA-NeighbourCellInfo-r4 ::= SEQUENCE {
	modeSpecificInfo	CHOICE	{
		fdd								SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd								SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	ue-positioning-IPDL-Paremeters		UE-Positioning-IPDL-Parameters-r4	OPTIONAL,
	sfn-SFN-RelTimeDifference			SFN-SFN-RelTimeDifference1,
	sfn-Offset-Validity					SFN-Offset-Validity					OPTIONAL,
	sfn-SFN-Drift						SFN-SFN-Drift						OPTIONAL,
	searchWindowSize					OTDOA-SearchWindowSize,
	positioningMode 	CHOICE {
		ueBased									SEQUENCE {
			relativeNorth						INTEGER (-20000..20000)				OPTIONAL,
			relativeEast						INTEGER (-20000..20000)				OPTIONAL,
			relativeAltitude					INTEGER (-4000..4000)				OPTIONAL,
			fineSFN-SFN							FineSFN-SFN							OPTIONAL,
			-- actual value roundTripTime = (IE value * 0.0625) + 876
			roundTripTime						INTEGER (0.. 32766)					OPTIONAL
		},
		ueAssisted								SEQUENCE {}
	}
}

UE-Positioning-OTDOA-NeighbourCellInfo-UEB ::= SEQUENCE {
	modeSpecificInfo	CHOICE	{
		fdd								SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd								SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	ue-positioning-IPDL-Paremeters		UE-Positioning-IPDL-Parameters		OPTIONAL,
	sfn-SFN-RelTimeDifference			SFN-SFN-RelTimeDifference1,
	sfn-SFN-Drift						SFN-SFN-Drift						OPTIONAL,
	searchWindowSize					OTDOA-SearchWindowSize,
	relativeNorth						INTEGER (-20000..20000)				OPTIONAL,
	relativeEast						INTEGER (-20000..20000)				OPTIONAL,
	relativeAltitude					INTEGER (-4000..4000)				OPTIONAL,
	fineSFN-SFN							FineSFN-SFN,
	-- actual value roundTripTime = (IE value * 0.0625) + 876
	roundTripTime						INTEGER (0..32766)					OPTIONAL
}

UE-Positioning-OTDOA-NeighbourCellList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
											UE-Positioning-OTDOA-NeighbourCellInfo

UE-Positioning-OTDOA-NeighbourCellList-r4 ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
												UE-Positioning-OTDOA-NeighbourCellInfo-r4

UE-Positioning-OTDOA-NeighbourCellList-UEB ::= SEQUENCE (SIZE (1..maxCellMeas)) OF
											UE-Positioning-OTDOA-NeighbourCellInfo-UEB

UE-Positioning-OTDOA-Quality ::=			SEQUENCE {
	stdResolution						BIT STRING (SIZE (2)),
	numberOfOTDOA-Measurements			BIT STRING (SIZE (3)),
	stdOfOTDOA-Measurements				BIT STRING (SIZE (5))
} 

UE-Positioning-OTDOA-ReferenceCellInfo ::=			SEQUENCE {
	sfn									INTEGER (0..4095)									OPTIONAL,
	modeSpecificInfo CHOICE {
		fdd										SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd										SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	positioningMode CHOICE {
		ueBased									SEQUENCE {},
		ueAssisted								SEQUENCE {}
	},
	ue-positioning-IPDL-Paremeters				UE-Positioning-IPDL-Parameters	OPTIONAL
}

UE-Positioning-OTDOA-ReferenceCellInfo-r4 ::=	SEQUENCE {
	sfn									INTEGER (0..4095)									OPTIONAL,
	modeSpecificInfo CHOICE {
		fdd										SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd										SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	positioningMode CHOICE {
		ueBased									SEQUENCE {
			cellPosition								ReferenceCellPosition	OPTIONAL,
			-- actual value roundTripTime = (IE value * 0.0625) + 876
			roundTripTime						INTEGER (0..32766)				OPTIONAL
		},
		ueAssisted								SEQUENCE {}
	},
	ue-positioning-IPDL-Paremeters				UE-Positioning-IPDL-Parameters-r4	OPTIONAL
}

UE-Positioning-OTDOA-ReferenceCellInfo-UEB ::=			SEQUENCE {
	sfn									INTEGER (0..4095)					OPTIONAL,
	modeSpecificInfo CHOICE {
		fdd										SEQUENCE {
			primaryCPICH-Info					PrimaryCPICH-Info
		},
		tdd										SEQUENCE{
			cellAndChannelIdentity				CellAndChannelIdentity
		}
	},
	frequencyInfo						FrequencyInfo						OPTIONAL,
	cellPosition						ReferenceCellPosition				OPTIONAL,
	-- actual value roundTripTime = (IE value * 0.0625) + 876
	roundTripTime						INTEGER (0..32766)					OPTIONAL,
	ue-positioning-IPDL-Paremeters		UE-Positioning-IPDL-Parameters		OPTIONAL
}

UE-Positioning-PositionEstimateInfo ::=					SEQUENCE {
	referenceTime					CHOICE {
		utran-GPSReferenceTimeResult		UTRAN-GPSReferenceTimeResult,
		gps-ReferenceTimeOnly				INTEGER (0..604799999),
		cell-Timing							SEQUENCE {
			sfn											INTEGER (0..4095),
			modeSpecificInfo 				CHOICE {
				fdd									SEQUENCE {
					primaryCPICH-Info					PrimaryCPICH-Info
				},
				tdd									SEQUENCE{
					cellAndChannelIdentity				CellAndChannelIdentity
				}
			}
		}
	},
	positionEstimate					PositionEstimate
}

UE-Positioning-ReportCriteria ::=				CHOICE {
	ue-positioning-ReportingCriteria				UE-Positioning-EventParamList,
	periodicalReportingCriteria			PeriodicalReportingCriteria,
	noReporting							NULL
}

UE-Positioning-ReportingQuantity ::=			SEQUENCE {
	methodType							UE-Positioning-MethodType,
	positioningMethod					PositioningMethod,
	-- dummy1 is not used in this version of specification and it should
	-- be ignored.
	dummy1								UE-Positioning-ResponseTime,
	horizontal-Accuracy					UE-Positioning-Accuracy				OPTIONAL,
	gps-TimingOfCellWanted				BOOLEAN,
	-- dummy2 is not used in this version of specification and it should
	-- be ignored.
	dummy2								BOOLEAN,
	additionalAssistanceDataRequest		BOOLEAN,
	environmentCharacterisation			EnvironmentCharacterisation			OPTIONAL
}

UE-Positioning-ReportingQuantity-v390ext ::=		SEQUENCE {
	vertical-Accuracy							UE-Positioning-Accuracy
}

UE-Positioning-ReportingQuantity-r4 ::=			SEQUENCE {
	methodType							UE-Positioning-MethodType,
	positioningMethod					PositioningMethod,
	horizontalAccuracy					UE-Positioning-Accuracy				OPTIONAL,
	verticalAccuracy					UE-Positioning-Accuracy				OPTIONAL,
	gps-TimingOfCellWanted				BOOLEAN,
	additionalAssistanceDataReq			BOOLEAN,
	environmentCharacterisation			EnvironmentCharacterisation			OPTIONAL
}

UE-Positioning-ReportingQuantity-v7xyext ::=	SEQUENCE {
	velocityRequested					ENUMERATED { true }					OPTIONAL
}

UE-Positioning-ResponseTime ::=				ENUMERATED {
										s1, s2, s4, s8, s16,
										s32, s64, s128 }

-- SPARE: UTRA-CarrierRSSI, Max = 76
-- Values above Max are spare
UTRA-CarrierRSSI ::=				INTEGER (0..127)

UTRAN-GPS-DriftRate ::=				ENUMERATED {
									utran-GPSDrift0, utran-GPSDrift1, utran-GPSDrift2,
									utran-GPSDrift5, utran-GPSDrift10, utran-GPSDrift15,
									utran-GPSDrift25, utran-GPSDrift50, utran-GPSDrift-1,
									utran-GPSDrift-2, utran-GPSDrift-5, utran-GPSDrift-10,
									utran-GPSDrift-15, utran-GPSDrift-25, utran-GPSDrift-50}

UTRAN-GPSReferenceTime ::=				SEQUENCE {
	-- For utran-GPSTimingOfCell values above 2322431999999 are not 
	-- used in this version of the specification
	-- Actual value utran-GPSTimingOfCell = (ms-part * 4294967296) + ls-part
	utran-GPSTimingOfCell			SEQUENCE {
		ms-part 						INTEGER (0..1023),
		ls-part							INTEGER (0..4294967295)
	},
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			referenceIdentity				PrimaryCPICH-Info
		},
		tdd								SEQUENCE {
			referenceIdentity				CellParametersID
		}
	} 				OPTIONAL,
	sfn									INTEGER (0..4095)
}

UTRAN-GPSReferenceTimeResult ::=				SEQUENCE {
	-- For ue-GPSTimingOfCell values above 37158911999999 are not 
	-- used in this version of the specification
	-- Actual value ue-GPSTimingOfCell = (ms-part * 4294967296) + ls-part
	ue-GPSTimingOfCell			SEQUENCE {
		ms-part 						INTEGER (0.. 16383),
		ls-part							INTEGER (0..4294967295)
	},
	modeSpecificInfo				CHOICE {
		fdd								SEQUENCE {
			referenceIdentity				PrimaryCPICH-Info
		},
		tdd								SEQUENCE {
			referenceIdentity				CellParametersID
		}
	},
	sfn									INTEGER (0..4095)
}

VarianceOfRLC-BufferPayload ::=		ENUMERATED {
										plv0, plv4, plv8, plv16, plv32, plv64, 
										plv128, plv256, plv512, plv1024, 
										plv2k, plv4k, plv8k, plv16k, spare2, spare1 }

VelocityEstimate	::=				CHOICE {
	horizontalVelocity								HorizontalVelocity,
	horizontalWithVerticalVelocity					HorizontalWithVerticalVelocity,
	horizontalVelocityWithUncertainty				HorizontalVelocityWithUncertainty,
	horizontalWithVerticalVelocityAndUncertainty	HorizontalWithVerticalVelocityAndUncertainty
}

-- Actual value W = IE value * 0.1
W ::=								INTEGER (0..20)

-- ***************************************************
--
--     OTHER INFORMATION ELEMENTS (10.3.8)
--
-- ***************************************************

BCC ::=								INTEGER (0..7)

BCCH-ModificationInfo ::=			SEQUENCE {
	mib-ValueTag						MIB-ValueTag,
	bcch-ModificationTime				BCCH-ModificationTime				OPTIONAL
}

-- Actual value BCCH-ModificationTime = IE value * 8
BCCH-ModificationTime ::=			INTEGER (0..511)

BSIC ::=							SEQUENCE {
	ncc									NCC,
	bcc									BCC
}

CBS-DRX-Level1Information ::=		SEQUENCE {
	ctch-AllocationPeriod				INTEGER (1..256),
	cbs-FrameOffset						INTEGER (0..255)
}

CBS-DRX-Level1Information-extension-r6 ::=	ENUMERATED {p8, p16, p32, p64, p128, p256}

CDMA2000-Message ::=				SEQUENCE {
	msg-Type							BIT STRING (SIZE (8)),
	payload								BIT STRING (SIZE (1..512))
}

CDMA2000-MessageList ::=				SEQUENCE (SIZE (1..maxInterSysMessages)) OF
											CDMA2000-Message

CDMA2000-UMTS-Frequency-List ::=		SEQUENCE (SIZE (1..maxNumCDMA2000Freqs)) OF
											FrequencyInfoCDMA2000

CellValueTag ::=						INTEGER (1..4)

--Actual value = 2^(IE value) 
ExpirationTimeFactor ::=				INTEGER (1..8)

FDD-UMTS-Frequency-List ::=				SEQUENCE (SIZE (1..maxNumFDDFreqs)) OF
											FrequencyInfoFDD

FrequencyInfoCDMA2000 ::=				SEQUENCE {
											band-Class		BIT STRING (SIZE (5)),
											cdma-Freq		BIT STRING (SIZE(11))
}

GERAN-SystemInfoBlock ::=				OCTET STRING (SIZE (1..23))

GERAN-SystemInformation ::=				SEQUENCE (SIZE (1..maxGERAN-SI)) OF GERAN-SystemInfoBlock

GSM-BA-Range ::= 						SEQUENCE {
											gsmLowRangeUARFCN		UARFCN,
											gsmUpRangeUARFCN		UARFCN
}

GSM-BA-Range-List ::= 					SEQUENCE (SIZE (1..maxNumGSMFreqRanges)) OF
											GSM-BA-Range


-- This IE is formatted as 'TLV' and is coded in the same way as the Mobile Station Classmark 2 
-- information element in [5]. The first octet is the Mobile station classmark 2 IEI and its value
-- shall be set to 33H. The second octet is the Length of mobile station classmark 2 and its value 
-- shall be set to 3. The octet 3 contains the first octet of the value part of the Mobile Station 
-- Classmark 2 information element, the octet 4 contains the second octet of the value part of the 
-- Mobile Station Classmark 2 information element and so on. For each of these octets, the first/
-- leftmost/ most significant bit of the octet contains b8 of the corresponding octet of the Mobile
-- Station Classmark 2.
GSM-Classmark2 ::=					OCTET STRING (SIZE (5))

-- This IE is formatted as 'V' and is coded in the same way as the value part in the Mobile station
-- classmark 3 information element in [5]
-- The value part is specified by means of CSN.1, which encoding results in a bit string, to which
-- final padding may be appended upto the next octet boundary [5]. The first/ leftmost bit of the
-- CSN.1 bit string is placed in the first/ leftmost/ most significant bit of the first
-- octet. This continues until the last bit of the CSN.1 bit string, which is placed in the last/
-- rightmost/ least significant bit of the last octet.
GSM-Classmark3 ::=					OCTET STRING (SIZE (1..32))

GSM-MessageList ::=					SEQUENCE (SIZE (1..maxInterSysMessages)) OF
										BIT STRING (SIZE (1..512))

GSM-MS-RadioAccessCapability ::=	OCTET STRING (SIZE (1..64))

GsmSecurityCapability ::=			BIT STRING {
										-- For each bit value “0” means false/ not supported
										a5-7(0),
										a5-6(1),
									 	a5-5(2),
									 	a5-4(3),
									 	a5-3(4),
									 	a5-2(5),
									 	a5-1(6)
										}	(SIZE (7))

GSM-TargetCellInfoList ::=		SEQUENCE (SIZE (1..maxGSMTargetCells)) OF
											GSM-TargetCellInfo


GSM-TargetCellInfo ::= 				SEQUENCE {
	bcch-ARFCN							BCCH-ARFCN,
	frequency-band						Frequency-Band,
	bsic								BSIC			OPTIONAL
}

IdentificationOfReceivedMessage ::=	SEQUENCE {
		rrc-TransactionIdentifier		RRC-TransactionIdentifier,
		receivedMessageType				ReceivedMessageType
}

InterRAT-ChangeFailureCause ::=		CHOICE {
	configurationUnacceptable			NULL,
	physicalChannelFailure				NULL,
	protocolError						ProtocolErrorInformation,
	unspecified							NULL,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}							

GERANIu-MessageList ::=				SEQUENCE (SIZE (1..maxInterSysMessages)) OF
										BIT STRING (SIZE (1..32768))

GERANIu-RadioAccessCapability ::=	BIT STRING (SIZE (1..170))

InterRAT-UE-RadioAccessCapability ::= CHOICE {
	gsm									SEQUENCE {
		gsm-Classmark2						GSM-Classmark2,
		gsm-Classmark3						GSM-Classmark3
	},
	cdma2000							SEQUENCE {
		cdma2000-MessageList				CDMA2000-MessageList
	}
}

InterRAT-UE-RadioAccessCapabilityList ::= 	SEQUENCE (SIZE(1..maxInterSysMessages)) OF
											InterRAT-UE-RadioAccessCapability

InterRAT-UE-RadioAccessCapability-v590ext ::= SEQUENCE {
	geranIu-RadioAccessCapability		GERANIu-RadioAccessCapability
}

InterRAT-UE-RadioAccessCapability-v690ext ::= SEQUENCE {
	supportOfInter-RAT-PS-Handover		ENUMERATED { doesSupporInter-RAT-PS-Handover }	OPTIONAL,
	gsm-MS-RadioAccessCapability		GSM-MS-RadioAccessCapability
}

InterRAT-UE-SecurityCapability ::= CHOICE {
	gsm									SEQUENCE {
		gsmSecurityCapability			GsmSecurityCapability
	}
}

InterRAT-UE-SecurityCapList ::= 	SEQUENCE (SIZE(1..maxInterSysMessages)) OF
										InterRAT-UE-SecurityCapability

InterRAT-HO-FailureCause ::=		CHOICE {
	configurationUnacceptable			NULL,
	physicalChannelFailure				NULL,
	protocolError						ProtocolErrorInformation,
	interRAT-ProtocolError				NULL,
	unspecified							NULL,
	spare11								NULL,
	spare10								NULL,
	spare9								NULL,
	spare8								NULL,
	spare7								NULL,
	spare6								NULL,
	spare5								NULL,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}							

MasterInformationBlock ::=			SEQUENCE {
		mib-ValueTag					MIB-ValueTag,
		-- TABULAR: The PLMN identity and ANSI-41 core network information
		-- are included in PLMN-Type.
		plmn-Type						PLMN-Type,
		sibSb-ReferenceList				SIBSb-ReferenceList,
	-- Extension mechanism for non- release99 information
		v690NonCriticalExtensions			SEQUENCE {
			masterInformationBlock-v690ext		MasterInformationBlock-v690ext,
			nonCriticalExtensions				SEQUENCE {}							OPTIONAL
		}	OPTIONAL
}

MasterInformationBlock-v690ext ::=	SEQUENCE {
	multiplePLMN-List					MultiplePLMN-List-r6			OPTIONAL
}

MIB-ValueTag ::=					INTEGER (1..8)

NCC ::=								INTEGER (0..7)

PLMN-ValueTag ::=					INTEGER (1..256)


PredefinedConfigIdentityAndValueTag ::=	SEQUENCE {
	predefinedConfigIdentity				PredefinedConfigIdentity,
	predefinedConfigValueTag				PredefinedConfigValueTag
}

ProtocolErrorInformation ::=		SEQUENCE {
	diagnosticsType						CHOICE {
		type1								SEQUENCE {
			protocolErrorCause					ProtocolErrorCause
		},
		spare								NULL
	}
}

ReceivedMessageType ::=				ENUMERATED {
										activeSetUpdate,
										cellChangeOrderFromUTRAN,
										cellUpdateConfirm,
										counterCheck,
										downlinkDirectTransfer,
										interRATHandoverCommand,
										measurementControl,
										pagingType2,
										physicalChannelReconfiguration,
										physicalSharedChannelAllocation,
										radioBearerReconfiguration,
										radioBearerRelease,
										radioBearerSetup,
										rrcConnectionRelease,
										rrcConnectionReject,
										rrcConnectionSetup,
										securityModeCommand,
										signallingConnectionRelease,
										transportChannelReconfiguration,
										transportFormatCombinationControl,
										ueCapabilityEnquiry,
										ueCapabilityInformationConfirm,
										uplinkPhysicalChannelControl,
										uraUpdateConfirm,
										utranMobilityInformation,
										assistanceDataDelivery,
										spare6, spare5, spare4, spare3, spare2,
										spare1
}

Rplmn-Information ::=					SEQUENCE {
											gsm-BA-Range-List		GSM-BA-Range-List	OPTIONAL,
											fdd-UMTS-Frequency-List	FDD-UMTS-Frequency-List	OPTIONAL,
											tdd-UMTS-Frequency-List	TDD-UMTS-Frequency-List	OPTIONAL,
											cdma2000-UMTS-Frequency-List	CDMA2000-UMTS-Frequency-List	OPTIONAL
}

Rplmn-Information-r4 ::=		SEQUENCE {
	gsm-BA-Range-List				GSM-BA-Range-List						OPTIONAL,
	fdd-UMTS-Frequency-List			FDD-UMTS-Frequency-List					OPTIONAL,
	-- the option is the same for 7.68 Mcps TDD as for 3.84 Mcps TDD
	-- i.e. TDD-UMTS-Frequency-List applies
	tdd384-UMTS-Frequency-List		TDD-UMTS-Frequency-List					OPTIONAL,
	tdd128-UMTS-Frequency-List		TDD-UMTS-Frequency-List					OPTIONAL,
	cdma2000-UMTS-Frequency-List	CDMA2000-UMTS-Frequency-List			OPTIONAL
}

SchedulingInformation ::=			SEQUENCE {
	scheduling							SEQUENCE {
		segCount							SegCount				 		 DEFAULT 1,
		sib-Pos								CHOICE {
			-- The element name indicates the repetition period and the value
			-- (multiplied by two) indicates the position of the first segment.
			rep4								INTEGER (0..1),
			rep8								INTEGER (0..3),
			rep16								INTEGER (0..7),
			rep32								INTEGER (0..15),
			rep64								INTEGER (0..31),
			rep128								INTEGER (0..63),
			rep256								INTEGER (0..127),
			rep512								INTEGER (0..255),
			rep1024								INTEGER (0..511),
			rep2048								INTEGER (0..1023),
			rep4096								INTEGER (0..2047)
		},
		sib-PosOffsetInfo					SibOFF-List						OPTIONAL
	}
}

SchedulingInformationSIB ::=			SEQUENCE {
	sib-Type							SIB-TypeAndTag,
	scheduling							SchedulingInformation
}

SchedulingInformationSIBSb ::=			SEQUENCE {
	sibSb-Type							SIBSb-TypeAndTag,
	scheduling							SchedulingInformation
}

SegCount ::=						INTEGER (1..16)

SegmentIndex ::=					INTEGER (1..15)

-- Actual value SFN-Prime = 2 * IE value
SFN-Prime ::=						INTEGER (0..2047)


SIB-Data-fixed ::=					BIT STRING (SIZE (222))


SIB-Data-variable ::=				BIT STRING (SIZE (1..214))

SIBOccurIdentity ::=			INTEGER (0..15)

SIBOccurrenceIdentityAndValueTag ::=	SEQUENCE {
	sibOccurIdentity				SIBOccurIdentity,
	sibOccurValueTag				SIBOccurValueTag
}

SIBOccurValueTag ::=			INTEGER (0..15)

SIB-ReferenceList ::=				SEQUENCE (SIZE (1..maxSIB)) OF
										SchedulingInformationSIB

SIBSb-ReferenceList ::=				SEQUENCE (SIZE (1..maxSIB)) OF
										SchedulingInformationSIBSb

SIB-ReferenceListFACH ::=			SEQUENCE (SIZE (1..maxSIB-FACH)) OF 
										SchedulingInformationSIB

SIB-Type ::=						ENUMERATED {
										masterInformationBlock,
										systemInformationBlockType1,
										systemInformationBlockType2,
										systemInformationBlockType3,
										systemInformationBlockType4,
										systemInformationBlockType5,
										systemInformationBlockType6,
										systemInformationBlockType7,
		-- dummy, dummy2 and dummy3 are not used in this version of the specification,
		-- they should not be sent. If they are received the UE behaviour is not specified.
										dummy,
										dummy2,
										dummy3,
										systemInformationBlockType11,
										systemInformationBlockType12,
										systemInformationBlockType13,
										systemInformationBlockType13-1,
										systemInformationBlockType13-2,
										systemInformationBlockType13-3,
										systemInformationBlockType13-4,
										systemInformationBlockType14,
										systemInformationBlockType15,
										systemInformationBlockType15-1,
										systemInformationBlockType15-2,
										systemInformationBlockType15-3,
										systemInformationBlockType16,
										systemInformationBlockType17,
										systemInformationBlockType15-4,
										systemInformationBlockType18,
										schedulingBlock1,
										schedulingBlock2,
										systemInformationBlockType15-5,
										systemInformationBlockType5bis, 
										spare1 }

SIB-TypeAndTag ::=					CHOICE {
	sysInfoType1						PLMN-ValueTag,
	sysInfoType2						CellValueTag,
	sysInfoType3						CellValueTag,
	sysInfoType4						CellValueTag,
	sysInfoType5						CellValueTag,
	sysInfoType6						CellValueTag,
	sysInfoType7						NULL,
	-- dummy, dummy2 and dummy3 are not used in this version of the specification,
	-- they should not be sent. If they are received the UE behaviour is not specified.
	dummy								CellValueTag,
	dummy2								NULL,
	dummy3								NULL,
	sysInfoType11						CellValueTag,
	sysInfoType12 						CellValueTag,
	sysInfoType13						CellValueTag,
	sysInfoType13-1						CellValueTag, 
	sysInfoType13-2						CellValueTag,
	sysInfoType13-3						CellValueTag,
	sysInfoType13-4						CellValueTag,
	sysInfoType14						NULL,
	sysInfoType15						CellValueTag,
	sysInfoType16						PredefinedConfigIdentityAndValueTag,
	sysInfoType17						NULL,
	sysInfoType15-1						CellValueTag,
	sysInfoType15-2						SIBOccurrenceIdentityAndValueTag,
	sysInfoType15-3						SIBOccurrenceIdentityAndValueTag,
	sysInfoType15-4						CellValueTag,
	sysInfoType18						CellValueTag,
	sysInfoType15-5						CellValueTag,
	sysInfoType5bis						CellValueTag,
	spare4								NULL,
	spare3								NULL,
	spare2								NULL,
	spare1								NULL
}

SIBSb-TypeAndTag ::=					CHOICE {
	sysInfoType1						PLMN-ValueTag,
	sysInfoType2						CellValueTag,
	sysInfoType3						CellValueTag,
	sysInfoType4						CellValueTag,
	sysInfoType5						CellValueTag,
	sysInfoType6						CellValueTag,
	sysInfoType7						NULL,
	-- dummy, dummy2 and dummy3 are not used in this version of the specification,
	-- they should not be sent. If they are received the UE behaviour is not specified.
	dummy								CellValueTag,
	dummy2								NULL,
	dummy3								NULL,
	sysInfoType11						CellValueTag,
	sysInfoType12 						CellValueTag,
	sysInfoType13						CellValueTag,
	sysInfoType13-1						CellValueTag, 
	sysInfoType13-2						CellValueTag,
	sysInfoType13-3						CellValueTag,
	sysInfoType13-4						CellValueTag,
	sysInfoType14						NULL,
	sysInfoType15						CellValueTag,
	sysInfoType16						PredefinedConfigIdentityAndValueTag,
	sysInfoType17						NULL,
	sysInfoTypeSB1						CellValueTag,
	sysInfoTypeSB2						CellValueTag,
	sysInfoType15-1						CellValueTag,
	sysInfoType15-2						SIBOccurrenceIdentityAndValueTag,
	sysInfoType15-3						SIBOccurrenceIdentityAndValueTag,
	sysInfoType15-4						CellValueTag,
	sysInfoType18						CellValueTag,
	sysInfoType15-5						CellValueTag,
	sysInfoType5bis						CellValueTag,
	spare2								NULL,
	spare1								NULL
}

SibOFF ::=							ENUMERATED {
										so2, so4, so6, so8, so10,
										so12, so14, so16, so18,
										so20, so22, so24, so26,
										so28, so30, so32 }

SibOFF-List ::=						SEQUENCE (SIZE (1..15)) OF
										SibOFF

SysInfoType1 ::=					SEQUENCE {
	-- Core network IEs
		cn-CommonGSM-MAP-NAS-SysInfo	NAS-SystemInformationGSM-MAP,	
		cn-DomainSysInfoList			CN-DomainSysInfoList,
	-- User equipment IEs
		ue-ConnTimersAndConstants		UE-ConnTimersAndConstants			OPTIONAL,
		ue-IdleTimersAndConstants		UE-IdleTimersAndConstants			OPTIONAL,
	-- Extension mechanism for non- release99 information
		v3a0NonCriticalExtensions		SEQUENCE {
			sysInfoType1-v3a0ext		SysInfoType1-v3a0ext-IEs,
			nonCriticalExtensions		SEQUENCE {} OPTIONAL
		}							OPTIONAL
}

SysInfoType1-v3a0ext-IEs ::= SEQUENCE {
	ue-ConnTimersAndConstants-v3a0ext		UE-ConnTimersAndConstants-v3a0ext,
	ue-IdleTimersAndConstants-v3a0ext		UE-IdleTimersAndConstants-v3a0ext
}

SysInfoType2 ::=					SEQUENCE {
	-- UTRAN mobility IEs
		ura-IdentityList				URA-IdentityList,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType3 ::=					SEQUENCE {
		sib4indicator					BOOLEAN,
	-- UTRAN mobility IEs
		cellIdentity					CellIdentity,
		cellSelectReselectInfo			CellSelectReselectInfoSIB-3-4,
		cellAccessRestriction			CellAccessRestriction,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE { 
			sysInfoType3-v4b0ext			SysInfoType3-v4b0ext-IEs,
			v590NonCriticalExtension		SEQUENCE {
				sysInfoType3-v590ext			SysInfoType3-v590ext,
				v5c0NoncriticalExtension		SEQUENCE {
					sysInfoType3-v5c0ext			SysInfoType3-v5c0ext-IEs,
					v670NonCriticalExtension			SEQUENCE {
						sysInfoType3-v670ext				SysInfoType3-v670ext,
						nonCriticalExtensions			SEQUENCE {}						OPTIONAL
					}							OPTIONAL
				}							OPTIONAL
			} 							OPTIONAL
		}							OPTIONAL
}

SysInfoType3-v4b0ext-IEs ::= SEQUENCE {
	mapping-LCR						Mapping-LCR-r4							OPTIONAL
}

SysInfoType3-v590ext ::= SEQUENCE {
	cellSelectReselectInfo-v590ext		CellSelectReselectInfo-v590ext 		OPTIONAL
}

SysInfoType3-v5c0ext-IEs ::= SEQUENCE {
	cellSelectReselectInfoTreselectionScaling-v5c0ext
										CellSelectReselectInfoTreselectionScaling-v5c0ext	OPTIONAL
}

SysInfoType3-v670ext ::= SEQUENCE {
	 	domainSpecificAccessRestrictionParametersForPLMNOfMIB
									DomainSpecificAccessRestrictionParam-v670ext	OPTIONAL,
		domainSpecificAccessRestictionForSharedNetwork
									DomainSpecificAccessRestrictionForSharedNetwork-v670ext	OPTIONAL
}

SysInfoType4 ::=					SEQUENCE {
	-- UTRAN mobility IEs
		cellIdentity					CellIdentity,
		cellSelectReselectInfo			CellSelectReselectInfoSIB-3-4,
		cellAccessRestriction			CellAccessRestriction,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE { 
			sysInfoType4-v4b0ext			SysInfoType4-v4b0ext-IEs,
			v590NonCriticalExtension		SEQUENCE {
				sysInfoType4-v590ext			SysInfoType4-v590ext,
				v5b0NonCriticalExtension		SEQUENCE {
					sysInfoType4-v5b0ext			SysInfoType4-v5b0ext-IEs,
					v5c0NonCriticalExtension			SEQUENCE {
						sysInfoType4-v5c0ext				SysInfoType4-v5c0ext-IEs,
						nonCriticalExtensions			SEQUENCE {}						OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

SysInfoType4-v4b0ext-IEs ::= SEQUENCE {
	mapping-LCR						Mapping-LCR-r4							OPTIONAL
}


SysInfoType4-v590ext ::= SEQUENCE {
	cellSelectReselectInfo-v590ext		CellSelectReselectInfo-v590ext 		OPTIONAL
}

SysInfoType4-v5b0ext-IEs ::= SEQUENCE {
	cellSelectReselectInfoPCHFACH-v5b0ext	CellSelectReselectInfoPCHFACH-v5b0ext 		OPTIONAL
}

SysInfoType4-v5c0ext-IEs ::= SEQUENCE {
	cellSelectReselectInfoTreselectionScaling-v5c0ext
										CellSelectReselectInfoTreselectionScaling-v5c0ext	OPTIONAL
}

SysInfoType5 ::=					SEQUENCE {
		sib6indicator					BOOLEAN,
	-- Physical channel IEs
		pich-PowerOffset				PICH-PowerOffset,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				aich-PowerOffset				AICH-PowerOffset
			},
			tdd								SEQUENCE {
	-- If PDSCH/PUSCH is configured for 1.28Mcps TDD, the following IEs should be absent
	--   and the info included in the tdd128SpecificInfo instead.
	-- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be 
	-- included. 
				pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN		OPTIONAL,
				pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN		OPTIONAL,
				openLoopPowerControl-TDD		OpenLoopPowerControl-TDD
			}
		},
		primaryCCPCH-Info				PrimaryCCPCH-Info					OPTIONAL,
		prach-SystemInformationList		PRACH-SystemInformationList,
		sCCPCH-SystemInformationList	SCCPCH-SystemInformationList,
		-- cbs-DRX-Level1Information is conditional on any of the CTCH indicator IEs in
		-- sCCPCH-SystemInformationList
		cbs-DRX-Level1Information		CBS-DRX-Level1Information			OPTIONAL,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE {
			sysInfoType5-v4b0ext			SysInfoType5-v4b0ext-IEs		OPTIONAL,
		-- Extension mechanism for non- rel-4 information
			v590NonCriticalExtensions		SEQUENCE {
				sysInfoType5-v590ext			SysInfoType5-v590ext-IEs		OPTIONAL,
				v650NonCriticalExtensions		SEQUENCE {
					sysInfoType5-v650ext			SysInfoType5-v650ext-IEs		OPTIONAL,
					v680NonCriticalExtensions		SEQUENCE {
						sysInfoType5-v680ext			SysInfoType5-v680ext-IEs		OPTIONAL,
						v690NonCriticalExtensions		SEQUENCE {
							sysInfoType5-v690ext			SysInfoType5-v690ext-IEs,
							v7xyNonCriticalExtensions		SEQUENCE {
								sysInfoType5-v7xyext			SysInfoType5-v7xyext-IEs,
								nonCriticalExtensions			SEQUENCE {}				OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
}

SysInfoType5-v4b0ext-IEs ::= SEQUENCE {
	--The following IE PNBSCH-Allocation-r4 shall be used for 3.84Mcps TDD only.
	pNBSCH-Allocation-r4 			PNBSCH-Allocation-r4			OPTIONAL,
	-- In case of TDD, the following IE is included instead of the
	-- IE up-IPDL-Parameter in up-OTDOA-AssistanceData.
	openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL,
-- If SysInfoType5 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included in
-- PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the 
-- IE rach-TransportFormatSet shall be absent and the corresponding IE in the following 
-- PRACH-SystemInformationList-LCR-r4 shall be used
	prach-SystemInformationList-LCR-r4	PRACH-SystemInformationList-LCR-r4	OPTIONAL, 
	tdd128SpecificInfo				SEQUENCE {
		pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN-LCR-r4	OPTIONAL,
		pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN-LCR-r4	OPTIONAL,
		pCCPCH-LCR-Extensions			PrimaryCCPCH-Info-LCR-r4-ext	OPTIONAL,
		sCCPCH-LCR-ExtensionsList		SCCPCH-SystemInformationList-LCR-r4-ext
	}																OPTIONAL,
	frequencyBandIndicator			RadioFrequencyBandFDD			OPTIONAL
}

SysInfoType5-v590ext-IEs ::= SEQUENCE {
	hcr-r5-SpecificInfo				SEQUENCE {
		pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN-HCR-r5	OPTIONAL,
		pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN-HCR-r5	OPTIONAL
	}																	OPTIONAL
}

SysInfoType5-v650ext-IEs ::= SEQUENCE {
	frequencyBandIndicator2			RadioFrequencyBandFDD2
}

SysInfoType5-v680ext-IEs ::= SEQUENCE {
	-- TABULAR: HSDPA Cell Indicator is MD in tabular description
	-- Default value is ’HSDPA Capability not indicated’
	hsdpa-CellIndicator		ENUMERATED { hsdpa-CapableCell }			OPTIONAL
}

SysInfoType5-v690ext-IEs ::=		SEQUENCE {
	-- TABULAR: E-DCH Cell Indicator is MD in tabular description
	-- Default value is ’E-DCH Capability not indicated’
	edch-CellIndicator					ENUMERATED { edch-CapableCell }		OPTIONAL,
	sccpch-SystemInformation-MBMS		CHOICE {
		mcchOnSCCPCHusedForNonMBMS			MBMS-MCCH-ConfigurationInfo-r6,
		mcchOnSCCPCHusedOnlyForMBMS			SCCPCH-SystemInformation-MBMS-r6
	}		OPTIONAL,
	additionalPRACH-TF-and-TFCS-CCCH-List	AdditionalPRACH-TF-and-TFCS-CCCH-List	OPTIONAL,
	cBS-DRX-Level1Information-extension		CBS-DRX-Level1Information-extension-r6	OPTIONAL
}

SysInfoType5-v7xyext-IEs ::=		SEQUENCE {
	pusch-SysInfoList-SFN-VHCR			PUSCH-SysInfoList-SFN-VHCR		OPTIONAL,
	prach-SystemInformationList-r7		PRACH-SystemInformationList-r7	OPTIONAL,
	pdsch-SysInfoList-SFN-r7			PDSCH-SysInfoList-r7			OPTIONAL,
	sccpch-SystemInformation-MBMS		CHOICE {
		mcchOnSCCPCHusedForNonMBMS			MBMS-MCCH-ConfigurationInfo-r6,
		mcchOnSCCPCHusedOnlyForMBMS			SCCPCH-SystemInformation-MBMS-r7
	}		OPTIONAL,
	sCCPCH-SystemInformationList-r7		SCCPCH-SystemInformationList-r7	OPTIONAL
}


-- SysInfoType5bis uses the same structure as SysInfoType5
SysInfoType5bis ::= SysInfoType5

SysInfoType6 ::=					SEQUENCE {
	-- Physical channel IEs
		pich-PowerOffset				PICH-PowerOffset,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				aich-PowerOffset				AICH-PowerOffset,
				-- dummy is not used in this version of specification, it should
				-- not be sent and if received it should be ignored.
				dummy							CSICH-PowerOffset			OPTIONAL
			},
			tdd								SEQUENCE {
				-- If PDSCH/PUSCH is configured for 1.28Mcps TDD, pusch-SysInfoList-SFN,
				-- pdsch-SysInfoList-SFN and openLoopPowerControl-TDD should be absent
				-- and the info included in the tdd128SpecificInfo instead.
				-- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should 
				-- also be included.
				pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN		OPTIONAL,
				pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN		OPTIONAL,
				openLoopPowerControl-TDD		OpenLoopPowerControl-TDD
			}
		},
		primaryCCPCH-Info				PrimaryCCPCH-Info					OPTIONAL,
		prach-SystemInformationList		PRACH-SystemInformationList			OPTIONAL,
		sCCPCH-SystemInformationList	SCCPCH-SystemInformationList		OPTIONAL,
		cbs-DRX-Level1Information		CBS-DRX-Level1Information			OPTIONAL,
		-- Conditional on any of the CTCH indicator IEs in
		-- sCCPCH-SystemInformationList
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE {
			sysInfoType6-v4b0ext			SysInfoType6-v4b0ext-IEs		OPTIONAL,
		-- Extension mechanism for non- rel-4 information
			v590NonCriticalExtensions	SEQUENCE {
				sysInfoType6-v590ext			SysInfoType6-v590ext-IEs		OPTIONAL,
				v650nonCriticalExtensions		SEQUENCE {
					sysInfoType6-v650ext			SysInfoType6-v650ext-IEs		OPTIONAL,
					v690nonCriticalExtensions		SEQUENCE {
						sysInfoType6-v690ext			SysInfoType6-v690ext-IEs,
						v7xyNonCriticalExtensions		SEQUENCE {
							sysInfoType6-v7xyext			SysInfoType6-v7xyext-IEs,
							nonCriticalExtensions			SEQUENCE {}					OPTIONAL
						}	OPTIONAL
					}							OPTIONAL
				}							OPTIONAL
			}							OPTIONAL
		}							OPTIONAL
}

SysInfoType6-v4b0ext-IEs ::= SEQUENCE {
	-- openLoopPowerControl-IPDL-TDD is present only if IPDLs are applied for TDD
	openLoopPowerControl-IPDL-TDD	OpenLoopPowerControl-IPDL-TDD-r4	OPTIONAL,
	-- If SysInfoType6 is sent to describe a 1.28Mcps TDD cell, the IE PRACH-RACH-Info included
	-- in PRACH-SystemInformationList shall be ignored, the IE PRACH-Partitioning and the 
	-- IE rach-TransportFormatSet shall be absent and the corresponding IEs in the following 
	-- PRACH-SystemInformationList-LCR-r4 shall be used
	prach-SystemInformationList-LCR-r4	PRACH-SystemInformationList-LCR-r4	OPTIONAL, 
	tdd128SpecificInfo				SEQUENCE {
		pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN-LCR-r4	OPTIONAL,
		pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN-LCR-r4	OPTIONAL,
		pCCPCH-LCR-Extensions			PrimaryCCPCH-Info-LCR-r4-ext	OPTIONAL,
		sCCPCH-LCR-ExtensionsList		SCCPCH-SystemInformationList-LCR-r4-ext	OPTIONAL
	}																OPTIONAL,
	frequencyBandIndicator			RadioFrequencyBandFDD			OPTIONAL
}

SysInfoType6-v590ext-IEs ::= SEQUENCE {
	hcr-r5-SpecificInfo				SEQUENCE {
		pusch-SysInfoList-SFN			PUSCH-SysInfoList-SFN-HCR-r5	OPTIONAL,
		pdsch-SysInfoList-SFN			PDSCH-SysInfoList-SFN-HCR-r5	OPTIONAL
	}																	OPTIONAL
}

SysInfoType6-v650ext-IEs ::= SEQUENCE {
	frequencyBandIndicator2			RadioFrequencyBandFDD2
}

SysInfoType6-v690ext-IEs ::= SEQUENCE {
	additionalPRACH-TF-and-TFCS-CCCH-List	AdditionalPRACH-TF-and-TFCS-CCCH-List	OPTIONAL
}

SysInfoType6-v7xyext-IEs ::=		SEQUENCE {
	pusch-SysInfoList-SFN-VHCR			PUSCH-SysInfoList-SFN-VHCR		OPTIONAL,
	pdsch-SysInfoList-SFN-r7			PDSCH-SysInfoList-r7			OPTIONAL,
	prach-SystemInformationList-r7		PRACH-SystemInformationList-r7	OPTIONAL,
	sCCPCH-SystemInformationList-r7		SCCPCH-SystemInformationList-r7	OPTIONAL
}

SysInfoType7 ::=					SEQUENCE {
	-- Physical channel IEs
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				ul-Interference					UL-Interference
			},
			tdd								NULL
		},
		prach-Information-SIB5-List		DynamicPersistenceLevelList,
		prach-Information-SIB6-List		DynamicPersistenceLevelList			OPTIONAL,
		expirationTimeFactor			ExpirationTimeFactor				OPTIONAL,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

-- This IE is not used in this version of the specification.
-- It was kept only for backwards compatibility reasons
SysInfoType8 ::=					SEQUENCE {
	-- User equipment IEs
		-- dummy1, dummy2, dummy3 are not used in this version of the specification and
		-- they should be ignored by the receiver.
		dummy1							CPCH-Parameters,
	-- Physical channel IEs
		dummy2							CPCH-SetInfoList,
		dummy3							CSICH-PowerOffset,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

-- This IE is not used in this version of the specification.
-- It was kept only for backwards compatibility reasons
SysInfoType9 ::=					SEQUENCE {
	-- Physical channel IEs
		-- dummy is not used in this version of the specification and
		-- it should be ignored by the receiver.
		dummy							CPCH-PersistenceLevelsList,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

-- This IE is not used in this version of the specification.
-- It was kept only for backwards compatibility reasons
SysInfoType10 ::=					SEQUENCE {
	-- User equipment IEs
		-- dummy is not used in this version of the specification, it should
		-- not be sent and if received it should be ignored.
		dummy							DRAC-SysInfoList,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType11 ::=					SEQUENCE {
		sib12indicator					BOOLEAN,
	-- Measurement IEs
		fach-MeasurementOccasionInfo	FACH-MeasurementOccasionInfo		OPTIONAL,
		measurementControlSysInfo		MeasurementControlSysInfo,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE {
			sysInfoType11-v4b0ext			SysInfoType11-v4b0ext-IEs		OPTIONAL,
			v590NonCriticalExtension		SEQUENCE {
				sysInfoType11-v590ext			SysInfoType11-v590ext-IEs,
				v690NonCriticalExtensions			SEQUENCE {
					sysInfoType11-v690ext			SysInfoType11-v690ext-IEs,
					nonCriticalExtensions			SEQUENCE {}						OPTIONAL
				}							OPTIONAL
			}							OPTIONAL
		}							OPTIONAL
}

SysInfoType11-v4b0ext-IEs ::= SEQUENCE {
	fach-MeasurementOccasionInfo-LCR-Ext	FACH-MeasurementOccasionInfo-LCR-r4-ext	OPTIONAL,
	measurementControlSysInfo-LCR			MeasurementControlSysInfo-LCR-r4-ext
}

SysInfoType11-v590ext-IEs ::= SEQUENCE {
	--The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList
	newIntraFrequencyCellInfoList-v590ext	SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	--The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList
	newInterFrequencyCellInfoList-v590ext	SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	--The order of the list corresponds to the order of cell in newInterRATCellInfoList
	newInterRATCellInfoList-v590ext			SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	intraFreqEventCriteriaList-v590ext		Intra-FreqEventCriteriaList-v590ext		OPTIONAL,
	intraFreqReportingCriteria-1b-r5		IntraFreqReportingCriteria-1b-r5	OPTIONAL,
	intraFreqEvent-1d-r5					IntraFreqEvent-1d-r5				OPTIONAL
}

SysInfoType11-v690ext-IEs ::= SEQUENCE {
	-- Measurement IEs
	interFreqRACHReportingInfo			InterFreqRACHReportingInfo			OPTIONAL
}

SysInfoType12 ::=					SEQUENCE {
	-- Measurement IEs
		fach-MeasurementOccasionInfo	FACH-MeasurementOccasionInfo		OPTIONAL,
		measurementControlSysInfo		MeasurementControlSysInfo,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE {
			sysInfoType12-v4b0ext			SysInfoType12-v4b0ext-IEs		OPTIONAL,
			v590NonCriticalExtension		SEQUENCE {
				sysInfoType12-v590ext			SysInfoType12-v590ext-IEs,
				v690NonCriticalExtensions			SEQUENCE {
					sysInfoType12-v690ext			SysInfoType12-v690ext-IEs,
					nonCriticalExtensions			SEQUENCE {}						OPTIONAL
				}							OPTIONAL
			}							OPTIONAL
		}							OPTIONAL
}

SysInfoType12-v4b0ext-IEs ::= SEQUENCE {
	fach-MeasurementOccasionInfo-LCR-Ext	FACH-MeasurementOccasionInfo-LCR-r4-ext	OPTIONAL,
	measurementControlSysInfo-LCR			MeasurementControlSysInfo-LCR-r4-ext
}

SysInfoType12-v590ext-IEs ::= SEQUENCE {
	--The order of the list corresponds to the order of cell in newIntraFrequencyCellInfoList
	newIntraFrequencyCellInfoList-v590ext	SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	--The order of the list corresponds to the order of cell in newInterFrequencyCellInfoList
	newInterFrequencyCellInfoList-v590ext	SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	--The order of the list corresponds to the order of cell in newInterRATCellInfoList
	newInterRATCellInfoList-v590ext			SEQUENCE (SIZE (1..maxCellMeas)) OF
												CellSelectReselectInfo-v590ext	OPTIONAL,
	intraFreqEventCriteriaList-v590ext		Intra-FreqEventCriteriaList-v590ext		OPTIONAL,
	intraFreqReportingCriteria-1b-r5		IntraFreqReportingCriteria-1b-r5	OPTIONAL,
	intraFreqEvent-1d-r5					IntraFreqEvent-1d-r5				OPTIONAL
}

SysInfoType12-v690ext-IEs ::= SEQUENCE {
	-- Measurement IEs
	interFreqRACHReportingInfo			InterFreqRACHReportingInfo			OPTIONAL
}

SysInfoType13 ::=					SEQUENCE {
	-- Core network IEs
		cn-DomainSysInfoList			CN-DomainSysInfoList,
	-- User equipment IEs
		ue-IdleTimersAndConstants		UE-IdleTimersAndConstants			OPTIONAL,
		capabilityUpdateRequirement		CapabilityUpdateRequirement			OPTIONAL,
	-- Extension mechanism for non- release99 information
		v3a0NonCriticalExtensions			SEQUENCE { 
			sysInfoType13-v3a0ext			SysInfoType13-v3a0ext-IEs,
			v4b0NonCriticalExtensions		SEQUENCE {
				sysInfoType13-v4b0ext			SysInfoType13-v4b0ext-IEs,
			-- Extension mechanism for non- release99 information
				v7xyNonCriticalExtensions		SEQUENCE {
					sysInfoType13-v7xyext			SysInfoType13-v7xyext-IEs,
					nonCriticalExtensions			SEQUENCE {}						OPTIONAL
				}							OPTIONAL
			}							OPTIONAL
		}							OPTIONAL
}

SysInfoType13-v3a0ext-IEs ::= SEQUENCE {
	ue-IdleTimersAndConstants-v3a0ext		UE-IdleTimersAndConstants-v3a0ext
}

SysInfoType13-v4b0ext-IEs ::= SEQUENCE {
	capabilityUpdateRequirement-r4Ext	CapabilityUpdateRequirement-r4-ext	OPTIONAL
}

SysInfoType13-v7xyext-IEs ::= SEQUENCE {
	capabilityUpdateRequirement-r7Ext	CapabilityUpdateRequirement-r7-ext	OPTIONAL
}

SysInfoType13-1 ::=					SEQUENCE {
	-- ANSI-41 IEs
		ansi-41-RAND-Information		ANSI-41-RAND-Information,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType13-2 ::=					SEQUENCE {
	-- ANSI-41 IEs
		ansi-41-UserZoneID-Information	ANSI-41-UserZoneID-Information,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType13-3 ::=					SEQUENCE {
	-- ANSI-41 IEs
		ansi-41-PrivateNeighbourListInfo ANSI-41-PrivateNeighbourListInfo,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType13-4 ::=					SEQUENCE {
	-- ANSI-41 IEs
		ansi-41-GlobalServiceRedirectInfo
										ANSI-41-GlobalServiceRedirectInfo,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType14 ::=					SEQUENCE {
	-- Physical channel IEs
		individualTS-InterferenceList	IndividualTS-InterferenceList,
		expirationTimeFactor			ExpirationTimeFactor				OPTIONAL,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType15 ::=					SEQUENCE {
	-- Measurement IEs
		
		ue-positioning-GPS-CipherParameters		UE-Positioning-CipherParameters		OPTIONAL,
		ue-positioning-GPS-ReferenceLocation	ReferenceLocation,
		ue-positioning-GPS-ReferenceTime		UE-Positioning-GPS-ReferenceTime,

		ue-positioning-GPS-Real-timeIntegrity		BadSatList							OPTIONAL,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions			SEQUENCE { 
			sysInfoType15-v4b0ext				SysInfoType15-v4b0ext-IEs,
		-- Extension mechanism for non- release4 information
			nonCriticalExtensions				SEQUENCE {}				OPTIONAL
		}	OPTIONAL
}

SysInfoType15-v4b0ext-IEs ::= SEQUENCE {
	up-Ipdl-Parameters-TDD			UE-Positioning-IPDL-Parameters-TDD-r4-ext	OPTIONAL
}

SysInfoType15-1 ::=					SEQUENCE {
	-- DGPS corrections
		ue-positioning-GPS-DGPS-Corrections			UE-Positioning-GPS-DGPS-Corrections,

	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}				OPTIONAL
} 

SysInfoType15-2 ::=					SEQUENCE {
	-- Ephemeris and clock corrections
		transmissionTOW					INTEGER (0..604799),
		satID							SatID,
		ephemerisParameter				EphemerisParameter,

	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}			OPTIONAL
} 

SysInfoType15-3 ::=					SEQUENCE {
	-- Almanac and other data
		transmissionTOW					INTEGER (0.. 604799),
		ue-positioning-GPS-Almanac					UE-Positioning-GPS-Almanac				OPTIONAL,
		ue-positioning-GPS-IonosphericModel			UE-Positioning-GPS-IonosphericModel		OPTIONAL,
		ue-positioning-GPS-UTC-Model				UE-Positioning-GPS-UTC-Model			OPTIONAL,
		satMask							BIT STRING (SIZE (1..32))	OPTIONAL,
		lsbTOW							BIT STRING (SIZE (8))		OPTIONAL,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}					OPTIONAL
} 

SysInfoType15-4 ::=					SEQUENCE {
	-- Measurement IEs
		ue-positioning-OTDOA-CipherParameters	UE-Positioning-CipherParameters			OPTIONAL,
		ue-positioning-OTDOA-AssistanceData		UE-Positioning-OTDOA-AssistanceData,
		v3a0NonCriticalExtensions			SEQUENCE {
			sysInfoType15-4-v3a0ext				SysInfoType15-4-v3a0ext,
		-- Extension mechanism for non- release99 information
			v4b0NonCriticalExtensions			SEQUENCE {
				sysInfoType15-4-v4b0ext				SysInfoType15-4-v4b0ext,
				nonCriticalExtensions				SEQUENCE {}		OPTIONAL
			}	OPTIONAL
		}	OPTIONAL
}

SysInfoType15-4-v3a0ext ::= SEQUENCE {
	sfn-Offset-Validity				SFN-Offset-Validity		OPTIONAL
}

SysInfoType15-4-v4b0ext ::= SEQUENCE {
	ue-Positioning-OTDOA-AssistanceData-r4ext	UE-Positioning-OTDOA-AssistanceData-r4ext	OPTIONAL
}

SysInfoType15-5 ::=					SEQUENCE {
	-- Measurement IEs
		ue-positioning-OTDOA-AssistanceData-UEB		UE-Positioning-OTDOA-AssistanceData-UEB,
		v3a0NonCriticalExtensions			SEQUENCE {
			sysInfoType15-5-v3a0ext				SysInfoType15-5-v3a0ext,
		-- Extension mechanism for non- release99 information
			nonCriticalExtensions				SEQUENCE {}		OPTIONAL
		}	OPTIONAL
}

SysInfoType15-5-v3a0ext ::= SEQUENCE {
	sfn-Offset-Validity			SFN-Offset-Validity		OPTIONAL
}

SysInfoType16 ::=					SEQUENCE {
	-- Radio bearer IEs
		preDefinedRadioConfiguration	PreDefRadioConfiguration,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoType17 ::=					SEQUENCE {
	-- Physical channel IEs
		-- If PDSCH/PUSCH is configured for 1.28Mcps TDD, pusch-SysInfoList and
		-- pdsch-SysInfoList should be absent and the info included in the
		-- tdd128SpecificInfo instead.
		-- If PDSCH/PUSCH is configured for 3.84Mcps TDD in R5, HCR-r5-SpecificInfo should also be 
		-- included.
		pusch-SysInfoList				PUSCH-SysInfoList				OPTIONAL,
		pdsch-SysInfoList				PDSCH-SysInfoList				OPTIONAL,
	-- Extension mechanism for non- release99 information
		v4b0NonCriticalExtensions		SEQUENCE {
			sysInfoType17-v4b0ext			SysInfoType17-v4b0ext-IEs,
			v590NonCriticalExtensions	SEQUENCE {
				sysInfoType17-v590ext			SysInfoType17-v590ext-IEs		OPTIONAL,
				v7xyNonCriticalExtensions		SEQUENCE {
					sysInfoType17-v7xyext			SysInfoType17-v7xyext-IEs,
					nonCriticalExtensions			SEQUENCE {}				OPTIONAL
				}							OPTIONAL
			}							OPTIONAL
		}							OPTIONAL
}

SysInfoType17-v4b0ext-IEs ::= SEQUENCE {
	tdd128SpecificInfo				SEQUENCE {
		pusch-SysInfoList				PUSCH-SysInfoList-LCR-r4		OPTIONAL,
		pdsch-SysInfoList				PDSCH-SysInfoList-LCR-r4		OPTIONAL
	}																	OPTIONAL
}

SysInfoType17-v590ext-IEs ::= SEQUENCE {
	hcr-r5-SpecificInfo				SEQUENCE {
		pusch-SysInfoList			PUSCH-SysInfoList-HCR-r5	OPTIONAL,
		pdsch-SysInfoList			PDSCH-SysInfoList-HCR-r5	OPTIONAL
	}															OPTIONAL
}

SysInfoType17-v7xyext-IEs ::=		SEQUENCE {
	pusch-SysInfoList-SFN-VHCR			PUSCH-SysInfoList-SFN-VHCR		OPTIONAL,
	pdsch-SysInfoList-r7				PDSCH-SysInfoList-r7			OPTIONAL
}

SysInfoType18 ::=						SEQUENCE {
		idleModePLMNIdentities			PLMNIdentitiesOfNeighbourCells		OPTIONAL,
		connectedModePLMNIdentities	PLMNIdentitiesOfNeighbourCells		OPTIONAL,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}		OPTIONAL
}

SysInfoTypeSB1 ::=					SEQUENCE {
	-- Other IEs
		sib-ReferenceList				SIB-ReferenceList,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

SysInfoTypeSB2 ::=					SEQUENCE {
	-- Other IEs
		sib-ReferenceList				SIB-ReferenceList,
	-- Extension mechanism for non- release99 information
		nonCriticalExtensions			SEQUENCE {}							OPTIONAL
}

TDD-UMTS-Frequency-List ::= 			SEQUENCE (SIZE (1..maxNumTDDFreqs)) OF
											FrequencyInfoTDD

-- ***************************************************
--
--     ANSI-41 INFORMATION ELEMENTS (10.3.9)
--
-- ***************************************************

ANSI-41-GlobalServiceRedirectInfo ::= 	ANSI-41-NAS-Parameter
ANSI-41-PrivateNeighbourListInfo ::= 	ANSI-41-NAS-Parameter
ANSI-41-RAND-Information ::=			ANSI-41-NAS-Parameter
ANSI-41-UserZoneID-Information ::= 		ANSI-41-NAS-Parameter
ANSI-41-NAS-Parameter ::=				BIT STRING (SIZE (1..2048))

Min-P-REV ::=							BIT STRING (SIZE (8))

NAS-SystemInformationANSI-41 ::=		ANSI-41-NAS-Parameter
NID ::=									BIT STRING (SIZE (16))

P-REV ::=								BIT STRING (SIZE (8))

SID ::=									BIT STRING (SIZE (15))

-- ***************************************************
--
--     MBMS INFORMATION ELEMENTS (10.3.9a)
--
-- ***************************************************

MBMS-AccessProbabilityFactor ::=	ENUMERATED {
										apf0, apf32, apf64, apf96, apf128, apf160, apf192,
										apf224, apf256, apf288, apf320, apf352, apf384, apf416,
										apf448, apf480, apf512, apf544, apf576, apf608, apf640,
										apf672, apf704, apf736, apf768, apf800, apf832, apf864,
										apf896, apf928, apf960, apf1000 }

MBMS-CellGroupIdentity-r6 ::=		BIT STRING (SIZE (12))

MBMS-CommonCCTrChIdentity ::=		INTEGER (1..32)

MBMS-CommonPhyChIdentity ::=		INTEGER (1..32)

MBMS-CommonRBIdentity ::=			INTEGER (1..32)

MBMS-CommonRBInformation-r6 ::=		SEQUENCE {
	commonRBIdentity					MBMS-CommonRBIdentity,
	pdcp-Info							PDCP-Info-r4,
	rlc-Info							RLC-Info-MTCH-r6
}

MBMS-CommonRBInformationList-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonRB)) OF
										MBMS-CommonRBInformation-r6

MBMS-CommonTrChIdentity ::=			INTEGER (1..32)

MBMS-ConnectedModeCountingScope ::= SEQUENCE {
	countingForUraPCH								BOOLEAN,
	countingForCellPCH								BOOLEAN,
	countingForCellFACH								BOOLEAN
}

MBMS-CurrentCell-SCCPCH-r6 ::=		SEQUENCE {
	sccpchIdentity						MBMS-SCCPCHIdentity					OPTIONAL,
	secondaryCCPCH-Info					MBMS-CommonPhyChIdentity,
	softComb-TimingOffset				MBMS-SoftComb-TimingOffset			OPTIONAL,
	-- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified
	-- in 14.10.1 applies
	transpCh-InfoCommonForAllTrCh		MBMS-CommonCCTrChIdentity			OPTIONAL,
	transpCHInformation					MBMS-TrCHInformation-CurrList
}

MBMS-CurrentCell-SCCPCHList-r6 ::=	SEQUENCE (SIZE (1..maxSCCPCH)) OF
										MBMS-CurrentCell-SCCPCH-r6

MBMS-FACHCarryingMTCH-List ::=		SEQUENCE (SIZE (1..maxFACHPCH)) OF
											TransportFormatSet

MBMS-JoinedInformation-r6 ::=		SEQUENCE {
	p-TMSI								P-TMSI-GSM-MAP						OPTIONAL
}

MBMS-L1CombiningSchedule-32 ::=		SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..7)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..7),
		periodDuration						INTEGER (1..8)
	}
}

MBMS-L1CombiningSchedule-64 ::=		SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..15)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..15),
		periodDuration						INTEGER (1..16)
	}
}

MBMS-L1CombiningSchedule-128 ::=	SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..31)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..31),
		periodDuration						INTEGER (1..32)
	}
}

MBMS-L1CombiningSchedule-256 ::=	SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..63)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..63),
		periodDuration						INTEGER (1..64)
	}
}

MBMS-L1CombiningSchedule-512 ::=	SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..127)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..127),
		periodDuration						INTEGER (1..128)
	}
}

MBMS-L1CombiningSchedule-1024 ::=	SEQUENCE {
	-- Actual L1 combining schedule values (offset, start, duration) = IE value * 4
	cycleOffset							INTEGER (0..255)						OPTIONAL,
	mtch-L1CombiningPeriodList			SEQUENCE (SIZE (1..maxMBMS-L1CP)) OF SEQUENCE {
		periodStart							INTEGER (0..255),
		periodDuration						INTEGER (1..256)
	}
}

MBMS-L1CombiningSchedule ::=		CHOICE {
	cycleLength-32						MBMS-L1CombiningSchedule-32,
	cycleLength-64						MBMS-L1CombiningSchedule-64,
	cycleLength-128						MBMS-L1CombiningSchedule-128,
	cycleLength-256						MBMS-L1CombiningSchedule-256,
	cycleLength-512						MBMS-L1CombiningSchedule-512,
	cycleLength-1024					MBMS-L1CombiningSchedule-1024
}

MBMS-L1CombiningTransmTimeDiff ::=	INTEGER (0..3)

MBMS-L23Configuration ::=			CHOICE {
	sameAsCurrent						SEQUENCE {
		currentCell-SCCPCH					MBMS-SCCPCHIdentity,
		msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6		OPTIONAL
	},
	different							SEQUENCE {
		-- If the IE transpCh-InfoCommonForAllTrCh is absent, the default TFCS as specified
		-- in 14.10.1 applies
		transpCh-InfoCommonForAllTrCh		MBMS-CommonCCTrChIdentity			OPTIONAL,
		transpCHInformation					MBMS-TrCHInformation-NeighbList
	}
}

MBMS-LogicalChIdentity ::=			INTEGER (1..15)

MBMS-MCCH-ConfigurationInfo-r6 ::=	SEQUENCE {
	accessInfoPeriodCoefficient			INTEGER (0..3),
	repetitionPeriodCoefficient			INTEGER (0..3),
	modificationPeriodCoefficient		INTEGER (7..10),
	rlc-Info							RLC-Info-MCCH-r6,
	tctf-Presence						MBMS-TCTF-Presence					OPTIONAL
}

MBMS-MICHConfigurationInfo-r6 ::=	SEQUENCE {
	michPowerOffset						MBMS-MICHPowerOffset,
	mode								CHOICE {
		fdd									SEQUENCE {
			channelisationCode256				ChannelisationCode256,
			ni-CountPerFrame					MBMS-NI-CountPerFrame,
			sttd-Indicator						BOOLEAN
		},
		tdd384								SEQUENCE {
			timeslot							TimeslotNumber,
			midambleShiftAndBurstType			MidambleShiftAndBurstType,
			channelisationCode					DL-TS-ChannelisationCode,
			repetitionPeriodLengthOffset		RepPerLengthOffset-MICH		OPTIONAL,
			mbmsNotificationIndLength			MBMS-MICHNotificationIndLength	DEFAULT mn4
		},
		tdd128								SEQUENCE {
			timeslot							TimeslotNumber-LCR-r4,
			midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
			channelisationCodeList				SEQUENCE (SIZE (1..2)) OF
													DL-TS-ChannelisationCode,
			repetitionPeriodLengthOffset		RepPerLengthOffset-MICH		OPTIONAL,
			mbmsNotificationIndLength			MBMS-MICHNotificationIndLength	DEFAULT mn4
		}
	}
}

MBMS-MICHConfigurationInfo-r7 ::=	SEQUENCE {
	michPowerOffset						MBMS-MICHPowerOffset,
	mode								CHOICE {
		fdd									SEQUENCE {
			channelisationCode256				ChannelisationCode256,
			ni-CountPerFrame					MBMS-NI-CountPerFrame,
			sttd-Indicator						BOOLEAN
		},
		tdd384								SEQUENCE {
			timeslot							TimeslotNumber,
			midambleShiftAndBurstType			MidambleShiftAndBurstType,
			channelisationCode					DL-TS-ChannelisationCode,
			repetitionPeriodLengthOffset		RepPerLengthOffset-MICH		OPTIONAL,
			mbmsNotificationIndLength			MBMS-MICHNotificationIndLength	DEFAULT mn4
		},
		tdd768								SEQUENCE {
			timeslot							TimeslotNumber,
			midambleShiftAndBurstType			MidambleShiftAndBurstType-VHCR,
			channelisationCode					DL-TS-ChannelisationCode,
			repetitionPeriodLengthOffset		RepPerLengthOffset-MICH		OPTIONAL,
			mbmsNotificationIndLength			MBMS-MICHNotificationIndLength	DEFAULT mn4
		},
		tdd128								SEQUENCE {
			timeslot							TimeslotNumber-LCR-r4,
			midambleShiftAndBurstType			MidambleShiftAndBurstType-LCR-r4,
			channelisationCodeList				SEQUENCE (SIZE (1..2)) OF
													DL-TS-ChannelisationCode,
			repetitionPeriodLengthOffset		RepPerLengthOffset-MICH		OPTIONAL,
			mbmsNotificationIndLength			MBMS-MICHNotificationIndLength	DEFAULT mn4
		}
	}
}

MBMS-MICHNotificationIndLength ::=	ENUMERATED { mn4, mn8, mn16 }

MBMS-MICHPowerOffset ::=			INTEGER (-10..5)

MBMS-ModifedService-r6 ::=			SEQUENCE {
	mbms-TransmissionIdentity			MBMS-TransmissionIdentity,
	mbms-RequiredUEAction				MBMS-RequiredUEAction-Mod,
	mbms-PreferredFrequency				CHOICE {
		mcch								MBMS-PFLIndex,
		dcch								MBMS-PFLInfo
	}		OPTIONAL,
	mbms-DispersionIndicator			ENUMERATED { true }					OPTIONAL,
	continueMCCHReading					BOOLEAN
}

MBMS-ModifedServiceList-r6 ::=		SEQUENCE (SIZE (1..maxMBMSservModif)) OF
										MBMS-ModifedService-r6

MBMS-MSCH-ConfigurationInfo-r6 ::=	SEQUENCE {
	mschShedulingInfo					MBMS-MSCHSchedulingInfo				OPTIONAL,
	rlc-Info							RLC-Info-MSCH-r6					OPTIONAL,
	tctf-Presence						MBMS-TCTF-Presence					OPTIONAL
}

MBMS-MSCHSchedulingInfo ::=			CHOICE {
	schedulingPeriod-32-Offset			INTEGER (0..31),
	schedulingPeriod-64-Offset			INTEGER (0..63),
	schedulingPeriod-128-Offset			INTEGER (0..127),
	schedulingPeriod-256-Offset			INTEGER (0..255),
	schedulingPeriod-512-Offset			INTEGER (0..511),
	schedulingPeriod-1024-Offset		INTEGER (0..1023)
}

MBMS-NeighbouringCellSCCPCH-r6 ::=	SEQUENCE {
	secondaryCCPCH-Info					MBMS-CommonPhyChIdentity,
	secondaryCCPCHPwrOffsetDiff			MBMS-SCCPCHPwrOffsetDiff			OPTIONAL,
	layer1Combining						CHOICE {
		fdd									SEQUENCE {
			softComb-TimingOffset				MBMS-SoftComb-TimingOffset,
			mbms-L1CombiningTransmTimeDiff		MBMS-L1CombiningTransmTimeDiff,
			mbms-L1CombiningSchedule			MBMS-L1CombiningSchedule	OPTIONAL
		},
		tdd									NULL
	}		OPTIONAL,
	mbms-L23Configuration				MBMS-L23Configuration
}

MBMS-NeighbouringCellSCCPCHList-r6 ::= SEQUENCE (SIZE (1..maxSCCPCH)) OF
										MBMS-NeighbouringCellSCCPCH-r6

MBMS-NI-CountPerFrame ::=			ENUMERATED { ni18, ni36, ni72, ni144 }

MBMS-NumberOfNeighbourCells-r6 ::=		INTEGER (0..32)

MBMS-PFLIndex ::=					INTEGER (1..maxMBMS-Freq)

MBMS-PFLInfo ::=					FrequencyInfo

MBMS-PhyChInformation-r6 ::=		SEQUENCE {
	mbms-CommonPhyChIdentity			MBMS-CommonPhyChIdentity,
	secondaryCCPCHInfo-MBMS				SecondaryCCPCHInfo-MBMS-r6
}

MBMS-PhyChInformationList-r6 ::=	SEQUENCE (SIZE (1..maxMBMS-CommonPhyCh)) OF
										MBMS-PhyChInformation-r6

MBMS-PL-ServiceRestrictInfo-r6 ::=	ENUMERATED { true }

MBMS-PreferredFreqRequest-r6 ::=	SEQUENCE {
	preferredFreqRequest				FrequencyInfo
}

MBMS-PreferredFrequencyInfo-r6 ::=	SEQUENCE {
	mbmsPreferredFrequency				INTEGER (1..maxMBMS-Freq)			OPTIONAL,
	layerConvergenceInformation			CHOICE {
		mbms-Qoffset						MBMS-Qoffset,
		mbms-HCSoffset						INTEGER (0..7)
	},
	mbms-PL-ServiceRestrictInfo			MBMS-PL-ServiceRestrictInfo-r6		OPTIONAL
}

MBMS-PreferredFrequencyList-r6 ::=	SEQUENCE (SIZE (1..maxMBMS-Freq)) OF
										MBMS-PreferredFrequencyInfo-r6

MBMS-PTMActivationTime-r6 ::=		INTEGER (0..2047)

MBMS-PTM-RBInformation-C ::=		SEQUENCE {
	rbInformation						MBMS-CommonRBIdentity,
	shortTransmissionID					MBMS-ShortTransmissionID,
	logicalChIdentity					MBMS-LogicalChIdentity
}

MBMS-PTM-RBInformation-CList ::=	SEQUENCE (SIZE (1..maxRBperTrCh)) OF
										MBMS-PTM-RBInformation-C

MBMS-PTM-RBInformation-N ::=		SEQUENCE {
	shortTransmissionID					MBMS-ShortTransmissionID,
	logicalChIdentity					MBMS-LogicalChIdentity,
	layer1-CombiningStatus				BOOLEAN}

MBMS-PTM-RBInformation-NList ::=	SEQUENCE (SIZE (1..maxRBperTrCh)) OF
										MBMS-PTM-RBInformation-N

MBMS-Qoffset ::=					ENUMERATED { q4, q8, q12, q16, q20, q30, q40, qInfinity }

MBMS-RequiredUEAction-Mod ::=		ENUMERATED {
										none,
										acquireCountingInfo,
										acquireCountingInfoPTM-RBsUnmodified,
										acquirePTM-RBInfo,
										requestPTPRB,
										releasePTM-RB }

MBMS-RequiredUEAction-UMod ::=		ENUMERATED {
										none,
										acquirePTM-RBInfo,
										requestPTPRB }

MBMS-SCCPCHIdentity ::=				INTEGER (1..maxSCCPCH)

MBMS-SCCPCHPwrOffsetDiff ::=		ENUMERATED { mcpo-minus6, mcpo-minus3, mcpo-plus3, mcpo-plus6 }

MBMS-ServiceAccessInfo-r6 ::=		SEQUENCE {
	shortTransmissionID					MBMS-ShortTransmissionID,
	accessprobabilityFactor-Idle		MBMS-AccessProbabilityFactor,
	accessprobabilityFactor-UraPCH		MBMS-AccessProbabilityFactor		OPTIONAL,
	mbms-ConnectedModeCountingScope		MBMS-ConnectedModeCountingScope
}

MBMS-ServiceAccessInfoList-r6 ::=	SEQUENCE (SIZE (1..maxMBMSservCount)) OF
										MBMS-ServiceAccessInfo-r6

MBMS-ServiceIdentity-r6 ::=			SEQUENCE {
	serviceIdentity						OCTET STRING (SIZE (3)),
	plmn-Identity						CHOICE {
		-- The 'sameAsMIB-PLMN-Id' choice refers to the 'PLMN Identity' (R99) in MIB.
		sameAsMIB-PLMN-Id					NULL,
		other								CHOICE {
			-- The 'sameAsMIB-MultiPLMN-Id' choice refers to one of the (1..5) PLMN Identities
			-- provided in the 'Multiple PLMN List' (REL-6) in MIB.
			sameAsMIB-MultiPLMN-Id				INTEGER (1..5),
			explicitPLMN-Id						PLMN-Identity
		}
	}
}

MBMS-ServiceSchedulingInfo-r6 ::=	SEQUENCE {
	mbms-TransmissionIdentity			MBMS-TransmissionIdentity,
	mbms-ServiceTransmInfoList			MBMS-ServiceTransmInfoList			OPTIONAL,
	nextSchedulingperiod				INTEGER (0..31)
}

MBMS-ServiceSchedulingInfoList-r6 ::= SEQUENCE (SIZE (1..maxMBMSservSched)) OF
										MBMS-ServiceSchedulingInfo-r6

MBMS-ServiceTransmInfo ::=			SEQUENCE {
	-- Actual values (start, duration) = IE values * 4
	start								INTEGER (0..255),
	duration							INTEGER (1..256)
}

MBMS-ServiceTransmInfoList ::=		SEQUENCE (SIZE (1..maxMBMSTransmis)) OF
										MBMS-ServiceTransmInfo

MBMS-SessionIdentity ::=			OCTET STRING (SIZE (1))

MBMS-ShortTransmissionID ::=		INTEGER (1..maxMBMSservUnmodif)

MBMS-SIBType5-SCCPCH-r6 ::=			SEQUENCE {
	sccpchIdentity						MBMS-SCCPCHIdentity,
	transpCHInformation					MBMS-TrCHInformation-SIB5List
}

MBMS-SIBType5-SCCPCHList-r6 ::=		SEQUENCE (SIZE (1..maxSCCPCH)) OF
										MBMS-SIBType5-SCCPCH-r6

MBMS-SoftComb-TimingOffset ::=		ENUMERATED { ms0, ms10, ms20, ms40 }

MBMS-TCTF-Presence ::=				ENUMERATED { false }

MBMS-TimersAndCounters-r6 ::=		SEQUENCE {
	t-318								T-318								DEFAULT ms1000
}

MBMS-TransmissionIdentity ::=		SEQUENCE {
	mbms-ServiceIdentity				MBMS-ServiceIdentity-r6,
	mbms-SessionIdentity				MBMS-SessionIdentity				OPTIONAL
}

MBMS-TranspChInfoForCCTrCh-r6 ::=	SEQUENCE {
	commonCCTrChIdentity				MBMS-CommonCCTrChIdentity,
	transportFormatCombinationSet		TFCS
}


MBMS-TranspChInfoForEachCCTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonCCTrCh)) OF
										MBMS-TranspChInfoForCCTrCh-r6

MBMS-TranspChInfoForEachTrCh-r6 ::= SEQUENCE (SIZE (1..maxMBMS-CommonTrCh)) OF
										MBMS-TranspChInfoForTrCh-r6

MBMS-TranspChInfoForTrCh-r6 ::=		SEQUENCE {
	commonTrChIdentity					MBMS-CommonTrChIdentity,
	transportFormatSet					TransportFormatSet
}

MBMS-TrCHInformation-Curr ::=		SEQUENCE {
	transpCh-Info						MBMS-CommonTrChIdentity,
	rbInformation						MBMS-PTM-RBInformation-CList		OPTIONAL,
	msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6		OPTIONAL
}

MBMS-TrCHInformation-CurrList ::=	SEQUENCE (SIZE (1..maxFACHPCH)) OF
										MBMS-TrCHInformation-Curr

MBMS-TrCHInformation-Neighb ::=		SEQUENCE {
	transpCh-Info						MBMS-CommonTrChIdentity,
	transpCh-CombiningStatus			BOOLEAN,
	rbInformation						MBMS-PTM-RBInformation-NList		OPTIONAL,
	msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6		OPTIONAL
}

MBMS-TrCHInformation-NeighbList ::=	SEQUENCE (SIZE (1..maxFACHPCH)) OF
										MBMS-TrCHInformation-Neighb

MBMS-TrCHInformation-SIB5 ::=		SEQUENCE {
	transpCh-Identity					INTEGER (1..maxFACHPCH),
	rbInformation						MBMS-PTM-RBInformation-CList		OPTIONAL,
	msch-ConfigurationInfo				MBMS-MSCH-ConfigurationInfo-r6		OPTIONAL
}

MBMS-TrCHInformation-SIB5List ::=	SEQUENCE (SIZE (1..maxFACHPCH)) OF
										MBMS-TrCHInformation-SIB5

MBMS-UnmodifiedService-r6 ::=		SEQUENCE {
	mbms-TransmissionIdentity			MBMS-TransmissionIdentity,
	mbms-RequiredUEAction				MBMS-RequiredUEAction-UMod,
	mbms-PreferredFrequency				MBMS-PFLIndex						OPTIONAL
}

MBMS-UnmodifiedServiceList-r6 ::=	SEQUENCE (SIZE (1..maxMBMSservUnmodif)) OF
										MBMS-UnmodifiedService-r6

END

Constant-definitions DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

hiPDSCHidentities			INTEGER ::= 64
hiPUSCHidentities			INTEGER ::= 64
hiRM						INTEGER ::= 256
maxAC						INTEGER ::= 16
maxAdditionalMeas 			INTEGER ::= 4
maxASC						INTEGER ::= 8
maxASCmap					INTEGER ::= 7
maxASCpersist				INTEGER ::= 6
maxCCTrCH					INTEGER ::= 8
maxCellMeas 				INTEGER ::= 32
maxCellMeas-1				INTEGER ::= 31
maxCNdomains				INTEGER ::= 4
maxCPCHsets					INTEGER ::= 16
maxDPCH-DLchan				INTEGER ::= 8
maxDPDCH-UL					INTEGER ::= 6
maxDRACclasses				INTEGER ::= 8
maxE-DCHMACdFlow			INTEGER ::= 8
maxE-DCHMACdFlow-1			INTEGER ::= 7
maxEDCHRL					INTEGER ::= 4
maxFACHPCH					INTEGER ::= 8
maxFreq						INTEGER ::= 8
maxFreqBandsFDD				INTEGER ::= 8
maxFreqBandsFDD-ext			INTEGER ::= 15	-- maxFreqBandsFDD-ext ::= 22 – (maxFreqBandsFDD – 1)
maxFreqBandsTDD				INTEGER ::= 4
maxFreqBandsGSM				INTEGER ::= 16
maxGERAN-SI					INTEGER ::= 8
maxGSMTargetCells			INTEGER ::= 32
maxHProcesses 				INTEGER ::= 8
maxHSDSCHTBIndex			INTEGER ::= 64
maxHSDSCHTBIndex-tdd384		INTEGER ::= 512
maxHSSCCHs					INTEGER ::= 4
maxInterSysMessages 		INTEGER ::= 4
maxLoCHperRLC				INTEGER ::= 2
maxMAC-d-PDUsizes			INTEGER ::= 8
maxMBMS-CommonCCTrCh		INTEGER ::= 32
maxMBMS-CommonPhyCh			INTEGER ::= 32
maxMBMS-CommonRB			INTEGER ::= 32
maxMBMS-CommonTrCh			INTEGER ::= 32
maxMBMS-Freq				INTEGER ::= 4
maxMBMS-L1CP				INTEGER ::= 4
maxMBMSservCount			INTEGER ::= 8
maxMBMSservModif			INTEGER ::= 32
maxMBMSservSched			INTEGER ::= 16
maxMBMSservUnmodif			INTEGER ::= 64
maxMBMSTransmis				INTEGER ::= 4
maxMeasEvent				INTEGER ::= 8
maxMeasIntervals			INTEGER ::= 3
maxMeasParEvent				INTEGER ::= 2
maxNumCDMA2000Freqs			INTEGER ::=  8
maxNumGSMFreqRanges			INTEGER ::= 32
maxNumFDDFreqs				INTEGER ::=  8
maxNumTDDFreqs				INTEGER ::=  8
maxNoOfMeas					INTEGER ::= 16
maxOtherRAT					INTEGER ::= 15
maxOtherRAT-16				INTEGER ::= 16
maxPage1					INTEGER ::= 8
maxPCPCH-APsig				INTEGER ::= 16
maxPCPCH-APsubCh			INTEGER ::= 12
maxPCPCH-CDsig				INTEGER ::= 16
maxPCPCH-CDsubCh			INTEGER ::= 12
maxPCPCH-SF					INTEGER ::= 7
maxPCPCHs					INTEGER ::= 64
maxPDCPAlgoType				INTEGER ::= 8
maxPDSCH					INTEGER ::= 8
maxPDSCH-TFCIgroups	 		INTEGER ::= 256
maxPRACH					INTEGER ::= 16
maxPRACH-FPACH				INTEGER ::= 8
maxPredefConfig				INTEGER ::= 16
maxPUSCH					INTEGER ::= 8
maxQueueIDs					INTEGER ::= 8
maxRABsetup					INTEGER ::= 16
maxRAT						INTEGER ::= 16
maxRB						INTEGER ::= 32
maxRBallRABs				INTEGER ::= 27
maxRBMuxOptions				INTEGER ::= 8
maxRBperRAB					INTEGER ::= 8
maxRBperTrCh				INTEGER ::= 16
maxReportedGSMCells			INTEGER ::= 8
maxRL						INTEGER ::= 8
maxRL-1						INTEGER ::= 7
maxRLCPDUsizePerLogChan		INTEGER ::= 32
maxRFC3095-CID				INTEGER ::= 16384
maxROHC-PacketSizes-r4		INTEGER ::= 16
maxROHC-Profile-r4			INTEGER ::= 8
maxSat						INTEGER ::= 16
maxSCCPCH					INTEGER ::= 16
maxSIB						INTEGER ::= 32
maxSIB-FACH					INTEGER ::= 8
maxSIBperMsg				INTEGER ::= 16
maxSRBsetup					INTEGER ::= 8
maxSystemCapability			INTEGER ::= 16
maxTF						INTEGER ::= 32
maxTF-CPCH					INTEGER ::= 16
maxTFC						INTEGER ::= 1024
maxTFCsub					INTEGER ::= 1024
maxTFCI-2-Combs	 			INTEGER ::= 512
maxTGPS						INTEGER ::= 6
maxTrCH						INTEGER ::= 32
-- maxTrCHpreconf should be 16 but has been set to 32 for compatibility
maxTrCHpreconf				INTEGER ::= 32
maxTS						INTEGER ::= 14
maxTS-1						INTEGER ::= 13 
maxTS-2						INTEGER ::= 12
maxTS-LCR					INTEGER ::= 6
maxTS-LCR-1					INTEGER ::= 5 
maxURA						INTEGER ::= 8
maxURNTI-Group				INTEGER ::= 8

END

Internode-definitions DEFINITIONS AUTOMATIC TAGS ::=

BEGIN

IMPORTS

	HandoverToUTRANCommand,
	MeasurementReport,
	PhysicalChannelReconfiguration,
	RadioBearerReconfiguration,
	RadioBearerRelease,
	RadioBearerSetup,
	RRCConnectionSetupComplete-r3-add-ext-IEs,
	RRC-FailureInfo,
	TransportChannelReconfiguration,
	UECapabilityInformation-r3-add-ext-IEs
FROM PDU-definitions

-- Core Network IEs :
	CN-DomainIdentity,
	CN-DomainInformationList,
	CN-DomainInformationListFull,
	CN-DRX-CycleLengthCoefficient,
	NAS-SystemInformationGSM-MAP,
-- UTRAN Mobility IEs :
	CellIdentity,
	URA-Identity,
-- User Equipment IEs :
	AccessStratumReleaseIndicator,
	C-RNTI,
	ChipRateCapability,
	DL-CapabilityWithSimultaneousHS-DSCHConfig,
	DL-PhysChCapabilityFDD-v380ext,
	DL-PhysChCapabilityTDD,
	DL-PhysChCapabilityTDD-LCR-r4,
	GSM-Measurements,
	HSDSCH-physical-layer-category,
	FailureCauseWithProtErr,
	MaxHcContextSpace,
	MaximumAM-EntityNumberRLC-Cap,
	MaximumRLC-WindowSize,
	MaxNoPhysChBitsReceived,
	MaxNoDPDCH-BitsTransmitted,
	MaxPhysChPerFrame,
	MaxPhysChPerSubFrame-r4,
	MaxPhysChPerTS,
	MaxROHC-ContextSessions-r4,
	MaxTS-PerFrame,
	MaxTS-PerSubFrame-r4,
	MinimumSF-DL,
	MultiModeCapability,
	MultiRAT-Capability,
	NetworkAssistedGPS-Supported,
	PhysicalChannelCapability-edch-r6,
	PhysicalChannelCapability-r7,
	RadioFrequencyBandTDDList,
	RF-Capability-r7,
	RLC-Capability,
	RRC-MessageSequenceNumber,
	SecurityCapability,
	SimultaneousSCCPCH-DPCH-Reception,
	STARTList,
	STARTSingle,
	START-Value,
	SupportOfDedicatedPilotsForChEstimation,
	TransportChannelCapability,
	TxRxFrequencySeparation,
	U-RNTI,
	UE-CapabilityContainer-IEs,
	UE-MultiModeRAT-Capability,
	UE-PowerClassExt,
	UE-RadioAccessCapabBandFDDList,
	UE-RadioAccessCapabBandFDDList2,
	UE-RadioAccessCapabBandFDDList-ext,
	UE-RadioAccessCapability,
	UE-RadioAccessCapability-v370ext,
	UE-RadioAccessCapability-v380ext,
	UE-RadioAccessCapability-v3a0ext,
	UE-RadioAccessCapability-v3g0ext,
	UE-RadioAccessCapability-v4b0ext,
	UE-RadioAccessCapability-v590ext,
	UE-RadioAccessCapability-v5c0ext,
	UE-RadioAccessCapability-v7xyext,
	UL-PhysChCapabilityFDD,
	UL-PhysChCapabilityFDD-r6,
	UL-PhysChCapabilityTDD,
	UL-PhysChCapabilityTDD-LCR-r4,
-- Radio Bearer IEs :
	PredefinedConfigStatusList,
	PredefinedConfigValueTag,
	RAB-InformationSetupList,
	RAB-InformationSetupList-r4,
	RAB-InformationSetupList-r5,
	RAB-InformationSetupList-r6-ext,
	RAB-InformationSetupList-r6,
	RB-Identity,
	SRB-InformationSetupList,
	SRB-InformationSetupList-r5,
	SRB-InformationSetupList-r6,
-- Transport Channel IEs :
	CPCH-SetID,
	DL-CommonTransChInfo,
	DL-CommonTransChInfo-r4,
	DL-AddReconfTransChInfoList,
	DL-AddReconfTransChInfoList-r4,
	DL-AddReconfTransChInfoList-r5,
	DRAC-StaticInformationList,
	UL-CommonTransChInfo,
	UL-CommonTransChInfo-r4,
	UL-AddReconfTransChInfoList,
	UL-AddReconfTransChInfoList-r6,
-- Physical Channel IEs :
	PrimaryCPICH-Info,
	TPC-CombinationIndex,
	ScramblingCodeChange,
	TGCFN,
	TGPSI,
	TGPS-ConfigurationParams,
-- Measurement IEs :
	Event1j-r6,
	Hysteresis,
	Inter-FreqEventCriteriaList-v590ext,
	Intra-FreqEventCriteriaList-v590ext,
	IntraFreqEvent-1d-r5,
	IntraFreqReportingCriteria-1b-r5,
	InterRATCellInfoIndication,
	MeasuredResultsOnRACHinterFreq,
	MeasurementIdentity,
	MeasurementReportingMode,
	MeasurementType,
	MeasurementType-r4,
	MeasurementType-r6,
	AdditionalMeasurementID-List,
	PositionEstimate,
	ReportingCellStatus,
	TimeToTrigger,
-- MBMS IEs :
	MBMS-JoinedInformation-r6,
-- Other IEs :
	GERANIu-RadioAccessCapability,
	GSM-MS-RadioAccessCapability,
	InterRAT-UE-RadioAccessCapabilityList,
	InterRAT-UE-RadioAccessCapability-v590ext,
	InterRAT-UE-RadioAccessCapability-v690ext,
	UESpecificBehaviourInformation1idle,
	UESpecificBehaviourInformation1interRAT

FROM InformationElements

	maxCNdomains,
	maxNoOfMeas,

	maxRB,
	maxRBallRABs,
	maxRFC3095-CID,
	maxSRBsetup,
	maxRL,
	maxTGPS
FROM Constant-definitions
;

-- Part 1: Class definitions similar to what has been defined in 11.1 for RRC messages
-- Information that is tranferred in the same direction and across the same path is grouped

-- ***************************************************
--
-- RRC information, to target RNC
--
-- ***************************************************
-- RRC Information to target RNC sent either from source RNC or from another RAT

ToTargetRNC-Container ::= CHOICE {
	interRATHandoverInfo				InterRATHandoverInfoWithInterRATCapabilities-r3,
	srncRelocation						SRNC-RelocationInfo-r3,
	rfc3095-ContextInfo					RFC3095-ContextInfo-r5,
	extension							NULL
}

-- ***************************************************
--
-- RRC information, target RNC to source RNC
--
-- ***************************************************


TargetRNC-ToSourceRNC-Container ::= CHOICE {
	radioBearerSetup					RadioBearerSetup,
	radioBearerReconfiguration			RadioBearerReconfiguration,
	radioBearerRelease					RadioBearerRelease,
	transportChannelReconfiguration		TransportChannelReconfiguration,
	physicalChannelReconfiguration		PhysicalChannelReconfiguration,
	rrc-FailureInfo						RRC-FailureInfo,
	-- IE dl-DCCHmessage consists of an octet string that includes the IE DL-DCCH-Message
	dL-DCCHmessage						OCTET STRING,
	extension							NULL
}

-- Part 2: Container definitions, similar to the PDU definitions in 11.2 for RRC messages
-- In alphabetical order


-- ***************************************************
--
-- Handover to UTRAN information
--
-- ***************************************************

InterRATHandoverInfoWithInterRATCapabilities-r3 ::= CHOICE {
	r3								SEQUENCE {
		-- IE InterRATHandoverInfoWithInterRATCapabilities-r3-IEs also 
		-- includes non critical extensions
		interRATHandoverInfo-r3			InterRATHandoverInfoWithInterRATCapabilities-r3-IEs,
		v390NonCriticalExtensions		SEQUENCE {
			interRATHandoverInfoWithInterRATCapabilities-v390ext
										InterRATHandoverInfoWithInterRATCapabilities-v390ext-IEs,
			-- Reserved for future non critical extension
			v690NonCriticalExtensions		SEQUENCE {
				interRATHandoverInfoWithInterRATCapabilities-v690ext
										InterRATHandoverInfoWithInterRATCapabilities-v690ext-IEs,
				nonCriticalExtensions			SEQUENCE {}	OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	criticalExtensions				SEQUENCE {}
}

InterRATHandoverInfoWithInterRATCapabilities-r3-IEs ::=		SEQUENCE {
		-- The order of the IEs may not reflect the tabular format
		--  but has been chosen to simplify the handling of the information in the BSC
	--	Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList	OPTIONAL,
		-- interRATHandoverInfo, Octet string is used to obtain 8 bit length field prior to 
		-- actual information.  This makes it possible for BSS to transparently handle information
		-- received via GSM air interface even when it includes non critical extensions.
		-- The octet string shall include the InterRATHandoverInfo information
		-- The BSS can re-use the 44.018 length field received from the MS
		interRATHandoverInfo			OCTET STRING (SIZE (0..255))
}

InterRATHandoverInfoWithInterRATCapabilities-v390ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		failureCauseWithProtErr				FailureCauseWithProtErr					OPTIONAL
}

InterRATHandoverInfoWithInterRATCapabilities-v690ext-IEs ::= SEQUENCE {
	-- Other IEs
		ue-RATSpecificCapability-v690ext	InterRAT-UE-RadioAccessCapability-v690ext	OPTIONAL
}

-- ***************************************************
--
-- RFC3095 context, source RNC to target RNC
--
-- ***************************************************

RFC3095-ContextInfo-r5 ::= CHOICE {
	r5								SEQUENCE {
		rFC3095-ContextInfoList-r5		RFC3095-ContextInfoList-r5,
		-- Reserved for future non critical extension
		nonCriticalExtensions			SEQUENCE {}	OPTIONAL
	},
	criticalExtensions				SEQUENCE {}
}

RFC3095-ContextInfoList-r5 ::=		SEQUENCE (SIZE (1..maxRBallRABs)) OF
										RFC3095-ContextInfo


-- ***************************************************
--
-- SRNC Relocation information
--
-- ***************************************************

SRNC-RelocationInfo-r3 ::= CHOICE {
	r3								SEQUENCE {
		sRNC-RelocationInfo-r3			SRNC-RelocationInfo-r3-IEs,
		v380NonCriticalExtensions			SEQUENCE {
			sRNC-RelocationInfo-v380ext	SRNC-RelocationInfo-v380ext-IEs,
			-- Reserved for future non critical extension
			v390NonCriticalExtensions			SEQUENCE {
				sRNC-RelocationInfo-v390ext			SRNC-RelocationInfo-v390ext-IEs,
				v3a0NonCriticalExtensions			SEQUENCE {
					sRNC-RelocationInfo-v3a0ext			SRNC-RelocationInfo-v3a0ext-IEs,
					v3b0NonCriticalExtensions			SEQUENCE {
						sRNC-RelocationInfo-v3b0ext			SRNC-RelocationInfo-v3b0ext-IEs,
						v3c0NonCriticalExtensions			SEQUENCE {
							sRNC-RelocationInfo-v3c0ext			SRNC-RelocationInfo-v3c0ext-IEs,
							laterNonCriticalExtensions			SEQUENCE {
								sRNC-RelocationInfo-v3d0ext			SRNC-RelocationInfo-v3d0ext-IEs,
								-- Container for additional R99 extensions
								sRNC-RelocationInfo-r3-add-ext		BIT STRING
												(CONTAINING	SRNC-RelocationInfo-v3h0ext-IEs)		OPTIONAL,
								v3g0NonCriticalExtensions			SEQUENCE {
									sRNC-RelocationInfo-v3g0ext			SRNC-RelocationInfo-v3g0ext-IEs,
									v4b0NonCriticalExtensions			SEQUENCE {
										sRNC-RelocationInfo-v4b0ext			SRNC-RelocationInfo-v4b0ext-IEs,
										v590NonCriticalExtensions			SEQUENCE {
											sRNC-RelocationInfo-v590ext
																			SRNC-RelocationInfo-v590ext-IEs,
											v5a0NonCriticalExtensions			SEQUENCE {
												sRNC-RelocationInfo-v5a0ext
																			SRNC-RelocationInfo-v5a0ext-IEs,
												v5b0NonCriticalExtensions			SEQUENCE {
													sRNC-RelocationInfo-v5b0ext
																			SRNC-RelocationInfo-v5b0ext-IEs,
													v5c0NonCriticalExtensions			SEQUENCE {
														sRNC-RelocationInfo-v5c0ext
																			SRNC-RelocationInfo-v5c0ext-IEs,
														v690NonCriticalExtensions		SEQUENCE {
															sRNC-RelocationInfo-v690ext
																			SRNC-RelocationInfo-v690ext-IEs,
															v7xyNonCriticalExtensions SEQUENCE {
																sRNC-RelocationInfo-v7xyext
																			SRNC-RelocationInfo-v7xyext-IEs,
																-- Reserved for future non critical extension
																nonCriticalExtensions	SEQUENCE {}	OPTIONAL
															}		OPTIONAL
														}		OPTIONAL
													}		OPTIONAL
												}		OPTIONAL
											}		OPTIONAL
										}		OPTIONAL
									}		OPTIONAL
								}		OPTIONAL
							}		OPTIONAL
						}		OPTIONAL
					}		OPTIONAL
				}		OPTIONAL
			}		OPTIONAL
		}		OPTIONAL
	},
	later-than-r3					CHOICE {
		r4								SEQUENCE {
			sRNC-RelocationInfo-r4			SRNC-RelocationInfo-r4-IEs,
			v4d0NonCriticalExtensions		SEQUENCE {
				sRNC-RelocationInfo-v4d0ext		SRNC-RelocationInfo-v4d0ext-IEs,
				-- Container for adding non critical extensions after freezing REL-5
				sRNC-RelocationInfo-r4-add-ext		BIT STRING		OPTIONAL,
				v590NonCriticalExtensions			SEQUENCE {
					sRNC-RelocationInfo-v590ext			SRNC-RelocationInfo-v590ext-IEs,
					v5a0NonCriticalExtensions			SEQUENCE {
						sRNC-RelocationInfo-v5a0ext			SRNC-RelocationInfo-v5a0ext-IEs,
						v5b0NonCriticalExtensions			SEQUENCE {
							sRNC-RelocationInfo-v5b0ext			SRNC-RelocationInfo-v5b0ext-IEs,
							v5c0NonCriticalExtensions			SEQUENCE {
								sRNC-RelocationInfo-v5c0ext			SRNC-RelocationInfo-v5c0ext-IEs,
								v690NonCriticalExtensions			SEQUENCE {
									sRNC-RelocationInfo-v690ext		SRNC-RelocationInfo-v690ext-IEs,
									v7xyNonCriticalExtensions			SEQUENCE {
										sRNC-RelocationInfo-v7xyext
																	SRNC-RelocationInfo-v7xyext-IEs,
											nonCriticalExtensions			SEQUENCE {}	OPTIONAL
									}	OPTIONAL
								}	OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			}	OPTIONAL
		},
		criticalExtensions				CHOICE {
			r5								SEQUENCE {
				sRNC-RelocationInfo-r5			SRNC-RelocationInfo-r5-IEs,
				sRNC-RelocationInfo-r5-add-ext	BIT STRING		OPTIONAL,
				v5a0NonCriticalExtensions		SEQUENCE {
					sRNC-RelocationInfo-v5a0ext		SRNC-RelocationInfo-v5a0ext-IEs,
					v5b0NonCriticalExtensions		SEQUENCE {
						sRNC-RelocationInfo-v5b0ext		SRNC-RelocationInfo-v5b0ext-IEs,
						v5c0NonCriticalExtensions			SEQUENCE {
							sRNC-RelocationInfo-v5c0ext			SRNC-RelocationInfo-v5c0ext-IEs,
							v690NonCriticalExtensions			SEQUENCE {
								sRNC-RelocationInfo-v690ext			SRNC-RelocationInfo-v690ext-IEs,
									v7xyNonCriticalExtensions		SEQUENCE {
										sRNC-RelocationInfo-v7xyext
																	SRNC-RelocationInfo-v7xyext-IEs,
										nonCriticalExtensions			SEQUENCE {}		OPTIONAL
								}	OPTIONAL
							}	OPTIONAL
						}	OPTIONAL
					}	OPTIONAL
				}	OPTIONAL
			},
			criticalExtensions				CHOICE {
				r6								SEQUENCE {
					sRNC-RelocationInfo-r6			SRNC-RelocationInfo-r6-IEs,
					sRNC-RelocationInfo-r6-add-ext	BIT STRING		OPTIONAL,
					v7xyNonCriticalExtensions		SEQUENCE {
						sRNC-RelocationInfo-v7xyext		SRNC-RelocationInfo-v7xyext-IEs,
						nonCriticalExtensions			SEQUENCE {}		OPTIONAL
					}	OPTIONAL
				},
				criticalExtensions					SEQUENCE {}
			}
		}
	}
}

SRNC-RelocationInfo-r3-IEs ::=		SEQUENCE {
	-- Non-RRC IEs
		stateOfRRC						StateOfRRC,
		stateOfRRC-Procedure			StateOfRRC-Procedure,
	-- Ciphering related information IEs
	-- If the extension v380 is included use the extension for the ciphering status per CN domain
		cipheringStatus					CipheringStatus,
		-- If ciphering status is started and the IE latestConfiguredCN-Domain should be included,
		-- the IE cn-DomainIdentity (in SRNC-RelocationInfo-v380ext-IEs) shall be used instead.
		calculationTimeForCiphering		CalculationTimeForCiphering			OPTIONAL,
		-- The order of occurrence in the IE cipheringInfoPerRB-List is the
		-- same as the RBs in SRB-InformationSetupList in RAB-InformationSetupList.
		-- The signalling RBs are supposed to be listed
		-- first. Only UM and AM RBs that are ciphered are listed here
		cipheringInfoPerRB-List			CipheringInfoPerRB-List				OPTIONAL,
		count-C-List					COUNT-C-List						OPTIONAL,
		integrityProtectionStatus		IntegrityProtectionStatus,
		-- In the IE srb-SpecificIntegrityProtInfo, the first information listed corresponds to
      -- signalling radio bearer RB0 and after the order of occurrence is the same as the SRBs in
	 -- SRB-InformationSetupList
		-- The target RNC may ignore the IE srb-SpecificIntegrityProtInfo if the
		-- IE integrityProtectionStatus has the value "not started".
		srb-SpecificIntegrityProtInfo	SRB-SpecificIntegrityProtInfoList,
		implementationSpecificParams	ImplementationSpecificParams		OPTIONAL,
	-- User equipment IEs
		u-RNTI							U-RNTI,
		c-RNTI							C-RNTI								OPTIONAL,
		ue-RadioAccessCapability		UE-RadioAccessCapability,
		ue-Positioning-LastKnownPos		UE-Positioning-LastKnownPos			OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-CommonGSM-MAP-NAS-SysInfo	NAS-SystemInformationGSM-MAP,
		cn-DomainInformationList		CN-DomainInformationList			OPTIONAL,
	-- Measurement IEs
		ongoingMeasRepList				OngoingMeasRepList					OPTIONAL,
	-- Radio bearer IEs
		predefinedConfigStatusList		PredefinedConfigStatusList,
		srb-InformationList				SRB-InformationSetupList,
		rab-InformationList				RAB-InformationSetupList			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo				OPTIONAL,
		ul-TransChInfoList				UL-AddReconfTransChInfoList			OPTIONAL,
		modeSpecificInfo				CHOICE {
			fdd								SEQUENCE {
				-- dummy and dummy2 are not used in this version of the specification, they should
				-- not be sent and if received they should be ignored.
				dummy							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		},
		dl-CommonTransChInfo			DL-CommonTransChInfo				OPTIONAL,
		dl-TransChInfoList				DL-AddReconfTransChInfoList			OPTIONAL,
	-- Measurement report
		measurementReport				MeasurementReport					OPTIONAL
}

SRNC-RelocationInfo-v380ext-IEs ::= SEQUENCE {
	-- Ciphering related information IEs
		-- In the SRNC-RelocationInfo-r3-IEs, the IE 'cn-DomainIdentity' is used to represent the 
		-- IE 'Latest configured CN domain' in the tabular.
		cn-DomainIdentity					CN-DomainIdentity,
		cipheringStatusList					CipheringStatusList
}

SRNC-RelocationInfo-v390ext-IEs ::= SEQUENCE {
		cn-DomainInformationList-v390ext	CN-DomainInformationList-v390ext		OPTIONAL,
		ue-RadioAccessCapability-v370ext	UE-RadioAccessCapability-v370ext		OPTIONAL,
		ue-RadioAccessCapability-v380ext	UE-RadioAccessCapability-v380ext		OPTIONAL,
		dl-PhysChCapabilityFDD-v380ext		DL-PhysChCapabilityFDD-v380ext,
		failureCauseWithProtErr				FailureCauseWithProtErr					OPTIONAL
}

SRNC-RelocationInfo-v3a0ext-IEs ::= SEQUENCE {
		cipheringInfoForSRB1-v3a0ext		CipheringInfoPerRB-List-v3a0ext,
		ue-RadioAccessCapability-v3a0ext	UE-RadioAccessCapability-v3a0ext		OPTIONAL,
		-- cn-domain identity for IE startValueForCiphering-v3a0ext is specified
		-- in subsequent extension (SRNC-RelocationInfo-v3b0ext-IEs)
		startValueForCiphering-v3a0ext		START-Value
}

SRNC-RelocationInfo-v3b0ext-IEs ::= SEQUENCE {
		-- cn-domain identity for IE startValueForCiphering-v3a0ext included in previous extension
		cn-DomainIdentity				CN-DomainIdentity,
		-- the IE startValueForCiphering-v3b0ext contains the start values for each CN Domain. The 
		-- value of start indicated by the IE startValueForCiphering-v3a0ext should be set to the
		-- same value as the start-Value for the corresponding cn-DomainIdentity in the IE 
		-- startValueForCiphering-v3b0ext
		startValueForCiphering-v3b0ext		STARTList2								OPTIONAL
}

SRNC-RelocationInfo-v3c0ext-IEs ::= SEQUENCE {
		-- IE rb-IdentityForHOMessage includes the identity of the RB used by the source SRNC
		-- to send the message contained in the IE “TargetRNC-ToSourceRNC-Container”.
		-- Only included if type is “UE involved”
		rb-IdentityForHOMessage				RB-Identity  		OPTIONAL
}

SRNC-RelocationInfo-v3d0ext-IEs ::= SEQUENCE {
	-- User equipment IEs
		uESpecificBehaviourInformation1idle		UESpecificBehaviourInformation1idle		OPTIONAL,
		uESpecificBehaviourInformation1interRAT		UESpecificBehaviourInformation1interRAT		OPTIONAL
}

SRNC-RelocationInfo-v3g0ext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v3g0ext	UE-RadioAccessCapability-v3g0ext		OPTIONAL
}

SRNC-RelocationInfo-v3h0ext-IEs ::= SEQUENCE {
		tpc-CombinationInfoList			TPC-CombinationInfoList		OPTIONAL,
		nonCriticalExtension				SEQUENCE {}				OPTIONAL
}

SRNC-RelocationInfo-v4d0ext-IEs ::= SEQUENCE {
		tpc-CombinationInfoList		TPC-CombinationInfoList		OPTIONAL
}

TPC-CombinationInfoList ::= SEQUENCE (SIZE (1..maxRL)) OF
		TPC-Combination-Info

STARTList2 ::=						SEQUENCE (SIZE (2..maxCNdomains)) OF
										STARTSingle

SRNC-RelocationInfo-v4b0ext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v4b0ext	UE-RadioAccessCapability-v4b0ext		OPTIONAL
}

SRNC-RelocationInfo-v590ext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v590ext	UE-RadioAccessCapability-v590ext		OPTIONAL,
		ue-RATSpecificCapability-v590ext	InterRAT-UE-RadioAccessCapability-v590ext	OPTIONAL
}

SRNC-RelocationInfo-v5a0ext-IEs ::= SEQUENCE {
		storedCompressedModeInfo		StoredCompressedModeInfo	OPTIONAL
}

SRNC-RelocationInfo-v5b0ext-IEs ::= SEQUENCE {
	interRATCellInfoIndication			InterRATCellInfoIndication			OPTIONAL
}

SRNC-RelocationInfo-v5c0ext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v5c0ext	UE-RadioAccessCapability-v5c0ext		OPTIONAL
}

SRNC-RelocationInfo-v7xyext-IEs ::= SEQUENCE {
		ue-RadioAccessCapability-v7xyext	UE-RadioAccessCapability-v7xyext		OPTIONAL
}

CipheringInfoPerRB-List-v3a0ext ::= SEQUENCE {
		dl-UM-SN						BIT STRING (SIZE (7))
}

CipheringStatusList ::=			SEQUENCE (SIZE (1..maxCNdomains)) OF
										CipheringStatusCNdomain

CipheringStatusCNdomain ::=				SEQUENCE {
		cn-DomainIdentity				CN-DomainIdentity,
		cipheringStatus					CipheringStatus
}

CodeChangeStatusList ::= SEQUENCE (SIZE (1..maxRL)) OF
		CodeChangeStatus

CodeChangeStatus ::= SEQUENCE {
		primaryCPICH-Info					PrimaryCPICH-Info,
		scramblingCodeChange				ScramblingCodeChange
}

StoredCompressedModeInfo ::= SEQUENCE {
		storedTGP-SequenceList		StoredTGP-SequenceList,
		codeChangeStatusList		CodeChangeStatusList	OPTIONAL
}

StoredTGP-SequenceList ::=			SEQUENCE (SIZE (1..maxTGPS)) OF
										StoredTGP-Sequence

StoredTGP-Sequence ::=				SEQUENCE {
	tgpsi								TGPSI,
	current-tgps-Status					CHOICE {
		active								SEQUENCE {
			tgcfn								TGCFN
		},
		inactive							NULL
	},
	tgps-ConfigurationParams			TGPS-ConfigurationParams			OPTIONAL
}

SRNC-RelocationInfo-r4-IEs ::=			SEQUENCE {
	-- Non-RRC IEs
		-- IE rb-IdentityForHOMessage includes the identity of the RB used by the source SRNC
		-- to send the message contained in the IE “TargetRNC-ToSourceRNC-Container”.
		-- Only included if type is “UE involved”
		rb-IdentityForHOMessage			RB-Identity							OPTIONAL,
		stateOfRRC						StateOfRRC,
		stateOfRRC-Procedure			StateOfRRC-Procedure,
	-- Ciphering related information IEs
		cipheringStatusList				CipheringStatusList-r4,
		latestConfiguredCN-Domain		CN-DomainIdentity,
		calculationTimeForCiphering		CalculationTimeForCiphering			OPTIONAL,
		count-C-List					COUNT-C-List						OPTIONAL,
		cipheringInfoPerRB-List			CipheringInfoPerRB-List-r4			OPTIONAL,
	-- Integrity protection related information IEs
		integrityProtectionStatus		IntegrityProtectionStatus,
		-- The target RNC may ignore the IE srb-SpecificIntegrityProtInfo if the
		-- IE integrityProtectionStatus has the value "not started".
		srb-SpecificIntegrityProtInfo	SRB-SpecificIntegrityProtInfoList,
		implementationSpecificParams	ImplementationSpecificParams		OPTIONAL,
	-- User equipment IEs
		u-RNTI							U-RNTI,
		c-RNTI							C-RNTI								OPTIONAL,
		ue-RadioAccessCapability		UE-RadioAccessCapability-r4,
		ue-RadioAccessCapability-ext	UE-RadioAccessCapabBandFDDList		OPTIONAL,
		ue-Positioning-LastKnownPos		UE-Positioning-LastKnownPos			OPTIONAL,
		uESpecificBehaviourInformation1idle		UESpecificBehaviourInformation1idle		OPTIONAL,
		uESpecificBehaviourInformation1interRAT		UESpecificBehaviourInformation1interRAT		OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-CommonGSM-MAP-NAS-SysInfo	NAS-SystemInformationGSM-MAP,
		cn-DomainInformationList		CN-DomainInformationListFull		OPTIONAL,
	-- Measurement IEs
		ongoingMeasRepList				OngoingMeasRepList-r4				OPTIONAL,
	-- Radio bearer IEs
		predefinedConfigStatusList		PredefinedConfigStatusList,
		srb-InformationList				SRB-InformationSetupList,
		rab-InformationList				RAB-InformationSetupList-r4			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-TransChInfoList				UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-TransChInfoList				DL-AddReconfTransChInfoList-r4		OPTIONAL,
	-- Measurement report
		measurementReport				MeasurementReport					OPTIONAL,
		failureCause					FailureCauseWithProtErr				OPTIONAL
}

SRNC-RelocationInfo-r5-IEs ::=			SEQUENCE {
	-- Non-RRC IEs
		-- IE rb-IdentityForHOMessage includes the identity of the RB used by the source SRNC
		-- to send the message contained in the IE “TargetRNC-ToSourceRNC-Container”.
		-- Only included if type is "UE involved"
		rb-IdentityForHOMessage			RB-Identity							OPTIONAL,
		stateOfRRC						StateOfRRC,
		stateOfRRC-Procedure			StateOfRRC-Procedure,
	-- Ciphering related information IEs
		cipheringStatusList				CipheringStatusList-r4,
		latestConfiguredCN-Domain		CN-DomainIdentity,
		calculationTimeForCiphering		CalculationTimeForCiphering			OPTIONAL,
		count-C-List					COUNT-C-List						OPTIONAL,
		cipheringInfoPerRB-List			CipheringInfoPerRB-List-r4			OPTIONAL,
	-- Integrity protection related information IEs
		integrityProtectionStatus		IntegrityProtectionStatus,
		srb-SpecificIntegrityProtInfo	SRB-SpecificIntegrityProtInfoList	OPTIONAL,
		implementationSpecificParams	ImplementationSpecificParams		OPTIONAL,
	-- User equipment IEs
		u-RNTI							U-RNTI,
		c-RNTI							C-RNTI								OPTIONAL,
		ue-RadioAccessCapability		UE-RadioAccessCapability-r5,
		ue-RadioAccessCapability-ext	UE-RadioAccessCapabBandFDDList		OPTIONAL,
		ue-Positioning-LastKnownPos		UE-Positioning-LastKnownPos			OPTIONAL,
		uESpecificBehaviourInformation1idle
										UESpecificBehaviourInformation1idle		OPTIONAL,
		uESpecificBehaviourInformation1interRAT
										UESpecificBehaviourInformation1interRAT		OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList-r5	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-CommonGSM-MAP-NAS-SysInfo	NAS-SystemInformationGSM-MAP,
		cn-DomainInformationList		CN-DomainInformationListFull		OPTIONAL,
	-- Measurement IEs
		ongoingMeasRepList				OngoingMeasRepList-r5				OPTIONAL,
	-- Radio bearer IEs
		predefinedConfigStatusList		PredefinedConfigStatusList,
		srb-InformationList				SRB-InformationSetupList-r5,
		rab-InformationList				RAB-InformationSetupList-r5			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-TransChInfoList				UL-AddReconfTransChInfoList			OPTIONAL,
		-- 'dummy', 'dummy1' and 'dummy2' are not used in this version of the specification,
		-- they should not be sent and if received they should be ignored.
		dummy							CHOICE {
			fdd								SEQUENCE {
				dummy1							CPCH-SetID					OPTIONAL,
				dummy2							DRAC-StaticInformationList	OPTIONAL
			},
			tdd								NULL
		}																	OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-TransChInfoList				DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- PhyCH IEs
		tpc-CombinationInfoList			TPC-CombinationInfoList				OPTIONAL,
	-- Measurement report
		measurementReport				MeasurementReport					OPTIONAL,
	-- Other IEs
		failureCause					FailureCauseWithProtErr				OPTIONAL
}

SRNC-RelocationInfo-v690ext-IEs ::=	SEQUENCE {
	-- User equipment IEs
		-- IE ueCapabilityContainer is used for the transparent transfer of capability information
		-- received from the UE
		ueCapabilityContainer			BIT STRING
											(CONTAINING UE-CapabilityContainer-IEs)	OPTIONAL,
		-- IE ueCapabilityContainer-RSC and IE ueCapabilityContainer-UCI are used for the 
		-- transparent transfer of capability information received from the UE that was introduced 
		-- in a release independent manner, i.e., transferred within a VLEC. These UE capabilities 
		-- are included both in the RRC CONNECTION SETUP COMPLETE and the UE CAPABILITY INFORMATION 
		-- messages. Only the VLEC of one message needs to be included i.e. the one from these
		-- messages that was last received.
		-- Case 1: If the last received message was a RRC CONNECTION SETUP COMPLETE (RSC)
		ueCapabilityContainer-RSC		BIT STRING
							(CONTAINING RRCConnectionSetupComplete-r3-add-ext-IEs)	OPTIONAL,
		-- Case 2: If the last received message was a UE CAPABILITY INFORMATION (UCI)
		ueCapabilityContainer-UCI		BIT STRING
							(CONTAINING UECapabilityInformation-r3-add-ext-IEs)		OPTIONAL,
	-- Radio bearer IEs
		rab-InformationSetupList		RAB-InformationSetupList-r6-ext		OPTIONAL,
	-- Measurement report
		measuredResultsOnRACHinterFreq	MeasuredResultsOnRACHinterFreq		OPTIONAL,
	-- MBMS IEs
		mbms-JoinedInformation			MBMS-JoinedInformation-r6			OPTIONAL,
	-- Measurement IEs
		intraFreqReportingCriteria		IntraFreqReportingCriteria-r6-ext		OPTIONAL
}

SRNC-RelocationInfo-r6-IEs ::=			SEQUENCE {
	-- Non-RRC IEs
		-- IE rb-IdentityForHOMessage includes the identity of the RB used by the source SRNC
		-- to send the message contained in the IE “TargetRNC-ToSourceRNC-Container”.
		-- Only included if type is "UE involved"
		rb-IdentityForHOMessage			RB-Identity							OPTIONAL,
		stateOfRRC						StateOfRRC,
		stateOfRRC-Procedure			StateOfRRC-Procedure,
	-- Ciphering related information IEs
		cipheringStatusList				CipheringStatusList-r4,
		latestConfiguredCN-Domain		CN-DomainIdentity,
		calculationTimeForCiphering		CalculationTimeForCiphering			OPTIONAL,
		count-C-List					COUNT-C-List						OPTIONAL,
		cipheringInfoPerRB-List			CipheringInfoPerRB-List-r4			OPTIONAL,
	-- Integrity protection related information IEs
		integrityProtectionStatus		IntegrityProtectionStatus,
		srb-SpecificIntegrityProtInfo	SRB-SpecificIntegrityProtInfoList	OPTIONAL,
		implementationSpecificParams	ImplementationSpecificParams		OPTIONAL,
	-- User equipment IEs
		u-RNTI							U-RNTI,
		c-RNTI							C-RNTI								OPTIONAL,
		ue-RadioAccessCapability		UE-RadioAccessCapability-r6,
		ue-RadioAccessCapability-ext	UE-RadioAccessCapabBandFDDList		OPTIONAL,
		ue-Positioning-LastKnownPos		UE-Positioning-LastKnownPos			OPTIONAL,
		uESpecificBehaviourInformation1idle
										UESpecificBehaviourInformation1idle		OPTIONAL,
		uESpecificBehaviourInformation1interRAT
										UESpecificBehaviourInformation1interRAT		OPTIONAL,
		-- IE ueCapabilityContainer is used for the transparent transfer of capability information
		-- received from the UE
		ueCapabilityContainer			BIT STRING
											(CONTAINING UE-CapabilityContainer-IEs)	OPTIONAL,
		-- IE ueCapabilityContainer-RSC and IE ueCapabilityContainer-UCI are used for the 
		-- transparent transfer of capability information received from the UE that was introduced 
		-- in a release independent manner, i.e., transferred within a VLEC. These UE capabilities 
		-- are included both in the RRC CONNECTION SETUP COMPLETE and the UE CAPABILITY INFORMATION 
		-- messages. Only the VLEC of one message needs to be included i.e. the one from these
		-- messages that was last received.
		-- Case 1: If the last received message was a RRC CONNECTION SETUP COMPLETE (RSC)
		ueCapabilityContainer-RSC		BIT STRING
							(CONTAINING RRCConnectionSetupComplete-r3-add-ext-IEs)	OPTIONAL,
		-- Case 2: If the last received message was a UE CAPABILITY INFORMATION (UCI)
		ueCapabilityContainer-UCI		BIT STRING
							(CONTAINING UECapabilityInformation-r3-add-ext-IEs)		OPTIONAL,
	-- Other IEs
		ue-RATSpecificCapability		InterRAT-UE-RadioAccessCapabilityList-r5	OPTIONAL,
	-- UTRAN mobility IEs
		ura-Identity					URA-Identity						OPTIONAL,
	-- Core network IEs
		cn-CommonGSM-MAP-NAS-SysInfo	NAS-SystemInformationGSM-MAP,
		cn-DomainInformationList		CN-DomainInformationListFull		OPTIONAL,
	-- Measurement IEs
		ongoingMeasRepList				OngoingMeasRepList-r6				OPTIONAL,
		interRATCellInfoIndication		InterRATCellInfoIndication			OPTIONAL,
	-- Radio bearer IEs
		predefinedConfigStatusList		PredefinedConfigStatusList,
		srb-InformationList				SRB-InformationSetupList-r6,
		rab-InformationList				RAB-InformationSetupList-r6			OPTIONAL,
	-- Transport channel IEs
		ul-CommonTransChInfo			UL-CommonTransChInfo-r4				OPTIONAL,
		ul-TransChInfoList				UL-AddReconfTransChInfoList-r6		OPTIONAL,
		dl-CommonTransChInfo			DL-CommonTransChInfo-r4				OPTIONAL,
		dl-TransChInfoList				DL-AddReconfTransChInfoList-r5		OPTIONAL,
	-- PhyCH IEs
		tpc-CombinationInfoList			TPC-CombinationInfoList				OPTIONAL,
		storedCompressedModeInfo		StoredCompressedModeInfo			OPTIONAL,
	-- Measurement report
		measurementReport				BIT STRING
							(CONTAINING MeasurementReport)					OPTIONAL,
	-- Other IEs
		failureCause					FailureCauseWithProtErr				OPTIONAL,
	-- MBMS IEs
		mbms-JoinedInformation			MBMS-JoinedInformation-r6			OPTIONAL
}

-- IE definitions

CalculationTimeForCiphering ::=		SEQUENCE {
	cell-Id								CellIdentity,
	sfn									INTEGER (0..4095)
}

CipheringInfoPerRB ::=				SEQUENCE {
	dl-HFN								BIT STRING (SIZE (20..25)),
	ul-HFN								BIT STRING (SIZE (20..25))
}

CipheringInfoPerRB-r4 ::=			SEQUENCE {
	rb-Identity							RB-Identity,
	dl-HFN								BIT STRING (SIZE (20..25)),
	dl-UM-SN							BIT STRING (SIZE (7)) 				OPTIONAL,
	ul-HFN								BIT STRING (SIZE (20..25))
}

-- TABULAR: CipheringInfoPerRB-List, multiplicity value numberOfRadioBearers 
-- has been replaced with maxRB.
CipheringInfoPerRB-List ::=			SEQUENCE (SIZE (1..maxRB)) OF
										CipheringInfoPerRB

CipheringInfoPerRB-List-r4 ::=		SEQUENCE (SIZE (1..maxRB)) OF
										CipheringInfoPerRB-r4


CipheringStatus ::=					ENUMERATED {
										started, notStarted }

CipheringStatusList-r4 ::=			SEQUENCE (SIZE (1..maxCNdomains)) OF
										CipheringStatusCNdomain-r4

CipheringStatusCNdomain-r4 ::=		SEQUENCE {
		cn-DomainIdentity				CN-DomainIdentity,
		cipheringStatus					CipheringStatus,
		start-Value						START-Value
}

CN-DomainInformation-v390ext ::=		SEQUENCE {
	cn-DRX-CycleLengthCoeff				CN-DRX-CycleLengthCoefficient
}

CN-DomainInformationList-v390ext ::=	SEQUENCE (SIZE (1..maxCNdomains)) OF
										CN-DomainInformation-v390ext

CompressedModeMeasCapability-r4 ::=	SEQUENCE {
	fdd-Measurements					BOOLEAN,
	-- TABULAR: The IEs tdd-Measurements, gsm-Measurements and multiCarrierMeasurements
	-- are made optional since they are conditional based on another information element.
	-- Their absence corresponds to the case where the condition is not true.
	tdd384-Measurements					BOOLEAN								OPTIONAL,
	tdd128-Measurements					BOOLEAN								OPTIONAL,
	gsm-Measurements					GSM-Measurements					OPTIONAL,
	multiCarrierMeasurements			BOOLEAN								OPTIONAL
}

COUNT-C-List ::=						SEQUENCE (SIZE (1..maxCNdomains)) OF
										COUNT-CSingle

COUNT-CSingle ::=						SEQUENCE {
	cn-DomainIdentity					CN-DomainIdentity,
	count-C								BIT STRING (SIZE (32))			
}

DL-PhysChCapabilityFDD-r4 ::=		SEQUENCE {
	-- The IE “maxNoDPCH-PDSCH-Codes” only gives information on the maximum number of DPCH Codes.
	maxNoDPCH-PDSCH-Codes				INTEGER (1..8),
	maxNoPhysChBitsReceived				MaxNoPhysChBitsReceived,
	supportForSF-512					BOOLEAN,
	-- dummy, dummy2 and dummy3 are not used in this version of the specification
	-- and if received they should be ignored.
	dummy								BOOLEAN,
	dummy2								SimultaneousSCCPCH-DPCH-Reception,
	dummy3								SupportOfDedicatedPilotsForChEstimation		OPTIONAL
}

DL-PhysChCapabilityFDD-r5 ::=		SEQUENCE {
	-- The IE “maxNoDPCH-PDSCH-Codes” only gives information on the maximum number of DPCH Codes.
	maxNoDPCH-PDSCH-Codes				INTEGER (1..8),
	maxNoPhysChBitsReceived				MaxNoPhysChBitsReceived,
	supportForSF-512					BOOLEAN,
	-- dummy, dumy2 and dummy3 are not used in this version of the specification
	-- and if received they should be ignored.
	dummy								BOOLEAN,
	dummy2								SimultaneousSCCPCH-DPCH-Reception,
	dummy3								SupportOfDedicatedPilotsForChEstimation		OPTIONAL,
	fdd-hspdsch							CHOICE {
		supported							SEQUENCE {
			hsdsch-physical-layer-category		HSDSCH-physical-layer-category,
			-- dummy and dummy2 are not used in this version of the specification
			-- and if received they should be ignored.
			dummy								BOOLEAN,
			dummy2								BOOLEAN
		},
		unsupported							NULL
	}
}

DL-PhysChCapabilityTDD-r5 ::=		SEQUENCE {
	maxTS-PerFrame						MaxTS-PerFrame,
	maxPhysChPerFrame					MaxPhysChPerFrame,
	minimumSF							MinimumSF-DL,
	supportOfPDSCH						BOOLEAN,
	maxPhysChPerTS						MaxPhysChPerTS,
	tdd384-hspdsch						CHOICE {
		supported							HSDSCH-physical-layer-category,
		unsupported							NULL
	}
}

DL-PhysChCapabilityTDD-LCR-r5 ::=	SEQUENCE {
	maxTS-PerSubFrame					MaxTS-PerSubFrame-r4,
	maxPhysChPerFrame					MaxPhysChPerSubFrame-r4,
	minimumSF							MinimumSF-DL,
	supportOfPDSCH						BOOLEAN,
	maxPhysChPerTS						MaxPhysChPerTS,
	supportOf8PSK						BOOLEAN,
	tdd128-hspdsch						CHOICE {
		supported							HSDSCH-physical-layer-category,
		unsupported							NULL
	}
}

DL-RFC3095-Context ::=				SEQUENCE {
	rfc3095-Context-Identity			INTEGER (0..16383),
	dl-mode								ENUMERATED {u, o, r},
	dl-ref-ir							OCTET STRING ( SIZE (1..3000)),
	dl-ref-time							INTEGER (0..4294967295)		OPTIONAL,
	dl-curr-time						INTEGER (0..4294967295)		OPTIONAL,
	dl-syn-offset-id					INTEGER (0..65535)			OPTIONAL,
	dl-syn-slope-ts						INTEGER (0..4294967295)		OPTIONAL,
	dl-dyn-changed						BOOLEAN
}

ImplementationSpecificParams ::=	BIT STRING (SIZE (1..512))


IntegrityProtectionStatus ::=		ENUMERATED {
										started, notStarted }

InterRAT-UE-RadioAccessCapabilityList-r5 ::=	SEQUENCE {
	interRAT-UE-RadioAccessCapability	InterRAT-UE-RadioAccessCapabilityList,
	geranIu-RadioAccessCapability		GERANIu-RadioAccessCapability				OPTIONAL
}

IntraFreqReportingCriteria-r6-ext ::= SEQUENCE {
	-- The content of the v690 non-critical extension should be
	-- considered as an extension of IE IntraFreqEventCriteriaList
	event								Event1j-r6,
	hysteresis							Hysteresis,
	timeToTrigger						TimeToTrigger,
	reportingCellStatus					ReportingCellStatus					OPTIONAL
}

-- dummy is not used in this version of the specification, it should
-- not be sent and if received it should be ignored.
MaxHcContextSpace-r5 ::=				ENUMERATED { 
											dummy, by1024, by2048, by4096, by8192, 
											by16384, by32768, by65536, by131072 }

MeasurementCapability-r4 ::=		SEQUENCE {
	downlinkCompressedMode				CompressedModeMeasCapability-r4,
	uplinkCompressedMode				CompressedModeMeasCapability-r4	
}

MeasurementCommandWithType ::=		CHOICE {
	setup								MeasurementType,
	modify								NULL,
	release								NULL
}

MeasurementCommandWithType-r4 ::=	CHOICE {
	setup								MeasurementType-r4,
	modify								NULL,
	release								NULL
}

MeasurementCommandWithType-r6 ::=	CHOICE {
	setup								MeasurementType-r6,
	modify								NULL,
	release								NULL
}

OngoingMeasRep ::=					SEQUENCE {
	measurementIdentity					MeasurementIdentity,
	-- TABULAR: The CHOICE Measurement in the tabular description is included
	-- in MeasurementCommandWithType
	measurementCommandWithType			MeasurementCommandWithType,
	measurementReportingMode			MeasurementReportingMode			OPTIONAL,
	additionalMeasurementID-List		AdditionalMeasurementID-List		OPTIONAL
}

OngoingMeasRep-r4 ::=				SEQUENCE {
	measurementIdentity					MeasurementIdentity,
	-- TABULAR: The CHOICE Measurement in the tabular description is included
	-- in MeasurementCommandWithType-r4.
	measurementCommandWithType			MeasurementCommandWithType-r4,
	measurementReportingMode			MeasurementReportingMode			OPTIONAL,
	additionalMeasurementID-List		AdditionalMeasurementID-List		OPTIONAL
}

OngoingMeasRep-r5 ::=				SEQUENCE {
	measurementIdentity					MeasurementIdentity,
	-- TABULAR: The CHOICE Measurement in the tabular description is included
	-- in MeasurementCommandWithType-r4.
	measurementCommandWithType			MeasurementCommandWithType-r4,
	measurementReportingMode			MeasurementReportingMode			OPTIONAL,
	additionalMeasurementID-List		AdditionalMeasurementID-List		OPTIONAL,
	measurementCommand-v590ext			CHOICE {
		-- the choice "intra-frequency" shall be used for the case of intra-frequency measurement,
		-- as well as when intra-frequency events are configured for inter-frequency measurement
		intra-frequency						Intra-FreqEventCriteriaList-v590ext,
		inter-frequency						Inter-FreqEventCriteriaList-v590ext
	}		OPTIONAL,
	intraFreqReportingCriteria-1b-r5		IntraFreqReportingCriteria-1b-r5	OPTIONAL,
	intraFreqEvent-1d-r5					IntraFreqEvent-1d-r5				OPTIONAL
}

OngoingMeasRep-r6 ::=				SEQUENCE {
	measurementIdentity					MeasurementIdentity,
	measurementCommandWithType			MeasurementCommandWithType-r6,
	measurementReportingMode			MeasurementReportingMode			OPTIONAL,
	additionalMeasurementID-List		AdditionalMeasurementID-List		OPTIONAL
}

OngoingMeasRepList ::=				SEQUENCE (SIZE (1..maxNoOfMeas)) OF
										OngoingMeasRep

OngoingMeasRepList-r4 ::=			SEQUENCE (SIZE (1..maxNoOfMeas)) OF
										OngoingMeasRep-r4

OngoingMeasRepList-r5 ::=			SEQUENCE (SIZE (1..maxNoOfMeas)) OF
										OngoingMeasRep-r5

OngoingMeasRepList-r6 ::=			SEQUENCE (SIZE (1..maxNoOfMeas)) OF
										OngoingMeasRep-r6

PDCP-Capability-r4 ::=				SEQUENCE {
	losslessSRNS-RelocationSupport		BOOLEAN,
	supportForRfc2507					CHOICE {
		notSupported						NULL,
		supported							MaxHcContextSpace
	},
	supportForRfc3095					CHOICE {
		notSupported						NULL,
		supported							SEQUENCE {
			maxROHC-ContextSessions				MaxROHC-ContextSessions-r4	DEFAULT s16,
			reverseCompressionDepth				INTEGER (0..65535)			DEFAULT 0
		}
	}
}

PDCP-Capability-r5 ::=				SEQUENCE {
	losslessSRNS-RelocationSupport		BOOLEAN,
	supportForRfc2507					CHOICE {
		notSupported						NULL,
		supported							MaxHcContextSpace-r5
	},
	supportForRfc3095					CHOICE {
		notSupported						NULL,
		supported							SEQUENCE {
			maxROHC-ContextSessions				MaxROHC-ContextSessions-r4	DEFAULT s16,
			reverseCompressionDepth				INTEGER (0..65535)			DEFAULT 0,
			supportForRfc3095ContextRelocation	BOOLEAN
		}
	}
}

PDCP-Capability-r6 ::=				SEQUENCE {
	losslessSRNS-RelocationSupport		BOOLEAN,
	losslessDLRLC-PDUSizeChange			ENUMERATED { true }					OPTIONAL,
	supportForRfc2507					CHOICE {
		notSupported						NULL,
		supported							MaxHcContextSpace-r5
	},
	supportForRfc3095					CHOICE {
		notSupported						NULL,
		supported							SEQUENCE {
			maxROHC-ContextSessions				MaxROHC-ContextSessions-r4	DEFAULT s16,
			reverseCompressionDepth				INTEGER (0..65535)			DEFAULT 0,
			supportForRfc3095ContextRelocation	BOOLEAN
		}
	}
}

PhysicalChannelCapability-r4 ::=		SEQUENCE {
		fddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityFDD-r4,
			uplinkPhysChCapability				UL-PhysChCapabilityFDD
		}											OPTIONAL,
		tdd384-PhysChCapability				SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD
		}											OPTIONAL,
		tdd128-PhysChCapability				SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD-LCR-r4,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD-LCR-r4
		}											OPTIONAL
}

PhysicalChannelCapability-r5 ::=		SEQUENCE {
		fddPhysChCapability					SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityFDD-r5,
			uplinkPhysChCapability				UL-PhysChCapabilityFDD
		}											OPTIONAL,
		tdd384-PhysChCapability				SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD-r5,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD
		}											OPTIONAL,
		tdd128-PhysChCapability				SEQUENCE {
			downlinkPhysChCapability			DL-PhysChCapabilityTDD-LCR-r5,
			uplinkPhysChCapability				UL-PhysChCapabilityTDD-LCR-r4
		}											OPTIONAL
}

RF-Capability-r4 ::=				SEQUENCE {
		fddRF-Capability				SEQUENCE {
			ue-PowerClass					UE-PowerClassExt,
			txRxFrequencySeparation			TxRxFrequencySeparation
		}																OPTIONAL,
		tdd384-RF-Capability			SEQUENCE {
			ue-PowerClass					UE-PowerClassExt,
			radioFrequencyBandTDDList		RadioFrequencyBandTDDList,
			chipRateCapability				ChipRateCapability
		}																OPTIONAL,
		tdd128-RF-Capability			SEQUENCE {
			ue-PowerClass					UE-PowerClassExt,
			radioFrequencyBandTDDList		RadioFrequencyBandTDDList,
			chipRateCapability				ChipRateCapability
		}																OPTIONAL
}

RFC3095-ContextInfo ::= 			SEQUENCE {
	rb-Identity							RB-Identity,
	rfc3095-Context-List				RFC3095-Context-List
}

RFC3095-Context-List ::=			SEQUENCE (SIZE (1..maxRFC3095-CID)) OF SEQUENCE {
	dl-RFC3095-Context					DL-RFC3095-Context		OPTIONAL,
	ul-RFC3095-Context					UL-RFC3095-Context		OPTIONAL
}

RLC-Capability-r5 ::=				SEQUENCE {
	totalRLC-AM-BufferSize				TotalRLC-AM-BufferSize-r5,
	maximumRLC-WindowSize				MaximumRLC-WindowSize,
	maximumAM-EntityNumber				MaximumAM-EntityNumberRLC-Cap
}


SRB-SpecificIntegrityProtInfo ::=	SEQUENCE {
	ul-RRC-HFN							BIT STRING (SIZE (28)),
	dl-RRC-HFN							BIT STRING (SIZE (28)),
	ul-RRC-SequenceNumber				RRC-MessageSequenceNumber,
	dl-RRC-SequenceNumber				RRC-MessageSequenceNumber
}

SRB-SpecificIntegrityProtInfoList ::= SEQUENCE (SIZE (4..maxSRBsetup)) OF
										SRB-SpecificIntegrityProtInfo

StateOfRRC ::=						ENUMERATED {
										cell-DCH, cell-FACH,
										cell-PCH, ura-PCH }

StateOfRRC-Procedure ::=			ENUMERATED {
										awaitNoRRC-Message,
										awaitRB-ReleaseComplete,
										awaitRB-SetupComplete,
										awaitRB-ReconfigurationComplete,
										awaitTransportCH-ReconfigurationComplete,
										awaitPhysicalCH-ReconfigurationComplete,
										awaitActiveSetUpdateComplete,
										awaitHandoverComplete,
										sendCellUpdateConfirm,
										sendUraUpdateConfirm,
										-- dummy is not used in this version of specification
										-- It should not be sent
										dummy,
										otherStates 
}

TotalRLC-AM-BufferSize-r5 ::=		ENUMERATED { 
										kb10, kb50, kb100, kb150, kb200, 
										kb300, kb400, kb500, kb750, kb1000 }

TPC-Combination-Info ::= SEQUENCE {
		primaryCPICH-Info					PrimaryCPICH-Info,
		tpc-CombinationIndex				TPC-CombinationIndex
}

UE-MultiModeRAT-Capability-r5 ::=	SEQUENCE {
	multiRAT-CapabilityList				MultiRAT-Capability,
	multiModeCapability					MultiModeCapability,
	supportOfUTRAN-ToGERAN-NACC			BOOLEAN
}

UE-Positioning-Capability-r4 ::=	SEQUENCE {
	standaloneLocMethodsSupported			BOOLEAN,
	ue-BasedOTDOA-Supported					BOOLEAN,
	networkAssistedGPS-Supported			NetworkAssistedGPS-Supported,
	supportForUE-GPS-TimingOfCellFrames		BOOLEAN,
	supportForIPDL							BOOLEAN,
	rx-tx-TimeDifferenceType2Capable 		BOOLEAN,
	validity-CellPCH-UraPCH 				ENUMERATED { true }		OPTIONAL,
	sfn-sfnType2Capability					ENUMERATED { true }			OPTIONAL
}

UE-Positioning-LastKnownPos ::=		SEQUENCE { 
		sfn								INTEGER (0..4095),
		cell-id							CellIdentity,
		positionEstimate				PositionEstimate
}

UE-RadioAccessCapability-r4 ::=		SEQUENCE {
	accessStratumReleaseIndicator		AccessStratumReleaseIndicator,
	pdcp-Capability						PDCP-Capability-r4,
	rlc-Capability						RLC-Capability,
	transportChannelCapability			TransportChannelCapability,
	rf-Capability						RF-Capability-r4,
	physicalChannelCapability			PhysicalChannelCapability-r4,
	ue-MultiModeRAT-Capability			UE-MultiModeRAT-Capability,
	securityCapability					SecurityCapability,
	ue-positioning-Capability			UE-Positioning-Capability-r4,
	measurementCapability				MeasurementCapability-r4		OPTIONAL
}

UE-RadioAccessCapability-r5 ::=		SEQUENCE {
	accessStratumReleaseIndicator		AccessStratumReleaseIndicator,
	dl-CapabilityWithSimultaneousHS-DSCHConfig
										DL-CapabilityWithSimultaneousHS-DSCHConfig	OPTIONAL,
	pdcp-Capability						PDCP-Capability-r5,
	rlc-Capability						RLC-Capability-r5,
	transportChannelCapability			TransportChannelCapability,
	rf-Capability						RF-Capability-r4,
	physicalChannelCapability			PhysicalChannelCapability-r5,
	ue-MultiModeRAT-Capability			UE-MultiModeRAT-Capability-r5,
	securityCapability					SecurityCapability,
	ue-positioning-Capability			UE-Positioning-Capability-r4,
	measurementCapability				MeasurementCapability-r4		OPTIONAL
}

UE-RadioAccessCapability-r6 ::=		SEQUENCE {
	accessStratumReleaseIndicator		AccessStratumReleaseIndicator,
	dl-CapabilityWithSimultaneousHS-DSCHConfig
										DL-CapabilityWithSimultaneousHS-DSCHConfig	OPTIONAL,
	pdcp-Capability						PDCP-Capability-r6,
	rlc-Capability						RLC-Capability-r5,
	transportChannelCapability			TransportChannelCapability,
	rf-Capability						RF-Capability-r4,
	physicalChannelCapability			PhysicalChannelCapability-r5,
	ue-MultiModeRAT-Capability			UE-MultiModeRAT-Capability-r5,
	securityCapability					SecurityCapability,
	ue-positioning-Capability			UE-Positioning-Capability-r4,
	measurementCapability				MeasurementCapability-r4		OPTIONAL
}

UE-RadioAccessCapability-r7 ::=		SEQUENCE {
	accessStratumReleaseIndicator		AccessStratumReleaseIndicator,
	dl-CapabilityWithSimultaneousHS-DSCHConfig
										DL-CapabilityWithSimultaneousHS-DSCHConfig	OPTIONAL,
	pdcp-Capability						PDCP-Capability-r6,
	rlc-Capability						RLC-Capability-r5,
	transportChannelCapability			TransportChannelCapability,
	rf-Capability						RF-Capability-r7,
	physicalChannelCapability			PhysicalChannelCapability-r7,
	ue-MultiModeRAT-Capability			UE-MultiModeRAT-Capability-r5,
	securityCapability					SecurityCapability,
	ue-positioning-Capability			UE-Positioning-Capability-r4,
	measurementCapability				MeasurementCapability-r4		OPTIONAL
}

UL-RFC3095-Context ::=				SEQUENCE {
	rfc3095-Context-Identity			INTEGER (0..16383),
	ul-mode								ENUMERATED {u, o, r},
	ul-ref-ir							OCTET STRING ( SIZE (1..3000)),
	ul-ref-time							INTEGER (0..4294967295)		OPTIONAL,
	ul-curr-time						INTEGER (0..4294967295)		OPTIONAL,
	ul-syn-offset-id					INTEGER (0..65535)			OPTIONAL,
	ul-syn-slope-ts						INTEGER (0..4294967295)		OPTIONAL,
	ul-ref-sn-1							INTEGER (0..65535)			OPTIONAL
}

END

