HNBAP, RUA and RANAP protocol codecs

This patch introduces protocol codecs for the HNBAP, RUA and RANAP
protocols, which is mandatory for testing IuCS, IuPS or Iuh in
the future.

As Eclipse TITAN ASN.1 only supports the BER codec and the above
protocols all use APER, we need to use an external transcoder from
APER to BER and vice-versa.  This was implemented using a proprietary
ASN.1 compiler / trnaslator which sysmocom is packaging as
libfftranscode, which is made available as binary package
for Debian 9 at https://ftp.osmocom.org/binaries/libfftranscode/

Related: OS#2856, OS#2857, OS#2858
Change-Id: If4a72de9bc54d6e6a7daaca78a4d4aa5684203a5
diff --git a/library/rua/RUA_PDU_Descriptions.asn b/library/rua/RUA_PDU_Descriptions.asn
new file mode 100644
index 0000000..7220b28
--- /dev/null
+++ b/library/rua/RUA_PDU_Descriptions.asn
@@ -0,0 +1,176 @@
+-- RUA-PDU-Descriptions.asn
+--
+-- 3GPP TS 25.468 V9.1.0 (2010-03)
+-- http://www.3gpp.org/ftp/Specs/html-info/25468.htm
+--
+-- 9.3.2	Elementary Procedure definitions
+--
+
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+
+RUA-PDU-Descriptions  { 
+itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) 
+umts-Access (20) modules (3) rua(5) version1 (1) rUA-PDU-Descriptions (0)}
+
+DEFINITIONS AUTOMATIC TAGS ::= 
+
+BEGIN
+
+-- **************************************************************
+--
+-- IE parameter types from other modules.
+--
+-- **************************************************************
+
+IMPORTS
+	Criticality,
+	ProcedureCode
+FROM RUA-CommonDataTypes
+	Connect,
+	DirectTransfer,
+	Disconnect,
+	ConnectionlessTransfer,		
+	ErrorIndication,
+	PrivateMessage
+
+
+FROM RUA-PDU-Contents
+	id-Connect,
+	id-DirectTransfer,
+	id-Disconnect,
+	id-ConnectionlessTransfer,
+	id-ErrorIndication,
+	id-privateMessage
+FROM RUA-Constants;
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure Class
+--
+-- **************************************************************
+
+RUA-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
+--
+-- **************************************************************
+
+RUA-PDU ::= CHOICE {
+	initiatingMessage		InitiatingMessage,
+	successfulOutcome		SuccessfulOutcome,
+	unsuccessfulOutcome		UnsuccessfulOutcome,
+	...
+}
+
+
+InitiatingMessage ::= SEQUENCE {
+	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode		({RUA-ELEMENTARY-PROCEDURES}),
+	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality		({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			RUA-ELEMENTARY-PROCEDURE.&InitiatingMessage	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+SuccessfulOutcome ::= SEQUENCE {
+	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode		({RUA-ELEMENTARY-PROCEDURES}),
+	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality		({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			RUA-ELEMENTARY-PROCEDURE.&SuccessfulOutcome	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+UnsuccessfulOutcome ::= SEQUENCE {
+	procedureCode	RUA-ELEMENTARY-PROCEDURE.&procedureCode			({RUA-ELEMENTARY-PROCEDURES}),
+	criticality		RUA-ELEMENTARY-PROCEDURE.&criticality			({RUA-ELEMENTARY-PROCEDURES}{@procedureCode}),
+	value			RUA-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome	({RUA-ELEMENTARY-PROCEDURES}{@procedureCode})
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedure List
+--
+-- **************************************************************
+
+RUA-ELEMENTARY-PROCEDURES RUA-ELEMENTARY-PROCEDURE ::= {
+	RUA-ELEMENTARY-PROCEDURES-CLASS-1	|
+	RUA-ELEMENTARY-PROCEDURES-CLASS-2	,
+	...
+}
+
+RUA-ELEMENTARY-PROCEDURES-CLASS-1 RUA-ELEMENTARY-PROCEDURE ::= {
+	...
+}
+
+
+RUA-ELEMENTARY-PROCEDURES-CLASS-2 RUA-ELEMENTARY-PROCEDURE ::= {
+	connectionRequest |
+	directTransfer |
+	disconnectRequest |
+	connectionlessTransfer |	
+	errorIndication |
+	privateMessage,
+	...
+}
+
+-- **************************************************************
+--
+-- Interface Elementary Procedures
+--
+-- **************************************************************
+
+
+connectionRequest RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		Connect
+	PROCEDURE CODE			id-Connect
+	CRITICALITY				ignore
+}
+
+directTransfer RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		DirectTransfer
+	PROCEDURE CODE			id-DirectTransfer
+	CRITICALITY				ignore
+}
+
+disconnectRequest RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		Disconnect
+	PROCEDURE CODE			id-Disconnect
+	CRITICALITY				ignore
+}
+connectionlessTransfer RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ConnectionlessTransfer
+	PROCEDURE CODE			id-ConnectionlessTransfer
+	CRITICALITY				ignore
+}
+
+errorIndication RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		ErrorIndication
+	PROCEDURE CODE			id-ErrorIndication
+	CRITICALITY				ignore
+}
+
+privateMessage RUA-ELEMENTARY-PROCEDURE ::= {
+	INITIATING MESSAGE		PrivateMessage
+	PROCEDURE CODE			id-privateMessage
+	CRITICALITY				ignore
+}
+
+
+END
+
+