1/*
2 * Copyright (c) 2021 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 USB {
24#define USBFILENAME (__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__)
25
26#ifdef USB_HILOGF
27#undef USB_HILOGF
28#endif
29
30#ifdef USB_HILOGE
31#undef USB_HILOGE
32#endif
33
34#ifdef USB_HILOGW
35#undef USB_HILOGW
36#endif
37
38#ifdef USB_HILOGI
39#undef USB_HILOGI
40#endif
41
42#ifdef USB_HILOGD
43#undef USB_HILOGD
44#endif
45
46struct UsbLable {
47    uint32_t domainId;
48    const char* tag;
49};
50
51// param of log interface, such as USB_HILOGF.
52enum UsbMgrSubModule {
53    MODULE_INNERKIT = 0,
54    MODULE_SERVICE,
55    MODULE_USB_INNERKIT, // below used by usb service
56    MODULE_USB_SERVICE,
57    MODULE_USBD,
58    MODULE_COMMON,
59    MODULE_JS_NAPI,
60    MODULE_JAVAKIT, // java kit used, define to avoid repeat used domain
61    MODULE_JNI,
62    USBMGR_MODULE_BUTT,
63};
64
65// 0xD002900: subsystem:Usb module:Usb, reserved 8 bit.
66constexpr unsigned int BASE_USB_DOMAIN_ID = 0xD002A00;
67
68enum UsbMgrDomainId {
69    USBMGR_INNERKIT_DOMAIN = BASE_USB_DOMAIN_ID + MODULE_INNERKIT + 1,
70    USBMGR_SERVICE_DOMAIN, //0xD002A02
71    USB_INNERKIT_DOMAIN,   //0xD002A03
72    USB_SERVICE_DOMAIN,    //0xD002A04
73    USBD_DOMAIN,           //0xD002A05
74    COMMON_DOMAIN,         //0xD002A06
75    USB_JS_NAPI,           //0xD002A07
76    USBMGR_JAVAKIT_DOMAIN,
77    USB_BUTT,
78};
79
80static const UsbLable USB_MGR_LABEL[USBMGR_MODULE_BUTT] = {
81    {USBMGR_INNERKIT_DOMAIN, "UsbMgrClient"},
82    {USBMGR_SERVICE_DOMAIN, "UsbMgrService"},
83    {USB_INNERKIT_DOMAIN, "UsbSrvClient"},
84    {USB_SERVICE_DOMAIN, "UsbService"},
85    {USBD_DOMAIN, "Usbd"},
86    {COMMON_DOMAIN, "UsbMgrCommon"},
87    {USB_JS_NAPI, "UsbMgrJSNAPI"},
88    {USBMGR_JAVAKIT_DOMAIN, "UsbMgrJavaService"},
89    {USBMGR_INNERKIT_DOMAIN, "UsbMgrJni"},
90};
91
92// In order to improve performance, do not check the module range, module should less than USBMGR_MODULE_BUTT.
93#define USB_HILOGF(module, ...) \
94    ((void)HILOG_IMPL(LOG_CORE, LOG_FATAL, USB_MGR_LABEL[module].domainId, USB_MGR_LABEL[module].tag, ##__VA_ARGS__))
95#define USB_HILOGE(module, ...) \
96    ((void)HILOG_IMPL(LOG_CORE, LOG_ERROR, USB_MGR_LABEL[module].domainId, USB_MGR_LABEL[module].tag, ##__VA_ARGS__))
97#define USB_HILOGW(module, ...) \
98    ((void)HILOG_IMPL(LOG_CORE, LOG_WARN, USB_MGR_LABEL[module].domainId, USB_MGR_LABEL[module].tag, ##__VA_ARGS__))
99#define USB_HILOGI(module, ...) \
100    ((void)HILOG_IMPL(LOG_CORE, LOG_INFO, USB_MGR_LABEL[module].domainId, USB_MGR_LABEL[module].tag, ##__VA_ARGS__))
101#define USB_HILOGD(module, ...) \
102    ((void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, USB_MGR_LABEL[module].domainId, USB_MGR_LABEL[module].tag, ##__VA_ARGS__))
103} // namespace USB
104} // namespace OHOS
105
106#else
107
108#define USB_HILOGF(...)
109#define USB_HILOGE(...)
110#define USB_HILOGW(...)
111#define USB_HILOGI(...)
112#define USB_HILOGD(...)
113
114#endif // CONFIG_HILOG
115
116#endif // HILOG_WRAPPER_H
117