From 59ee0ad1aae99476c69c908dc9bce8626e695c94 Mon Sep 17 00:00:00 2001 From: minacode Date: Mon, 3 Oct 2022 14:22:18 +0200 Subject: add percentage rescaling --- src/components/battery/BatteryController.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/components/battery/BatteryController.cpp') diff --git a/src/components/battery/BatteryController.cpp b/src/components/battery/BatteryController.cpp index 95a30792..ca0db79f 100644 --- a/src/components/battery/BatteryController.cpp +++ b/src/components/battery/BatteryController.cpp @@ -85,6 +85,11 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) { if (!isFull) { newPercent = std::min(aprox.GetValue(voltage), isCharging ? uint8_t {99} : uint8_t {100}); } + // quick hack for better values + // rescale the percentages between 35 and 100 + constexpr uint8_t realMin = 35; + newPercent = std::max(newPercent, realMin); + newPercent = (newPercent - realMin) * 100 / (100 - realMin); if ((isPowerPresent && newPercent > percentRemaining) || (!isPowerPresent && newPercent < percentRemaining) || firstMeasurement) { firstMeasurement = false; @@ -93,7 +98,8 @@ void Battery::SaadcEventHandler(nrfx_saadc_evt_t const* p_event) { systemTask->PushMessage(System::Messages::BatteryPercentageUpdated); } - constexpr uint8_t lowBatteryThreshold {50}; + // warn at 20% battery (wrt. rescaling above) + constexpr uint8_t lowBatteryThreshold {20}; if (!isPowerPresent && lastPercentRemaining >= lowBatteryThreshold && percentRemaining < lowBatteryThreshold) { systemTask->PushMessage(System::Messages::LowBattery); } -- cgit v1.2.3