1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef CHPP_LOG_H_
18 #define CHPP_LOG_H_
19 
20 // Defines CHRE macros that are necessary to compile CHPP (for compilers other
21 // than GCC / clang)
22 #ifndef IS_CHPP_BUILD
23 #define IS_CHPP_BUILD
24 #endif
25 
26 #include "chpp/platform/platform_log.h"
27 #include "chre/util/log_common.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 /*
34  * Log errors if the platform does not supply logging macros.
35  */
36 
37 #ifndef CHPP_LOGE
38 #error "CHPP_LOGE must be defined"
39 #endif  // CHPP_LOGE
40 
41 #ifndef CHPP_LOGW
42 #error "CHPP_LOGW must be defined"
43 #endif  // CHPP_LOGW
44 
45 #ifndef CHPP_LOGI
46 #error "CHPP_LOGI must be defined"
47 #endif  // CHPP_LOGI
48 
49 #ifndef CHPP_LOGD
50 #error "CHPP_LOGD must be defined"
51 #endif  // CHPP_LOGD
52 
53 #ifndef CHPP_MINIMUM_LOG_LEVEL
54 #define CHPP_MINIMUM_LOG_LEVEL CHRE_LOG_LEVEL_DEBUG
55 #endif  // CHPP_MINIMUM_LOG_LEVEL
56 
57 #if CHPP_MINIMUM_LOG_LEVEL < CHRE_LOG_LEVEL_ERROR
58 #undef CHPP_LOGE
59 #define CHPP_LOGE(format, ...) CHRE_LOG_NULL(format, ##__VA_ARGS__)
60 #endif
61 
62 #if CHPP_MINIMUM_LOG_LEVEL < CHRE_LOG_LEVEL_WARN
63 #undef CHPP_LOGW
64 #define CHPP_LOGW(format, ...) CHRE_LOG_NULL(format, ##__VA_ARGS__)
65 #endif
66 
67 #if CHPP_MINIMUM_LOG_LEVEL < CHRE_LOG_LEVEL_INFO
68 #undef CHPP_LOGI
69 #define CHPP_LOGI(format, ...) CHRE_LOG_NULL(format, ##__VA_ARGS__)
70 #endif
71 
72 #if CHPP_MINIMUM_LOG_LEVEL < CHRE_LOG_LEVEL_DEBUG
73 #undef CHPP_LOGD
74 #define CHPP_LOGD(format, ...) CHRE_LOG_NULL(format, ##__VA_ARGS__)
75 #endif
76 
77 /**
78  * Logs an out of memory error with file and line number.
79  */
80 #define CHPP_LOG_OOM() CHPP_LOGE("OOM at %s:%d", __FILE__, __LINE__)
81 
82 #ifdef __cplusplus
83 }
84 #endif
85 
86 #endif  // CHPP_LOG_H_
87