From 083e91808610e6247070778549b292baf4a916b8 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:19:05 +0100 Subject: [PATCH] Fix possible exception in battery fully charged https://github.com/seerge/g-helper/issues/3317 --- app/Battery/BatteryControl.cs | 25 ++++++++++++++++++++----- app/HardwareControl.cs | 4 +--- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/Battery/BatteryControl.cs b/app/Battery/BatteryControl.cs index 152d821e..70bf7aa9 100644 --- a/app/Battery/BatteryControl.cs +++ b/app/Battery/BatteryControl.cs @@ -5,28 +5,43 @@ namespace GHelper.Battery internal class BatteryControl { + static bool _chargeFull = AppConfig.Is("charge_full"); + public static bool chargeFull + { + get + { + return _chargeFull; + } + set + { + AppConfig.Set("charge_full", value ? 1 : 0); + _chargeFull = value; + } + } + public static void ToggleBatteryLimitFull() { - if (AppConfig.Is("charge_full")) SetBatteryChargeLimit(); + if (chargeFull) SetBatteryChargeLimit(); else SetBatteryLimitFull(); } public static void SetBatteryLimitFull() { - AppConfig.Set("charge_full", 1); + chargeFull = true; Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit"); Program.settingsForm.VisualiseBatteryFull(); } public static void UnSetBatteryLimitFull() { - AppConfig.Set("charge_full", 0); + chargeFull = false; + Logger.WriteLine("Battery fully charged"); Program.settingsForm.Invoke(Program.settingsForm.VisualiseBatteryFull); } public static void AutoBattery(bool init = false) { - if (AppConfig.Is("charge_full") && !init) SetBatteryLimitFull(); + if (chargeFull && !init) SetBatteryLimitFull(); else SetBatteryChargeLimit(); } @@ -46,7 +61,7 @@ namespace GHelper.Battery Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit"); AppConfig.Set("charge_limit", limit); - AppConfig.Set("charge_full", 0); + chargeFull = false; Program.settingsForm.VisualiseBattery(limit); } diff --git a/app/HardwareControl.cs b/app/HardwareControl.cs index c5640711..6d1281e6 100644 --- a/app/HardwareControl.cs +++ b/app/HardwareControl.cs @@ -241,7 +241,7 @@ public static class HardwareControl if (fullCapacity > 0 && chargeCapacity > 0) { batteryCapacity = Math.Min(100, (decimal)chargeCapacity / (decimal)fullCapacity * 100); - if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull(); + if (batteryCapacity > 99 && BatteryControl.chargeFull) BatteryControl.UnSetBatteryLimitFull(); if (chargeWatt) { batteryCharge = Math.Round((decimal)chargeCapacity / 1000, 1).ToString() + "Wh"; @@ -251,8 +251,6 @@ public static class HardwareControl batteryCharge = Math.Round(batteryCapacity, 1) + "%"; } } - - } public static bool IsUsedGPU(int threshold = 10)