• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 POWER_LOG_H
17 #define POWER_LOG_H
18 
19 #define CONFIG_HILOG
20 #ifdef CONFIG_HILOG
21 
22 #include "hilog/log.h"
23 
24 namespace OHOS {
25 namespace PowerMgr {
26 
27 #ifdef POWER_HILOGF
28 #undef POWER_HILOGF
29 #endif
30 
31 #ifdef POWER_HILOGE
32 #undef POWER_HILOGE
33 #endif
34 
35 #ifdef POWER_HILOGW
36 #undef POWER_HILOGW
37 #endif
38 
39 #ifdef POWER_HILOGI
40 #undef POWER_HILOGI
41 #endif
42 
43 #ifdef POWER_HILOGD
44 #undef POWER_HILOGD
45 #endif
46 
47 namespace {
48 // Power manager reserved domain id range
49 constexpr unsigned int POWER_DOMAIN_ID_START = 0xD002900;
50 constexpr unsigned int POWER_DOMAIN_ID_END = POWER_DOMAIN_ID_START + 32;
51 constexpr unsigned int TEST_DOMAIN_ID = 0xD000F00;
52 }
53 
54 enum PowerManagerLogLabel {
55     // Component labels, you can add if needed
56     COMP_APP = 0,
57     COMP_FWK = 1,
58     COMP_SVC = 2,
59     COMP_HDI = 3,
60     COMP_DRV = 4,
61     COMP_UTILS = 5,
62     // Feature labels, use to mark major features
63     FEATURE_WAKEUP,
64 #ifdef POWER_MANAGER_WAKEUP_ACTION
65     FEATURE_WAKEUP_ACTION,
66 #endif
67     FEATURE_SUSPEND,
68     FEATURE_RUNNING_LOCK,
69     FEATURE_ACTIVITY,
70     FEATURE_POWER_STATE,
71     FEATURE_POWER_MODE,
72     FEATURE_SHUTDOWN,
73     FEATURE_INPUT,
74     // Test label
75     LABEL_TEST,
76     // The end of labels, max to the domain id range length 32
77     LABEL_END,
78 };
79 
80 enum PowerManagerLogDomain {
81     DOMAIN_APP = POWER_DOMAIN_ID_START + COMP_APP, // 0xD002900
82     DOMAIN_FRAMEWORK, // 0xD002901
83     DOMAIN_SERVICE, // 0xD002902
84     DOMAIN_HDI, // 0xD002903
85     DOMAIN_DRIVER, // 0xD002904
86     DOMAIN_UTILS, // 0xD002905
87     DOMAIN_FEATURE_WAKEUP,
88 #ifdef POWER_MANAGER_WAKEUP_ACTION
89     DOMAIN_FEATURE_WAKEUP_ACTION,
90 #endif
91     DOMAIN_FEATURE_SUSPEND,
92     DOMAIN_FEATURE_RUNNING_LOCK,
93     DOMAIN_FEATURE_ACTIVITY,
94     DOMAIN_FEATURE_POWER_STATE,
95     DOMAIN_FEATURE_POWER_MODE,
96     DOMAIN_FEATURE_SHUTDOWN,
97     DOMAIN_FEATURE_INPUT,
98     DOMAIN_TEST = TEST_DOMAIN_ID, // 0xD000F00
99     DOMAIN_END = POWER_DOMAIN_ID_END, // Max to 0xD002920, keep the sequence and length same as PowerManagerLogLabel
100 };
101 
102 struct PowerManagerLogLabelDomain {
103     uint32_t domainId;
104     const char* tag;
105 };
106 
107 // Keep the sequence and length same as PowerManagerLogDomain
108 static const PowerManagerLogLabelDomain POWER_LABEL[LABEL_END] = {
109     {DOMAIN_APP,                  "PowerApp"},
110     {DOMAIN_FRAMEWORK,            "PowerFwk"},
111     {DOMAIN_SERVICE,              "PowerSvc"},
112     {DOMAIN_HDI,                  "PowerHdi"},
113     {DOMAIN_DRIVER,               "PowerDrv"},
114     {DOMAIN_UTILS,                "PowerUtils"},
115     {DOMAIN_FEATURE_WAKEUP,       "PowerWakeup"},
116 #ifdef POWER_MANAGER_WAKEUP_ACTION
117     {DOMAIN_FEATURE_WAKEUP_ACTION,       "PowerWakeupAction"},
118 #endif
119     {DOMAIN_FEATURE_SUSPEND,      "PowerSuspend"},
120     {DOMAIN_FEATURE_RUNNING_LOCK, "PowerRunningLock"},
121     {DOMAIN_FEATURE_ACTIVITY,     "PowerActivity"},
122     {DOMAIN_FEATURE_POWER_STATE,  "PowerState"},
123     {DOMAIN_FEATURE_POWER_MODE,   "PowerMode"},
124     {DOMAIN_FEATURE_SHUTDOWN,     "PowerShutdown"},
125     {DOMAIN_FEATURE_INPUT,        "PowerInput"},
126     {DOMAIN_TEST,                 "PowerTest"},
127 };
128 
129 #define POWER_HILOGF(domain, ...) \
130     ((void)HILOG_IMPL(LOG_CORE, LOG_FATAL, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__))
131 #define POWER_HILOGE(domain, ...) \
132     ((void)HILOG_IMPL(LOG_CORE, LOG_ERROR, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__))
133 #define POWER_HILOGW(domain, ...) \
134     ((void)HILOG_IMPL(LOG_CORE, LOG_WARN, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__))
135 #define POWER_HILOGI(domain, ...) \
136     ((void)HILOG_IMPL(LOG_CORE, LOG_INFO, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__))
137 #define POWER_HILOGD(domain, ...) \
138     ((void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, POWER_LABEL[domain].domainId, POWER_LABEL[domain].tag, ##__VA_ARGS__))
139 
140 } // namespace PowerMgr
141 } // namespace OHOS
142 
143 #else
144 
145 #define POWER_HILOGF(...)
146 #define POWER_HILOGE(...)
147 #define POWER_HILOGW(...)
148 #define POWER_HILOGI(...)
149 #define POWER_HILOGD(...)
150 
151 #endif // CONFIG_HILOG
152 
153 #endif // POWER_LOG_H
154