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

X2AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
eps-Access (21) modules (3) x2ap (2) version1 (1) x2ap-PDU-Descriptions (0) }

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	ProcedureCode
FROM X2AP-CommonDataTypes


	CellActivationRequest,
	CellActivationResponse,
	CellActivationFailure,
	ENBConfigurationUpdate,
	ENBConfigurationUpdateAcknowledge,
	ENBConfigurationUpdateFailure,
	ErrorIndication,
	HandoverCancel, 
	HandoverReport,
	HandoverPreparationFailure,	
	HandoverRequest,
	HandoverRequestAcknowledge,
	LoadInformation,
	PrivateMessage,
	ResetRequest,
	ResetResponse,
	ResourceStatusFailure,
	ResourceStatusRequest,
	ResourceStatusResponse,
	ResourceStatusUpdate, 
	RLFIndication,
	SNStatusTransfer,
	UEContextRelease,
	X2SetupFailure,
	X2SetupRequest,
	X2SetupResponse,
	MobilityChangeRequest,
	MobilityChangeAcknowledge,
	MobilityChangeFailure



FROM X2AP-PDU-Contents

	id-cellActivation,
	id-eNBConfigurationUpdate,
	id-errorIndication,
	id-handoverCancel, 
	id-handoverReport,
	id-handoverPreparation,
	
	id-loadIndication,
	id-privateMessage,
	id-reset,
	
	id-resourceStatusReporting,
	id-resourceStatusReportingInitiation, 
	id-rLFIndication,
	id-snStatusTransfer,
	id-uEContextRelease,
	id-x2Setup,
	id-mobilitySettingsChange




FROM X2AP-Constants;

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

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

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

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

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

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


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

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

X2AP-ELEMENTARY-PROCEDURES-CLASS-1 X2AP-ELEMENTARY-PROCEDURE ::= {
	handoverPreparation										|
	reset													|
	x2Setup													|
	resourceStatusReportingInitiation						|
	eNBConfigurationUpdate									|
	mobilitySettingsChange									|
	cellActivation											,
	...
}

X2AP-ELEMENTARY-PROCEDURES-CLASS-2 X2AP-ELEMENTARY-PROCEDURE ::= {
	snStatusTransfer						|
	uEContextRelease						|
	handoverCancel							|
	errorIndication							|
	resourceStatusReporting					|
	loadIndication							|
	privateMessage							|
	rLFIndication							|	handoverReport,
	...

}


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

handoverPreparation X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HandoverRequest
	SUCCESSFUL OUTCOME		HandoverRequestAcknowledge
	UNSUCCESSFUL OUTCOME	HandoverPreparationFailure
	PROCEDURE CODE			id-handoverPreparation
	CRITICALITY				reject
}

snStatusTransfer X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		SNStatusTransfer
	PROCEDURE CODE			id-snStatusTransfer
	CRITICALITY				ignore
}

uEContextRelease X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		UEContextRelease
	PROCEDURE CODE			id-uEContextRelease
	CRITICALITY				ignore
}


handoverCancel X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HandoverCancel
	PROCEDURE CODE			id-handoverCancel
	CRITICALITY				ignore
}

handoverReport X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HandoverReport
	PROCEDURE CODE			id-handoverReport
	CRITICALITY				ignore
}

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

reset	X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		ResetRequest
	SUCCESSFUL OUTCOME		ResetResponse
	PROCEDURE CODE			id-reset
	CRITICALITY				reject
}

x2Setup	X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		X2SetupRequest
	SUCCESSFUL OUTCOME		X2SetupResponse
	UNSUCCESSFUL OUTCOME	X2SetupFailure
	PROCEDURE CODE			id-x2Setup
	CRITICALITY				reject
}


loadIndication X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		LoadInformation
	PROCEDURE CODE			id-loadIndication
	CRITICALITY				ignore
}

eNBConfigurationUpdate		X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		ENBConfigurationUpdate
	SUCCESSFUL OUTCOME		ENBConfigurationUpdateAcknowledge
	UNSUCCESSFUL OUTCOME	ENBConfigurationUpdateFailure
	PROCEDURE CODE			id-eNBConfigurationUpdate
	CRITICALITY				reject
}

resourceStatusReportingInitiation	X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE				ResourceStatusRequest
	SUCCESSFUL OUTCOME				ResourceStatusResponse
	UNSUCCESSFUL OUTCOME			ResourceStatusFailure
	PROCEDURE CODE					id-resourceStatusReportingInitiation
	CRITICALITY						reject
}

resourceStatusReporting X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		ResourceStatusUpdate
	PROCEDURE CODE			id-resourceStatusReporting
	CRITICALITY				ignore
}

rLFIndication X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		RLFIndication
	PROCEDURE CODE			id-rLFIndication
	CRITICALITY				ignore
}

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

mobilitySettingsChange	X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		MobilityChangeRequest
	SUCCESSFUL OUTCOME		MobilityChangeAcknowledge
	UNSUCCESSFUL OUTCOME	MobilityChangeFailure
	PROCEDURE CODE			id-mobilitySettingsChange
	CRITICALITY				reject
}

cellActivation	X2AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		CellActivationRequest
	SUCCESSFUL OUTCOME		CellActivationResponse
	UNSUCCESSFUL OUTCOME	CellActivationFailure
	PROCEDURE CODE			id-cellActivation
	CRITICALITY				reject
}


END