/************************************************************************** * * Copyright (c) 2021-2024 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 Battery.h * * @author (last) Sean Nash * @date (last) 10-Aug-2023 * * @author (original) Quang Nguyen * @date (original) 24-Feb-2021 * ***************************************************************************/ #ifndef __BATTERY_H__ #define __BATTERY_H__ #include "HDCommon.h" /** * @defgroup Battery Battery * @brief The battery module provides interfaces to the smart battery charger controller through I2C communication. * * @addtogroup Battery * @{ */ // ********** public definitions ********** /// Payload record structure for battery status data broadcast message typedef struct { U32 RemainingCapacity; ///< Remaining capacity (mAh). U32 BatteryStatus; ///< Battery status. U32 BatteryChargerStatus; ///< Battery charge status. U32 BatteryI2CStatus; ///< Battery Comm status. } BATTERY_STATUS_PAYLOAD_T; /// Payload record structure for battery module data broadcast message typedef struct { U32 RemainingCapacityAlarm; ///< Remaining capacity alarm. U32 RemainingTimeAlarm; ///< Remaining time alarm. U32 BatteryMode; ///< Battery mode. U32 AtRate; ///< At rate. U32 AtRateTimeToFull; ///< At rate time to full. U32 AtRateTimeToEmpty; ///< At rate time to empty. U32 AtRateOK; ///< At rate ok. U32 Temperature; ///< Temperature. U32 Voltage; ///< Voltage. U32 Current; ///< Current. U32 AverageCurrent; ///< Average current. U32 MaxError; ///< Max error. U32 RelativeStateOfCharge; ///< Relative state of charge. U32 AbsoluteStateOfCharge; ///< Absolute state of charge. U32 FullChargeCapacity; ///< Full charge capacity. U32 RunTimeToEmpty; ///< Run time to empty. U32 AverageTimeToEmpty; ///< Average time to empty. U32 AverageTimeToFull; ///< Average time to full. U32 ChargingCurrent; ///< Charging current. U32 ChargingVoltage; ///< Charging voltage. U32 CycleCount; ///< Cycle count. U32 DesignCapacity; ///< Design capacity. U32 DesignVoltage; ///< Design voltage. U32 SpecificationInfo; ///< Specification information. U32 ManufactureDate; ///< Manufacture date. U32 SerialNumber; ///< Serial number. U32 ManufacturerName; ///< Manufacturer name. U32 DeviceName; ///< Device name. U32 DeviceChemistry; ///< Device chemistry. } BATTERY_MANAGER_PAYLOAD_T; // ********** public function prototypes ********** void initBattery( void ); void execBatteryMonitor( void ); BOOL isBatteryCharged( void ); BOOL testSetBatteryRemainingCapacityOverride( F32 value ); BOOL testResetBatteryRemainingCapacityOverride( void ); BOOL testSetBatteryStatusOverride( U32 value ); BOOL testResetBatteryStatusOverride( void ); BOOL testSetBatteryChargerStatusOverride( U32 value ); BOOL testResetBatteryChargerStatusOverride( void ); BOOL testSetBatteryI2CStatusOverride( U32 value ); BOOL testResetBatteryI2CStatusOverride( void ); /**@}*/ #endif