[Epic-ID: ODUHIGH-510][Task-ID: ODUHIGH-514] DU-initiated E2 Reset Procedure
[o-du/l2.git] / src / du_app / du_e2ap_mgr.h
diff --git a/src/du_app/du_e2ap_mgr.h b/src/du_app/du_e2ap_mgr.h
new file mode 100644 (file)
index 0000000..9fea513
--- /dev/null
@@ -0,0 +1,128 @@
+/*******************************************************************************
+################################################################################
+#   Copyright (c) [2017-2019] [Radisys]                                        #
+#                                                                              #
+#   Licensed under the Apache License, Version 2.0 (the "License");            #
+#   you may not use this file except in compliance with the License.           #
+#   You may obtain a copy of the License at                                    #
+#                                                                              #
+#       http://www.apache.org/licenses/LICENSE-2.0                             #
+#                                                                              #
+#   Unless required by applicable law or agreed to in writing, software        #
+#   distributed under the License is distributed on an "AS IS" BASIS,          #
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
+#   See the License for the specific language governing permissions and        #
+#   limitations under the License.                                             #
+################################################################################
+*******************************************************************************/
+
+/* This file contains all E2AP message handler related functionality */
+
+#define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */
+
+typedef enum
+{
+   RIC_INITIATED,
+   E2_NODE_INITIATED
+}E2ProcedureDirection;
+
+typedef enum
+{
+   E2_RAN_FUNCTION_ID_INVALID,
+   E2_ACTION_NOT_SUPPORTED,
+   E2_EXECESSIVE_ACTIONS,
+   E2_DUPLICATE_ACTION,
+   E2_DUPLICATE_EVENT_TRIGGER,
+   E2_FUNCTION_RESOURCE_LIMIT,
+   E2_REQUEST_ID_UNKNOWN,
+   E2_INCONSISTENT_ACTION_SUBSEQUENT_ACTION_SEQUENCE,
+   E2_CONTROL_MESSAGE_INVALID,
+   E2_RIC_CALL_PROCESS_ID_INVALID,
+   E2_CONTROL_TIMER_EXPIRED,
+   E2_CONTROL_FAILED_TO_EXECUTE,
+   E2_SYSTEM_NOT_READY,
+   E2_RIC_REQUEST_CAUSE_UNSPECIFIED,
+   E2_RIC_SUBSCRIPTION_END_TIME_EXPIRED,
+   E2_RIC_SUBSCRIPTION_END_TIME_INVALID,
+   E2_DUPLICATE_RIC_REQUEST_ID,
+   E2_EVENT_TRIGGER_NOT_SUPPORTED,
+   E2_REQUEST_INFORMATION_UNAVAILABLE,
+   E2_INVALID_INFORMATION_REQUEST
+}E2CauseRicRequest;
+
+typedef enum
+{
+   E2_RAN_FUNCTION_NOT_SUPPORTED,
+   E2_EXCESSIVE_FUNCTIONS,
+   E2_RIC_RESOURCE_LIMIT,
+}E2CauseRicService;
+
+typedef enum
+{
+   E2_NODE_COMPONENT_UNKNOWN
+}E2CauseE2Node;
+
+typedef enum
+{
+   E2_TRANSPORT_CAUSE_UNSPECIFIED,
+   E2_TRANSPORT_RESOURCE_UNAVAILABLE
+}E2CauseTransport;
+
+typedef enum
+{
+   E2_TRANSFER_SYNTAX_ERROR,
+   E2_ABSTRACT_SYNTAX_ERROR_REJECT,
+   E2_ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY,
+   E2_MESSAGE_NOT_COMPATIBLE_WITH_RECEIVER_STATE,
+   E2_SEMANTIC_ERROR,
+   E2_ABSTRACT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MESSAGE,
+   E2_PROTOCOL_CAUSE_UNSPECIFIED
+}E2CauseProtocol;
+
+typedef enum
+{
+   E2_CONTROL_PROCESSING_OVERLOAD,
+   E2_HARDWARE_FAILURE,
+   E2_OM_INTERVENTION,
+   E2_MISCELLANEOUS_CAUSE_UNSPECIFIED
+}E2CauseMisc;
+
+typedef enum 
+{
+   E2_NOTHING,
+   E2_RIC_REQUEST,
+   E2_RIC_SERVICE,
+   E2_NODE,
+   E2_TRANSPORT,
+   E2_PROTOCOL,
+   E2_MISCELLANEOUS
+}E2CauseType;
+
+typedef uint8_t E2Cause;
+
+typedef struct
+{
+   uint8_t transactionId;
+   uint8_t procedureCode;
+}E2TransInfo;
+
+typedef struct e2apDb
+{
+   uint16_t     ricId;
+   uint8_t      transIdCounter;
+   E2TransInfo  onGoingTransaction[MAX_NUM_TRANSACTION];
+   uint8_t      *plmn;
+   uint32_t     ricReqId;
+   uint32_t     ricInstanceId;
+   uint32_t     ranFuncId;
+   uint8_t     *ricEventTrigger;
+   uint32_t     ricActionId;
+   uint32_t     ricActionType;
+}E2apDb;
+
+uint8_t assignTransactionId();
+uint8_t ResetE2Request(E2ProcedureDirection dir, E2CauseType type, E2Cause cause);
+uint8_t SendE2APMsg(Region region, Pool pool, char *encBuf, int encBufSize);
+/**********************************************************************
+  End of file
+ **********************************************************************/