-- **************************************************************
--
-- 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
