2 * PASS (Power Aware System Service) - Battery Resource Driver
4 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 * @file resource-battery.c
27 #include <util/common.h>
29 #include <libsyscommon/resource-manager.h>
30 #include <libsyscommon/resource-type.h>
32 #include <resource-monitor/resource-monitor.h>
34 static int battery_get_info(struct syscommon_resman_resource *res,
35 const struct syscommon_resman_resource_attribute *attr,
40 int *val = (int *)data;
42 if (!res || !attr || !data)
46 case BATTERY_ATTR_CAPACITY:
47 path = "/sys/class/power_supply/battery/capacity";
49 case BATTERY_ATTR_TEMPERATURE:
50 path = "/sys/class/power_supply/battery/temp";
52 case BATTERY_ATTR_VOLTAGE_NOW:
53 path = "/sys/class/power_supply/battery/voltage_now";
55 case BATTERY_ATTR_CURRENT_NOW:
56 path = "/sys/class/power_supply/battery/current_now";
58 case BATTERY_ATTR_PRESENT:
59 path = "/sys/class/power_supply/battery/present";
61 case BATTERY_ATTR_ONLINE:
62 path = "/sys/class/power_supply/battery/online";
68 ret = sysfs_get_int(path, val);
75 static int battery_get_status(struct syscommon_resman_resource *res,
76 const struct syscommon_resman_resource_attribute *attr,
79 char *buf = (char *)data;
82 if (!res || !attr || !data)
85 ret = sys_get_str("/sys/class/power_supply/battery/status", buf);
92 static const struct syscommon_resman_resource_attribute battery_attrs[] = {
94 .name = "BATTERY_ATTR_CAPACITY",
95 .id = BATTERY_ATTR_CAPACITY,
96 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
97 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
99 .get = battery_get_info,
102 .name = "BATTERY_ATTR_STATUS",
103 .id = BATTERY_ATTR_STATUS,
104 .type = SYSCOMMON_RESMAN_DATA_TYPE_STRING,
105 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
107 .get = battery_get_status,
110 .name = "BATTERY_ATTR_TEMPERATURE",
111 .id = BATTERY_ATTR_TEMPERATURE,
112 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
113 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
115 .get = battery_get_info,
118 .name = "BATTERY_ATTR_VOLTAGE_NOW",
119 .id = BATTERY_ATTR_VOLTAGE_NOW,
120 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
121 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
123 .get = battery_get_info,
126 .name = "BATTERY_ATTR_CURRENT_NOW",
127 .id = BATTERY_ATTR_CURRENT_NOW,
128 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
129 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
131 .get = battery_get_info,
134 .name = "BATTERY_ATTR_PRESENT",
135 .id = BATTERY_ATTR_PRESENT,
136 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
137 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
139 .get = battery_get_info,
142 .name = "BATTERY_ATTR_ONLINE",
143 .id = BATTERY_ATTR_ONLINE,
144 .type = SYSCOMMON_RESMAN_DATA_TYPE_INT,
145 .flag = SYSCOMMON_RESMAN_RESOURCE_ATTR_FLAG_PUBLIC,
147 .get = battery_get_info,
152 static const struct syscommon_resman_resource_driver battery_resource_driver = {
154 .type = RESOURCE_TYPE_BATTERY,
155 .attrs = battery_attrs,
156 .num_attrs = ARRAY_SIZE(battery_attrs),
158 SYSCOMMON_RESMAN_RESOURCE_DRIVER_REGISTER(&battery_resource_driver)