Battery measurement, basic version
This commit is contained in:
52
firmware/libs/batt_mgmt/include/batt_mgmt.h
Normal file
52
firmware/libs/batt_mgmt/include/batt_mgmt.h
Normal file
@@ -0,0 +1,52 @@
|
||||
#ifndef BATT_MGMT_H
|
||||
#define BATT_MGMT_H
|
||||
|
||||
#include <zephyr/types.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user