[Epic-ID: ODUHIGH-510][Task-ID: ODUHIGH-514] DU-initiated E2 Reset Procedure
[o-du/l2.git] / src / du_app / du_e2ap_mgr.h
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
5 #   Licensed under the Apache License, Version 2.0 (the "License");            #
6 #   you may not use this file except in compliance with the License.           #
7 #   You may obtain a copy of the License at                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
11 #   Unless required by applicable law or agreed to in writing, software        #
12 #   distributed under the License is distributed on an "AS IS" BASIS,          #
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
14 #   See the License for the specific language governing permissions and        #
15 #   limitations under the License.                                             #
16 ################################################################################
17 *******************************************************************************/
18
19 /* This file contains all E2AP message handler related functionality */
20
21 #define MAX_NUM_TRANSACTION 256 /* As per, O-RAN WG3 E2AP v3.0, section 9.2.33 */
22
23 typedef enum
24 {
25    RIC_INITIATED,
26    E2_NODE_INITIATED
27 }E2ProcedureDirection;
28
29 typedef enum
30 {
31    E2_RAN_FUNCTION_ID_INVALID,
32    E2_ACTION_NOT_SUPPORTED,
33    E2_EXECESSIVE_ACTIONS,
34    E2_DUPLICATE_ACTION,
35    E2_DUPLICATE_EVENT_TRIGGER,
36    E2_FUNCTION_RESOURCE_LIMIT,
37    E2_REQUEST_ID_UNKNOWN,
38    E2_INCONSISTENT_ACTION_SUBSEQUENT_ACTION_SEQUENCE,
39    E2_CONTROL_MESSAGE_INVALID,
40    E2_RIC_CALL_PROCESS_ID_INVALID,
41    E2_CONTROL_TIMER_EXPIRED,
42    E2_CONTROL_FAILED_TO_EXECUTE,
43    E2_SYSTEM_NOT_READY,
44    E2_RIC_REQUEST_CAUSE_UNSPECIFIED,
45    E2_RIC_SUBSCRIPTION_END_TIME_EXPIRED,
46    E2_RIC_SUBSCRIPTION_END_TIME_INVALID,
47    E2_DUPLICATE_RIC_REQUEST_ID,
48    E2_EVENT_TRIGGER_NOT_SUPPORTED,
49    E2_REQUEST_INFORMATION_UNAVAILABLE,
50    E2_INVALID_INFORMATION_REQUEST
51 }E2CauseRicRequest;
52
53 typedef enum
54 {
55    E2_RAN_FUNCTION_NOT_SUPPORTED,
56    E2_EXCESSIVE_FUNCTIONS,
57    E2_RIC_RESOURCE_LIMIT,
58 }E2CauseRicService;
59
60 typedef enum
61 {
62    E2_NODE_COMPONENT_UNKNOWN
63 }E2CauseE2Node;
64
65 typedef enum
66 {
67    E2_TRANSPORT_CAUSE_UNSPECIFIED,
68    E2_TRANSPORT_RESOURCE_UNAVAILABLE
69 }E2CauseTransport;
70
71 typedef enum
72 {
73    E2_TRANSFER_SYNTAX_ERROR,
74    E2_ABSTRACT_SYNTAX_ERROR_REJECT,
75    E2_ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY,
76    E2_MESSAGE_NOT_COMPATIBLE_WITH_RECEIVER_STATE,
77    E2_SEMANTIC_ERROR,
78    E2_ABSTRACT_SYNTAX_ERROR_FALSELY_CONSTRUCTED_MESSAGE,
79    E2_PROTOCOL_CAUSE_UNSPECIFIED
80 }E2CauseProtocol;
81
82 typedef enum
83 {
84    E2_CONTROL_PROCESSING_OVERLOAD,
85    E2_HARDWARE_FAILURE,
86    E2_OM_INTERVENTION,
87    E2_MISCELLANEOUS_CAUSE_UNSPECIFIED
88 }E2CauseMisc;
89
90 typedef enum 
91 {
92    E2_NOTHING,
93    E2_RIC_REQUEST,
94    E2_RIC_SERVICE,
95    E2_NODE,
96    E2_TRANSPORT,
97    E2_PROTOCOL,
98    E2_MISCELLANEOUS
99 }E2CauseType;
100
101 typedef uint8_t E2Cause;
102
103 typedef struct
104 {
105    uint8_t transactionId;
106    uint8_t procedureCode;
107 }E2TransInfo;
108
109 typedef struct e2apDb
110 {
111    uint16_t     ricId;
112    uint8_t      transIdCounter;
113    E2TransInfo  onGoingTransaction[MAX_NUM_TRANSACTION];
114    uint8_t      *plmn;
115    uint32_t     ricReqId;
116    uint32_t     ricInstanceId;
117    uint32_t     ranFuncId;
118    uint8_t     *ricEventTrigger;
119    uint32_t     ricActionId;
120    uint32_t     ricActionType;
121 }E2apDb;
122
123 uint8_t assignTransactionId();
124 uint8_t ResetE2Request(E2ProcedureDirection dir, E2CauseType type, E2Cause cause);
125 uint8_t SendE2APMsg(Region region, Pool pool, char *encBuf, int encBufSize);
126 /**********************************************************************
127   End of file
128  **********************************************************************/