Code is updated as per the review comment given by Joshua

This commit is contained in:
swateeshrivastava
2018-11-26 17:16:54 +05:30
parent 68844d8d13
commit ec46746e9d
6 changed files with 147 additions and 86 deletions

View File

@@ -51,6 +51,38 @@
* however they don't matter as much as the overall chemistry grouping for * however they don't matter as much as the overall chemistry grouping for
* selecting the correct conversion factors for the registers * selecting the correct conversion factors for the registers
*/ */
typedef enum LTC4015Status {
LTC4015_STATUS_BATTERY_VOLTAGE = 0,
LTC4015_STATUS_BATTERY_CURRENT,
LTC4015_STATUS_SYSTEM_VOLTAGE,
LTC4015_STATUS_INPUT_VOLATGE,
LTC4015_STATUS_INPUT_CURRENT,
LTC4015_STATUS_DIE_TEMPERATURE,
LTC4015_STATUS_ICHARGE_DAC
} LTC4015Status;
typedef enum LTC4015Config {
LTC4015_CONFIG_BATTERY_VOLTAGE_LOW = 0,
LTC4015_CONFIG_BATTERY_VOLTAGE_HIGH,
LTC4015_CONFIG_BATTERY_CURRENT_LOW,
LTC4015_CONFIG_INPUT_VOLTAGE_LOW,
LTC4015_CONFIG_INPUT_CURRENT_HIGH,
LTC4015_CONFIG_INPUT_CURRENT_LIMIT,
LTC4015_CONFIG_ICHARGE,
LTC4015_CONFIG_VCHARGE,
LTC4015_CONFIG_DIE_TEMPERATURE_HIGH,
} LTC4015Config;
typedef enum LTC4015Alert {
LTC4015_ALERT_BATTERY_VOLTAGE_LOW = 0,
LTC4015_ALERT_BATTERY_VOLTAGE_HIGH,
LTC4015_ALERT_BATTERY_CURRENT_LOW,
LTC4015_ALERT_INPUT_VOLTAGE_LOW,
LTC4015_ALERT_INPUT_CURRENT_HIGH,
LTC4015_ALERT_DIE_TEMPERATURE_HIGH,
} LTC4015Alert;
typedef enum LTC4015_Chem { typedef enum LTC4015_Chem {
LTC4015_CHEM_LI_ION, LTC4015_CHEM_LI_ION,
LTC4015_CHEM_LI_FE_PO4, LTC4015_CHEM_LI_FE_PO4,

View File

@@ -10,37 +10,6 @@
#include "inc/devices/ltc4015.h" #include "inc/devices/ltc4015.h"
typedef enum LTC4015Status {
LTC4015_STATUS_BATTERY_VOLTAGE = 0,
LTC4015_STATUS_BATTERY_CURRENT,
LTC4015_STATUS_SYSTEM_VOLTAGE,
LTC4015_STATUS_INPUT_VOLATGE,
LTC4015_STATUS_INPUT_CURRENT,
LTC4015_STATUS_DIE_TEMPERATURE,
LTC4015_STATUS_ICHARGE_DAC
} LTC4015Status;
typedef enum LTC4015Config {
LTC4015_CONFIG_BATTERY_VOLTAGE_LOW = 0,
LTC4015_CONFIG_BATTERY_VOLTAGE_HIGH,
LTC4015_CONFIG_BATTERY_CURRENT_LOW,
LTC4015_CONFIG_INPUT_VOLTAGE_LOW,
LTC4015_CONFIG_INPUT_CURRENT_HIGH,
LTC4015_CONFIG_INPUT_CURRENT_LIMIT,
LTC4015_CONFIG_ICHARGE,
LTC4015_CONFIG_VCHARGE,
LTC4015_CONFIG_DIE_TEMPERATURE_HIGH,
} LTC4015Config;
typedef enum LTC4015Alert {
LTC4015_ALERT_BATTERY_VOLTAGE_LOW = 0,
LTC4015_ALERT_BATTERY_VOLTAGE_HIGH,
LTC4015_ALERT_BATTERY_CURRENT_LOW,
LTC4015_ALERT_INPUT_VOLTAGE_LOW,
LTC4015_ALERT_INPUT_CURRENT_HIGH,
LTC4015_ALERT_DIE_TEMPERATURE_HIGH,
} LTC4015Alert;
static bool _choose_battery_charger(LTC4015_Dev *dev) static bool _choose_battery_charger(LTC4015_Dev *dev)
{ {
if (OcGpio_write(&dev->cfg.pin_lt4015_i2c_sel, if (OcGpio_write(&dev->cfg.pin_lt4015_i2c_sel,

View File

@@ -15,11 +15,11 @@ OcGpio_Port ec_io = {
}; };
bool LTC4015_GpioPins[] = { bool LTC4015_GpioPins[] = {
[0x05] = 0x1, [0x04] = 0x1,
}; };
uint32_t LTC4015_GpioConfig[] = { uint32_t LTC4015_GpioConfig[] = {
[0x05] = OCGPIO_CFG_INPUT, [0x04] = OCGPIO_CFG_INPUT,
}; };
extern const OcGpio_FnTable GpioSX1509_fnTable; extern const OcGpio_FnTable GpioSX1509_fnTable;
@@ -28,7 +28,7 @@ OcGpio_Port gbc_io_1 = {
.fn_table = &GpioSX1509_fnTable, .fn_table = &GpioSX1509_fnTable,
.cfg = .cfg =
&(SX1509_Cfg){ &(SX1509_Cfg){
.i2c_dev = { 0, 0x45 }, .i2c_dev = { OC_CONNECT1_I2C0, BIGBROTHER_IOEXP1_ADDRESS },
.pin_irq = NULL, .pin_irq = NULL,
}, },
.object_data = &(SX1509_Obj){}, .object_data = &(SX1509_Obj){},
@@ -47,7 +47,7 @@ LTC4015_Dev gbc_pwr_invalid_dev = {
.r_snsb = 30, .r_snsb = 30,
.r_snsi = 7, .r_snsi = 7,
.cellcount = 3, .cellcount = 3,
.pin_lt4015_i2c_sel = { &gbc_io_1, 2, 32 }, .pin_lt4015_i2c_sel = { &gbc_io_1, 4, 32 },
}, },
}; };
@@ -64,7 +64,7 @@ LTC4015_Dev gbc_pwr_invalid_bus = {
.r_snsb = 30, .r_snsb = 30,
.r_snsi = 7, .r_snsi = 7,
.cellcount = 3, .cellcount = 3,
.pin_lt4015_i2c_sel = { &gbc_io_1, 2, 32 }, .pin_lt4015_i2c_sel = { &gbc_io_1, 4, 32 },
}, },
}; };
/* Invalid Cfg for _choose_battery_charger*/ /* Invalid Cfg for _choose_battery_charger*/

View File

@@ -10,6 +10,7 @@
#define _TEST_LTC4015_H #define _TEST_LTC4015_H
#include "common/inc/global/Framework.h" #include "common/inc/global/Framework.h"
#include "common/inc/global/OC_CONNECT1.h"
#include "common/inc/ocmp_wrappers/ocmp_ltc4015.h" #include "common/inc/ocmp_wrappers/ocmp_ltc4015.h"
#include "drivers/GpioSX1509.h" #include "drivers/GpioSX1509.h"
#include "drivers/OcGpio.h" #include "drivers/OcGpio.h"
@@ -20,42 +21,33 @@
#include "helpers/attribute.h" #include "helpers/attribute.h"
#include "helpers/memory.h" #include "helpers/memory.h"
#include "inc/devices/ltc4015.h" #include "inc/devices/ltc4015.h"
#include "include/test_sx1509.h"
#include "src/helpers/math.h"
#include <string.h> #include <string.h>
#include <math.h> #include <math.h>
#include "unity.h" #include "unity.h"
#define LTC4015_INIT_BATTERY_VOLTAGE_LOW_LIMIT 16470 #define LTC4015_LION_INIT_BATTERY_VOLTAGE_LOW_LIMIT 16470
#define LTC4015_INIT_BATTERY_VOLTAGE_HIGH_LIMIT 21844 #define LTC4015_LION_INIT_BATTERY_VOLTAGE_HIGH_LIMIT 21844
#define LTC4015_INIT_CHARGE_CURRENT_LOW_LIMIT 2047 #define LTC4015_LION_INIT_CHARGE_CURRENT_LOW_LIMIT 2047
#define LTC4015_INIT_INPUT_VOLTAGE_LOW_LIMIT 9830 #define LTC4015_LION_INIT_INPUT_VOLTAGE_LOW_LIMIT 9830
#define LTC4015_INIT_INPUT_CURRENT_HIGH_LIMIT 23892 #define LTC4015_LION_INIT_INPUT_CURRENT_HIGH_LIMIT 23892
#define LTC4015_INIT_INPUT_CURRENT_LIMIT_SETTING 76 #define LTC4015_LION_INIT_INPUT_CURRENT_LIMIT_SETTING 76
#define LTC4015_LEAD_INIT_BATTERY_VOLTAGE_LOW_LIMIT 12352
#define LTC4015_LEAD_INIT_BATTERY_VOLTAGE_HIGH_LIMIT 17944
#define LTC4015_LEAD_INIT_CHARGE_CURRENT_LOW_LIMIT 204
#define LTC4015_LEAD_INIT_INPUT_VOLTAGE_LOW_LIMIT 9830
#define LTC4015_LEAD_INIT_INPUT_CURRENT_HIGH_LIMIT 23210
#define LTC4015_LEAD_INIT_ICHARGE_TARGET 31
#define LTC4015_LEAD_INIT_VCHARGE_SETTING 0
#define POST_DATA_NULL 0x00
#define POST_DEVID 0xFF
#define POST_MANID 0xFF
#define SX1509_REG_OPEN_DRAIN_A_ENABLE 0x10
/* ======================== Constants & variables =========================== */ /* ======================== Constants & variables =========================== */
extern const OcGpio_FnTable GpioSX1509_fnTable; extern const OcGpio_FnTable GpioSX1509_fnTable;
typedef enum LTC4015Status {
LTC4015_STATUS_BATTERY_VOLTAGE = 0,
LTC4015_STATUS_BATTERY_CURRENT,
LTC4015_STATUS_SYSTEM_VOLTAGE,
LTC4015_STATUS_INPUT_VOLATGE,
LTC4015_STATUS_INPUT_CURRENT,
LTC4015_STATUS_DIE_TEMPERATURE,
LTC4015_STATUS_ICHARGE_DAC
} LTC4015Status;
typedef enum LTC4015Config {
LTC4015_CONFIG_BATTERY_VOLTAGE_LOW = 0,
LTC4015_CONFIG_BATTERY_VOLTAGE_HIGH,
LTC4015_CONFIG_BATTERY_CURRENT_LOW,
LTC4015_CONFIG_INPUT_VOLTAGE_LOW,
LTC4015_CONFIG_INPUT_CURRENT_HIGH,
LTC4015_CONFIG_INPUT_CURRENT_LIMIT,
LTC4015_CONFIG_ICHARGE,
LTC4015_CONFIG_VCHARGE,
LTC4015_CONFIG_DIE_TEMPERATURE_HIGH,
} LTC4015Config;
/*Enumes are defined as per the LTC4015 datasheet*/ /*Enumes are defined as per the LTC4015 datasheet*/
typedef enum LTC4015Regs { typedef enum LTC4015Regs {
LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT = 0x01, LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT = 0x01,

View File

@@ -9,8 +9,6 @@
#include <stdint.h> #include <stdint.h>
#include "include/test_ltc4015.h" #include "include/test_ltc4015.h"
#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y))
int16_t ocmp_ltc4015_get_battery_voltage(LTC4015_Dev *dev, int16_t value) int16_t ocmp_ltc4015_get_battery_voltage(LTC4015_Dev *dev, int16_t value)
{ {
switch (dev->cfg.chem) { switch (dev->cfg.chem) {

View File

@@ -8,9 +8,7 @@
*/ */
#include "include/test_ltc4015.h" #include "include/test_ltc4015.h"
#define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) extern bool LTC4015_GpioPins[0x04];
extern bool LTC4015_GpioPins[1];
extern const I2C_Dev I2C_DEV; extern const I2C_Dev I2C_DEV;
extern const LTC4015_Config fact_leadAcid_cfg; extern const LTC4015_Config fact_leadAcid_cfg;
extern const LTC4015_Config fact_lithiumIon_cfg; extern const LTC4015_Config fact_lithiumIon_cfg;
@@ -21,9 +19,9 @@ extern LTC4015_Dev gbc_pwr_invalid_dev;
extern LTC4015_Dev gbc_pwr_invalid_leadAcid_cfg; extern LTC4015_Dev gbc_pwr_invalid_leadAcid_cfg;
extern OcGpio_Port ec_io; extern OcGpio_Port ec_io;
extern OcGpio_Port gbc_io_1; extern OcGpio_Port gbc_io_1;
extern uint32_t LTC4015_GpioConfig[1]; extern uint32_t LTC4015_GpioConfig[0x04];
extern uint16_t LTC4015_regs[LTC4015_REG_VAILD_BIT_MESURMENT]; extern uint16_t LTC4015_regs[LTC4015_REG_VAILD_BIT_MESURMENT];
extern uint8_t SX1509_regs[0x7F]; extern uint8_t SX1509_regs[SX1509_REG_TEST_2];
/* ============================= Boilerplate ================================ */ /* ============================= Boilerplate ================================ */
void suite_setUp(void) void suite_setUp(void)
@@ -37,7 +35,8 @@ void suite_setUp(void)
sizeof(LTC4015_regs[0]), sizeof(uint8_t), sizeof(LTC4015_regs[0]), sizeof(uint8_t),
FAKE_I2C_DEV_LITTLE_ENDIAN); FAKE_I2C_DEV_LITTLE_ENDIAN);
fake_I2C_registerDevSimple(0, 0x45, SX1509_regs, sizeof(SX1509_regs), fake_I2C_registerDevSimple(OC_CONNECT1_I2C0, BIGBROTHER_IOEXP1_ADDRESS,
SX1509_regs, sizeof(SX1509_regs),
sizeof(SX1509_regs[0]), sizeof(uint8_t), sizeof(SX1509_regs[0]), sizeof(uint8_t),
FAKE_I2C_DEV_LITTLE_ENDIAN); FAKE_I2C_DEV_LITTLE_ENDIAN);
} }
@@ -73,27 +72,71 @@ void OCMP_GenerateAlert(const AlertData *alert_data, unsigned int alert_id,
void test_ocmp_ltc4015_probe(void) void test_ocmp_ltc4015_probe(void)
{ {
POSTData postData; POSTData postData;
LTC4015_GpioConfig[0x05] = 0; SX1509_regs[SX1509_REG_OPEN_DRAIN_A] = POST_DATA_NULL;
/* Test with the actual value */ /* Test with the actual value */
LTC4015_regs[LTC4015_REG_SYSTEM_STATUS_INDICATOR] = LTC4015_CHARGER_ENABLED; LTC4015_regs[LTC4015_REG_SYSTEM_STATUS_INDICATOR] = LTC4015_CHARGER_ENABLED;
TEST_ASSERT_EQUAL(POST_DEV_FOUND, LTC4015_fxnTable.cb_probe( TEST_ASSERT_EQUAL(POST_DEV_FOUND, LTC4015_fxnTable.cb_probe(
&gbc_pwr_int_bat_charger, &postData)); &gbc_pwr_int_bat_charger, &postData));
TEST_ASSERT_EQUAL(OCGPIO_CFG_OUTPUT, LTC4015_GpioConfig[0x05]); TEST_ASSERT_EQUAL_HEX8(SX1509_REG_OPEN_DRAIN_A_ENABLE,
SX1509_regs[SX1509_REG_OPEN_DRAIN_A]);
TEST_ASSERT_EQUAL(gbc_pwr_int_bat_charger.cfg.i2c_dev.bus, postData.i2cBus);
TEST_ASSERT_EQUAL_HEX8(gbc_pwr_int_bat_charger.cfg.i2c_dev.slave_addr,
postData.devAddr);
TEST_ASSERT_EQUAL_HEX8(POST_MANID, postData.manId);
TEST_ASSERT_EQUAL_HEX8(POST_DEVID, postData.devId);
SX1509_regs[SX1509_REG_OPEN_DRAIN_A] = POST_DATA_NULL;
postData.i2cBus = POST_DATA_NULL;
postData.devAddr = POST_DATA_NULL;
postData.manId = POST_DATA_NULL;
postData.devId = POST_DATA_NULL;
/* Test with an incorrect value */ /* Test with an incorrect value */
LTC4015_regs[LTC4015_REG_SYSTEM_STATUS_INDICATOR] = LTC4015_regs[LTC4015_REG_SYSTEM_STATUS_INDICATOR] =
~LTC4015_CHARGER_ENABLED; ~LTC4015_CHARGER_ENABLED;
TEST_ASSERT_EQUAL( TEST_ASSERT_EQUAL(
POST_DEV_MISSING, POST_DEV_MISSING,
LTC4015_fxnTable.cb_probe(&gbc_pwr_int_bat_charger, &postData)); LTC4015_fxnTable.cb_probe(&gbc_pwr_int_bat_charger, &postData));
TEST_ASSERT_EQUAL_HEX8(SX1509_REG_OPEN_DRAIN_A_ENABLE,
SX1509_regs[SX1509_REG_OPEN_DRAIN_A]);
TEST_ASSERT_EQUAL(POST_DATA_NULL, postData.i2cBus);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devAddr);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.manId);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devId);
/* Test with a missing device */ /* Test with a missing device */
SX1509_regs[SX1509_REG_OPEN_DRAIN_A] = POST_DATA_NULL;
TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_fxnTable.cb_probe( TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_fxnTable.cb_probe(
&gbc_pwr_invalid_dev, &postData)); &gbc_pwr_invalid_dev, &postData));
TEST_ASSERT_EQUAL_HEX8(SX1509_REG_OPEN_DRAIN_A_ENABLE,
SX1509_regs[SX1509_REG_OPEN_DRAIN_A]);
TEST_ASSERT_EQUAL(POST_DATA_NULL, postData.i2cBus);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devAddr);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.manId);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devId);
/* Test with a missing bus */ /* Test with a missing bus */
SX1509_regs[SX1509_REG_OPEN_DRAIN_A] = POST_DATA_NULL;
TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_fxnTable.cb_probe( TEST_ASSERT_EQUAL(POST_DEV_MISSING, LTC4015_fxnTable.cb_probe(
&gbc_pwr_invalid_bus, &postData)); &gbc_pwr_invalid_bus, &postData));
TEST_ASSERT_EQUAL_HEX8(SX1509_REG_OPEN_DRAIN_A_ENABLE,
SX1509_regs[SX1509_REG_OPEN_DRAIN_A]);
TEST_ASSERT_EQUAL(POST_DATA_NULL, postData.i2cBus);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devAddr);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.manId);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devId);
/* Test for GPIO Configure Failure */
SX1509_regs[SX1509_REG_OPEN_DRAIN_A] = POST_DATA_NULL;
TEST_ASSERT_EQUAL(
POST_DEV_NOSTATUS,
LTC4015_fxnTable.cb_probe(&gbc_pwr_invalid_leadAcid_cfg, &postData));
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL,
SX1509_regs[SX1509_REG_OPEN_DRAIN_A]);
TEST_ASSERT_EQUAL(POST_DATA_NULL, postData.i2cBus);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devAddr);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.manId);
TEST_ASSERT_EQUAL_HEX8(POST_DATA_NULL, postData.devId);
} }
void test_ocmp_ltc4015_init(void) void test_ocmp_ltc4015_init(void)
@@ -104,45 +147,72 @@ void test_ocmp_ltc4015_init(void)
.componentId = 4, .componentId = 4,
.deviceId = 1, .deviceId = 1,
}; };
AlertData *alert_data_cp = malloc(sizeof(AlertData));
*alert_data_cp = alert_data; /* INIT for Lithium ION */
TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE, TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE,
LTC4015_fxnTable.cb_init(&gbc_pwr_int_bat_charger, LTC4015_fxnTable.cb_init(&gbc_pwr_int_bat_charger,
&fact_lithiumIon_cfg, &fact_lithiumIon_cfg,
alert_data_cp)); &alert_data));
TEST_ASSERT_EQUAL(LTC4015_INIT_BATTERY_VOLTAGE_LOW_LIMIT, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_BATTERY_VOLTAGE_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT]); LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_INIT_BATTERY_VOLTAGE_HIGH_LIMIT, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_BATTERY_VOLTAGE_HIGH_LIMIT,
LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_HIGH_LIMIT]); LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_HIGH_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_INIT_CHARGE_CURRENT_LOW_LIMIT, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_CHARGE_CURRENT_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_CHARGE_CURRENT_LOW_LIMIT]); LTC4015_regs[LTC4015_REG_CHARGE_CURRENT_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_INIT_INPUT_VOLTAGE_LOW_LIMIT, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_INPUT_VOLTAGE_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_INPUT_VOLTAGE_LOW_LIMIT]); LTC4015_regs[LTC4015_REG_INPUT_VOLTAGE_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_INIT_INPUT_CURRENT_HIGH_LIMIT, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_INPUT_CURRENT_HIGH_LIMIT,
LTC4015_regs[LTC4015_REG_INPUT_CURRENT_HIGH_LIMIT]); LTC4015_regs[LTC4015_REG_INPUT_CURRENT_HIGH_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_INIT_INPUT_CURRENT_LIMIT_SETTING, TEST_ASSERT_EQUAL(LTC4015_LION_INIT_INPUT_CURRENT_LIMIT_SETTING,
LTC4015_regs[LTC4015_REG_INPUT_CURRENT_LIMIT_SETTING]); LTC4015_regs[LTC4015_REG_INPUT_CURRENT_LIMIT_SETTING]);
TEST_ASSERT_EQUAL_HEX16(LTC4015_EVT_BVL | LTC4015_EVT_BVH | TEST_ASSERT_EQUAL_HEX16(LTC4015_EVT_BVL | LTC4015_EVT_BVH |
LTC4015_EVT_IVL | LTC4015_EVT_ICH | LTC4015_EVT_IVL | LTC4015_EVT_ICH |
LTC4015_EVT_BCL, LTC4015_EVT_BCL,
LTC4015_regs[LTC4015_REG_ENABLE_LIMIT_MONITIOR]); LTC4015_regs[LTC4015_REG_ENABLE_LIMIT_MONITIOR]);
TEST_ASSERT_EQUAL(LTC4015_EVT_NTCH,
LTC4015_regs[LTC4015_REG_ENABLE_CHARGER_STATE]);
/* INIT for Lead Acid */
TEST_ASSERT_EQUAL(POST_DEV_CFG_DONE, LTC4015_fxnTable.cb_init(
&gbc_pwr_ext_bat_charger,
&fact_leadAcid_cfg, &alert_data));
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_BATTERY_VOLTAGE_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_BATTERY_VOLTAGE_HIGH_LIMIT,
LTC4015_regs[LTC4015_REG_BATTERY_VOLTAGE_HIGH_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_CHARGE_CURRENT_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_CHARGE_CURRENT_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_INPUT_VOLTAGE_LOW_LIMIT,
LTC4015_regs[LTC4015_REG_INPUT_VOLTAGE_LOW_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_INPUT_CURRENT_HIGH_LIMIT,
LTC4015_regs[LTC4015_REG_INPUT_CURRENT_HIGH_LIMIT]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_ICHARGE_TARGET,
LTC4015_regs[LTC4015_REG_CHARGE_CURRENT_TARGET]);
TEST_ASSERT_EQUAL(LTC4015_LEAD_INIT_VCHARGE_SETTING,
LTC4015_regs[LTC4015_REG_VCHARGE_SETTING]);
TEST_ASSERT_EQUAL_HEX16(LTC4015_EVT_BVL | LTC4015_EVT_BVH |
LTC4015_EVT_IVL | LTC4015_EVT_ICH |
LTC4015_EVT_BCL,
LTC4015_regs[LTC4015_REG_ENABLE_LIMIT_MONITIOR]);
TEST_ASSERT_EQUAL(LTC4015_EVT_NTCH,
LTC4015_regs[LTC4015_REG_ENABLE_CHARGER_STATE]);
/* Test with a missing device */ /* Test with a missing device */
TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL,
LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_dev, LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_dev,
&fact_lithiumIon_cfg, &fact_lithiumIon_cfg,
alert_data_cp)); &alert_data));
/* Test with a missing bus */ /* Test with a missing bus */
TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL, TEST_ASSERT_EQUAL(POST_DEV_CFG_FAIL,
LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_bus, LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_bus,
&fact_lithiumIon_cfg, &fact_lithiumIon_cfg,
alert_data_cp)); &alert_data));
/* Test for _choose_battery_charge false */ /* Test for _choose_battery_charge false */
TEST_ASSERT_EQUAL( TEST_ASSERT_EQUAL(
false, LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_leadAcid_cfg, false, LTC4015_fxnTable.cb_init(&gbc_pwr_invalid_leadAcid_cfg,
&fact_lithiumIon_cfg, alert_data_cp)); &fact_lithiumIon_cfg, &alert_data));
} }
void test_ocmp_ltc4015_battery_voltage_get_status(void) void test_ocmp_ltc4015_battery_voltage_get_status(void)