-- SBC-AP-PDU-Descriptions.asn
--
-- Taken from 3GPP TS 29.168 V15.1.0 (2018-09)
-- http://www.3gpp.org/ftp/Specs/archive/29_series/29.168/29168-930.zip
--
-- 4.4.3	Elementary Procedure Definitions
--

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

SBC-AP-PDU-Descriptions {
itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
eps-Access (21) modules (3) sbc-AP (3) version1 (1) sbc-AP-PDU-Descriptions (0)}

DEFINITIONS AUTOMATIC TAGS ::= 

BEGIN

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

IMPORTS
	Criticality,
	ProcedureCode
FROM SBC-AP-CommonDataTypes

	Write-Replace-Warning-Request,
	Write-Replace-Warning-Response,
	Stop-Warning-Request,
	Stop-Warning-Response,
	Error-Indication,
	Write-Replace-Warning-Indication,
	Stop-Warning-Indication,
	PWS-Restart-Indication,
	PWS-Failure-Indication
FROM SBC-AP-PDU-Contents

	id-Write-Replace-Warning, 
	id-Stop-Warning,
	id-Error-Indication,
	id-Write-Replace-Warning-Indication,
	id-Stop-Warning-Indication,
	id-PWS-Restart-Indication,
	id-PWS-Failure-Indication
FROM SBC-AP-Constants;

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

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

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

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

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

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

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

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

SBC-AP-ELEMENTARY-PROCEDURES-CLASS-1 SBC-AP-ELEMENTARY-PROCEDURE ::= {
	write-Replace-Warning 	|
	stop-Warning	,
	...
}

SBC-AP-ELEMENTARY-PROCEDURES-CLASS-2 SBC-AP-ELEMENTARY-PROCEDURE ::= {
	error-Indication	|
	write-Replace-Warning-Indication	|
	stop-Warning-Indication	|
	pws-Restart-Indication |
	pws-Failure-Indication,
	...
	}

write-Replace-Warning SBC-AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	Write-Replace-Warning-Request
	SUCCESSFUL OUTCOME	Write-Replace-Warning-Response
	
	PROCEDURE CODE	id-Write-Replace-Warning
	CRITICALITY	reject
}

stop-Warning SBC-AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	Stop-Warning-Request
	SUCCESSFUL OUTCOME	Stop-Warning-Response
	
	PROCEDURE CODE	id-Stop-Warning
	CRITICALITY	reject
}

error-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	Error-Indication
	PROCEDURE CODE	id-Error-Indication
	CRITICALITY	ignore
}

write-Replace-Warning-Indication SBC-AP-ELEMENTARY-PROCEDURE	::= {
	INITIATING MESSAGE	Write-Replace-Warning-Indication
	PROCEDURE CODE	id-Write-Replace-Warning-Indication
	CRITICALITY	ignore
}

stop-Warning-Indication SBC-AP-ELEMENTARY-PROCEDURE	::= {
	INITIATING MESSAGE	Stop-Warning-Indication
	PROCEDURE CODE	id-Stop-Warning-Indication
	CRITICALITY	ignore
}

pws-Restart-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	PWS-Restart-Indication
	PROCEDURE CODE	id-PWS-Restart-Indication
	CRITICALITY	ignore
}

pws-Failure-Indication SBC-AP-ELEMENTARY-PROCEDURE ::= {
	INITIATING MESSAGE	PWS-Failure-Indication
	PROCEDURE CODE	id-PWS-Failure-Indication
	CRITICALITY	ignore
}

END
