From c9863187d60e1b4963651581f488b8123f8bdeb5 Mon Sep 17 00:00:00 2001 From: Totoo Date: Wed, 30 Oct 2024 12:19:17 +0100 Subject: [PATCH] battery display imp (#2327) --- firmware/application/apps/ui_battinfo.cpp | 18 +++++++++++++++--- firmware/common/i2cdev_max17055.cpp | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/firmware/application/apps/ui_battinfo.cpp b/firmware/application/apps/ui_battinfo.cpp index b828e211b..07b9debb0 100644 --- a/firmware/application/apps/ui_battinfo.cpp +++ b/firmware/application/apps/ui_battinfo.cpp @@ -75,7 +75,19 @@ void BattinfoView::update_result() { text_current.hidden(false); text_charge.hidden(false); text_current.set(to_string_dec_int(current) + " mA"); - text_charge.set(current >= 0 ? "Charging" : "Discharging"); + if (current >= 25) // when >25mA it is charging in any scenario + text_charge.set("Charging"); + else { + if (current > -25) { // between -25 and 25 + if (voltage > 4060 || percent == 100) { // the voltage is high enough, so it is full, that's why no mA + text_charge.set("Full"); + } else { + text_charge.set("Holding"); // not enough voltage, so should charge. maybe the batttery is off, or USB power is not enough + } + } else { + text_charge.set("Discharging"); // less then -25mA, so it is discharging + } + } labels_opt.hidden(false); text_ttef.hidden(false); @@ -103,7 +115,7 @@ void BattinfoView::update_result() { if ((valid_mask & battery::BatteryManagement::BATT_VALID_TTEF) == battery::BatteryManagement::BATT_VALID_TTEF) { text_ttef.hidden(false); float ttef = 0; - if (current <= 0) { + if (current <= 0) { // we keep this yet ttef = battery::BatteryManagement::get_tte(); } else { ttef = battery::BatteryManagement::get_ttf(); @@ -133,7 +145,7 @@ void BattinfoView::update_result() { } if (uichg) set_dirty(); // to update status bar too, send message in behalf of batt manager - BatteryStateMessage msg{valid_mask, percent, current >= 0, voltage}; + BatteryStateMessage msg{valid_mask, percent, current >= 25, voltage}; EventDispatcher::send_message(msg); } diff --git a/firmware/common/i2cdev_max17055.cpp b/firmware/common/i2cdev_max17055.cpp index 568d6ee0a..41b6eba44 100644 --- a/firmware/common/i2cdev_max17055.cpp +++ b/firmware/common/i2cdev_max17055.cpp @@ -192,7 +192,7 @@ void I2cDev_MAX17055::update() { getBatteryInfo(validity, batteryPercentage, voltage, current); // send local message - BatteryStateMessage msg{validity, batteryPercentage, current >= 0, voltage}; + BatteryStateMessage msg{validity, batteryPercentage, current >= 25, voltage}; EventDispatcher::send_message(msg); }