-- **************************************************************
--
-- PDU definitions for HNBAP.
--
-- **************************************************************

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

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Cause,
	CriticalityDiagnostics, 
	CSGMembershipStatus,
	HNB-Location-Information,
	HNB-Identity,
	Context-ID,
	UE-Identity,
	LAC,
	RAC,
	SAC,
	CN-DomainIndicator,
	IP-Address,
	Registration-Cause,
	UE-Capabilities,
	PLMNidentity,
	CellIdentity,
	RNC-ID,
	CSG-ID,
	HNB-Cell-Access-Mode,
	BackoffTimer,
	MuxPortNumber,
	RABList,
	HNBConfigInfo,
	AccessResult,
	Update-cause,
	NeighbourInfoList,
	NeighbourInfoRequestList,
	PSC,
	Tunnel-Information,
	CELL-FACHMobilitySupport,
	S-RNTIPrefix,
	NeighbourIdentity,
	NeighbourCellIdentityList,
	URAIdentity,
	URAIdentityList,
	HNBCapacity,
	AdditionalNeighbourInfoList,
	U-RNTI,
	UnknownU-RNTIIndication,
	HNB-GWResponse



FROM HNBAP-IEs


	ProtocolExtensionContainer{},
	ProtocolIE-ContainerList{},
	ProtocolIE-Container{},
	ProtocolIE-Single-Container{},
	PrivateIE-Container{},
	HNBAP-PRIVATE-IES,
	HNBAP-PROTOCOL-EXTENSION,
	HNBAP-PROTOCOL-IES

FROM HNBAP-Containers

	id-Cause,
	id-CriticalityDiagnostics, 
	id-CSGMembershipStatus,
	id-HNB-Location-Information,
	id-HNB-Identity,
	id-Context-ID,
	id-PLMNidentity,
	id-UE-Identity,
	id-LAC,
	id-RAC,
	id-SAC,
	id-UE-Capabilities,
	id-Registration-Cause,
	id-CellIdentity,
	id-RNC-ID,
	id-CSG-ID,
	id-HNB-Cell-Access-Mode,
	id-BackoffTimer,
	id-Service-Area-For-Broadcast,
	id-MuxPortNumber,
	id-RABList,
	id-HNBConfigInfo,
	id-AccessResult,
	id-Update-cause,
	id-NeighbourInfoList,
	id-NeighbourInfoRequestList,
	id-Iurh-Signalling-TNL-Address,
	id-PSC,
	id-Tunnel-Information,
	id-CELL-FACHMobilitySupport,
	id-S-RNTIPrefix,
	id-URAIdentity,
	id-URAIdentityList,
	id-NeighbourIdentity, 
	id-NeighbourCellIdentityList,
	id-HNBCapacity,
	id-AdditionalNeighbourInfoList,
	id-U-RNTI,
	id-UnknownU-RNTIIndication,
	id-HNB-GWResponse


FROM HNBAP-Constants;

-- **************************************************************
--
-- HNB Register REQUEST
--
-- **************************************************************

HNBRegisterRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {HNBRegisterRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer { {HNBRegisterRequestExtensions} } 	OPTIONAL,
	...
}

HNBRegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-HNB-Identity		CRITICALITY reject	TYPE HNB-Identity	PRESENCE mandatory } |
	{ ID id-HNB-Location-Information CRITICALITY reject	TYPE HNB-Location-Information	PRESENCE mandatory } |
	{ ID id-PLMNidentity		CRITICALITY reject	TYPE PLMNidentity	PRESENCE mandatory } |
	{ ID id-CellIdentity		CRITICALITY reject	TYPE CellIdentity	PRESENCE mandatory } |
	{ ID id-LAC			CRITICALITY reject	TYPE LAC		PRESENCE mandatory } |
	{ ID id-RAC			CRITICALITY reject	TYPE RAC		PRESENCE mandatory } |
	{ ID id-SAC			CRITICALITY reject	TYPE SAC		PRESENCE mandatory } |
	{ ID id-CSG-ID			CRITICALITY reject	TYPE CSG-ID		PRESENCE optional } ,
	...
}

HNBRegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	{ ID id-Service-Area-For-Broadcast	CRITICALITY ignore	EXTENSION SAC			PRESENCE optional }|
	{ ID id-HNB-Cell-Access-Mode		CRITICALITY reject	EXTENSION HNB-Cell-Access-Mode	PRESENCE optional }|
	{ ID id-PSC				CRITICALITY ignore	EXTENSION PSC			PRESENCE optional }|
	{ ID id-Iurh-Signalling-TNL-Address	CRITICALITY ignore	EXTENSION IP-Address		PRESENCE optional }|
	{ ID id-Tunnel-Information		CRITICALITY ignore	EXTENSION Tunnel-Information	PRESENCE optional }|
	{ ID id-CELL-FACHMobilitySupport	CRITICALITY ignore	EXTENSION CELL-FACHMobilitySupport	PRESENCE optional }|
	{ ID id-NeighbourCellIdentityList	CRITICALITY ignore	EXTENSION NeighbourCellIdentityList	PRESENCE optional }|
	{ ID id-URAIdentityList			CRITICALITY ignore	EXTENSION URAIdentityList	PRESENCE optional }|
	{ ID id-HNBCapacity			CRITICALITY ignore	EXTENSION HNBCapacity		PRESENCE optional },
	...
}

