diff options
-rw-r--r-- | src/dkp-supply.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/dkp-supply.c b/src/dkp-supply.c index 0f6153b..f59215d 100644 --- a/src/dkp-supply.c +++ b/src/dkp-supply.c @@ -236,16 +236,26 @@ dkp_supply_refresh_battery (DkpSupply *supply) obj->energy_full_design = sysfs_get_double (obj->native_path, "energy_full_design") / 1000000.0; - /* the last full cannot be bigger than the design */ + /* the last full should not be bigger than the design */ if (obj->energy_full > obj->energy_full_design) + egg_warning ("energy_full (%f) is greater than energy_full_design (%f)", + obj->energy_full, obj->energy_full_design); + + /* some systems don't have this */ + if (obj->energy_full < 0.01) { + egg_warning ("correcting energy_full (%f) using energy_full_design (%f)", + obj->energy_full, obj->energy_full_design); obj->energy_full = obj->energy_full_design; + } /* calculate how broken our battery is */ - obj->capacity = obj->energy_full_design / obj->energy_full * 100.0f; - if (obj->capacity < 0) - obj->capacity = 0; - if (obj->capacity > 100.0) - obj->capacity = 100.0; + if (obj->energy_full > 0) { + obj->capacity = obj->energy_full_design / obj->energy_full * 100.0f; + if (obj->capacity < 0) + obj->capacity = 0; + if (obj->capacity > 100.0) + obj->capacity = 100.0; + } /* we only coldplug once, as these values will never change */ supply->priv->has_coldplug_values = TRUE; |