Zephyr Project API  3.4.0
A Scalable Open Source RTOS
fuel_gauge.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Google LLC
3 * Copyright 2023 Microsoft Corporation
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
8#ifndef ZEPHYR_INCLUDE_DRIVERS_BATTERY_H_
9#define ZEPHYR_INCLUDE_DRIVERS_BATTERY_H_
10
18#ifdef __cplusplus
19extern "C" {
20#endif /* __cplusplus */
21
22#include <errno.h>
23#include <stdbool.h>
24#include <stddef.h>
25#include <stdint.h>
26
27#include <zephyr/device.h>
28
29/* Keep these alphabetized wrt property name */
30
40
101
109
112};
113
115
119
122
124 union {
125 /* Fields have the format: */
126 /* FUEL_GAUGE_PROPERTY_FIELD */
127 /* type property_field; */
128
129 /* Dynamic Battery Info */
133 bool cutoff;
183};
184
188
191
193 union {
194 /* Fields have the format: */
195 /* FUEL_GAUGE_PROPERTY_FIELD */
196 /* type property_field; */
197
198 /* Writable Dynamic Battery Info */
210};
211
216
219};
220
224#define SBS_GAUGE_MANUFACTURER_NAME_MAX_SIZE 20
225#define SBS_GAUGE_DEVICE_NAME_MAX_SIZE 20
226#define SBS_GAUGE_DEVICE_CHEMISTRY_MAX_SIZE 4
227
231} __packed;
232
236} __packed;
237
241} __packed;
242
249typedef int (*fuel_gauge_get_property_t)(const struct device *dev,
250 struct fuel_gauge_get_property *props, size_t props_len);
251
258typedef int (*fuel_gauge_set_property_t)(const struct device *dev,
259 struct fuel_gauge_set_property *props, size_t props_len);
260
267typedef int (*fuel_gauge_get_buffer_property_t)(const struct device *dev,
269 void *dst, size_t dst_len);
270
271
272/* Caching is entirely on the onus of the client */
273
274__subsystem struct fuel_gauge_driver_api {
278};
279
293__syscall int fuel_gauge_get_prop(const struct device *dev, struct fuel_gauge_get_property *props,
294 size_t props_len);
295
296static inline int z_impl_fuel_gauge_get_prop(const struct device *dev,
297 struct fuel_gauge_get_property *props,
298 size_t props_len)
299{
300 const struct fuel_gauge_driver_api *api = (const struct fuel_gauge_driver_api *)dev->api;
301
302 if (api->get_property == NULL) {
303 return -ENOSYS;
304 }
305
306 return api->get_property(dev, props, props_len);
307}
308
321__syscall int fuel_gauge_set_prop(const struct device *dev, struct fuel_gauge_set_property *props,
322 size_t props_len);
323
324static inline int z_impl_fuel_gauge_set_prop(const struct device *dev,
325 struct fuel_gauge_set_property *props,
326 size_t props_len)
327{
328 const struct fuel_gauge_driver_api *api = (const struct fuel_gauge_driver_api *)dev->api;
329
330 if (api->set_property == NULL) {
331 return -ENOSYS;
332 }
333
334 return api->set_property(dev, props, props_len);
335}
336
349__syscall int fuel_gauge_get_buffer_prop(const struct device *dev,
350 struct fuel_gauge_get_buffer_property *prop, void *dst,
351 size_t dst_len);
352
353static inline int z_impl_fuel_gauge_get_buffer_prop(const struct device *dev,
355 void *dst, size_t dst_len)
356{
357 const struct fuel_gauge_driver_api *api = (const struct fuel_gauge_driver_api *)dev->api;
358
359 if (api->get_buffer_property == NULL) {
360 return -ENOSYS;
361 }
362
363 return api->get_buffer_property(dev, prop, dst, dst_len);
364}
365
370#ifdef __cplusplus
371}
372#endif /* __cplusplus */
373
374#include <syscalls/fuel_gauge.h>
375
376#endif /* ZEPHYR_INCLUDE_DRIVERS_BATTERY_H_ */
System error numbers.
#define SBS_GAUGE_DEVICE_NAME_MAX_SIZE
Definition: fuel_gauge.h:225
fuel_gauge_property
Definition: fuel_gauge.h:31
int(* fuel_gauge_set_property_t)(const struct device *dev, struct fuel_gauge_set_property *props, size_t props_len)
Callback API for setting a fuel_gauge property.
Definition: fuel_gauge.h:258
uint16_t fuel_gauge_prop_t
Definition: fuel_gauge.h:114
int fuel_gauge_get_buffer_prop(const struct device *dev, struct fuel_gauge_get_buffer_property *prop, void *dst, size_t dst_len)
Fetch a battery fuel-gauge buffer property.
#define SBS_GAUGE_MANUFACTURER_NAME_MAX_SIZE
Definition: fuel_gauge.h:224
int fuel_gauge_get_prop(const struct device *dev, struct fuel_gauge_get_property *props, size_t props_len)
Fetch a battery fuel-gauge property.
int(* fuel_gauge_get_property_t)(const struct device *dev, struct fuel_gauge_get_property *props, size_t props_len)
Callback API for getting a fuel_gauge property.
Definition: fuel_gauge.h:249
int(* fuel_gauge_get_buffer_property_t)(const struct device *dev, struct fuel_gauge_get_buffer_property *prop, void *dst, size_t dst_len)
Callback API for getting a fuel_gauge buffer property.
Definition: fuel_gauge.h:267
int fuel_gauge_set_prop(const struct device *dev, struct fuel_gauge_set_property *props, size_t props_len)
Set a battery fuel-gauge property.
#define SBS_GAUGE_DEVICE_CHEMISTRY_MAX_SIZE
Definition: fuel_gauge.h:226
@ FUEL_GAUGE_CURRENT
Definition: fuel_gauge.h:42
@ FUEL_GAUGE_STATUS
Definition: fuel_gauge.h:78
@ FUEL_GAUGE_SBS_MFR_ACCESS
Definition: fuel_gauge.h:62
@ FUEL_GAUGE_CONNECT_STATE
Definition: fuel_gauge.h:48
@ FUEL_GAUGE_FLAGS
Definition: fuel_gauge.h:50
@ FUEL_GAUGE_CYCLE_COUNT
Definition: fuel_gauge.h:46
@ FUEL_GAUGE_COMMON_COUNT
Definition: fuel_gauge.h:103
@ FUEL_GAUGE_MANUFACTURER_NAME
Definition: fuel_gauge.h:96
@ FUEL_GAUGE_SBS_MODE
Definition: fuel_gauge.h:72
@ FUEL_GAUGE_SBS_ATRATE
Definition: fuel_gauge.h:84
@ FUEL_GAUGE_DESIGN_VOLTAGE
Definition: fuel_gauge.h:82
@ FUEL_GAUGE_AVG_CURRENT
Definition: fuel_gauge.h:39
@ FUEL_GAUGE_RUNTIME_TO_FULL
Definition: fuel_gauge.h:60
@ FUEL_GAUGE_CHARGE_CURRENT
Definition: fuel_gauge.h:74
@ FUEL_GAUGE_CUSTOM_BEGIN
Definition: fuel_gauge.h:108
@ FUEL_GAUGE_DEVICE_CHEMISTRY
Definition: fuel_gauge.h:100
@ FUEL_GAUGE_PROP_MAX
Definition: fuel_gauge.h:111
@ FUEL_GAUGE_SBS_ATRATE_TIME_TO_EMPTY
Definition: fuel_gauge.h:88
@ FUEL_GAUGE_DESIGN_CAPACITY
Definition: fuel_gauge.h:80
@ FUEL_GAUGE_VOLTAGE
Definition: fuel_gauge.h:70
@ FUEL_GAUGE_SBS_REMAINING_TIME_ALARM
Definition: fuel_gauge.h:94
@ FUEL_GAUGE_CHARGE_CUTOFF
Definition: fuel_gauge.h:44
@ FUEL_GAUGE_CHARGE_VOLTAGE
Definition: fuel_gauge.h:76
@ FUEL_GAUGE_ABSOLUTE_STATE_OF_CHARGE
Definition: fuel_gauge.h:64
@ FUEL_GAUGE_DEVICE_NAME
Definition: fuel_gauge.h:98
@ FUEL_GAUGE_SBS_ATRATE_TIME_TO_FULL
Definition: fuel_gauge.h:86
@ FUEL_GAUGE_TEMPERATURE
Definition: fuel_gauge.h:68
@ FUEL_GAUGE_FULL_CHARGE_CAPACITY
Definition: fuel_gauge.h:52
@ FUEL_GAUGE_RUNTIME_TO_EMPTY
Definition: fuel_gauge.h:58
@ FUEL_GAUGE_PRESENT_STATE
Definition: fuel_gauge.h:54
@ FUEL_GAUGE_REMAINING_CAPACITY
Definition: fuel_gauge.h:56
@ FUEL_GAUGE_SBS_REMAINING_CAPACITY_ALARM
Definition: fuel_gauge.h:92
@ FUEL_GAUGE_RELATIVE_STATE_OF_CHARGE
Definition: fuel_gauge.h:66
@ FUEL_GAUGE_SBS_ATRATE_OK
Definition: fuel_gauge.h:90
#define ENOSYS
Definition: errno.h:83
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
#define UINT16_MAX
Definition: stdint.h:28
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
__INT16_TYPE__ int16_t
Definition: stdint.h:73
Runtime device structure (in ROM) per driver instance.
Definition: device.h:380
const void * api
Definition: device.h:386
Definition: fuel_gauge.h:274
fuel_gauge_set_property_t set_property
Definition: fuel_gauge.h:276
fuel_gauge_get_property_t get_property
Definition: fuel_gauge.h:275
fuel_gauge_get_buffer_property_t get_buffer_property
Definition: fuel_gauge.h:277
Definition: fuel_gauge.h:213
int status
Definition: fuel_gauge.h:218
fuel_gauge_prop_t property_type
Definition: fuel_gauge.h:215
Definition: fuel_gauge.h:116
uint8_t absolute_state_of_charge
Definition: fuel_gauge.h:151
uint32_t flags
Definition: fuel_gauge.h:139
uint16_t chg_current
Definition: fuel_gauge.h:161
uint32_t runtime_to_full
Definition: fuel_gauge.h:147
uint16_t fg_status
Definition: fuel_gauge.h:165
uint16_t design_volt
Definition: fuel_gauge.h:169
uint16_t sbs_at_rate_time_to_empty
Definition: fuel_gauge.h:175
uint16_t design_cap
Definition: fuel_gauge.h:167
uint16_t temperature
Definition: fuel_gauge.h:155
uint16_t sbs_mfr_access_word
Definition: fuel_gauge.h:149
int status
Definition: fuel_gauge.h:121
uint16_t sbs_remaining_time_alarm
Definition: fuel_gauge.h:181
int current
Definition: fuel_gauge.h:135
bool sbs_at_rate_ok
Definition: fuel_gauge.h:177
int avg_current
Definition: fuel_gauge.h:131
int voltage
Definition: fuel_gauge.h:157
uint32_t remaining_capacity
Definition: fuel_gauge.h:143
fuel_gauge_prop_t property_type
Definition: fuel_gauge.h:118
bool cutoff
Definition: fuel_gauge.h:133
uint32_t full_charge_capacity
Definition: fuel_gauge.h:141
uint8_t relative_state_of_charge
Definition: fuel_gauge.h:153
uint16_t chg_voltage
Definition: fuel_gauge.h:163
uint32_t runtime_to_empty
Definition: fuel_gauge.h:145
uint16_t sbs_at_rate_time_to_full
Definition: fuel_gauge.h:173
uint32_t cycle_count
Definition: fuel_gauge.h:137
int16_t sbs_at_rate
Definition: fuel_gauge.h:171
union fuel_gauge_get_property::@151 value
uint16_t sbs_mode
Definition: fuel_gauge.h:159
uint16_t sbs_remaining_capacity_alarm
Definition: fuel_gauge.h:179
Definition: fuel_gauge.h:185
fuel_gauge_prop_t property_type
Definition: fuel_gauge.h:187
uint16_t sbs_mode
Definition: fuel_gauge.h:206
int status
Definition: fuel_gauge.h:190
uint16_t sbs_remaining_time_alarm
Definition: fuel_gauge.h:204
union fuel_gauge_set_property::@152 value
int16_t sbs_at_rate
Definition: fuel_gauge.h:208
uint16_t sbs_remaining_capacity_alarm
Definition: fuel_gauge.h:202
uint16_t sbs_mfr_access_word
Definition: fuel_gauge.h:200
Definition: fuel_gauge.h:238
char device_chemistry[4]
Definition: fuel_gauge.h:240
uint8_t device_chemistry_length
Definition: fuel_gauge.h:239
Definition: fuel_gauge.h:233
uint8_t device_name_length
Definition: fuel_gauge.h:234
char device_name[20]
Definition: fuel_gauge.h:235
Definition: fuel_gauge.h:228
uint8_t manufacturer_name_length
Definition: fuel_gauge.h:229
char manufacturer_name[20]
Definition: fuel_gauge.h:230