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