Update to odulow per maintenance bronze
[o-du/phy.git] / fapi_5g / source / utils / nr5g_fapi_log.c
1 /******************************************************************************
2 *
3 *   Copyright (c) 2019 Intel.
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 /**
20  * @file This file defines all the functions used for logging. 
21  *
22  **/
23 #include "nr5g_fapi_std.h"
24 #include "nr5g_fapi_log.h"
25 #include "nr5g_fapi_memory.h"
26
27 nr5g_fapi_log_types_t nr5g_fapi_log_level_g;
28 nr5g_fapi_performance_statistic_t fapi_statis_info_wls_get_dl;
29 nr5g_fapi_performance_statistic_t fapi_statis_info_parse_dl;
30 nr5g_fapi_performance_statistic_t fapi_statis_info_wls_send_dl;
31 nr5g_fapi_performance_statistic_t fapi_statis_info_wls_get_ul;
32 nr5g_fapi_performance_statistic_t fapi_statis_info_parse_ul;
33 nr5g_fapi_performance_statistic_t fapi_statis_info_wls_send_ul;
34 uint64_t tick_total_wls_get_per_tti_dl = 0;
35 uint64_t tick_total_parse_per_tti_dl = 0;
36 uint64_t tick_total_wls_send_per_tti_dl = 0;
37 uint64_t tick_total_wls_get_per_tti_ul = 0;
38 uint64_t tick_total_parse_per_tti_ul = 0;
39 uint64_t tick_total_wls_send_per_tti_ul = 0;
40 uint16_t g_statistic_start_flag = 0;
41
42 //------------------------------------------------------------------------------
43 /** @ingroup        group_lte_source_phy_api
44  *
45  *  @param[in]      FAPI log level
46  *
47  *  @return         String of log type
48  *
49  *  @description    The returns log level sring
50  *
51  **/
52 //------------------------------------------------------------------------------
53 char *get_logger_type_str(
54     nr5g_fapi_log_types_t e)
55 {
56     switch (e) {
57         case INFO_LOG:
58             return ("INFO_LOG");
59
60         case DEBUG_LOG:
61             return ("DEBUG_LOG");
62
63         case ERROR_LOG:
64             return ("ERROR_LOG");
65
66         case TRACE_LOG:
67             return ("TRACE_LOG");
68
69         default:
70             printf("Log Error Type\n");
71             return ("");
72             //case NONE: Should never be reached.
73     }
74 }
75
76 //------------------------------------------------------------------------------
77 /** @ingroup        group_lte_source_phy_api
78  *
79  *  @param[in]      log level
80  *
81  *  @return         void
82  *
83  *  @description    The function sets log level
84  *
85  **/
86 //------------------------------------------------------------------------------
87 void nr5g_fapi_set_log_level(
88     nr5g_fapi_log_types_t new_level)
89 {
90     nr5g_fapi_log_level_g = new_level;
91 }
92
93 //------------------------------------------------------------------------------
94 /** @ingroup        group_lte_source_phy_api
95  *
96  *  @param[in]      void
97  *
98  *  @return         Log level
99  *
100  *  @description    The function returns log level.
101  *
102  **/
103 //------------------------------------------------------------------------------
104 nr5g_fapi_log_types_t nr5g_fapi_get_log_level(
105     )
106 {
107     return nr5g_fapi_log_level_g;
108 }
109 #ifdef STATISTIC_MODE
110 uint16_t nr5g_fapi_statistic_info_set(
111     nr5g_fapi_performance_statistic_t * fapi_statis_info,
112     uint64_t * tick_val_in,
113     uint16_t start_flag)
114 {
115
116     uint64_t tick_val = *tick_val_in;
117     uint64_t cnt = fapi_statis_info->count;
118
119     if (start_flag) {
120         if (cnt) {
121             if (tick_val < fapi_statis_info->min_cycle) {
122                 fapi_statis_info->min_cycle = tick_val;
123             } else if (tick_val > fapi_statis_info->max_cycle) {
124                 fapi_statis_info->max_cycle = tick_val;
125             }
126
127             fapi_statis_info->avg_cycle += tick_val;
128             fapi_statis_info->count++;
129
130         } else {
131             fapi_statis_info->avg_cycle = tick_val;
132             fapi_statis_info->min_cycle = tick_val;
133             fapi_statis_info->max_cycle = tick_val;
134             fapi_statis_info->count++;
135         }
136     }
137     *tick_val_in = 0;
138     return 0;
139 }
140
141 uint16_t nr5g_fapi_statistic_info_set_all(
142     )
143 {
144
145     nr5g_fapi_statistic_info_set(&fapi_statis_info_wls_get_dl,
146         &tick_total_wls_get_per_tti_dl, g_statistic_start_flag);
147     nr5g_fapi_statistic_info_set(&fapi_statis_info_parse_dl,
148         &tick_total_parse_per_tti_dl, g_statistic_start_flag);
149     nr5g_fapi_statistic_info_set(&fapi_statis_info_wls_send_dl,
150         &tick_total_wls_send_per_tti_dl, g_statistic_start_flag);
151     nr5g_fapi_statistic_info_set(&fapi_statis_info_wls_get_ul,
152         &tick_total_wls_get_per_tti_ul, g_statistic_start_flag);
153     nr5g_fapi_statistic_info_set(&fapi_statis_info_parse_ul,
154         &tick_total_parse_per_tti_ul, g_statistic_start_flag);
155     nr5g_fapi_statistic_info_set(&fapi_statis_info_wls_send_ul,
156         &tick_total_wls_send_per_tti_ul, g_statistic_start_flag);
157
158     return 0;
159 }
160
161 uint16_t nr5g_fapi_statistic_info_init(
162     )
163 {
164
165     NR5G_FAPI_MEMSET(&fapi_statis_info_wls_get_dl,
166         sizeof(nr5g_fapi_performance_statistic_t), 0,
167         sizeof(nr5g_fapi_performance_statistic_t));
168     NR5G_FAPI_MEMSET(&fapi_statis_info_parse_dl,
169         sizeof(nr5g_fapi_performance_statistic_t), 0,
170         sizeof(nr5g_fapi_performance_statistic_t));
171     NR5G_FAPI_MEMSET(&fapi_statis_info_wls_send_dl,
172         sizeof(nr5g_fapi_performance_statistic_t), 0,
173         sizeof(nr5g_fapi_performance_statistic_t));
174     NR5G_FAPI_MEMSET(&fapi_statis_info_wls_get_ul,
175         sizeof(nr5g_fapi_performance_statistic_t), 0,
176         sizeof(nr5g_fapi_performance_statistic_t));
177     NR5G_FAPI_MEMSET(&fapi_statis_info_parse_ul,
178         sizeof(nr5g_fapi_performance_statistic_t), 0,
179         sizeof(nr5g_fapi_performance_statistic_t));
180     NR5G_FAPI_MEMSET(&fapi_statis_info_wls_send_ul,
181         sizeof(nr5g_fapi_performance_statistic_t), 0,
182         sizeof(nr5g_fapi_performance_statistic_t));
183     return 0;
184
185 }
186
187 uint16_t nr5g_fapi_statistic_info_print(
188     )
189 {
190
191     printf("\n");
192     printf
193         ("dl wls get Kcycle (count, min, max, avg)   : %d    %9.2f       %9.2f       %9.2f \n",
194         fapi_statis_info_wls_get_dl.count,
195         fapi_statis_info_wls_get_dl.min_cycle / 1000.,
196         fapi_statis_info_wls_get_dl.max_cycle / 1000.,
197         fapi_statis_info_wls_get_dl.avg_cycle /
198         fapi_statis_info_wls_get_dl.count / 1000.);
199     printf
200         ("dl FAPI parse Kcycle (count, min, max, avg): %d    %9.2f       %9.2f       %9.2f \n",
201         fapi_statis_info_parse_dl.count,
202         fapi_statis_info_parse_dl.min_cycle / 1000.,
203         fapi_statis_info_parse_dl.max_cycle / 1000.,
204         fapi_statis_info_parse_dl.avg_cycle / fapi_statis_info_parse_dl.count /
205         1000.);
206     printf
207         ("dl wls send Kcycle(count, min, max, avg)   : %d    %9.2f       %9.2f       %9.2f \n",
208         fapi_statis_info_wls_send_dl.count,
209         fapi_statis_info_wls_send_dl.min_cycle / 1000.,
210         fapi_statis_info_wls_send_dl.max_cycle / 1000.,
211         fapi_statis_info_wls_send_dl.avg_cycle /
212         fapi_statis_info_wls_send_dl.count / 1000.);
213
214     printf
215         ("ul wls get Kcycle(count, min, max, avg)    : %d    %9.2f       %9.2f       %9.2f \n",
216         fapi_statis_info_wls_get_ul.count,
217         fapi_statis_info_wls_get_ul.min_cycle / 1000.,
218         fapi_statis_info_wls_get_ul.max_cycle / 1000.,
219         fapi_statis_info_wls_get_ul.avg_cycle /
220         fapi_statis_info_wls_get_ul.count / 1000.);
221     printf
222         ("ul FAPI parse Kcycle(count, min, max, avg) : %d    %9.2f       %9.2f       %9.2f \n",
223         fapi_statis_info_parse_ul.count,
224         fapi_statis_info_parse_ul.min_cycle / 1000.,
225         fapi_statis_info_parse_ul.max_cycle / 1000.,
226         fapi_statis_info_parse_ul.avg_cycle / fapi_statis_info_parse_ul.count /
227         1000.);
228     printf
229         ("ul wls send Kcycle(count, min, max, avg)   : %d    %9.2f       %9.2f       %9.2f \n",
230         fapi_statis_info_wls_send_ul.count,
231         fapi_statis_info_wls_send_ul.min_cycle / 1000.,
232         fapi_statis_info_wls_send_ul.max_cycle / 1000.,
233         fapi_statis_info_wls_send_ul.avg_cycle /
234         fapi_statis_info_wls_send_ul.count / 1000.);
235     return 0;
236
237 }
238 #else
239 uint16_t nr5g_fapi_statistic_info_set(
240     nr5g_fapi_performance_statistic_t * fapi_statis_info,
241     uint64_t * tick_val_in,
242     uint16_t start_flag)
243 {
244
245     fapi_statis_info->avg_cycle = 0;
246         *tick_val_in = 0;
247         if(start_flag) *tick_val_in = 0;
248         return 0;
249 }
250
251 uint16_t nr5g_fapi_statistic_info_set_all(
252     )
253 {
254
255
256     return 0;
257 }
258
259 uint16_t nr5g_fapi_statistic_info_init(
260     )
261 {
262
263  
264     return 0;
265
266 }
267
268 uint16_t nr5g_fapi_statistic_info_print(
269     )
270 {
271
272     return 0;
273
274 }
275
276 #endif