caffeine-sal 0.1.17
Header-only polymorphic middleware services layer for the Caffeine Framework
Loading...
Searching...
No Matches
cfn_sal_dev_battery.h
Go to the documentation of this file.
1
6#ifndef CAFFEINE_SAL_DEV_BATTERY_H
7#define CAFFEINE_SAL_DEV_BATTERY_H
8
9#ifdef __cplusplus
10extern "C"
11{
12#endif
13
14/* Includes ---------------------------------------------------------*/
15#include "cfn_sal.h"
16
17/* Defines ----------------------------------------------------------*/
18
19#define CFN_SAL_DEV_TYPE_BATTERY CFN_SAL_TYPE('B', 'A', 'T')
20
21/* Types Enums ------------------------------------------------------*/
22
32
41
49
50/* Types Structs ----------------------------------------------------*/
51
52typedef struct
53{
57 void *custom;
59
60typedef struct cfn_sal_dev_battery_s cfn_sal_dev_battery_t;
62
64 uint32_t event,
65 uint32_t error,
66 void *user_arg);
67
72{
73 cfn_hal_api_base_t base;
74
75 /* Measurement Operations */
76 cfn_hal_error_code_t (*get_voltage)(cfn_sal_dev_battery_t *driver, float *volts_out);
77 cfn_hal_error_code_t (*get_percentage)(cfn_sal_dev_battery_t *driver, uint8_t *percent_out);
78 cfn_hal_error_code_t (*get_current)(cfn_sal_dev_battery_t *driver, float *amps_out);
79 cfn_hal_error_code_t (*get_remaining_capacity)(cfn_sal_dev_battery_t *driver, uint32_t *mah_out);
80
81 cfn_hal_error_code_t (*read_current_ma)(cfn_sal_dev_battery_t *driver, float *current_out);
82 cfn_hal_error_code_t (*read_capacity_mah)(cfn_sal_dev_battery_t *driver, float *cap_out);
83 cfn_hal_error_code_t (*read_state_of_charge)(cfn_sal_dev_battery_t *driver, float *soc_percent_out);
84
85 /* Status */
86 cfn_hal_error_code_t (*get_status)(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_status_t *status_out);
87 cfn_hal_error_code_t (*get_charge_state)(cfn_sal_dev_battery_t *driver,
89 cfn_hal_error_code_t (*get_temperature)(cfn_sal_dev_battery_t *driver, float *temp_out);
90};
91
93
99
100/* Functions inline ------------------------------------------------- */
101
103 uint32_t peripheral_id,
104 void *dependency,
105 const cfn_sal_dev_battery_api_t *api,
106 const cfn_sal_phy_t *phy,
107 const cfn_sal_dev_battery_config_t *config,
109 void *user_arg)
110{
111 CFN_HAL_POPULATE_DRIVER(
112 driver, CFN_SAL_DEV_TYPE_BATTERY, peripheral_id, NULL, dependency, api, phy, config, callback, user_arg);
113}
114
116 const cfn_sal_dev_battery_config_t *config,
117 const cfn_sal_phy_t *phy,
118 void *dependency,
120 void *user_arg);
122
123CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_init(cfn_sal_dev_battery_t *driver)
124{
125 if (!driver)
126 {
127 return CFN_HAL_ERROR_BAD_PARAM;
128 }
129 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
130 return cfn_hal_base_init(&driver->base, CFN_SAL_DEV_TYPE_BATTERY);
131}
132
133CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_deinit(cfn_sal_dev_battery_t *driver)
134{
135 if (!driver)
136 {
137 return CFN_HAL_ERROR_BAD_PARAM;
138 }
139 return cfn_hal_base_deinit(&driver->base, CFN_SAL_DEV_TYPE_BATTERY);
140}
141
142CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_config_set(cfn_sal_dev_battery_t *driver,
143 const cfn_sal_dev_battery_config_t *config)
144{
145 if (!driver)
146 {
147 return CFN_HAL_ERROR_BAD_PARAM;
148 }
149 driver->config = config;
150 return cfn_hal_base_config_set(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, (const void *) config);
151}
152
153CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_config_get(cfn_sal_dev_battery_t *driver,
155{
156 if (!driver || !config || !driver->config)
157 {
158 return CFN_HAL_ERROR_BAD_PARAM;
159 }
160 *config = *(driver->config);
161 return CFN_HAL_ERROR_OK;
162}
163
164CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_callback_register(cfn_sal_dev_battery_t *driver,
166 void *user_arg)
167{
168 if (!driver)
169 {
170 return CFN_HAL_ERROR_BAD_PARAM;
171 }
172 driver->cb = callback;
173 driver->cb_user_arg = user_arg;
174 return cfn_hal_base_callback_register(
175 &driver->base, CFN_SAL_DEV_TYPE_BATTERY, (cfn_hal_callback_t) callback, user_arg);
176}
177
178CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_power_state_set(cfn_sal_dev_battery_t *driver,
179 cfn_hal_power_state_t state)
180{
181 if (!driver)
182 {
183 return CFN_HAL_ERROR_BAD_PARAM;
184 }
185 return cfn_hal_power_state_set(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, state);
186}
187
188CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_enable(cfn_sal_dev_battery_t *driver, uint32_t event_mask)
189{
190 if (!driver)
191 {
192 return CFN_HAL_ERROR_BAD_PARAM;
193 }
194 return cfn_hal_base_event_enable(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, event_mask);
195}
196
197CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_disable(cfn_sal_dev_battery_t *driver,
198 uint32_t event_mask)
199{
200 if (!driver)
201 {
202 return CFN_HAL_ERROR_BAD_PARAM;
203 }
204 return cfn_hal_base_event_disable(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, event_mask);
205}
206
207CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_get(cfn_sal_dev_battery_t *driver, uint32_t *event_mask)
208{
209 if (!driver)
210 {
211 return CFN_HAL_ERROR_BAD_PARAM;
212 }
213 return cfn_hal_base_event_get(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, event_mask);
214}
215
216CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_enable(cfn_sal_dev_battery_t *driver, uint32_t error_mask)
217{
218 if (!driver)
219 {
220 return CFN_HAL_ERROR_BAD_PARAM;
221 }
222 return cfn_hal_base_error_enable(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, error_mask);
223}
224
225CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_disable(cfn_sal_dev_battery_t *driver,
226 uint32_t error_mask)
227{
228 if (!driver)
229 {
230 return CFN_HAL_ERROR_BAD_PARAM;
231 }
232 return cfn_hal_base_error_disable(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, error_mask);
233}
234
235CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_get(cfn_sal_dev_battery_t *driver, uint32_t *error_mask)
236{
237 if (!driver)
238 {
239 return CFN_HAL_ERROR_BAD_PARAM;
240 }
241 return cfn_hal_base_error_get(&driver->base, CFN_SAL_DEV_TYPE_BATTERY, error_mask);
242}
243
244/* Service Specific Functions --------------------------------------- */
245
246CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_voltage(cfn_sal_dev_battery_t *driver, float *volts_out)
247{
248 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
249 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_voltage, driver, error, volts_out);
250 return error;
251}
252
253CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_percentage(cfn_sal_dev_battery_t *driver,
254 uint8_t *percent_out)
255{
256 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
257 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_percentage, driver, error, percent_out);
258 return error;
259}
260
261CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_current(cfn_sal_dev_battery_t *driver, float *amps_out)
262{
263 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
264 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_current, driver, error, amps_out);
265 return error;
266}
267
268CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_remaining_capacity(cfn_sal_dev_battery_t *driver,
269 uint32_t *mah_out)
270{
271 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
272 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_remaining_capacity, driver, error, mah_out);
273 return error;
274}
275
276CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_status(cfn_sal_dev_battery_t *driver,
278{
279 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
280 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_status, driver, error, status_out);
281 return error;
282}
283
284CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_temperature(cfn_sal_dev_battery_t *driver, float *temp_out)
285{
286 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
287 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_temperature, driver, error, temp_out);
288 return error;
289}
290
291CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_current_ma(cfn_sal_dev_battery_t *driver,
292 float *current_out)
293{
294 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
295 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, read_current_ma, driver, error, current_out);
296 return error;
297}
298
299CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_capacity_mah(cfn_sal_dev_battery_t *driver, float *cap_out)
300{
301 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
302 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, read_capacity_mah, driver, error, cap_out);
303 return error;
304}
305
306CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_state_of_charge(cfn_sal_dev_battery_t *driver,
307 float *soc_percent_out)
308{
309 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
310 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, read_state_of_charge, driver, error, soc_percent_out);
311 return error;
312}
313
314CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_charge_state(cfn_sal_dev_battery_t *driver,
316{
317 cfn_hal_error_code_t error = CFN_HAL_ERROR_OK;
318 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_SAL_DEV_TYPE_BATTERY, get_charge_state, driver, error, state_out);
319 return error;
320}
321
322#ifdef __cplusplus
323}
324#endif
325
326#endif /* CAFFEINE_SAL_DEV_BATTERY_H */
Core definitions and macros for Caffeine SAL.
#define CFN_SAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_sal.h:38
cfn_sal_dev_battery_event_t
Definition cfn_sal_dev_battery.h:24
@ CFN_SAL_DEV_BATTERY_EVENT_LOW
Definition cfn_sal_dev_battery.h:29
@ CFN_SAL_DEV_BATTERY_EVENT_CHARGING
Definition cfn_sal_dev_battery.h:26
@ CFN_SAL_DEV_BATTERY_EVENT_NONE
Definition cfn_sal_dev_battery.h:25
@ CFN_SAL_DEV_BATTERY_EVENT_DISCHARGING
Definition cfn_sal_dev_battery.h:27
@ CFN_SAL_DEV_BATTERY_EVENT_CRITICAL
Definition cfn_sal_dev_battery.h:30
@ CFN_SAL_DEV_BATTERY_EVENT_FULL
Definition cfn_sal_dev_battery.h:28
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_config_get(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_config_t *config)
Definition cfn_sal_dev_battery.h:153
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_disable(cfn_sal_dev_battery_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_battery.h:197
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_status(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_status_t *status_out)
Definition cfn_sal_dev_battery.h:276
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_charge_state(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_charge_state_t *state_out)
Definition cfn_sal_dev_battery.h:314
cfn_sal_dev_battery_charge_state_t
Definition cfn_sal_dev_battery.h:43
@ CFN_SAL_DEV_BATTERY_STATE_FAULT
Definition cfn_sal_dev_battery.h:47
@ CFN_SAL_DEV_BATTERY_STATE_CHARGING
Definition cfn_sal_dev_battery.h:45
@ CFN_SAL_DEV_BATTERY_STATE_DISCHARGING
Definition cfn_sal_dev_battery.h:44
@ CFN_SAL_DEV_BATTERY_STATE_FULL
Definition cfn_sal_dev_battery.h:46
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_deinit(cfn_sal_dev_battery_t *driver)
Definition cfn_sal_dev_battery.h:133
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_get(cfn_sal_dev_battery_t *driver, uint32_t *event_mask)
Definition cfn_sal_dev_battery.h:207
cfn_hal_error_code_t cfn_sal_dev_battery_destruct(cfn_sal_dev_battery_t *driver)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_voltage(cfn_sal_dev_battery_t *driver, float *volts_out)
Definition cfn_sal_dev_battery.h:246
cfn_sal_dev_battery_status_t
Definition cfn_sal_dev_battery.h:34
@ CFN_SAL_DEV_BATTERY_STATUS_CHARGING
Definition cfn_sal_dev_battery.h:36
@ CFN_SAL_DEV_BATTERY_STATUS_UNKNOWN
Definition cfn_sal_dev_battery.h:35
@ CFN_SAL_DEV_BATTERY_STATUS_NOT_CHARGING
Definition cfn_sal_dev_battery.h:38
@ CFN_SAL_DEV_BATTERY_STATUS_DISCHARGING
Definition cfn_sal_dev_battery.h:37
@ CFN_SAL_DEV_BATTERY_STATUS_FULL
Definition cfn_sal_dev_battery.h:39
void(* cfn_sal_dev_battery_callback_t)(cfn_sal_dev_battery_t *driver, uint32_t event, uint32_t error, void *user_arg)
Definition cfn_sal_dev_battery.h:63
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_disable(cfn_sal_dev_battery_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_battery.h:225
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_callback_register(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_callback_t callback, void *user_arg)
Definition cfn_sal_dev_battery.h:164
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_temperature(cfn_sal_dev_battery_t *driver, float *temp_out)
Definition cfn_sal_dev_battery.h:284
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_init(cfn_sal_dev_battery_t *driver)
Definition cfn_sal_dev_battery.h:123
#define CFN_SAL_DEV_TYPE_BATTERY
Definition cfn_sal_dev_battery.h:19
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_config_set(cfn_sal_dev_battery_t *driver, const cfn_sal_dev_battery_config_t *config)
Definition cfn_sal_dev_battery.h:142
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_enable(cfn_sal_dev_battery_t *driver, uint32_t error_mask)
Definition cfn_sal_dev_battery.h:216
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_percentage(cfn_sal_dev_battery_t *driver, uint8_t *percent_out)
Definition cfn_sal_dev_battery.h:253
struct cfn_sal_dev_battery_s cfn_sal_dev_battery_t
Definition cfn_sal_dev_battery.h:60
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_power_state_set(cfn_sal_dev_battery_t *driver, cfn_hal_power_state_t state)
Definition cfn_sal_dev_battery.h:178
cfn_hal_error_code_t cfn_sal_dev_battery_construct(cfn_sal_dev_battery_t *driver, const cfn_sal_dev_battery_config_t *config, const cfn_sal_phy_t *phy, void *dependency, cfn_sal_dev_battery_callback_t callback, void *user_arg)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_current(cfn_sal_dev_battery_t *driver, float *amps_out)
Definition cfn_sal_dev_battery.h:261
CFN_HAL_INLINE void cfn_sal_dev_battery_populate(cfn_sal_dev_battery_t *driver, uint32_t peripheral_id, void *dependency, const cfn_sal_dev_battery_api_t *api, const cfn_sal_phy_t *phy, const cfn_sal_dev_battery_config_t *config, cfn_sal_dev_battery_callback_t callback, void *user_arg)
Definition cfn_sal_dev_battery.h:102
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_current_ma(cfn_sal_dev_battery_t *driver, float *current_out)
Definition cfn_sal_dev_battery.h:291
CFN_HAL_VMT_CHECK(struct cfn_sal_dev_battery_api_s)
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_state_of_charge(cfn_sal_dev_battery_t *driver, float *soc_percent_out)
Definition cfn_sal_dev_battery.h:306
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_error_get(cfn_sal_dev_battery_t *driver, uint32_t *error_mask)
Definition cfn_sal_dev_battery.h:235
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_read_capacity_mah(cfn_sal_dev_battery_t *driver, float *cap_out)
Definition cfn_sal_dev_battery.h:299
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_get_remaining_capacity(cfn_sal_dev_battery_t *driver, uint32_t *mah_out)
Definition cfn_sal_dev_battery.h:268
CFN_HAL_INLINE cfn_hal_error_code_t cfn_sal_dev_battery_event_enable(cfn_sal_dev_battery_t *driver, uint32_t event_mask)
Definition cfn_sal_dev_battery.h:188
Battery Monitor Virtual Method Table (VMT).
Definition cfn_sal_dev_battery.h:72
cfn_hal_error_code_t(* read_current_ma)(cfn_sal_dev_battery_t *driver, float *current_out)
Definition cfn_sal_dev_battery.h:81
cfn_hal_error_code_t(* get_status)(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_status_t *status_out)
Definition cfn_sal_dev_battery.h:86
cfn_hal_error_code_t(* get_charge_state)(cfn_sal_dev_battery_t *driver, cfn_sal_dev_battery_charge_state_t *state_out)
Definition cfn_sal_dev_battery.h:87
cfn_hal_api_base_t base
Definition cfn_sal_dev_battery.h:73
cfn_hal_error_code_t(* get_current)(cfn_sal_dev_battery_t *driver, float *amps_out)
Definition cfn_sal_dev_battery.h:78
cfn_hal_error_code_t(* get_temperature)(cfn_sal_dev_battery_t *driver, float *temp_out)
Definition cfn_sal_dev_battery.h:89
cfn_hal_error_code_t(* read_state_of_charge)(cfn_sal_dev_battery_t *driver, float *soc_percent_out)
Definition cfn_sal_dev_battery.h:83
cfn_hal_error_code_t(* read_capacity_mah)(cfn_sal_dev_battery_t *driver, float *cap_out)
Definition cfn_sal_dev_battery.h:82
cfn_hal_error_code_t(* get_voltage)(cfn_sal_dev_battery_t *driver, float *volts_out)
Definition cfn_sal_dev_battery.h:76
cfn_hal_error_code_t(* get_percentage)(cfn_sal_dev_battery_t *driver, uint8_t *percent_out)
Definition cfn_sal_dev_battery.h:77
cfn_hal_error_code_t(* get_remaining_capacity)(cfn_sal_dev_battery_t *driver, uint32_t *mah_out)
Definition cfn_sal_dev_battery.h:79
Definition cfn_sal_dev_battery.h:53
uint32_t design_capacity_mah
Definition cfn_sal_dev_battery.h:54
float voltage_min
Definition cfn_sal_dev_battery.h:55
void * custom
Definition cfn_sal_dev_battery.h:57
float voltage_max
Definition cfn_sal_dev_battery.h:56
Generic physical mapping for services.
Definition cfn_sal_types.h:26