From d27cdc85e38060ecb8d6fc349159aa12f97aa784 Mon Sep 17 00:00:00 2001 From: Fabio Baltieri Date: Thu, 6 Jul 2023 22:56:25 +0100 Subject: [PATCH] sensor: bq274xx: fix few parameter calculations Fix the calculation for designenergy_mwh, as right now it's using a float casted straight to an int, which results in the factor rounded from 3.7 to 3. Also rework both that and taperrate so that they don't use floating point. Signed-off-by: Fabio Baltieri --- drivers/sensor/bq274xx/bq274xx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/sensor/bq274xx/bq274xx.c b/drivers/sensor/bq274xx/bq274xx.c index 8579c6b2704978..632cb925edad7f 100644 --- a/drivers/sensor/bq274xx/bq274xx.c +++ b/drivers/sensor/bq274xx/bq274xx.c @@ -139,8 +139,8 @@ static int bq274xx_gauge_configure(const struct device *dev) terminatevolt_msb, terminatevolt_lsb, taperrate_msb, taperrate_lsb; uint8_t block[BQ27XXX_DM_SZ]; - designenergy_mwh = (uint16_t)3.7 * config->design_capacity; - taperrate = (uint16_t)config->design_capacity / (0.1 * config->taper_current); + designenergy_mwh = (uint32_t)config->design_capacity * 3700 / 1000; + taperrate = config->design_capacity * 10 / config->taper_current; /* Unseal the battery control register */ ret = bq274xx_ctrl_reg_write(dev, BQ274XX_UNSEAL_KEY);