#ifndef BATT_MGMT_H #define BATT_MGMT_H #include #include #define BATT_MGMT_OVERSAMPLING_8X 8U #define BATT_MGMT_OVERSAMPLING_16X 16U typedef enum { BATT_STATE_DISCHARGING = 0, BATT_STATE_FULL, BATT_STATE_CHARGING, BATT_STATE_ERROR, BATT_STATE_UNKNOWN, } batt_mgmt_state_t; /** * @brief Measure battery VDDH voltage. * * @param oversampling Oversampling factor (BATT_MGMT_OVERSAMPLING_8X or BATT_MGMT_OVERSAMPLING_16X). * @param vddh_mv Pointer to store the result in millivolts. * @return 0 on success, negative errno on failure. */ int batt_mgmt_measure_vddh_mv(uint8_t oversampling, int32_t *vddh_mv); /** * @brief Get raw charger status (GPIO level). * * Returns the current logic level of the charger status pin (typically from ETA6003). * This is the **raw GPIO status**, not a processed state machine result. * * @return true if charger pin is high (e.g., battery is "full"), false if low. */ bool batt_mgmt_get_charger_status(void); /** * @brief Get processed battery state with blinking detection. * * Returns a derived state based on: * - USB VBUS presence (from usb_mgmt) * - Charger status GPIO level (from batt_mgmt_get_charger_status) * - Blinking detection (state changes within CONFIG_BATT_MGMT_CHG_BLINKING_WINDOW_MS) * * Note: This differs from batt_mgmt_get_charger_status() which returns the **raw** GPIO level. * * @return Battery state enum (DISCHARGING, FULL, CHARGING, or ERROR if blinking detected). */ batt_mgmt_state_t batt_mgmt_get_battery_state(void); #endif