Feature: Custom user set charging cap

This commit is contained in:
John
2023-05-28 21:12:00 +02:00
parent 32fad4af8d
commit 8becdc66e7
7 changed files with 51 additions and 1 deletions

View File

@@ -472,6 +472,21 @@ static void power_check_battery_level_change(Power* power) {
}
}
static void power_check_charge_cap(Power* power) {
if(power->info.charge >= XTREME_SETTINGS()->charge_cap) {
if(!power->info.is_charge_cap_suppressing_charging) { // Suppress charging if charge reaches custom cap
power->info.is_charge_cap_suppressing_charging = true;
furi_hal_power_suppress_charge_enter();
}
} else {
if(power->info.is_charge_cap_suppressing_charging) { // Start charging again if charge below custom cap
power->info.is_charge_cap_suppressing_charging = false;
furi_hal_power_suppress_charge_exit();
}
}
}
void power_trigger_ui_update(Power* power) {
view_port_update(power->battery_view_port);
}
@@ -491,6 +506,7 @@ int32_t power_srv(void* p) {
}
power_auto_shutdown_arm(power);
power_update_info(power);
power->info.is_charge_cap_suppressing_charging = false; // default false
furi_record_create(RECORD_POWER, power);
while(1) {
@@ -506,6 +522,9 @@ int32_t power_srv(void* p) {
// Check and notify about battery level change
power_check_battery_level_change(power);
// Check charge cap, compare with user setting and suppress/unsuppress charging
power_check_charge_cap(power);
// Update battery view port
if(need_refresh) {
view_port_update(power->battery_view_port);

View File

@@ -48,6 +48,7 @@ typedef struct {
typedef struct {
bool gauge_is_ok;
bool is_charging;
bool is_charge_cap_suppressing_charging;
float current_charger;
float current_gauge;