1d590543dSopenharmony_ci/*
2d590543dSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3d590543dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4d590543dSopenharmony_ci * you may not use this file except in compliance with the License.
5d590543dSopenharmony_ci * You may obtain a copy of the License at
6d590543dSopenharmony_ci *
7d590543dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8d590543dSopenharmony_ci *
9d590543dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10d590543dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11d590543dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12d590543dSopenharmony_ci * See the License for the specific language governing permissions and
13d590543dSopenharmony_ci * limitations under the License.
14d590543dSopenharmony_ci */
15d590543dSopenharmony_ci
16d590543dSopenharmony_ci#ifndef STATS_LOG_H
17d590543dSopenharmony_ci#define STATS_LOG_H
18d590543dSopenharmony_ci
19d590543dSopenharmony_ci#define CONFIG_HILOG
20d590543dSopenharmony_ci#ifdef CONFIG_HILOG
21d590543dSopenharmony_ci
22d590543dSopenharmony_ci#include "hilog/log.h"
23d590543dSopenharmony_ci
24d590543dSopenharmony_cinamespace OHOS {
25d590543dSopenharmony_cinamespace PowerMgr {
26d590543dSopenharmony_ci
27d590543dSopenharmony_ci#ifdef STATS_HILOGF
28d590543dSopenharmony_ci#undef STATS_HILOGF
29d590543dSopenharmony_ci#endif
30d590543dSopenharmony_ci
31d590543dSopenharmony_ci#ifdef STATS_HILOGE
32d590543dSopenharmony_ci#undef STATS_HILOGE
33d590543dSopenharmony_ci#endif
34d590543dSopenharmony_ci
35d590543dSopenharmony_ci#ifdef STATS_HILOGW
36d590543dSopenharmony_ci#undef STATS_HILOGW
37d590543dSopenharmony_ci#endif
38d590543dSopenharmony_ci
39d590543dSopenharmony_ci#ifdef STATS_HILOGI
40d590543dSopenharmony_ci#undef STATS_HILOGI
41d590543dSopenharmony_ci#endif
42d590543dSopenharmony_ci
43d590543dSopenharmony_ci#ifdef STATS_HILOGD
44d590543dSopenharmony_ci#undef STATS_HILOGD
45d590543dSopenharmony_ci#endif
46d590543dSopenharmony_ci
47d590543dSopenharmony_cinamespace {
48d590543dSopenharmony_ci// Battery stats reserved domain id range
49d590543dSopenharmony_ciconstexpr uint32_t STATS_DOMAIN_ID_START = 0xD002960;
50d590543dSopenharmony_ciconstexpr uint32_t STATS_DOMAIN_ID_END = STATS_DOMAIN_ID_START + 32;
51d590543dSopenharmony_ciconstexpr uint32_t TEST_DOMAIN_ID = 0xD000F00;
52d590543dSopenharmony_ci}
53d590543dSopenharmony_ci
54d590543dSopenharmony_cienum BatteryStatsLogLabel {
55d590543dSopenharmony_ci    // Component labels, you can add if needed
56d590543dSopenharmony_ci    COMP_APP = 0,
57d590543dSopenharmony_ci    COMP_FWK = 1,
58d590543dSopenharmony_ci    COMP_SVC = 2,
59d590543dSopenharmony_ci    COMP_HDI = 3,
60d590543dSopenharmony_ci    COMP_DRV = 4,
61d590543dSopenharmony_ci    COMP_UTILS = 5,
62d590543dSopenharmony_ci    // Test label
63d590543dSopenharmony_ci    LABEL_TEST,
64d590543dSopenharmony_ci    // The end of labels, max to the domain id range length 32
65d590543dSopenharmony_ci    LABEL_END,
66d590543dSopenharmony_ci};
67d590543dSopenharmony_ci
68d590543dSopenharmony_cienum BatteryStatsLogDomain {
69d590543dSopenharmony_ci    DOMAIN_APP = STATS_DOMAIN_ID_START + COMP_APP, // 0xD002960
70d590543dSopenharmony_ci    DOMAIN_FRAMEWORK, // 0xD002961
71d590543dSopenharmony_ci    DOMAIN_SERVICE, // 0xD002962
72d590543dSopenharmony_ci    DOMAIN_HDI, // 0xD002963
73d590543dSopenharmony_ci    DOMAIN_DRIVER, // 0xD002964
74d590543dSopenharmony_ci    DOMAIN_UTILS, // 0xD002965
75d590543dSopenharmony_ci    DOMAIN_TEST = TEST_DOMAIN_ID, // 0xD000F00
76d590543dSopenharmony_ci    DOMAIN_END = STATS_DOMAIN_ID_END, // Max to 0xD002980, keep the sequence and length same as BatteryStatsLogLabel
77d590543dSopenharmony_ci};
78d590543dSopenharmony_ci
79d590543dSopenharmony_cistruct BatteryStatsLogLabelDomain {
80d590543dSopenharmony_ci    uint32_t domainId;
81d590543dSopenharmony_ci    const char* tag;
82d590543dSopenharmony_ci};
83d590543dSopenharmony_ci
84d590543dSopenharmony_ci// Keep the sequence and length same as BatteryStatsLogDomain
85d590543dSopenharmony_cistatic const BatteryStatsLogLabelDomain STATS_LABEL[LABEL_END] = {
86d590543dSopenharmony_ci    {DOMAIN_APP,       "StatsApp"},
87d590543dSopenharmony_ci    {DOMAIN_FRAMEWORK, "StatsFwk"},
88d590543dSopenharmony_ci    {DOMAIN_SERVICE,   "StatsSvc"},
89d590543dSopenharmony_ci    {DOMAIN_HDI,       "StatsHdi"},
90d590543dSopenharmony_ci    {DOMAIN_DRIVER,    "StatsDrv"},
91d590543dSopenharmony_ci    {DOMAIN_UTILS,     "StatsUtils"},
92d590543dSopenharmony_ci    {DOMAIN_TEST,      "StatsTest"},
93d590543dSopenharmony_ci};
94d590543dSopenharmony_ci
95d590543dSopenharmony_ci#define STATS_HILOGF(domain, ...) \
96d590543dSopenharmony_ci    ((void)HILOG_IMPL(LOG_CORE, LOG_FATAL, STATS_LABEL[domain].domainId, STATS_LABEL[domain].tag, ##__VA_ARGS__))
97d590543dSopenharmony_ci#define STATS_HILOGE(domain, ...) \
98d590543dSopenharmony_ci    ((void)HILOG_IMPL(LOG_CORE, LOG_ERROR, STATS_LABEL[domain].domainId, STATS_LABEL[domain].tag, ##__VA_ARGS__))
99d590543dSopenharmony_ci#define STATS_HILOGW(domain, ...) \
100d590543dSopenharmony_ci    ((void)HILOG_IMPL(LOG_CORE, LOG_WARN, STATS_LABEL[domain].domainId, STATS_LABEL[domain].tag, ##__VA_ARGS__))
101d590543dSopenharmony_ci#define STATS_HILOGI(domain, ...) \
102d590543dSopenharmony_ci    ((void)HILOG_IMPL(LOG_CORE, LOG_INFO, STATS_LABEL[domain].domainId, STATS_LABEL[domain].tag, ##__VA_ARGS__))
103d590543dSopenharmony_ci#define STATS_HILOGD(domain, ...) \
104d590543dSopenharmony_ci    ((void)HILOG_IMPL(LOG_CORE, LOG_DEBUG, STATS_LABEL[domain].domainId, STATS_LABEL[domain].tag, ##__VA_ARGS__))
105d590543dSopenharmony_ci} // namespace PowerMgr
106d590543dSopenharmony_ci} // namespace OHOS
107d590543dSopenharmony_ci
108d590543dSopenharmony_ci#else
109d590543dSopenharmony_ci
110d590543dSopenharmony_ci#define STATS_HILOGF(...)
111d590543dSopenharmony_ci#define STATS_HILOGE(...)
112d590543dSopenharmony_ci#define STATS_HILOGW(...)
113d590543dSopenharmony_ci#define STATS_HILOGI(...)
114d590543dSopenharmony_ci#define STATS_HILOGD(...)
115d590543dSopenharmony_ci
116d590543dSopenharmony_ci#endif // CONFIG_HILOG
117d590543dSopenharmony_ci
118d590543dSopenharmony_ci#endif // STATS_LOG_H