/************************************************************************** * * Copyright (c) 2026 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file BatteryDriver.h * * @author (last) Suresh Dharnala * @date (last) 15-May-2026 * * @author (original) Suresh Dharnala * @date (original) 11-May-2026 * ***************************************************************************/ #ifndef APP_DRIVERS_BATTERYDRIVER_H_ #define APP_DRIVERS_BATTERYDRIVER_H_ #include "TDCommon.h" #include "Utilities.h" /** * @defgroup BatteryDriver * @brief The battery Driver module provides interfaces to the smart battery charger controller and Battery Pack through I2C communication. * * @addtogroup BatteryDriver * @{ */ // ********** public definitions ********** /// Enumeration of battery data to be read from the battery pack or battery charger in a round-robin fashion. typedef enum BatteryManagementEnum { BEGINNING_OF_LIST = 0, ///< Start of battery data list BATTERY_PACK_REMAINING_CAPACITY, ///< Remaining battery capacity (in mAh) BATTERY_PACK_BATTERY_STATUS, ///< Battery pack status BATTERY_PACK_RELATIVE_STATE_OF_CHARGE, ///< Battery pack relative state of charge (%) BATTERY_PACK_FULL_CHARGE_CAPACITY, ///< Battery pack full charge capacity in mAh BATTERY_CHARGER_STATUS, ///< Battery charger status register 1 (0x21) BATTERY_CHARGER_TS, ///< Battery charger temperature (in deg K) BATTERY_CHARGER_VBAT, ///< Battery charger terminal voltage (in mV) BATTERY_CHARGER_VSYS, ///< Battery charger system voltage (in mV) BATTERY_CHARGER_FAULT, ///< Battery charger fault status BATTERY_CHARGER_CURRENT, ///< Battery charger current (in mA) END_OF_LIST, ///< End of battery data list } BATTERY_MANAGEMENT_ENUM_T; typedef enum BatteryDevicesEnum { BATTERY_CHARGER_ADDRESS = 0, ///< Battery charger at I2C address BATTERY_PACK_ADDRESS, ///< Battery pack at SMBus address NUM_OF_BATTERY_DEVICES, ///< Number of battery devices } BATTERY_DEVICE_ADDRESS_ENUM_T; // ********** public function prototypes ********** void initsetupI2CDriver(void); BOOL getBatteryData( BATTERY_DEVICE_ADDRESS_ENUM_T devicesel, BATTERY_MANAGEMENT_ENUM_T registersel, U32 * dataPtr ); U32 getI2CStatusRegister( BOOL resetOverride ); BOOL testBatteryI2CStatusOverride( MESSAGE_T *message ); /**@}*/ #endif /* APP_DRIVERS_BATTERYDRIVER_H_ */