#ifndef POWER_H
#define POWER_H
#include <stdio.h>
#include <inttypes.h>
#include "driver/gpio.h"
#include "esp_log.h"
#include "esp_system.h"

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

#include "iic.h"

#define BQ25896_ADDR 0x6B // I2C 设备地址
#define BQ25896_SPEED_HZ  100000 // I2C 时钟频率（100kHz 标准模式）

// 读取系统状态
typedef struct {
    uint8_t vbus_stat : 3;    // VBUS 状态
    uint8_t chrg_stat : 2;    // 充电状态
    uint8_t pg_stat   : 1;    // 电源正常状态
    uint8_t vsys_stat : 1;    // 系统电压状态
    uint8_t reserved  : 1;
} bq25896_reg0b_t;

// 读取故障状态
typedef struct {
    uint8_t watchdog_fault : 1;  // 看门狗故障
    uint8_t boost_fault    : 1;  // 升压故障
    uint8_t chrg_fault     : 2;  // 充电故障
    uint8_t bat_fault      : 1;  // 电池故障
    uint8_t ntc_fault      : 3;  // NTC 故障
} bq25896_reg0c_t;



void power_init();
void power_sys_off();

#endif