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"
22 namespace OHOS {
23 namespace 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 
46 struct UsbLable {
47     uint32_t domainId;
48     const char* tag;
49 };
50 
51 // param of log interface, such as USB_HILOGF.
52 enum 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.
66 constexpr unsigned int BASE_USB_DOMAIN_ID = 0xD002A00;
67 
68 enum 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 
80 static 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