-- **************************************************************
--
-- HNB Register Accept
--
-- **************************************************************

HNBRegisterAccept ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {HNBRegisterResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {HNBRegisterResponseExtensions} }	OPTIONAL,
	...
}

HNBRegisterResponseIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-RNC-ID		CRITICALITY reject	TYPE RNC-ID		PRESENCE mandatory },
	...
}

HNBRegisterResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
-- Extension for Release 9 to support CS Multiplexing --
	{ ID id-MuxPortNumber			CRITICALITY ignore	EXTENSION MuxPortNumber		PRESENCE optional}|
	{ ID id-Iurh-Signalling-TNL-Address	CRITICALITY ignore	EXTENSION IP-Address		PRESENCE optional}|
	{ ID id-S-RNTIPrefix			CRITICALITY ignore	EXTENSION S-RNTIPrefix		PRESENCE optional},
	...
}

-- **************************************************************
--
-- HNB Register REJECT
--
-- **************************************************************

HNBRegisterReject ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {HNBRegisterRejectIEs} },
	protocolExtensions	ProtocolExtensionContainer { {HNBRegisterRejectExtensions} } 	OPTIONAL,
	...
}

HNBRegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional } |
	{ ID id-BackoffTimer		CRITICALITY reject	TYPE BackoffTimer		PRESENCE conditional },
	-- This IE shall be present if the Cause IE is set to "Overload".
	...
}

HNBRegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}



-- **************************************************************
--
-- HNB De- Register
--
-- **************************************************************

HNBDe-Register ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {HNBDe-RegisterIEs} },
	protocolExtensions	ProtocolExtensionContainer { {HNBDe-RegisterExtensions} } 	OPTIONAL,
	...
}

HNBDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause		PRESENCE mandatory } |
	{ ID id-BackoffTimer		CRITICALITY reject	TYPE BackoffTimer	PRESENCE conditional },
	-- This IE shall be present if the Cause IE is set to "Overload".
	...
}

HNBDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}


-- **************************************************************
--
-- UE Register REQUEST
--
-- **************************************************************

UERegisterRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {UERegisterRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer { {UERegisterRequestExtensions} } 	OPTIONAL,
	...
}

UERegisterRequestIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-UE-Identity		CRITICALITY reject	TYPE UE-Identity		PRESENCE mandatory } |
	{ ID id-Registration-Cause	CRITICALITY ignore	TYPE Registration-Cause		PRESENCE mandatory } |
	{ ID id-UE-Capabilities		CRITICALITY reject	TYPE UE-Capabilities		PRESENCE mandatory },
	...
}

UERegisterRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- UE Register ACCEPT
--
-- **************************************************************

UERegisterAccept ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UERegisterAcceptIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UERegisterAcceptExtensions} } 	OPTIONAL,
	...
}

UERegisterAcceptIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-UE-Identity	CRITICALITY reject	TYPE UE-Identity	PRESENCE mandatory } |
	{ ID id-Context-ID	CRITICALITY reject	TYPE Context-ID		PRESENCE mandatory },
	...
}


UERegisterAcceptExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	{ ID id-CSGMembershipStatus	CRITICALITY reject	EXTENSION CSGMembershipStatus	PRESENCE optional },
	...
}

-- **************************************************************
--
-- UE Register REJECT
--
-- **************************************************************

UERegisterReject ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UERegisterRejectIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UERegisterRejectExtensions} } OPTIONAL,
	...
}

UERegisterRejectIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-UE-Identity		CRITICALITY reject	TYPE UE-Identity		PRESENCE mandatory } |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory} |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional },
	...
}

UERegisterRejectExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}


-- **************************************************************
--
-- UE De-Register
--
-- **************************************************************

UEDe-Register ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {UEDe-RegisterIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {UEDe-RegisterExtensions} } 	OPTIONAL,
	...
}

UEDe-RegisterIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID	CRITICALITY reject	TYPE Context-ID		PRESENCE mandatory } |
	{ ID id-Cause		CRITICALITY ignore	TYPE Cause		PRESENCE mandatory } ,
	...
}

UEDe-RegisterExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- CSG Membership Update
--
-- **************************************************************

CSGMembershipUpdate ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {CSGMembershipUpdateIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {CSGMembershipUpdateExtensions} } 	OPTIONAL,
	...
}

CSGMembershipUpdateIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID		CRITICALITY reject	TYPE Context-ID			PRESENCE mandatory } |
	{ ID id-CSGMembershipStatus	CRITICALITY reject	TYPE CSGMembershipStatus	PRESENCE mandatory },
	...
}

CSGMembershipUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- TNL Update Request
--
-- **************************************************************

TNLUpdateRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {TNLUpdateRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {TNLUpdateExtensions} } 	OPTIONAL,
	...
}

TNLUpdateRequestIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID	CRITICALITY reject	TYPE Context-ID		PRESENCE mandatory } |
	{ ID id-RABList		CRITICALITY reject	TYPE RABList		PRESENCE mandatory } |
	{ ID id-Update-cause	CRITICALITY reject	TYPE Update-cause	PRESENCE mandatory } ,
		...
}

TNLUpdateExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- TNL UPDATE RESPONSE
--
-- **************************************************************

TNLUpdateResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { TNLUpdateResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { TNLUpdateResponseExtensions} } 	OPTIONAL,
	...
}

TNLUpdateResponseIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID	CRITICALITY reject	TYPE Context-ID		PRESENCE mandatory } ,
		...
}

TNLUpdateResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- TNL UPDATE FAILURE
--
-- **************************************************************

TNLUpdateFailure ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {TNLUpdateFailureIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {TNLUpdateFailureExtensions} } 	OPTIONAL,
	...
}

TNLUpdateFailureIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID		CRITICALITY reject	TYPE Context-ID			PRESENCE mandatory } |
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory } |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional } ,
		...
}

TNLUpdateFailureExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- HNB Configuration Transfer Request
--
-- **************************************************************

HNBConfigTransferRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {HNBConfigTransferRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer { {HNBConfigTransferRequestExtensions} } 	OPTIONAL,
	...
}

HNBConfigTransferRequestIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-NeighbourInfoRequestList	CRITICALITY reject	TYPE NeighbourInfoRequestList	PRESENCE mandatory } ,
	...
}

HNBConfigTransferRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- HNB Configuration Transfer Response
--
-- **************************************************************

HNBConfigTransferResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { { HNBConfigTransferResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer { { HNBConfigTransferResponseExtensions} } 	OPTIONAL,
	...
}

HNBConfigTransferResponseIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-NeighbourInfoList	CRITICALITY reject	TYPE NeighbourInfoList		PRESENCE mandatory } ,
	...
}

HNBConfigTransferResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	{ ID id-AdditionalNeighbourInfoList	CRITICALITY ignore	EXTENSION AdditionalNeighbourInfoList	PRESENCE optional},
	...
}

-- **************************************************************
--
-- RELOCATION COMPLETE
--
-- **************************************************************

RelocationComplete ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ { RelocationCompleteIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ { RelocationCompleteExtensions} } 	OPTIONAL,
	...
}

RelocationCompleteIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Context-ID	CRITICALITY ignore	TYPE Context-ID			PRESENCE mandatory } ,
	...
}


RelocationCompleteExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- ERROR INDICATION
--
-- **************************************************************

ErrorIndication ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container		{ {ErrorIndicationIEs} },
	protocolExtensions	ProtocolExtensionContainer	{ {ErrorIndicationExtensions} } 	OPTIONAL,
	...
}

ErrorIndicationIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-Cause			CRITICALITY ignore	TYPE Cause			PRESENCE mandatory } |
	{ ID id-CriticalityDiagnostics	CRITICALITY ignore	TYPE CriticalityDiagnostics	PRESENCE optional },
		...
}

ErrorIndicationExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- PRIVATE MESSAGE
--
-- **************************************************************

PrivateMessage ::= SEQUENCE {
	privateIEs		PrivateIE-Container  {{PrivateMessage-IEs}},
	...
}

PrivateMessage-IEs HNBAP-PRIVATE-IES ::= {
	...
}

-- **************************************************************
--
-- U-RNTI Query Request
--
-- **************************************************************

U-RNTIQueryRequest ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { {U-RNTIQueryRequestIEs} },
	protocolExtensions	ProtocolExtensionContainer { {U-RNTIQueryRequestExtensions} }	OPTIONAL,
	...
}

U-RNTIQueryRequestIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-U-RNTI		CRITICALITY reject	TYPE U-RNTI			PRESENCE mandatory } ,
	...
}

U-RNTIQueryRequestExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

-- **************************************************************
--
-- U-RNTI Query Response
--
-- **************************************************************

U-RNTIQueryResponse ::= SEQUENCE {
	protocolIEs		ProtocolIE-Container       { { U-RNTIQueryResponseIEs} },
	protocolExtensions	ProtocolExtensionContainer { { U-RNTIQueryResponseExtensions} } 	OPTIONAL,
	...
}

U-RNTIQueryResponseIEs HNBAP-PROTOCOL-IES ::= {
	{ ID id-HNB-GWResponse	CRITICALITY reject	TYPE HNB-GWResponse	PRESENCE mandatory } ,
	...
}

U-RNTIQueryResponseExtensions HNBAP-PROTOCOL-EXTENSION ::= {
	...
}

END
