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/hnbap/HNBAP_PDU_Descriptions.asn b/library/hnbap/HNBAP_PDU_Descriptions.asn
new file mode 100644
index 0000000..514d451
--- /dev/null
+++ b/library/hnbap/HNBAP_PDU_Descriptions.asn
@@ -0,0 +1,231 @@
+-- HNBAP-PDU-Descriptions.asn
+--
+-- 3GPP TS 25.469 V10.1.0 (2011-06)
+-- http://www.3gpp.org/ftp/Specs/html-info/25469.htm
+--
+-- 9.3.2 Elementary Procedure definitions
+--
+
+-- **************************************************************
+--
+-- Elementary Procedure definitions
+--
+-- **************************************************************
+-- **************************************************************
+-- **************************************************************
+--
+-- 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
+
+
+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
+
+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
+}
+
+
+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
+}
+
+privateMessage HNBAP-ELEMENTARY-PROCEDURE ::= {
+ INITIATING MESSAGE PrivateMessage
+ PROCEDURE CODE id-privateMessage
+ CRITICALITY ignore
+}
+
+END