[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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 gornekich
						gornekich