fix(battery): detect TP4056 charging and full states on new board

This commit is contained in:
chenjintao
2026-10-23 16:23:39 +08:00
parent 415c75b0e6
commit 6116a67d5f
13 changed files with 617 additions and 249 deletions
+10
View File
@@ -52,6 +52,8 @@ typedef enum {
DOMAIN_BATTERY_CHARGE_UNKNOWN = 0,
DOMAIN_BATTERY_CHARGE_NOT_CHARGING,
DOMAIN_BATTERY_CHARGE_CHARGING,
DOMAIN_BATTERY_CHARGE_FULL,
DOMAIN_BATTERY_CHARGE_FAULT,
} domain_battery_charge_state_t;
typedef enum {
@@ -67,6 +69,9 @@ typedef struct {
int latest_sample_mv;
uint8_t percentage;
domain_battery_charge_state_t charge_state;
bool charge_inputs_valid;
bool charge_signal_active;
bool full_signal_active;
domain_battery_level_state_t level_state;
bool valid;
bool latest_sample_valid;
@@ -83,6 +88,11 @@ esp_err_t domain_battery_init(void);
/** 获取并处理一次电池采样,不执行产品策略。 / Process one battery sample without product policy. */
esp_err_t domain_battery_sample(void);
/** 每100ms调用;两路输入连续采样稳定1秒后更新充电状态,间隔>250ms重新确认。
* 不访问ADC;两把锁各最多等待100ms,失败不会后台继续。并发调用安全。
*/
esp_err_t domain_battery_poll_charge(void);
/** 复制最新电池 SSOT 快照。 / Copy the latest battery SSOT snapshot into `out_status`. */
esp_err_t domain_battery_get_status(domain_battery_status_t *out_status);