Adding new commiter to ODU-High repo
[o-du/l2.git] / src / du_app / du_e2_conversions.c
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 functions that maps values received in F1AP message with
20  * its corresponding values used in DU and vice-versa */
21
22 #include "common_def.h"
23 #include "TimeToWaitE2.h"
24 #include "du_app_mac_inf.h"
25 #include "du_e2ap_mgr.h"
26 #include "E2nodeComponentInterfaceType.h"
27
28 /************************************************************************
29  *
30  * @brief Converts enum values into actual value of E2 wait timer
31  *
32  * @details
33  *
34  *    Function : convertE2WaitTimerEnumToValue
35  *
36  *    Functionality: Converts enum values into actual value of E2 wait timer 
37  *
38  * @params[in] Enum value of e2 wait timer 
39  * @return Actual value of e2 wait timer
40  *
41  * **********************************************************************/
42
43 uint8_t convertE2WaitTimerEnumToValue(uint8_t timerToWait)
44 {
45    switch(timerToWait)
46    {
47       case TimeToWaitE2_v1s:
48          return 1;
49          
50       case TimeToWaitE2_v2s:
51          return 2;
52          
53       case TimeToWaitE2_v5s:
54          return 5;
55          
56       case TimeToWaitE2_v10s:
57          return 10;
58          
59       case TimeToWaitE2_v20s:
60          return 20;
61          
62       case TimeToWaitE2_v60s:
63          return 60;
64          
65       default:
66          DU_LOG("\nERROR  -->  F1AP: Invalid value of E2 Wait timer");
67    }
68    return RFAILED;
69 }
70
71 /*******************************************************************
72  *
73  * @brief Converts DU specific failure cause to E2 interface
74  *        failure cause
75  *
76  * @details
77  *
78  *    Function : convertDuCauseToE2Cause
79  *
80  *    Functionality: Converts DU specific failure cause to E2 
81  *       interface failure cause
82  *
83  * @params[in] DU specific failure cause
84  *             E2 specific failure cause
85  *
86  * @return void
87  *
88  * ****************************************************************/
89 void convertDuCauseToE2Cause(CauseOfResult l2Cause, E2FailureCause *failureCause)
90 {
91    switch(l2Cause)
92    {
93       case STATS_ID_NOT_FOUND:
94       case PARAM_INVALID:
95          {
96             failureCause->causeType = E2_RIC_REQUEST;
97             failureCause->cause = E2_ACTION_NOT_SUPPORTED;
98             break;
99          }
100       case RESOURCE_UNAVAILABLE:
101          {
102             failureCause->causeType = E2_RIC_REQUEST;
103             failureCause->cause = E2_FUNCTION_RESOURCE_LIMIT;
104             break;
105          }
106       default:
107          {
108             failureCause->causeType = E2_RIC_REQUEST;
109             failureCause->cause = E2_RIC_REQUEST_CAUSE_UNSPECIFIED;
110             break;
111          }
112    }
113 }
114
115 /************************************************************************
116  *
117  * @brief Converts InterfaceType into E2nodeComponentInterfaceType value 
118  *
119  * @details
120  *
121  *    Function : convertInterfaceToE2ComponentInterfaceType
122  *
123  *    Functionality: Convert InterfaceType into E2nodeComponentInterfaceType
124  *    value
125  *
126  * @params[in] Actual value of interface
127  * @return Enum value of e2 interface
128  *
129  * **********************************************************************/
130
131 uint8_t convertInterfaceToE2ComponentInterfaceType(uint8_t interface)
132 {
133    switch(interface)
134    {
135       case NG:
136          return E2nodeComponentInterfaceType_ng;
137
138       case XN:
139          return E2nodeComponentInterfaceType_xn;
140
141       case E1:
142          return E2nodeComponentInterfaceType_e1;
143
144       case F1:
145          return E2nodeComponentInterfaceType_f1;
146
147       case W1:
148          return E2nodeComponentInterfaceType_w1;
149
150       case S1:
151          return E2nodeComponentInterfaceType_s1;
152
153       case X2:
154          return E2nodeComponentInterfaceType_x2;
155    }
156    return RFAILED;
157 }
158
159 /*******************************************************************
160  *
161  * @brief Converts MAC-specific Measurement type to E2 interface
162  *        specific measurement type
163  *
164  * @details
165  *
166  *    Function : convertMacMeasTypeToE2MeasType
167  *
168  *    Functionality: Converts MAC-specific Measurement type to E2 
169  *       interface specific measurement type
170  *
171  * @params[in] MAC specific measurement type
172  *             E2 interface specific measurement type
173  *
174  * @return uint8_t
175  *
176  * ****************************************************************/
177 uint8_t convertMacMeasTypeToE2MeasType(MacMeasurementType macMeasName, char *e2MeasName)
178 {
179    uint8_t measNameLen = 0;
180
181    switch(macMeasName)
182    {
183       case MAC_DL_TOTAL_PRB_USAGE:
184          {
185             measNameLen = strlen("RRU.PrbTotDl");
186             memcpy(e2MeasName, "RRU.PrbTotDl", measNameLen+1);
187             break;
188          }
189       case MAC_UL_TOTAL_PRB_USAGE:
190          {
191             measNameLen = strlen("RRU.PrbTotUl");
192             memcpy(e2MeasName, "RRU.PrbTotUl", measNameLen+1);
193             break;
194          }
195       default:
196          {
197              DU_LOG("\nERROR  -->  E2AP : MAC mesurement type [%d] not supported", macMeasName);
198              return RFAILED;
199          }
200    }
201    return ROK;
202 }
203
204 /**********************************************************************
205   End of file
206  **********************************************************************/