lc709203f.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 RWTH Aachen
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 #include "periph/i2c.h"
29 #include "periph/gpio.h"
30 
36 typedef enum {
37  AUTO_MODE = 0x0,
38  CHARGE_MODE = 0x1,
39  DISCHARGE_MODE = 0xffff
48 typedef enum {
49  BAT_PROFILE_1 = 0,
50  BAT_PROFILE_2 = 1
59 typedef enum {
60  OPERATIONAL_MODE = 1,
61  SLEEP_MODE = 2
70 typedef enum {
71  I2C_MODE = 0,
72  THERMISTOR_MODE = 1
81 typedef void (*lc709203f_cb_t)(void *arg);
82 
87 typedef struct {
88  gpio_t alarm_pin;
90  uint8_t addr;
94 enum {
98 };
99 
105 typedef struct {
107  uint8_t addr;
108  uint8_t scale;
111  void *arg;
112 } lc709203f_t;
120 #define LC709203F_REG_CELL_VOLTAGE 0x09
121 #define LC709203F_REG_RSOC 0x0d
122 #define LC709203F_REG_ITE 0x0f
123 #define LC709203F_REG_ID 0x11
124 #define LC709203F_REG_CELL_TEMP 0x08
125 #define LC709203F_REG_STATUS 0x16
126 #define LC709203F_REG_POWER_MODE 0x15
127 #define LC709203F_REG_ALARM_VOLTAGE 0x14
128 #define LC709203F_REG_ALARM_RSOC 0x13
129 #define LC709203F_REG_CHANGE_PARAMETER 0x12
130 #define LC709203F_REG_APT 0x0c
131 #define LC709203F_REG_APA 0x0b
132 #define LC709203F_REG_CURRENT_DIRECTION 0x0a
133 #define LC709203F_REG_THERMISTOR 0x06
134 #define LC709203F_REG_BEFORE_RSOC 0x04
135 #define LC709203F_REG_INITIAL_RSOC 0x07
138 #define LC709203F_CRC_POLYNOMIAL 0x07
150 
158 int16_t lc709203f_get_voltage(const lc709203f_t *dev);
159 
167 int16_t lc709203f_get_rsoc(const lc709203f_t *dev);
168 
176 int16_t lc709203f_get_ite(const lc709203f_t *dev);
177 
185 int16_t lc709203f_get_id(const lc709203f_t *dev);
186 
195 
205 
215 
225 
235 
244 
253 int16_t lc709203f_get_apt(const lc709203f_t *dev);
254 
263 int16_t lc709203f_get_apa(const lc709203f_t *dev);
264 
275 
284 
291 
298 void lc709203f_set_thermistor_b(const lc709203f_t *dev, const unsigned int value);
299 
306 
316 int8_t lc709203f_set_cell_temp(const lc709203f_t *dev, const unsigned int value);
317 
325 
332 void lc709203f_set_apa(const lc709203f_t *dev, const uint8_t value);
333 
340 void lc709203f_set_apt(const lc709203f_t *dev, const unsigned int value);
341 
349 
356 void lc709203f_set_alarm_low_rsoc(const lc709203f_t *dev, const uint8_t value);
357 
364 void lc709203f_set_alarm_low_cell_voltage(const lc709203f_t *dev, const unsigned int value);
365 
373 
381 
382 #ifdef __cplusplus
383 }
384 #endif
385 
Low-level GPIO peripheral driver interface definitions.
lc709203f_temp_obtaining_mode_t lc709203f_get_status_bit(const lc709203f_t *dev)
reads status bit register (Temperature obtaining mode)
void lc709203f_set_power_mode(const lc709203f_t *dev, const lc709203f_power_mode_t value)
Sets power mode.
lc709203f_current_direction_t lc709203f_get_current_direction(const lc709203f_t *dev)
reads Current Direction Register
lc709203f_current_direction_t
Current direction modes.
Definition: lc709203f.h:36
void(* lc709203f_cb_t)(void *arg)
Typedef for the Callback function.
Definition: lc709203f.h:81
void lc709203f_set_rsoc_before(const lc709203f_t *dev)
Executes RSOC initialization with sampled maximum voltage.
int16_t lc709203f_get_apt(const lc709203f_t *dev)
reads APT (Adjustment Pack Thermistor) value to adjust temperature measurement delay timing.
int16_t lc709203f_get_thermistor_b(const lc709203f_t *dev)
reads Thermistor-B register (Thermistor B constant to be measured)
void lc709203f_set_alarm_low_cell_voltage(const lc709203f_t *dev, const unsigned int value)
Sets threshold for low cell voltage alert.
int16_t lc709203f_get_apa(const lc709203f_t *dev)
reads APA (Adjustment Pack Application) in 1mOhm steps value to adjust temperature measurement delay ...
int8_t lc709203f_set_cell_temp(const lc709203f_t *dev, const unsigned int value)
Sets cell temperature in I2C-mode.
void lc709203f_set_current_direction(const lc709203f_t *dev, const lc709203f_current_direction_t direction)
Sets current direction.
int16_t lc709203f_get_alarm_low_rsoc(const lc709203f_t *dev)
reads Alarm Low RSOC Register
int lc709203f_init(lc709203f_t *dev, const lc709203f_params_t *params)
initializes the sensor and i2c
void lc709203f_set_apa(const lc709203f_t *dev, const uint8_t value)
Sets parasitic impedance (adjustment pack application)
int16_t lc709203f_get_id(const lc709203f_t *dev)
reads Sensor id
lc709203f_power_mode_t
Power mode choices.
Definition: lc709203f.h:59
lc709203f_temp_obtaining_mode_t
Temperature obtaining mode options.
Definition: lc709203f.h:70
int16_t lc709203f_get_voltage(const lc709203f_t *dev)
reads battery voltage from Sensor
void lc709203f_set_apt(const lc709203f_t *dev, const unsigned int value)
Sets value to adjust temperature measurement delay timing (adjusmtent pack thermistor)
lc709203f_battery_profile_t
Battery Profile Options.
Definition: lc709203f.h:48
void lc709203f_set_status_bit(const lc709203f_t *dev, const lc709203f_temp_obtaining_mode_t value)
Sets temperature obtaining method.
void lc709203f_set_thermistor_b(const lc709203f_t *dev, const unsigned int value)
Sets B constant of the Thermistor.
int16_t lc709203f_get_alarm_low_voltage(const lc709203f_t *dev)
reads Alarm Low Cell Voltage Register
int16_t lc709203f_get_cell_temp(const lc709203f_t *dev)
reads cell temperature from sensor
lc709203f_power_mode_t lc709203f_get_power_mode(const lc709203f_t *dev)
reads IC Power Mode register
int16_t lc709203f_get_change_of_parameter(const lc709203f_t *dev)
reads Change of the Parameter register, Battery Profile selection
void lc709203f_set_change_of_parameter(const lc709203f_t *dev, const lc709203f_battery_profile_t value)
Sets battery profile.
void lc709203f_set_alarm_low_rsoc(const lc709203f_t *dev, const uint8_t value)
Sets threshold for low rsoc alert.
int16_t lc709203f_get_rsoc(const lc709203f_t *dev)
reads battery state of charge from Sensor
void lc709203f_set_rsoc_initial(const lc709203f_t *dev)
Executes RSOC initialization.
int16_t lc709203f_get_ite(const lc709203f_t *dev)
reads battery indicator to empty from Sensor
@ LC709203F_CELL_TEMP_INVALID
Cell temp invalid.
Definition: lc709203f.h:97
@ LC709203F_OK
all went as expected
Definition: lc709203f.h:95
@ LC709203F_NOI2C
error using the I2C bus
Definition: lc709203f.h:96
uint_fast8_t i2c_t
Default i2c_t type definition.
Definition: i2c.h:144
Low-level I2C peripheral driver interface definition.
Parameter struct for driver initialization.
Definition: lc709203f.h:87
uint8_t addr
I2C Address of the fuel gauge.
Definition: lc709203f.h:90
i2c_t bus
I2C bus to use.
Definition: lc709203f.h:89
gpio_t alarm_pin
Pin which is connected to the interrupt pin of the sensor.
Definition: lc709203f.h:88
Device descriptor for the fuel gauge.
Definition: lc709203f.h:105
uint8_t addr
I2C Address of fuel gauge.
Definition: lc709203f.h:107
void * arg
additional arguments for the callback method
Definition: lc709203f.h:111
uint8_t scale
scale for returned values
Definition: lc709203f.h:108
i2c_t bus
I2C bus to use.
Definition: lc709203f.h:106
lc709203f_params_t params
param struct with static settings etc
Definition: lc709203f.h:109
lc709203f_cb_t cb
callback method
Definition: lc709203f.h:110