-- RUA-Containers.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.7	Container definitions
--

-- **************************************************************
--
-- Container definitions
--
-- **************************************************************

RUA-Containers {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
umts-Access (20) modules (3) rua(5) version1 (1) rUA-Containers (5) }

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	Presence,
	PrivateIE-ID,
	ProtocolIE-ID,
	maxPrivateIEs,
	maxProtocolExtensions,
	maxProtocolIEs
FROM RUA-CommonDataTypes;

-- **************************************************************
--
-- Class Definition for Private IEs
--
-- **************************************************************

RUA-PRIVATE-IES ::= CLASS {
	&id					PrivateIE-ID,
	&criticality		Criticality,
	&Value,
	&presence			Presence
}
WITH SYNTAX {
	ID					&id
	CRITICALITY			&criticality
	TYPE				&Value
	PRESENCE			&presence
}


-- **************************************************************
--
-- Class Definition for Protocol IEs
--
-- **************************************************************

RUA-PROTOCOL-IES ::= CLASS {
	&id					ProtocolIE-ID		UNIQUE,
	&criticality		Criticality,
	&Value,
	&presence			Presence
}
WITH SYNTAX {
	ID					&id
	CRITICALITY			&criticality
	TYPE				&Value
	PRESENCE			&presence
}

-- **************************************************************
--
-- Class Definition for Protocol Extensions
--
-- **************************************************************

RUA-PROTOCOL-EXTENSION ::= CLASS {
	&id					ProtocolIE-ID UNIQUE,
	&criticality		Criticality,
	&Extension,
	&presence			Presence
}
WITH SYNTAX {
	ID					&id
	CRITICALITY			&criticality
	EXTENSION			&Extension
	PRESENCE			&presence
}


-- **************************************************************
--
-- Container for Protocol IEs
--
-- **************************************************************

ProtocolIE-Container {RUA-PROTOCOL-IES : IEsSetParam} ::= 
	SEQUENCE (SIZE (0..maxProtocolIEs)) OF
		ProtocolIE-Field {{IEsSetParam}}

ProtocolIE-Single-Container {RUA-PROTOCOL-IES : IEsSetParam} ::= 
	ProtocolIE-Field {{IEsSetParam}}

ProtocolIE-Field {RUA-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE {
	id					RUA-PROTOCOL-IES.&id				({IEsSetParam}),
	criticality			RUA-PROTOCOL-IES.&criticality		({IEsSetParam}{@id}),
	value				RUA-PROTOCOL-IES.&Value				({IEsSetParam}{@id})
}

-- **************************************************************
--
-- Container Lists for Protocol IE Containers
--
-- **************************************************************

ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, RUA-PROTOCOL-IES : IEsSetParam} ::=
	SEQUENCE (SIZE (lowerBound..upperBound)) OF
		ProtocolIE-Container {{IEsSetParam}}

-- **************************************************************
--
-- Container for Protocol Extensions
--
-- **************************************************************

ProtocolExtensionContainer {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= 
	SEQUENCE (SIZE (1..maxProtocolExtensions)) OF
		ProtocolExtensionField {{ExtensionSetParam}}

ProtocolExtensionField {RUA-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE {
	id					RUA-PROTOCOL-EXTENSION.&id				({ExtensionSetParam}),
	criticality			RUA-PROTOCOL-EXTENSION.&criticality		({ExtensionSetParam}{@id}),
	extensionValue		RUA-PROTOCOL-EXTENSION.&Extension		({ExtensionSetParam}{@id})
}


-- **************************************************************
--
-- Container for Private IEs
--
-- **************************************************************

PrivateIE-Container {RUA-PRIVATE-IES : IEsSetParam } ::= 
	SEQUENCE (SIZE (1.. maxPrivateIEs)) OF
		PrivateIE-Field {{IEsSetParam}}

PrivateIE-Field {RUA-PRIVATE-IES : IEsSetParam} ::= SEQUENCE {
	id					RUA-PRIVATE-IES.&id					({IEsSetParam}),
	criticality			RUA-PRIVATE-IES.&criticality		({IEsSetParam}{@id}),
	value				RUA-PRIVATE-IES.&Value				({IEsSetParam}{@id})
}


END