-- **************************************************************
--
-- 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,
	U-RNTIQueryRequest,
	U-RNTIQueryResponse


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,
	id-U-RNTIQuery

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|
	u-RNTIQuery
}


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
}

u-RNTIQuery HNBAP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	U-RNTIQueryRequest
	SUCCESSFUL OUTCOME	U-RNTIQueryResponse
	PROCEDURE CODE		id-U-RNTIQuery
	CRITICALITY		reject
}

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

END
