Power: Also ask charger if charge done (#1378)
* power: Also ask charger if charge done * F7: bump API Symbols version * Lib: remove double include in bq25896.c Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
parent
3e3a167764
commit
9f501034c3
@ -96,7 +96,7 @@ void power_free(Power* power) {
|
|||||||
|
|
||||||
static void power_check_charging_state(Power* power) {
|
static void power_check_charging_state(Power* power) {
|
||||||
if(furi_hal_power_is_charging()) {
|
if(furi_hal_power_is_charging()) {
|
||||||
if(power->info.charge == 100) {
|
if((power->info.charge == 100) || (furi_hal_power_is_charging_done())) {
|
||||||
if(power->state != PowerStateCharged) {
|
if(power->state != PowerStateCharged) {
|
||||||
notification_internal_message(power->notification, &sequence_charged);
|
notification_internal_message(power->notification, &sequence_charged);
|
||||||
power->state = PowerStateCharged;
|
power->state = PowerStateCharged;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
entry,status,name,type,params
|
entry,status,name,type,params
|
||||||
Version,+,1.11,,
|
Version,+,1.12,,
|
||||||
Header,+,applications/services/bt/bt_service/bt.h,,
|
Header,+,applications/services/bt/bt_service/bt.h,,
|
||||||
Header,+,applications/services/cli/cli.h,,
|
Header,+,applications/services/cli/cli.h,,
|
||||||
Header,+,applications/services/cli/cli_vcp.h,,
|
Header,+,applications/services/cli/cli_vcp.h,,
|
||||||
@ -1141,6 +1141,7 @@ Function,+,furi_hal_power_insomnia_enter,void,
|
|||||||
Function,+,furi_hal_power_insomnia_exit,void,
|
Function,+,furi_hal_power_insomnia_exit,void,
|
||||||
Function,-,furi_hal_power_insomnia_level,uint16_t,
|
Function,-,furi_hal_power_insomnia_level,uint16_t,
|
||||||
Function,+,furi_hal_power_is_charging,_Bool,
|
Function,+,furi_hal_power_is_charging,_Bool,
|
||||||
|
Function,+,furi_hal_power_is_charging_done,_Bool,
|
||||||
Function,+,furi_hal_power_is_otg_enabled,_Bool,
|
Function,+,furi_hal_power_is_otg_enabled,_Bool,
|
||||||
Function,+,furi_hal_power_off,void,
|
Function,+,furi_hal_power_off,void,
|
||||||
Function,+,furi_hal_power_reset,void,
|
Function,+,furi_hal_power_reset,void,
|
||||||
|
|
@ -266,6 +266,13 @@ bool furi_hal_power_is_charging() {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool furi_hal_power_is_charging_done() {
|
||||||
|
furi_hal_i2c_acquire(&furi_hal_i2c_handle_power);
|
||||||
|
bool ret = bq25896_is_charging_done(&furi_hal_i2c_handle_power);
|
||||||
|
furi_hal_i2c_release(&furi_hal_i2c_handle_power);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void furi_hal_power_shutdown() {
|
void furi_hal_power_shutdown() {
|
||||||
furi_hal_power_insomnia_enter();
|
furi_hal_power_insomnia_enter();
|
||||||
|
|
||||||
|
@ -85,6 +85,12 @@ uint8_t furi_hal_power_get_bat_health_pct();
|
|||||||
*/
|
*/
|
||||||
bool furi_hal_power_is_charging();
|
bool furi_hal_power_is_charging();
|
||||||
|
|
||||||
|
/** Get charge complete status
|
||||||
|
*
|
||||||
|
* @return true if done charging and connected to charger
|
||||||
|
*/
|
||||||
|
bool furi_hal_power_is_charging_done();
|
||||||
|
|
||||||
/** Switch MCU to SHUTDOWN */
|
/** Switch MCU to SHUTDOWN */
|
||||||
void furi_hal_power_shutdown();
|
void furi_hal_power_shutdown();
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include "bq25896.h"
|
#include "bq25896.h"
|
||||||
#include "bq25896_reg.h"
|
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
@ -81,7 +80,7 @@ void bq25896_poweroff(FuriHalI2cBusHandle* handle) {
|
|||||||
handle, BQ25896_ADDRESS, 0x09, *(uint8_t*)&bq25896_regs.r09, BQ25896_I2C_TIMEOUT);
|
handle, BQ25896_ADDRESS, 0x09, *(uint8_t*)&bq25896_regs.r09, BQ25896_I2C_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bq25896_is_charging(FuriHalI2cBusHandle* handle) {
|
ChrgStat bq25896_get_charge_status(FuriHalI2cBusHandle* handle) {
|
||||||
furi_hal_i2c_read_mem(
|
furi_hal_i2c_read_mem(
|
||||||
handle,
|
handle,
|
||||||
BQ25896_ADDRESS,
|
BQ25896_ADDRESS,
|
||||||
@ -91,7 +90,16 @@ bool bq25896_is_charging(FuriHalI2cBusHandle* handle) {
|
|||||||
BQ25896_I2C_TIMEOUT);
|
BQ25896_I2C_TIMEOUT);
|
||||||
furi_hal_i2c_read_reg_8(
|
furi_hal_i2c_read_reg_8(
|
||||||
handle, BQ25896_ADDRESS, 0x0B, (uint8_t*)&bq25896_regs.r0B, BQ25896_I2C_TIMEOUT);
|
handle, BQ25896_ADDRESS, 0x0B, (uint8_t*)&bq25896_regs.r0B, BQ25896_I2C_TIMEOUT);
|
||||||
return bq25896_regs.r0B.CHRG_STAT != ChrgStatNo;
|
return bq25896_regs.r0B.CHRG_STAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool bq25896_is_charging(FuriHalI2cBusHandle* handle) {
|
||||||
|
// Include precharge, fast charging, and charging termination done as "charging"
|
||||||
|
return bq25896_get_charge_status(handle) != ChrgStatNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool bq25896_is_charging_done(FuriHalI2cBusHandle* handle) {
|
||||||
|
return bq25896_get_charge_status(handle) == ChrgStatDone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void bq25896_enable_charging(FuriHalI2cBusHandle* handle) {
|
void bq25896_enable_charging(FuriHalI2cBusHandle* handle) {
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "bq25896_reg.h"
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <furi_hal_i2c.h>
|
#include <furi_hal_i2c.h>
|
||||||
@ -10,9 +12,15 @@ void bq25896_init(FuriHalI2cBusHandle* handle);
|
|||||||
/** Send device into shipping mode */
|
/** Send device into shipping mode */
|
||||||
void bq25896_poweroff(FuriHalI2cBusHandle* handle);
|
void bq25896_poweroff(FuriHalI2cBusHandle* handle);
|
||||||
|
|
||||||
|
/** Get charging status */
|
||||||
|
ChrgStat bq25896_get_charge_status(FuriHalI2cBusHandle* handle);
|
||||||
|
|
||||||
/** Is currently charging */
|
/** Is currently charging */
|
||||||
bool bq25896_is_charging(FuriHalI2cBusHandle* handle);
|
bool bq25896_is_charging(FuriHalI2cBusHandle* handle);
|
||||||
|
|
||||||
|
/** Is charging completed while connected to charger */
|
||||||
|
bool bq25896_is_charging_done(FuriHalI2cBusHandle* handle);
|
||||||
|
|
||||||
/** Enable charging */
|
/** Enable charging */
|
||||||
void bq25896_enable_charging(FuriHalI2cBusHandle* handle);
|
void bq25896_enable_charging(FuriHalI2cBusHandle* handle);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user