[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(
|
with_view_model(
|
||||||
power->info_view, (PowerInfoModel * model) {
|
power->info_view, (PowerInfoModel * model) {
|
||||||
model->charge = api_hal_power_get_pct();
|
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_remaining = api_hal_power_get_battery_remaining_capacity();
|
||||||
model->capacity_full = api_hal_power_get_battery_full_capacity();
|
model->capacity_full = api_hal_power_get_battery_full_capacity();
|
||||||
model->current_charger = api_hal_power_get_battery_current(ApiHalPowerICCharger);
|
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_gauge * 1000),
|
||||||
(uint32_t)(data->voltage_charger * 1000));
|
(uint32_t)(data->voltage_charger * 1000));
|
||||||
canvas_draw_str(canvas, 5, 32, buffer);
|
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);
|
canvas_draw_str(canvas, 5, 42, buffer);
|
||||||
snprintf(buffer, 64, "Capacity: %ld of %ldmAh", data->capacity_remaining, data->capacity_full);
|
snprintf(buffer, 64, "Capacity: %ld of %ldmAh", data->capacity_remaining, data->capacity_full);
|
||||||
canvas_draw_str(canvas, 5, 52, buffer);
|
canvas_draw_str(canvas, 5, 52, buffer);
|
||||||
|
@ -22,6 +22,7 @@ typedef struct {
|
|||||||
float temperature_gauge;
|
float temperature_gauge;
|
||||||
|
|
||||||
uint8_t charge;
|
uint8_t charge;
|
||||||
|
uint8_t health;
|
||||||
} PowerInfoModel;
|
} PowerInfoModel;
|
||||||
|
|
||||||
void power_info_draw_callback(Canvas* canvas, void* context);
|
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 */
|
/* Get predicted remaining battery capacity in percents */
|
||||||
uint8_t api_hal_power_get_pct();
|
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 */
|
/* Get charging status */
|
||||||
bool api_hal_power_is_charging();
|
bool api_hal_power_is_charging();
|
||||||
|
|
||||||
|
@ -90,6 +90,10 @@ uint8_t api_hal_power_get_pct() {
|
|||||||
return bq27220_get_state_of_charge();
|
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() {
|
bool api_hal_power_is_charging() {
|
||||||
return bq25896_is_charging();
|
return bq25896_is_charging();
|
||||||
}
|
}
|
||||||
@ -175,9 +179,9 @@ void api_hal_power_dump_state(string_t buffer) {
|
|||||||
);
|
);
|
||||||
// Voltage and current info
|
// Voltage and current info
|
||||||
string_cat_printf(buffer,
|
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_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,
|
string_cat_printf(buffer,
|
||||||
"bq27220: Voltage: %dmV, Current: %dmA, Temperature: %dC\r\n",
|
"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();
|
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() {
|
bool api_hal_power_is_charging() {
|
||||||
return bq25896_is_charging();
|
return bq25896_is_charging();
|
||||||
}
|
}
|
||||||
@ -175,9 +179,9 @@ void api_hal_power_dump_state(string_t buffer) {
|
|||||||
);
|
);
|
||||||
// Voltage and current info
|
// Voltage and current info
|
||||||
string_cat_printf(buffer,
|
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_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,
|
string_cat_printf(buffer,
|
||||||
"bq27220: Voltage: %dmV, Current: %dmA, Temperature: %dC\r\n",
|
"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() {
|
uint16_t bq27220_get_state_of_charge() {
|
||||||
return bq27220_read_word(CommandStateOfCharge);
|
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 */
|
/* Get predicted remaining battery capacity in percents */
|
||||||
uint16_t bq27220_get_state_of_charge();
|
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