diff --git a/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.c b/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.c index a1b89e22fb..6bb0e2b370 100644 --- a/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.c +++ b/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.c @@ -40,6 +40,12 @@ void fuel_gauge_reset(fuel_gauge_state_t* state) { state->soc_latched = 0.0f; } +void fuel_gauge_set_soc(fuel_gauge_state_t* state, float soc) { + // Set SOC directly + state->soc = soc; + state->soc_latched = soc; +} + void fuel_gauge_initial_guess(fuel_gauge_state_t* state, float voltage_V, float current_mA, float temperature) { // Determine if we're in discharge mode diff --git a/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.h b/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.h index 6c8d45691e..ae8f665068 100644 --- a/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.h +++ b/core/embed/sys/powerctl/fuel_gauge/fuel_gauge.h @@ -54,6 +54,13 @@ void fuel_gauge_init(fuel_gauge_state_t* state, float R, float Q, */ void fuel_gauge_reset(fuel_gauge_state_t* state); +/** + * Set SOC directly + * @param state Pointer to EKF state structure + * @param soc State of charge (0.0 to 1.0) + */ +void fuel_gauge_set_soc(fuel_gauge_state_t* state, float soc); + /** * Make initial SOC guess based on OCV * @param state Pointer to EKF state structure