-- RUA-PDU-Descriptions.asn
--
-- 3GPP TS 25.468 V9.1.0 (2010-03)
-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
--
-- 9.3.2	Elementary Procedure definitions
--

-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************

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

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	ProcedureCode
FROM RUA-CommonDataTypes
	Connect,
	DirectTransfer,
	Disconnect,
	ConnectionlessTransfer,		
	ErrorIndication,
	PrivateMessage


FROM RUA-PDU-Contents
	id-Connect,
	id-DirectTransfer,
	id-Disconnect,
	id-ConnectionlessTransfer,
	id-ErrorIndication,
	id-privateMessage
FROM RUA-Constants;

-- **************************************************************
--
-- Interface Elementary Procedure Class
--
-- **************************************************************

RUA-ELEMENTARY-PROCEDURE ::= CLASS {
	&InitiatingMessage			,
	&SuccessfulOutcome			OPTIONAL,
	&UnsuccessfulOutcome		OPTIONAL,
	&procedureCode				ProcedureCode 	UNIQUE,
	&criticality				Criticality 	DEFAULT ignore
}

WITH SYNTAX {
	INITIATING MESSAGE			&InitiatingMessage
	[SUCCESSFUL OUTCOME			&SuccessfulOutcome]
	[UNSUCCESSFUL OUTCOME		&UnsuccessfulOutcome]
	PROCEDURE CODE				&procedureCode
	[CRITICALITY				&criticality]
}

-- **************************************************************
--
-- Interface PDU definitions
--
-- **************************************************************

RUA-PDU ::= CHOICE {
	initiatingMessage		InitiatingMessage,
	successfulOutcome		SuccessfulOutcome,
	unsuccessfulOutcome		UnsuccessfulOutcome,
	...
}


InitiatingMessage ::= SEQUENCE {
	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode		({RUA-ELEMENTARY-PROCEDURES}),
	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality		({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
	value			RUA-ELEMENTARY-PROCEDURE.&InitiatingMessage	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}

SuccessfulOutcome ::= SEQUENCE {
	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode		({RUA-ELEMENTARY-PROCEDURES}),
	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality		({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
	value			RUA-ELEMENTARY-PROCEDURE.&SuccessfulOutcome	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}

UnsuccessfulOutcome ::= SEQUENCE {
	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode			({RUA-ELEMENTARY-PROCEDURES}),
	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality			({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
	value			RUA-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
}

-- **************************************************************
--
-- Interface Elementary Procedure List
--
-- **************************************************************

RUA-ELEMENTARY-PROCEDURES RUA-ELEMENTARY-PROCEDURE ::= {
	RUA-ELEMENTARY-PROCEDURES-CLASS-1	|
	RUA-ELEMENTARY-PROCEDURES-CLASS-2	,
	...
}

RUA-ELEMENTARY-PROCEDURES-CLASS-1 RUA-ELEMENTARY-PROCEDURE ::= {
	...
}


RUA-ELEMENTARY-PROCEDURES-CLASS-2 RUA-ELEMENTARY-PROCEDURE ::= {
	connectionRequest |
	directTransfer |
	disconnectRequest |
	connectionlessTransfer |	
	errorIndication |
	privateMessage,
	...
}

-- **************************************************************
--
-- Interface Elementary Procedures
--
-- **************************************************************


connectionRequest RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		Connect
	PROCEDURE CODE			id-Connect
	CRITICALITY				ignore
}

directTransfer RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		DirectTransfer
	PROCEDURE CODE			id-DirectTransfer
	CRITICALITY				ignore
}

disconnectRequest RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		Disconnect
	PROCEDURE CODE			id-Disconnect
	CRITICALITY				ignore
}
connectionlessTransfer RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		ConnectionlessTransfer
	PROCEDURE CODE			id-ConnectionlessTransfer
	CRITICALITY				ignore
}

errorIndication RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		ErrorIndication
	PROCEDURE CODE			id-ErrorIndication
	CRITICALITY				ignore
}

privateMessage RUA-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		PrivateMessage
	PROCEDURE CODE			id-privateMessage
	CRITICALITY				ignore
}


END