1/*
2 * Copyright (c) 2024 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/**
17 * @addtogroup OH_BatteryInfo
18 * @{
19 *
20 * @brief Provides the definition of the C interface for the BatteryInfo module.
21 *
22 * @syscap SystemCapability.PowerManager.BatteryManager.Core
23 * @since 13
24 * @version 1.0
25 */
26/**
27 * @file ohbattery_info.h
28 *
29 * @brief Declares the APIs to get informations about the current battery capacity and the power source type,
30 *        defines strings that identify corresponding common events.
31 *
32 * @library libohbattery_info.so
33 * @kit BasicServicesKit
34 * @syscap SystemCapability.PowerManager.BatteryManager.Core
35 * @since 13
36 * @version 1.0
37 */
38#ifndef OHBATTERY_INFO_HEADER
39#define OHBATTERY_INFO_HEADER
40
41#include <stdint.h>
42
43#ifdef __cplusplus
44extern "C" {
45#endif /* __cplusplus */
46
47/**
48 * @brief A string that identifies the common event sent after battery capacity changes.
49 * @since 13
50 * @version 1.0
51 */
52static const char* COMMON_EVENT_KEY_CAPACITY = "soc";
53/**
54 * @brief A string that identifies the common event sent after charge state changes.
55 * @since 13
56 * @version 1.0
57 */
58static const char* COMMON_EVENT_KEY_CHARGE_STATE = "chargeState";
59/**
60 * @brief A string that identifies the common event sent after plugged type changes.
61 * @since 13
62 * @version 1.0
63 */
64static const char* COMMON_EVENT_KEY_PLUGGED_TYPE = "pluggedType";
65
66/**
67 * @brief Defines plugged types.
68 *
69 * @since 13
70 * @version 1.0
71 */
72typedef enum {
73    /**
74     * Power source is unplugged.
75     */
76    PLUGGED_TYPE_NONE,
77
78    /**
79     * Power source is an AC charger.
80     */
81    PLUGGED_TYPE_AC,
82
83    /**
84     * Power source is a USB DC charger.
85     */
86    PLUGGED_TYPE_USB,
87
88    /**
89     * Power source is wireless charger.
90     */
91    PLUGGED_TYPE_WIRELESS,
92
93    /**
94     * The bottom of the enum.
95     */
96    PLUGGED_TYPE_BUTT
97} BatteryInfo_BatteryPluggedType;
98
99/**
100 * @brief This API returns the current battery capacity.
101 *
102 * @return Returns number betweem 0 and 100.
103 * @syscap SystemCapability.PowerManager.BatteryManager.Core
104 * @since 13
105 */
106int32_t OH_BatteryInfo_GetCapacity();
107
108/**
109 * @brief This API returns the current plugged type.
110 *
111 * @return {@link BatteryInfo_BatteryPluggedType#PLUGGED_TYPE_NONE} if the power source is unplugged.
112 *         {@link PLUGGED_TYPE_AC} if the power source is an AC charger.
113 *         {@link PLUGGED_TYPE_USB} if the power source is an USB DC charger.
114 *         {@link PLUGGED_TYPE_WIRELESS} if the power source is wireless charger.
115 *         {@link PLUGGED_TYPE_BUTT} if the type is unknown.
116 * @syscap SystemCapability.PowerManager.BatteryManager.Core
117 * @since 13
118 */
119BatteryInfo_BatteryPluggedType OH_BatteryInfo_GetPluggedType();
120#ifdef __cplusplus
121}
122#endif /* __cplusplus */
123#endif /* OHBATTERY_INFO_HEADER */
124/** @} */
125