mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-07-23 15:08:19 +00:00
fix(core): remove charging enable hysteresis when 100% SOC limit is set
[no changelog]
This commit is contained in:
parent
41c361babb
commit
dc0877a70d
@ -98,7 +98,7 @@ void pm_monitor_power_sources(void) {
|
||||
fuel_gauge_set_soc(&drv->fuel_gauge, 1.0f, drv->fuel_gauge.P);
|
||||
}
|
||||
|
||||
// Ceil the float soc to user friendly integer
|
||||
// Ceil the float soc to user-friendly integer
|
||||
uint8_t soc_ceiled_temp = (int)(drv->fuel_gauge.soc_latched * 100 + 0.999f);
|
||||
if (soc_ceiled_temp != drv->soc_ceiled) {
|
||||
drv->soc_ceiled = soc_ceiled_temp;
|
||||
@ -162,7 +162,7 @@ void pm_charging_controller(pm_driver_t* drv) {
|
||||
|
||||
} else if (drv->wireless_connected) {
|
||||
// Wireless charger is sensitive to large current steps, so we need to
|
||||
// controll the charging current in steps.
|
||||
// control the charging current in steps.
|
||||
if (ticks_expired(drv->charging_step_timeout_ms)) {
|
||||
if (drv->charging_current_target_ma <
|
||||
drv->charging_current_max_limit_ma) {
|
||||
@ -190,9 +190,10 @@ void pm_charging_controller(pm_driver_t* drv) {
|
||||
pmic_set_charging_limit(drv->charging_current_target_ma);
|
||||
}
|
||||
|
||||
if (drv->soc_ceiled >= drv->soc_limit) {
|
||||
if ((drv->soc_ceiled >= drv->soc_limit) && (drv->soc_limit != 100)) {
|
||||
drv->soc_limit_reached = true;
|
||||
} else if (drv->soc_ceiled < drv->soc_limit - PM_SOC_LIMIT_HYSTERESIS) {
|
||||
} else if ((drv->soc_limit == 100) ||
|
||||
(drv->soc_ceiled < (drv->soc_limit - PM_SOC_LIMIT_HYSTERESIS))) {
|
||||
drv->soc_limit_reached = false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user