mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-07 16:11:43 +00:00
virtual_battery: Avoid unexpected batt_mode_cache refreshing
Currently we are assuming batt_mode would never be zero, but that is not always true. Some battery do report zero for batt_mode(bob for example). So everytime the batt_mode_cache been set to zero, the virtual_battery would consider it uninited, and tries to refresh the next time. Use -1 as uninited batt_mode_cache to avoid that. BUG=b:66555246 BRANCH=gru TEST=Check on bob, the battery level is correct. Change-Id: Ieb7ec9403f69a6b5bca93c6682ec6117fe95fe1e Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> Reviewed-on: https://chromium-review.googlesource.com/678135 Reviewed-by: Douglas Anderson <dianders@chromium.org> Reviewed-by: Philip Chen <philipchen@chromium.org> Reviewed-by: Shawn N <shawnn@chromium.org>
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#define CPUTS(outstr) cputs(CC_I2C, outstr)
|
||||
#define CPRINTS(format, args...) cprints(CC_I2C, format, ## args)
|
||||
|
||||
#define BATT_MODE_UNINITIALIZED -1
|
||||
|
||||
/*
|
||||
* The state machine used to parse smart battery command
|
||||
* to support virtual battery.
|
||||
@@ -182,7 +184,7 @@ int virtual_battery_operation(const uint8_t *batt_cmd_head,
|
||||
* Note that we don't update the cached capacity: We do a real-time
|
||||
* conversion and return the converted values.
|
||||
*/
|
||||
static int batt_mode_cache;
|
||||
static int batt_mode_cache = BATT_MODE_UNINITIALIZED;
|
||||
const struct batt_params *curr_batt;
|
||||
/*
|
||||
* Don't allow host reads into arbitrary memory space, most params
|
||||
@@ -197,7 +199,7 @@ int virtual_battery_operation(const uint8_t *batt_cmd_head,
|
||||
batt_mode_cache = batt_cmd_head[1] |
|
||||
(batt_cmd_head[2] << 8);
|
||||
} else if (read_len > 0) {
|
||||
if (batt_mode_cache == 0)
|
||||
if (batt_mode_cache == BATT_MODE_UNINITIALIZED)
|
||||
/*
|
||||
* Read the battery operational mode from
|
||||
* the battery to initialize batt_mode_cache.
|
||||
|
||||
Reference in New Issue
Block a user