-- HNBAP-PDU-Descriptions.asn
--
-- 3GPP TS 25.469 V10.1.0 (2011-06)
-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
--
-- 9.3.2	Elementary Procedure definitions
--

-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
-- **************************************************************
-- **************************************************************
--
-- Elementary Procedure definitions
--
-- **************************************************************
HNBAP-PDU-Descriptions  { 
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
umts-Access (20) modules (3) hnbap(6) version1 (1) hnbap-PDU-Descriptions (0)}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	ProcedureCode
FROM HNBAP-CommonDataTypes

	HNBRegisterRequest,
	HNBRegisterAccept,
	HNBRegisterReject,
	HNBDe-Register,
	UERegisterRequest,
	UERegisterAccept,
	UERegisterReject,
	UEDe-Register,
	ErrorIndication,
	PrivateMessage,
	CSGMembershipUpdate,
	TNLUpdateRequest,
	TNLUpdateResponse,
	TNLUpdateFailure,
	HNBConfigTransferRequest,
	HNBConfigTransferResponse,
	RelocationComplete


FROM HNBAP-PDU-Contents
	id-HNBRegister,
	id-UERegister,
	id-UEDe-Register,
	id-HNBDe-Register,
	id-ErrorIndication,
	id-privateMessage,
	id-CSGMembershipUpdate,
	id-TNLUpdate,
	id-HNBConfigTransfer,
	id-RelocationComplete

FROM HNBAP-Constants;

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

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

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


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

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

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

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

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

HNBAP-ELEMENTARY-PROCEDURES-CLASS-1 HNBAP-ELEMENTARY-PROCEDURE ::= {
	hNBRegister|
	uERegister,
	...,
	tnlUpdate			|
	hNBConfigTransfer
}


HNBAP-ELEMENTARY-PROCEDURES-CLASS-2 HNBAP-ELEMENTARY-PROCEDURE ::= {
	uEDe-Register |
	hNBDe-Register |
	errorIndication	|
	privateMessage,
	...,
	csg-membership-update|
	relocationComplete
}

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


hNBRegister HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HNBRegisterRequest
	SUCCESSFUL OUTCOME		HNBRegisterAccept
	UNSUCCESSFUL OUTCOME	HNBRegisterReject
	PROCEDURE CODE			id-HNBRegister
	CRITICALITY				reject
}

uERegister HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		UERegisterRequest
	SUCCESSFUL OUTCOME		UERegisterAccept
	UNSUCCESSFUL OUTCOME	UERegisterReject
	PROCEDURE CODE			id-UERegister
	CRITICALITY				reject
}

uEDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		UEDe-Register
	PROCEDURE CODE			id-UEDe-Register
	CRITICALITY				ignore
}

hNBDe-Register HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HNBDe-Register
	PROCEDURE CODE			id-HNBDe-Register
	CRITICALITY				ignore
}

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

csg-membership-update HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		CSGMembershipUpdate
	PROCEDURE CODE			id-CSGMembershipUpdate
	CRITICALITY				ignore
}

tnlUpdate HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		TNLUpdateRequest
	SUCCESSFUL OUTCOME		TNLUpdateResponse
	UNSUCCESSFUL OUTCOME	TNLUpdateFailure
	PROCEDURE CODE			id-TNLUpdate
	CRITICALITY				reject
}

hNBConfigTransfer HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		HNBConfigTransferRequest
	SUCCESSFUL OUTCOME		HNBConfigTransferResponse
	PROCEDURE CODE			id-HNBConfigTransfer
	CRITICALITY				reject
}

relocationComplete HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE		RelocationComplete
	PROCEDURE CODE			id-RelocationComplete
	CRITICALITY				ignore
}

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

END
