Support for SBc-AP protocol as used on the MME-CBC interface

This requires a recent libfftranscode (>=0.5) with SBC-AP support.

The asn files are obtained from 3GPP TS 29.168.

Related: osmo-cbc.git Ib278bc1d1a74459814016fef7a8fe21cc29d46c9
Related: docker-playground.git 5f3c78105836d1f2c229655df3f537a73ab6e12a
Change-Id: Ia6743e0a3e7974a5f2dd3ecf74ec331f646f6bc2
Related: OS#4945
diff --git a/library/sbcap/SBC_AP_PDU_Descriptions.asn b/library/sbcap/SBC_AP_PDU_Descriptions.asn
new file mode 100644
index 0000000..fbb80d5
--- /dev/null
+++ b/library/sbcap/SBC_AP_PDU_Descriptions.asn
@@ -0,0 +1,179 @@
+-- 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