1/*
2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef HILOG_WRAPPER_H
17#define HILOG_WRAPPER_H
18
19#define CONFIG_HILOG
20#ifdef CONFIG_HILOG
21#include "hilog/log.h"
22namespace OHOS {
23namespace ExternalDeviceManager {
24
25#ifdef EDM_LOGF
26#undef EDM_LOGF
27#endif
28
29#ifdef EDM_LOGE
30#undef EDM_LOGE
31#endif
32
33#ifdef EDM_LOGW
34#undef EDM_LOGW
35#endif
36
37#ifdef EDM_LOGI
38#undef EDM_LOGI
39#endif
40
41#ifdef EDM_LOGD
42#undef EDM_LOGD
43#endif
44
45// 0xD002550: part:ExternalDeviceManager module:Edm.
46constexpr unsigned int BASE_EDM_DOMAIN_ID = 0xD002550;
47
48enum PkgErrCode {
49    PKG_OK = 0,
50    PKG_FAILURE = -1,
51    PKG_RDB_EXECUTE_FAILTURE = -2,
52    PKG_RDB_NO_INIT = -3,
53    PKG_RDB_EMPTY = -4,
54    PKG_PERMISSION_DENIED = -5,
55    PKG_NOP = -6,
56    PKG_OVERFLOW = -7,
57};
58
59// param of log interface, such as EDM_LOGF.
60enum UsbMgrSubModule {
61    MODULE_FRAMEWORK = 0,
62    MODULE_SERVICE,
63    MODULE_DEV_MGR,
64    MODULE_PKG_MGR,
65    MODULE_EA_MGR,
66    MODULE_BUS_USB,
67    MODULE_COMMON,
68    MODULE_USB_DDK,
69    EDM_MODULE_TEST,
70    MODULE_HID_DDK,
71    MODULE_BASE_DDK,
72    EDM_MODULE_BUTT,
73};
74
75enum UsbMgrDomainId {
76    EDM_FRAMEWORK_DOMAIN = BASE_EDM_DOMAIN_ID + MODULE_FRAMEWORK,
77    EDM_SERVICE_DOMAIN,
78    EDM_DEV_MGR_DOMAIN,
79    EDM_PKG_MGR_DOMAIN,
80    EDM_DDK_DOMAIN,
81    EDM_BUTT,
82};
83
84
85static constexpr OHOS::HiviewDFX::HiLogLabel EDM_MGR_LABEL[EDM_MODULE_BUTT] = {
86    { LOG_CORE, EDM_FRAMEWORK_DOMAIN, "EdmFwk" },
87    { LOG_CORE, EDM_SERVICE_DOMAIN, "EdmService" },
88    { LOG_CORE, EDM_DEV_MGR_DOMAIN, "EdmDevMgr" },
89    { LOG_CORE, EDM_PKG_MGR_DOMAIN, "EdmPkgMgr" },
90    { LOG_CORE, EDM_FRAMEWORK_DOMAIN, "EdmEaMgr" },
91    { LOG_CORE, EDM_FRAMEWORK_DOMAIN, "EdmBusUsbMgr" },
92    { LOG_CORE, EDM_FRAMEWORK_DOMAIN, "EdmCommon" },
93    { LOG_CORE, EDM_DDK_DOMAIN, "EdmUsbDdk" },
94    { LOG_CORE, EDM_FRAMEWORK_DOMAIN, "EdmTest" },
95    { LOG_CORE, EDM_DDK_DOMAIN, "EdmHidDdk" },
96    { LOG_CORE, EDM_DDK_DOMAIN, "EdmBaseDdk" },
97};
98
99#ifndef EDM_FILENAME
100#define EDM_FILENAME (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
101#endif
102
103#ifndef EDM_FUNC_FMT
104#define EDM_FUNC_FMT "[%{public}s(%{public}s:%{public}d)]"
105#endif
106
107#ifndef EDM_FUNC_INFO
108#define EDM_FUNC_INFO EDM_FILENAME, __FUNCTION__, __LINE__
109#endif
110
111// In order to improve performance, do not check the module range, module should less than EDM_MODULE_BUTT.
112#define EDM_LOGF(module, fmt, ...) \
113    (void)HILOG_IMPL(LOG_CORE, LOG_FATAL, EDM_MGR_LABEL[module].domain, EDM_MGR_LABEL[module].tag, \
114    EDM_FUNC_FMT fmt, EDM_FUNC_INFO, ##__VA_ARGS__)
115#define EDM_LOGE(module, fmt, ...) \
116    (void)HILOG_IMPL(LOG_CORE, LOG_ERROR, EDM_MGR_LABEL[module].domain, EDM_MGR_LABEL[module].tag, \
117    EDM_FUNC_FMT fmt, EDM_FUNC_INFO, ##__VA_ARGS__)
118#define EDM_LOGW(module, fmt, ...) \
119    (void)HILOG_IMPL(LOG_CORE, LOG_WARN, EDM_MGR_LABEL[module].domain, EDM_MGR_LABEL[module].tag, \
120    EDM_FUNC_FMT fmt, EDM_FUNC_INFO, ##__VA_ARGS__)
121#define EDM_LOGI(module, fmt, ...) \
122    (void)HILOG_IMPL(LOG_CORE, LOG_INFO, EDM_MGR_LABEL[module].domain, EDM_MGR_LABEL[module].tag, \
123    EDM_FUNC_FMT fmt, EDM_FUNC_INFO, ##__VA_ARGS__)
124#define EDM_LOGD(module, fmt, ...) \
125    (void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, EDM_MGR_LABEL[module].domain, EDM_MGR_LABEL[module].tag, \
126    EDM_FUNC_FMT fmt, EDM_FUNC_INFO, ##__VA_ARGS__)
127} // namespace ExternalDeviceManager
128} // namespace OHOS
129
130#else
131
132#define EDM_LOGF(...)
133#define EDM_LOGE(...)
134#define EDM_LOGW(...)
135#define EDM_LOGI(...)
136#define EDM_LOGD(...)
137
138#endif // CONFIG_HILOG
139
140#endif // HILOG_WRAPPER_H
141