FreeCalypso > hg > fc-tourmaline
diff src/cs/drivers/drv_app/fchg/fchg_struct.h @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children | 75067af48bfd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/fchg/fchg_struct.h Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,72 @@ +/* + * Internal structure definitions for the FCHG SWE reside here. + * abb_inth.c will also need to include this header in order to + * get our T_PWR_CTRL_BLOCK definition. + */ + +#ifndef __FCHG_STRUCT_H +#define __FCHG_STRUCT_H + +#include "rv/rv_general.h" +#include "rvf/rvf_api.h" +#include "fchg/fchg_common.h" + +struct charging_config { + UINT16 start_delay; + UINT16 start_thresh; + UINT16 restart_thresh; + UINT16 ci2cv_thresh; + UINT16 cv_init_set; + UINT16 cv_ctrl_loop_high; + UINT16 cv_ctrl_loop_low; + UINT16 cv_dac_max_incr; + UINT16 cv_dac_max_decr; + UINT16 cv_samples_needed; + UINT16 overvoltage; + UINT16 ci_current; + UINT16 end_current; + UINT16 ichg_max_spike; + UINT16 ichg_samples_needed; + UINT16 charge_time_limit; + UINT16 recharge_delay; + UINT16 bciconf; +}; + +/* from original PWR SWE */ +typedef struct { + UINT16 bat_voltage; + T_PWR_PERCENT remain_capa; +} T_PWR_THRESHOLDS; + +#define MAX_THRESHOLDS 101 + +#define ICHG_AVG_WINDOW 6 + +typedef struct { + /* RiViera boilerplate */ + T_RVF_ADDR_ID addr_id; + T_RVF_MB_ID prim_id; + /* configuration */ + struct charging_config config; + BOOL config_present; + T_PWR_THRESHOLDS batt_thresholds[MAX_THRESHOLDS]; + UINT16 nb_thresholds; + /* state */ + enum fchg_state state; + UINT16 batt_mv; + UINT16 curr_disch_thresh; + /* valid only during a charging cycle */ + UINT16 i2v_offset; + UINT16 cv_dac_init; + UINT16 cv_dac_curr; + UINT16 cv_high_vbat_count; + UINT16 cv_low_vbat_count; + UINT16 ichg_avg_buf[ICHG_AVG_WINDOW]; + UINT16 ichg_fill_level; + UINT16 ichg_ring_ptr; + UINT16 ichg_average; + UINT16 ichg_low_count; + UINT32 start_time; +} T_PWR_CTRL_BLOCK; + +#endif /* include guard */