[FL-905] Add battery health state monitoring in power app (#358)
* add battery health reading from gauge * add battery health reading to api-hal-power * update battery health in power application Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
38011e88f3
commit
cfa76f19d0
@ -205,6 +205,7 @@ int32_t power_task(void* p) {
|
||||
with_view_model(
|
||||
power->info_view, (PowerInfoModel * model) {
|
||||
model->charge = api_hal_power_get_pct();
|
||||
model->health = api_hal_power_get_bat_health_pct();
|
||||
model->capacity_remaining = api_hal_power_get_battery_remaining_capacity();
|
||||
model->capacity_full = api_hal_power_get_battery_full_capacity();
|
||||
model->current_charger = api_hal_power_get_battery_current(ApiHalPowerICCharger);
|
||||
|
@ -24,7 +24,12 @@ void power_info_draw_callback(Canvas* canvas, void* context) {
|
||||
(uint32_t)(data->voltage_gauge * 1000),
|
||||
(uint32_t)(data->voltage_charger * 1000));
|
||||
canvas_draw_str(canvas, 5, 32, buffer);
|
||||
snprintf(buffer, 64, "Charge: %ld%%", (uint32_t)(data->charge));
|
||||
snprintf(
|
||||
buffer,
|
||||
64,
|
||||
"Charge: %ld%% Health: %ld%%",
|
||||
(uint32_t)(data->charge),
|
||||
(uint32_t)(data->health));
|
||||
canvas_draw_str(canvas, 5, 42, buffer);
|
||||
snprintf(buffer, 64, "Capacity: %ld of %ldmAh", data->capacity_remaining, data->capacity_full);
|
||||
canvas_draw_str(canvas, 5, 52, buffer);
|
||||
|
@ -22,6 +22,7 @@ typedef struct {
|
||||
float temperature_gauge;
|
||||
|
||||
uint8_t charge;
|
||||
uint8_t health;
|
||||
} PowerInfoModel;
|
||||
|
||||
void power_info_draw_callback(Canvas* canvas, void* context);
|
||||
|
@ -44,6 +44,9 @@ void api_hal_power_deep_sleep();
|
||||
/* Get predicted remaining battery capacity in percents */
|
||||
uint8_t api_hal_power_get_pct();
|
||||
|
||||
/* Get battery health state in percents */
|
||||
uint8_t api_hal_power_get_bat_health_pct();
|
||||
|
||||
/* Get charging status */
|
||||
bool api_hal_power_is_charging();
|
||||
|
||||
|
@ -90,6 +90,10 @@ uint8_t api_hal_power_get_pct() {
|
||||
return bq27220_get_state_of_charge();
|
||||
}
|
||||
|
||||
uint8_t api_hal_power_get_bat_health_pct() {
|
||||
return bq27220_get_state_of_health();
|
||||
}
|
||||
|
||||
bool api_hal_power_is_charging() {
|
||||
return bq25896_is_charging();
|
||||
}
|
||||
@ -175,9 +179,9 @@ void api_hal_power_dump_state(string_t buffer) {
|
||||
);
|
||||
// Voltage and current info
|
||||
string_cat_printf(buffer,
|
||||
"bq27220: Full capacity: %dmAh, Remaining capacity: %dmAh, State of Charge: %d%%\r\n",
|
||||
"bq27220: Full capacity: %dmAh, Remaining capacity: %dmAh, State of Charge: %d%%, State of health: %d%%\r\n",
|
||||
bq27220_get_full_charge_capacity(), bq27220_get_remaining_capacity(),
|
||||
bq27220_get_state_of_charge()
|
||||
bq27220_get_state_of_charge(), bq27220_get_state_of_health()
|
||||
);
|
||||
string_cat_printf(buffer,
|
||||
"bq27220: Voltage: %dmV, Current: %dmA, Temperature: %dC\r\n",
|
||||
|
@ -90,6 +90,10 @@ uint8_t api_hal_power_get_pct() {
|
||||
return bq27220_get_state_of_charge();
|
||||
}
|
||||
|
||||
uint8_t api_hal_power_get_bat_health_pct() {
|
||||
return bq27220_get_state_of_health();
|
||||
}
|
||||
|
||||
bool api_hal_power_is_charging() {
|
||||
return bq25896_is_charging();
|
||||
}
|
||||
@ -175,9 +179,9 @@ void api_hal_power_dump_state(string_t buffer) {
|
||||
);
|
||||
// Voltage and current info
|
||||
string_cat_printf(buffer,
|
||||
"bq27220: Full capacity: %dmAh, Remaining capacity: %dmAh, State of Charge: %d%%\r\n",
|
||||
"bq27220: Full capacity: %dmAh, Remaining capacity: %dmAh, State of Charge: %d%%, State of health: %d%%\r\n",
|
||||
bq27220_get_full_charge_capacity(), bq27220_get_remaining_capacity(),
|
||||
bq27220_get_state_of_charge()
|
||||
bq27220_get_state_of_charge(), bq27220_get_state_of_health()
|
||||
);
|
||||
string_cat_printf(buffer,
|
||||
"bq27220: Voltage: %dmV, Current: %dmA, Temperature: %dC\r\n",
|
||||
|
@ -79,3 +79,7 @@ uint16_t bq27220_get_remaining_capacity() {
|
||||
uint16_t bq27220_get_state_of_charge() {
|
||||
return bq27220_read_word(CommandStateOfCharge);
|
||||
}
|
||||
|
||||
uint16_t bq27220_get_state_of_health() {
|
||||
return bq27220_read_word(CommandStateOfHealth);
|
||||
}
|
||||
|
@ -69,3 +69,6 @@ uint16_t bq27220_get_remaining_capacity();
|
||||
|
||||
/* Get predicted remaining battery capacity in percents */
|
||||
uint16_t bq27220_get_state_of_charge();
|
||||
|
||||
/* Get ratio of full charge capacity over design capacity in percents */
|
||||
uint16_t bq27220_get_state_of_health();
|
||||
|
Loading…
Reference in New Issue
Block a user