Merge branch 'master' into main_json_schema

This commit is contained in:
Jack Marriott
2018-11-27 00:03:07 -08:00
committed by GitHub
16 changed files with 2307 additions and 38 deletions

View File

@@ -13,3 +13,6 @@ A clear and concise description of what you happened.
**Please provide all necessary steps to reproduce the issue**
A clear and concise description of steps to reproduce the bug.
**Attach build configuration log**
Check under firmware/utilities/build and attach build_*_cfg.txt

View File

@@ -50,3 +50,5 @@ William Laroche
David Lacasse
Messaoud Ahmed Ouameur
Yannick Lebel
Mark D Lewis
Jack Marriott

View File

@@ -7,7 +7,7 @@
# Set proper path.
######################
OCWARE_DIR ?= $(HOME)/OpenCellular/firmware/ec
OCWARE_DIR ?= $(shell pwd)
TIRTOS_DIR ?= $(HOME)/ti/tirtos_tivac_2_16_01_14
XDCTOOLS_DIR ?= $(HOME)/ti/xdctools_3_32_00_06_core
TOOLCHAIN ?= /usr
@@ -84,8 +84,13 @@ LINT_FLAGS = -i -style=file -fallback-style=none
.PRECIOUS: %/compiler.opt %/linker.cmd
default: get_cfg all
all: oc_connect1 hash
get_cfg:
cd ../utilities/build; ./envDetect.sh $(CC) $(TIRTOS_DIR)
hash:
cd ../utilities/checksums; ./hashes.sh $(shell pwd)/$(OUT) -ec

View File

@@ -147,9 +147,9 @@ typedef struct Eth_TcpClient_Params {
uint8_t repeat;
} Eth_TcpClient_Params;
ePostCode eth_sw_probe();
ePostCode eth_sw_init();
void eth_enable_interrupt();
ePostCode eth_sw_probe(POSTData *postData);
ePostCode eth_sw_init(Eth_cfg *ethCfg);
void eth_enable_interrupt(void);
ReturnStatus get_interrupt(uint8_t port);
ReturnStatus eth_sw_get_status_speed(uint8_t port, port_speed *speed);
ReturnStatus eth_sw_get_status_duplex(uint8_t port, port_duplex *duplex);

View File

@@ -51,6 +51,38 @@
* however they don't matter as much as the overall chemistry grouping for
* 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 {
LTC4015_CHEM_LI_ION,
LTC4015_CHEM_LI_FE_PO4,
@@ -191,4 +223,5 @@ ReturnStatus LTC4015_enableChargerStateAlerts(LTC4015_Dev *dev,
ePostCode LTC4015_probe(LTC4015_Dev *dev, POSTData *postData);
void LTC4015_configure(LTC4015_Dev *dev);
#endif /* LTC4015_H_ */

View File

@@ -10,37 +10,6 @@
#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)
{
if (OcGpio_write(&dev->cfg.pin_lt4015_i2c_sel,

View File

@@ -87,9 +87,13 @@ endif
# Make Targets
# =============================================================================
test: $(BUILD_PATHS) $(RESULTS)
test: get_cfg $(BUILD_PATHS) $(RESULTS)
ruby $(UNITY_ROOT)/auto/unity_test_summary.rb $(PATHR)
get_cfg:
cd ../../utilities/build; ./envDetect.sh $(shell cat $(UNITY_ROOT)/release/version.info)
junit: test
@ruby $(UNITY_ROOT)/auto/stylize_as_junit.rb -r $(PATHR) -o $(PATHR)/unit-test-results.xml
@@ -156,6 +160,9 @@ $(PATHB)Test_PinGroup_driver$(TARGET_EXTENSION): $(STD_FILES) $(TEST_PINGROUP_SR
TEST_OCGPIO_SRC=$(OCWARE_ROOT)/src/drivers/OcGpio.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_I2C.c fake/fake_GPIO.c fake/fake_ThreadedISR.c $(OCWARE_ROOT)/src/helpers/memory.c stub/stub_GateMutex.c
$(PATHB)Test_OcGpio$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCGPIO_SRC)
TEST_OCMP_LTC4015_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_ltc4015.c $(OCWARE_ROOT)/src/devices/ltc4015.c $(OCWARE_ROOT)/src/drivers/GpioSX1509.c $(OCWARE_ROOT)/src/devices/sx1509.c $(OCWARE_ROOT)/src/helpers/memory.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c stub/stub_GateMutex.c stub/stub_GateMutex.c stub/stub_ltc4015.c $(OCWARE_ROOT)/src/post/post_util.c fake/fake_SX1509_register.c fake/fake_ltc4015_register.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_GBC.c
$(PATHB)Test_ocmp_ltc4015$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_LTC4015_SRC) $(INC_M)
$(PATHB)%$(TARGET_EXTENSION):
$(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@
$(COV_CMDS)

View File

@@ -72,7 +72,7 @@ static int FakeGpio_setCallback(const OcGpio_Pin *pin,
if (pin->idx >= FAKE_GPIO_PIN_COUNT) {
return OCGPIO_FAILURE;
}
}
obj->callback[pin->idx].fn = callback;
obj->callback[pin->idx].context = context;

View File

@@ -0,0 +1,137 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include "include/test_sx1509.h"
uint8_t SX1509_regs[] = {
[SX1509_REG_INPUT_DISABLE_B] =
0x00, /* Input buffer disableSX1509_REGister B */
[SX1509_REG_INPUT_DISABLE_A] =
0x00, /* Input buffer disableSX1509_REGister A */
[SX1509_REG_LONG_SLEW_B] =
0x00, /* Output buffer long slewSX1509_REGister B */
[SX1509_REG_LONG_SLEW_A] =
0x00, /* Output buffer long slewSX1509_REGister A */
[SX1509_REG_LOW_DRIVE_B] =
0x00, /* Output buffer low driveSX1509_REGister B */
[SX1509_REG_LOW_DRIVE_A] =
0x00, /* Output buffer low driveSX1509_REGister A */
[SX1509_REG_PULL_UP_B] = 0x00, /* Pull UpSX1509_REGister B */
[SX1509_REG_PULL_UP_A] = 0x00, /* Pull UpSX1509_REGister A */
[SX1509_REG_PULL_DOWN_B] = 0x00, /* Pull DownSX1509_REGister B */
[SX1509_REG_PULL_DOWN_A] = 0x00, /* Pull DownSX1509_REGister A */
[SX1509_REG_OPEN_DRAIN_B] = 0x00, /* Open drainSX1509_REGister B */
[SX1509_REG_OPEN_DRAIN_A] = 0x00, /* Open drainSX1509_REGister A */
[SX1509_REG_POLARITY_B] = 0x00, /* PolaritySX1509_REGister B */
[SX1509_REG_POLARITY_A] = 0x00, /* PolaritySX1509_REGister A */
[SX1509_REG_DIR_B] = 0x00, /* DirectionSX1509_REGister B */
[SX1509_REG_DIR_A] = 0x00, /* DirectionSX1509_REGister A */
[SX1509_REG_DATA_B] = 0x00, /* DataSX1509_REGister B */
[SX1509_REG_DATA_A] = 0x00, /* DataSX1509_REGister A */
[SX1509_REG_INTERRUPT_MASK_B] = 0x00, /* Interrupt maskSX1509_REGister B */
[SX1509_REG_INTERRUPT_MASK_A] = 0x00, /* Interrupt maskSX1509_REGister A */
[SX1509_REG_SENSE_HIGH_B] = 0x00, /* Sense HighSX1509_REGister B */
[SX1509_REG_SENSE_LOW_B] = 0x00, /* Sense LowSX1509_REGister B */
[SX1509_REG_SENSE_HIGH_A] = 0x00, /* Sense HighSX1509_REGister A */
[SX1509_REG_SENSE_LOW_A] = 0x00, /* Sense LowSX1509_REGister A */
[SX1509_REG_INTERRUPT_SOURCE_B] =
0x00, /* Interrupt sourceSX1509_REGister B */
[SX1509_REG_INTERRUPT_SOURCE_A] =
0x00, /* Interrupt sourceSX1509_REGister A */
[SX1509_REG_EVENT_STATUS_B] = 0x00, /* Event statusSX1509_REGister B */
[SX1509_REG_EVENT_STATUS_A] = 0x00, /* Event statusSX1509_REGister A */
[SX1509_REG_LEVEL_SHIFTER_1] = 0x00, /* Level shifterSX1509_REGister 1 */
[SX1509_REG_LEVEL_SHIFTER_2] = 0x00, /* Level shifterSX1509_REGister 2 */
[SX1509_REG_CLOCK] = 0x00, /* Clock managementSX1509_REGister */
[SX1509_REG_MISC] = 0x00, /* Miscellaneous device settingsSX1509_REGister */
[SX1509_REG_LED_DRIVER_ENABLE_B] =
0x00, /* LED driver enableSX1509_REGister B */
[SX1509_REG_LED_DRIVER_ENABLE_A] =
0x00, /* LED driver enableSX1509_REGister A */
[SX1509_REG_DEBOUNCW_CONFIG] =
0x00, /* Debounce configurationSX1509_REGister */
[SX1509_REG_DEBOUNCW_ENABLE_B] =
0x00, /* Debounce enableSX1509_REGister B */
[SX1509_REG_DEBOUNCW_ENABLE_A] =
0x00, /* Debounce enableSX1509_REGister A */
[SX1509_REG_KEY_CONFIG_1] =
0x00, /* Key scan configurationSX1509_REGister 1 */
[SX1509_REG_KEY_CONFIG_2] =
0x00, /* Key scan configurationSX1509_REGister 2 */
[SX1509_REG_KEY_DATA_1] = 0x00, /* Key value (column) 1 */
[SX1509_REG_KEY_DATA_2] = 0x00, /* Key value (row) 2 */
[SX1509_REG_T_ON_0] = 0x00, /* ON timeSX1509_REGister I/O[0] */
[SX1509_REG_I_ON_0] = 0x00, /* ON intensitySX1509_REGister I/O[0] */
[SX1509_REG_OFF_0] = 0x00, /* OFF time/intensitySX1509_REGister I/O[0] */
[SX1509_REG_T_ON_1] = 0x00, /* ON timeSX1509_REGister I/O[1] */
[SX1509_REG_I_ON_1] = 0x00, /* ON intensitySX1509_REGister I/O[1] */
[SX1509_REG_OFF_1] = 0x00, /* OFF time/intensitySX1509_REGister I/O[1] */
[SX1509_REG_T_ON_2] = 0x00, /* ON timeSX1509_REGister I/O[2] */
[SX1509_REG_I_ON_2] = 0x00, /* ON intensitySX1509_REGister I/O[2] */
[SX1509_REG_OFF_2] = 0x00, /* OFF time/intensitySX1509_REGister I/O[2] */
[SX1509_REG_T_ON_3] = 0x00, /* ON timeSX1509_REGister I/O[3] */
[SX1509_REG_I_ON_3] = 0x00, /* ON intensitySX1509_REGister I/O[3] */
[SX1509_REG_OFF_3] = 0x00, /* OFF time/intensitySX1509_REGister I/O[3] */
[SX1509_REG_T_ON_4] = 0x00, /* ON timeSX1509_REGister I/O[4] */
[SX1509_REG_I_ON_4] = 0x00, /* ON intensitySX1509_REGister I/O[4] */
[SX1509_REG_OFF_4] = 0x00, /* OFF time/intensitySX1509_REGister I/O[4] */
[SX1509_REG_T_RISE_4] = 0x00, /* Fade inSX1509_REGister I/O[4] */
[SX1509_REG_T_Fall_4] = 0x00, /* Fade outSX1509_REGister I/O[4] */
[SX1509_REG_T_ON_5] = 0x00, /* ON timeSX1509_REGister I/O[5] */
[SX1509_REG_I_ON_5] = 0x00, /* ON intensitySX1509_REGister I/O[5] */
[SX1509_REG_OFF_5] = 0x00, /* OFF time/intensitySX1509_REGister I/O[5] */
[SX1509_REG_T_RISE_5] = 0x00, /* Fade inSX1509_REGister I/O[5] */
[SX1509_REG_T_Fall_5] = 0x00, /* Fade outSX1509_REGister I/O[5] */
[SX1509_REG_T_ON_6] = 0x00, /* ON timeSX1509_REGister I/O[6] */
[SX1509_REG_I_ON_6] = 0x00, /* ON intensitySX1509_REGister I/O[6] */
[SX1509_REG_OFF_6] = 0x00, /* OFF time/intensitySX1509_REGister I/O[6] */
[SX1509_REG_T_RISE_6] = 0x00, /* Fade inSX1509_REGister I/O[6] */
[SX1509_REG_T_Fall_6] = 0x00, /* Fade outSX1509_REGister I/O[6] */
[SX1509_REG_T_ON_7] = 0x00, /* ON timeSX1509_REGister I/O[6] */
[SX1509_REG_I_ON_7] = 0x00, /* ON intensitySX1509_REGister I/O[7] */
[SX1509_REG_OFF_7] = 0x00, /* OFF time/intensitySX1509_REGister I/O[7] */
[SX1509_REG_T_RISE_7] = 0x00, /* Fade inSX1509_REGister I/O[7] */
[SX1509_REG_T_Fall_7] = 0x00, /* Fade outSX1509_REGister I/O[7] */
[SX1509_REG_T_ON_8] = 0x00, /* ON timeSX1509_REGister I/O[8] */
[SX1509_REG_I_ON_8] = 0x00, /* ON intensitySX1509_REGister I/O[8] */
[SX1509_REG_OFF_8] = 0x00, /* OFF time/intensitySX1509_REGister I/O[8] */
[SX1509_REG_T_ON_9] = 0x00, /* ON timeSX1509_REGister I/O[9] */
[SX1509_REG_I_ON_9] = 0x00, /* ON intensitySX1509_REGister I/O[9] */
[SX1509_REG_OFF_9] = 0x00, /* OFF time/intensitySX1509_REGister I/O[9] */
[SX1509_REG_T_ON_10] = 0x00, /* ON timeSX1509_REGister I/O[10] */
[SX1509_REG_I_ON_10] = 0x00, /* ON intensitySX1509_REGister I/O[10] */
[SX1509_REG_OFF_10] = 0x00, /* OFF time/intensitySX1509_REGister I/O[10] */
[SX1509_REG_T_ON_11] = 0x00, /* ON timeSX1509_REGister I/O[11] */
[SX1509_REG_I_ON_11] = 0x00, /* ON intensitySX1509_REGister I/O[11] */
[SX1509_REG_OFF_11] = 0x00, /* OFF time/intensitySX1509_REGister I/O[11] */
[SX1509_REG_T_ON_12] = 0x00, /* ON timeSX1509_REGister I/O[12] */
[SX1509_REG_I_ON_12] = 0x00, /* ON intensitySX1509_REGister I/O[12] */
[SX1509_REG_OFF_12] = 0x00, /* OFF time/intensitySX1509_REGister I/O[12] */
[SX1509_REG_T_RISE_12] = 0x00, /* Fade inSX1509_REGister I/O[12] */
[SX1509_REG_T_Fall_12] = 0x00, /* Fade outSX1509_REGister I/O[12] */
[SX1509_REG_T_ON_13] = 0x00, /* ON timeSX1509_REGister I/O[13] */
[SX1509_REG_I_ON_13] = 0x00, /* ON intensitySX1509_REGister I/O[13] */
[SX1509_REG_OFF_13] = 0x00, /* OFF time/intensitySX1509_REGister I/O[13] */
[SX1509_REG_T_RISE_13] = 0x00, /* Fade inSX1509_REGister I/O[13] */
[SX1509_REG_T_Fall_13] = 0x00, /* Fade outSX1509_REGister I/O[13] */
[SX1509_REG_T_ON_14] = 0x00, /* ON timeSX1509_REGister I/O[14] */
[SX1509_REG_I_ON_14] = 0x00, /* ON intensitySX1509_REGister I/O[14] */
[SX1509_REG_OFF_14] = 0x00, /* OFF time/intensitySX1509_REGister I/O[14] */
[SX1509_REG_T_RISE_14] = 0x00, /* Fade inSX1509_REGister I/O[14] */
[SX1509_REG_T_Fall_14] = 0x00, /* Fade outSX1509_REGister I/O[14] */
[SX1509_REG_T_ON_15] = 0x00, /* ON timeSX1509_REGister I/O[15] */
[SX1509_REG_I_ON_15] = 0x00, /* ON intensitySX1509_REGister I/O[15] */
[SX1509_REG_OFF_15] = 0x00, /* OFF time/intensitySX1509_REGister I/O[15] */
[SX1509_REG_T_RISE_15] = 0x00, /* Fade inSX1509_REGister I/O[115] */
[SX1509_REG_T_Fall_15] = 0x00, /* Fade outSX1509_REGister I/O[15] */
[SX1509_REG_HIGH_INPUT_B] = 0x00, /* */
[SX1509_REG_HIGH_INPUT_A] = 0x00, /* */
[SX1509_REG_RESET] = 0x00, /* */
[SX1509_REG_TEST_1] = 0x00, /* */
[SX1509_REG_TEST_2] = 0x00, /* */
};

View File

@@ -0,0 +1,162 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include "include/test_ltc4015.h"
#include <stdint.h>
OcGpio_Port ec_io = {
.fn_table = &FakeGpio_fnTable,
.object_data = &(FakeGpio_Obj){},
};
bool LTC4015_GpioPins[] = {
[0x04] = 0x1,
};
uint32_t LTC4015_GpioConfig[] = {
[0x04] = OCGPIO_CFG_INPUT,
};
extern const OcGpio_FnTable GpioSX1509_fnTable;
OcGpio_Port gbc_io_1 = {
.fn_table = &GpioSX1509_fnTable,
.cfg =
&(SX1509_Cfg){
.i2c_dev = { OC_CONNECT1_I2C0, BIGBROTHER_IOEXP1_ADDRESS },
.pin_irq = NULL,
},
.object_data = &(SX1509_Obj){},
};
/* Invalid Device */
LTC4015_Dev gbc_pwr_invalid_dev = {
.cfg =
{
.i2c_dev =
{
.bus = 2,
.slave_addr = 0x52,
},
.chem = 0,
.r_snsb = 30,
.r_snsi = 7,
.cellcount = 3,
.pin_lt4015_i2c_sel = { &gbc_io_1, 4, 32 },
},
};
/* Invalid Bus */
LTC4015_Dev gbc_pwr_invalid_bus = {
.cfg =
{
.i2c_dev =
{
.bus = 0xFF,
.slave_addr = 0x52,
},
.chem = 0,
.r_snsb = 30,
.r_snsi = 7,
.cellcount = 3,
.pin_lt4015_i2c_sel = { &gbc_io_1, 4, 32 },
},
};
/* Invalid Cfg for _choose_battery_charger*/
LTC4015_Dev gbc_pwr_invalid_leadAcid_cfg = {
.cfg =
{
.i2c_dev =
{
.bus = 2,
.slave_addr = 0x52,
},
.chem = 0,
.r_snsb = 30,
.r_snsi = 7,
.cellcount = 3,
.pin_lt4015_i2c_sel = {},
},
};
/* ======================== Constants & variables =========================== */
uint16_t LTC4015_regs[] = {
[LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT] = 0x00,
[LTC4015_REG_BATTERY_VOLTAGE_HIGH_LIMIT] = 0x00,
[LTC4015_REG_INPUT_VOLTAGE_LOW_LIMIT] = 0x00,
[LTC4015_REG_INPUT_VOLTAGE_HIGH_LIMIT] = 0x00,
[LTC4015_REG_OUTPUT_VOLTAGE_LOW_LIMIT] = 0x00,
[LTC4015_REG_OUTPUT_VOLTAGE_HIGH_LIMIT] = 0x00,
[LTC4015_REG_INPUT_CURRENT_HIGH_LIMIT] = 0x00,
[LTC4015_REG_CHARGE_CURRENT_LOW_LIMIT] = 0x00,
[LTC4015_REG_DIE_TEMP_HIGH_LIMIT] = 0x00,
[LTC4015_REG_BATTERY_SERIES_RESISTANCE_HIGH] = 0x00,
[LTC4015_REG_THERMISTOR_RATIO_HIGH] = 0x00,
[LTC4015_REG_THERMISTOR_RATIO_LOW] = 0x00,
[LTC4015_REG_ENABLE_LIMIT_MONITIOR] = 0x00,
[LTC4015_REG_ENABLE_CHARGER_STATE] = 0x00,
[LTC4015_REG_ENABLE_CHARGER_STATUS] = 0x00,
[LTC4015_REG_QCOUNT_LOW_LIMIT] = 0x00,
[LTC4015_REG_QCOUNT_HIGH_LIMIT] = 0x00,
[LTC4015_REG_PRESCALE_FACTOR] = 0x00,
[LTC4015_REG_COLUMB_COUNTER_VALUE] = 0x00,
[LTC4015_REG_CONFIGURATION_SETTING] = 0x00,
[LTC4015_REG_INPUT_CURRENT_LIMIT_SETTING] = 0x00,
[LTC4015_REG_UVCLFB_INPUT_BUFFER] = 0x00,
[LTC4015_REG_RESERVE_1] = 0x00,
[LTC4015_REG_RESERVE_2] = 0x00,
[LTC4015_REG_ARM_SHIP_MODE] = 0x00,
[LTC4015_REG_CHARGE_CURRENT_TARGET] = 0x00,
[LTC4015_REG_VCHARGE_SETTING] = 0x00,
[LTC4015_REG_LOW_BAT_THRESHOLD] = 0x00,
[LTC4015_REG_CV_STATE_BATTER_CHARGER_TIME] = 0x00,
[LTC4015_REG_MAX_CHARGE_TIME] = 0x00,
[LTC4015_REG_JEITA_T1] = 0x00,
[LTC4015_REG_JEITA_T2] = 0x00,
[LTC4015_REG_JEITA_T3] = 0x00,
[LTC4015_REG_JEITA_T4] = 0x00,
[LTC4015_REG_JEITA_T5] = 0x00,
[LTC4015_REG_JEITA_T6] = 0x00,
[LTC4015_REG_VCHARGE_JEITA_6_5] = 0x00,
[LTC4015_REG_VCHARGE_JEITA_4_3_2] = 0x00,
[LTC4015_REG_ICHARGE_TARGET_JEITA_6_5] = 0x00,
[LTC4015_REG_ICHARGE_TARGET_JEITA_4_3_2] = 0x00,
[LTC4015_REG_BATTERY_CHARGER_CFGURATION] = 0x00,
[LTC4015_REG_ABSORB_VOLTAGE] = 0x00,
[LTC4015_REG_ABSORB_CHARGE_MAX_TIME] = 0x00,
[LTC4015_REG_LEADACID_EQUALIZE_CHARGE_VOLTAGE] = 0x00,
[LTC4015_REG_LEADACID_EQUALIZATION_TIME] = 0x00,
[LTC4015_REG_P04_RECHARGE_THRESHOLD] = 0x00,
[LTC4015_REG_RESERVE_3] = 0x00,
[LTC4015_REG_LITHIUM_MAX_CHARGE_TIME] = 0x00,
[LTC4015_REG_LITIUM_CONST_VOLTAGE_REGULATION] = 0x00,
[LTC4015_REG_LEADACID_P04_ABSORB_TIME] = 0x00,
[LTC4015_REG_LEADACID_EQUALIZE_TIME] = 0x00,
[LTC4015_REG_BATTERY_CHARGE_STATE] = 0x00,
[LTC4015_REG_CHARGE_STATUS_INDICATOR] = 0x00,
[LTC4015_REG_LIMIT_ALERT_REGISTER] = 0x00,
[LTC4015_REG_CHARGER_STATE_ALERT_REGISTER] = 0x00,
[LTC4015_REG_CHARGE_STATUS_ALERT_INDICATOR] = 0x00,
[LTC4015_REG_SYSTEM_STATUS_INDICATOR] = 0x00,
[LTC4015_REG_VBAT_VALUE] = 0x00,
[LTC4015_REG_VIN] = 0x00,
[LTC4015_REG_VSYS] = 0x00,
[LTC4015_REG_BATTEY_CURRENT] = 0x00,
[LTC4015_REG_INPUT_CURRENT] = 0x00,
[LTC4015_REG_DIE_TEMPERATURE] = 0x00,
[LTC4015_REG_NTC_THERMISTOR_RATIO] = 0x00,
[LTC4015_REG_BATTERY_SERIES_RESISTANCE] = 0x00,
[LTC4015_REG_NTC_THERMISTOR_JITA_TEMP] = 0x00,
[LTC4015_REG_CHEM_CELLS_PIN] = 0x00,
[LTC4015_REG_CHARGE_CUEERNT_DAC_CONTROL] = 0x00,
[LTC4015_REG_CHARGE_VOLTAGE_DAC_CONTROL] = 0x00,
[LTC4015_REG_INPUT_CUEERNT_DAC_CONTROL] = 0x00,
[LTC4015_REG_DIGITALLY_BATTERY_VOLTAGE] = 0x00,
[LTC4015_REG_BSR_IBAT_VALUE] = 0x00,
[LTC4015_REG_RESERVE_4] = 0x00,
[LTC4015_REG_VAILD_BIT_MESURMENT] = 0x00,
};

View File

@@ -0,0 +1,177 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#ifndef _TEST_LTC4015_H
#define _TEST_LTC4015_H
#include "common/inc/global/Framework.h"
#include "common/inc/global/OC_CONNECT1.h"
#include "common/inc/ocmp_wrappers/ocmp_ltc4015.h"
#include "drivers/GpioSX1509.h"
#include "drivers/OcGpio.h"
#include "fake/fake_GPIO.h"
#include "fake/fake_I2C.h"
#include "fake/fake_ThreadedISR.h"
#include "helpers/array.h"
#include "helpers/attribute.h"
#include "helpers/memory.h"
#include "inc/devices/ltc4015.h"
#include "include/test_sx1509.h"
#include "src/helpers/math.h"
#include <string.h>
#include <math.h>
#include "unity.h"
#define LTC4015_LION_INIT_BATTERY_VOLTAGE_LOW_LIMIT 16470
#define LTC4015_LION_INIT_BATTERY_VOLTAGE_HIGH_LIMIT 21844
#define LTC4015_LION_INIT_CHARGE_CURRENT_LOW_LIMIT 2047
#define LTC4015_LION_INIT_INPUT_VOLTAGE_LOW_LIMIT 9830
#define LTC4015_LION_INIT_INPUT_CURRENT_HIGH_LIMIT 23892
#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 =========================== */
extern const OcGpio_FnTable GpioSX1509_fnTable;
/*Enumes are defined as per the LTC4015 datasheet*/
typedef enum LTC4015Regs {
LTC4015_REG_BATTERY_VOLTAGE_LOW_LIMIT = 0x01,
LTC4015_REG_BATTERY_VOLTAGE_HIGH_LIMIT,
LTC4015_REG_INPUT_VOLTAGE_LOW_LIMIT,
LTC4015_REG_INPUT_VOLTAGE_HIGH_LIMIT,
LTC4015_REG_OUTPUT_VOLTAGE_LOW_LIMIT,
LTC4015_REG_OUTPUT_VOLTAGE_HIGH_LIMIT,
LTC4015_REG_INPUT_CURRENT_HIGH_LIMIT,
LTC4015_REG_CHARGE_CURRENT_LOW_LIMIT,
LTC4015_REG_DIE_TEMP_HIGH_LIMIT,
LTC4015_REG_BATTERY_SERIES_RESISTANCE_HIGH,
LTC4015_REG_THERMISTOR_RATIO_HIGH,
LTC4015_REG_THERMISTOR_RATIO_LOW,
LTC4015_REG_ENABLE_LIMIT_MONITIOR,
LTC4015_REG_ENABLE_CHARGER_STATE,
LTC4015_REG_ENABLE_CHARGER_STATUS,
LTC4015_REG_QCOUNT_LOW_LIMIT,
LTC4015_REG_QCOUNT_HIGH_LIMIT,
LTC4015_REG_PRESCALE_FACTOR,
LTC4015_REG_COLUMB_COUNTER_VALUE,
LTC4015_REG_CONFIGURATION_SETTING,
LTC4015_REG_INPUT_CURRENT_LIMIT_SETTING,
LTC4015_REG_UVCLFB_INPUT_BUFFER,
LTC4015_REG_RESERVE_1,
LTC4015_REG_RESERVE_2,
LTC4015_REG_ARM_SHIP_MODE,
LTC4015_REG_CHARGE_CURRENT_TARGET,
LTC4015_REG_VCHARGE_SETTING,
LTC4015_REG_LOW_BAT_THRESHOLD,
LTC4015_REG_CV_STATE_BATTER_CHARGER_TIME,
LTC4015_REG_MAX_CHARGE_TIME,
LTC4015_REG_JEITA_T1,
LTC4015_REG_JEITA_T2,
LTC4015_REG_JEITA_T3,
LTC4015_REG_JEITA_T4,
LTC4015_REG_JEITA_T5,
LTC4015_REG_JEITA_T6,
LTC4015_REG_VCHARGE_JEITA_6_5,
LTC4015_REG_VCHARGE_JEITA_4_3_2,
LTC4015_REG_ICHARGE_TARGET_JEITA_6_5,
LTC4015_REG_ICHARGE_TARGET_JEITA_4_3_2,
LTC4015_REG_BATTERY_CHARGER_CFGURATION,
LTC4015_REG_ABSORB_VOLTAGE,
LTC4015_REG_ABSORB_CHARGE_MAX_TIME,
LTC4015_REG_LEADACID_EQUALIZE_CHARGE_VOLTAGE,
LTC4015_REG_LEADACID_EQUALIZATION_TIME,
LTC4015_REG_P04_RECHARGE_THRESHOLD,
LTC4015_REG_RESERVE_3,
LTC4015_REG_LITHIUM_MAX_CHARGE_TIME,
LTC4015_REG_LITIUM_CONST_VOLTAGE_REGULATION,
LTC4015_REG_LEADACID_P04_ABSORB_TIME,
LTC4015_REG_LEADACID_EQUALIZE_TIME,
LTC4015_REG_BATTERY_CHARGE_STATE,
LTC4015_REG_CHARGE_STATUS_INDICATOR,
LTC4015_REG_LIMIT_ALERT_REGISTER,
LTC4015_REG_CHARGER_STATE_ALERT_REGISTER,
LTC4015_REG_CHARGE_STATUS_ALERT_INDICATOR,
LTC4015_REG_SYSTEM_STATUS_INDICATOR,
LTC4015_REG_VBAT_VALUE,
LTC4015_REG_VIN,
LTC4015_REG_VSYS,
LTC4015_REG_BATTEY_CURRENT,
LTC4015_REG_INPUT_CURRENT,
LTC4015_REG_DIE_TEMPERATURE,
LTC4015_REG_NTC_THERMISTOR_RATIO,
LTC4015_REG_BATTERY_SERIES_RESISTANCE,
LTC4015_REG_NTC_THERMISTOR_JITA_TEMP,
LTC4015_REG_CHEM_CELLS_PIN,
LTC4015_REG_CHARGE_CUEERNT_DAC_CONTROL,
LTC4015_REG_CHARGE_VOLTAGE_DAC_CONTROL,
LTC4015_REG_INPUT_CUEERNT_DAC_CONTROL,
LTC4015_REG_DIGITALLY_BATTERY_VOLTAGE,
LTC4015_REG_BSR_IBAT_VALUE,
LTC4015_REG_RESERVE_4,
LTC4015_REG_VAILD_BIT_MESURMENT,
} LTC4015Regs;
int16_t ocmp_ltc4015_get_battery_current(LTC4015_Dev *dev, int16_t value);
int16_t ocmp_ltc4015_get_battery_voltage(LTC4015_Dev *dev, int16_t value);
int16_t ocmp_ltc4015_get_system_voltage(int16_t value);
int16_t ocmp_ltc4015_get_input_voltage(int16_t value);
int16_t ocmp_ltc4015_get_input_current(LTC4015_Dev *dev, int16_t value);
int16_t ocmp_ltc4015_get_dia_temperature(int16_t value);
int16_t ocmp_ltc4015_get_icharge_dac(LTC4015_Dev *dev, int16_t value);
int16_t ocmp_ltc4015_get_cfg_battery_current_low(LTC4015_Dev *dev,
int16_t value);
int16_t ocmp_ltc4015_get_cfg_input_voltage_low(int16_t value);
int16_t ocmp_ltc4015_get_cfg_input_current_high(LTC4015_Dev *dev,
int16_t value);
uint16_t ocmp_ltc4015_get_cfg_input_current_limit(LTC4015_Dev *dev,
uint16_t value);
uint16_t ocmp_ltc4015_get_cfg_icharge(LTC4015_Dev *dev, uint16_t value);
uint16_t ocmp_ltc4015_get_cfg_vcharge(LTC4015_Dev *dev, uint16_t value);
int16_t ocmp_ltc4015_get_cfg_die_temperature_high(int16_t value);
uint16_t ocmp_ltc4015_set_cfg_battery_current_low(LTC4015_Dev *dev,
int16_t value);
uint16_t ocmp_ltc4015_set_cfg_input_voltage_low(int16_t value);
uint16_t ocmp_ltc4015_set_cfg_input_current_high(LTC4015_Dev *dev,
int16_t value);
uint16_t ocmp_ltc4015_set_cfg_input_current_limit(LTC4015_Dev *dev,
int16_t value);
int ocmp_ltc4015_set_cfg_icharge(LTC4015_Dev *dev, uint16_t value);
double ocmp_ltc4015_set_cfg_vcharge(LTC4015_Dev *dev, int16_t value);
uint16_t ocmp_ltc4015_set_cfg_die_temperature_high(int16_t value);
int16_t ocmp_ltc4015_set_cfg_battery_voltage(LTC4015_Dev *dev, int16_t value);
#endif

View File

@@ -0,0 +1,127 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#ifndef _TEST_SX1509_H
#define _TEST_SX1509_H
#include <stdint.h>
/*Enumes are defined as per the SX1509 datasheet*/
typedef enum SX1509Regs {
SX1509_REG_INPUT_DISABLE_B = 0x00,
SX1509_REG_INPUT_DISABLE_A,
SX1509_REG_LONG_SLEW_B,
SX1509_REG_LONG_SLEW_A,
SX1509_REG_LOW_DRIVE_B,
SX1509_REG_LOW_DRIVE_A,
SX1509_REG_PULL_UP_B,
SX1509_REG_PULL_UP_A,
SX1509_REG_PULL_DOWN_B,
SX1509_REG_PULL_DOWN_A,
SX1509_REG_OPEN_DRAIN_B,
SX1509_REG_OPEN_DRAIN_A,
SX1509_REG_POLARITY_B,
SX1509_REG_POLARITY_A,
SX1509_REG_DIR_B,
SX1509_REG_DIR_A,
SX1509_REG_DATA_B,
SX1509_REG_DATA_A,
SX1509_REG_INTERRUPT_MASK_B,
SX1509_REG_INTERRUPT_MASK_A,
SX1509_REG_SENSE_HIGH_B,
SX1509_REG_SENSE_LOW_B,
SX1509_REG_SENSE_HIGH_A,
SX1509_REG_SENSE_LOW_A,
SX1509_REG_INTERRUPT_SOURCE_B,
SX1509_REG_INTERRUPT_SOURCE_A,
SX1509_REG_EVENT_STATUS_B,
SX1509_REG_EVENT_STATUS_A,
SX1509_REG_LEVEL_SHIFTER_1,
SX1509_REG_LEVEL_SHIFTER_2,
SX1509_REG_CLOCK,
SX1509_REG_MISC,
SX1509_REG_LED_DRIVER_ENABLE_B,
SX1509_REG_LED_DRIVER_ENABLE_A,
SX1509_REG_DEBOUNCW_CONFIG,
SX1509_REG_DEBOUNCW_ENABLE_B,
SX1509_REG_DEBOUNCW_ENABLE_A,
SX1509_REG_KEY_CONFIG_1,
SX1509_REG_KEY_CONFIG_2,
SX1509_REG_KEY_DATA_1,
SX1509_REG_KEY_DATA_2,
SX1509_REG_T_ON_0,
SX1509_REG_I_ON_0,
SX1509_REG_OFF_0,
SX1509_REG_T_ON_1,
SX1509_REG_I_ON_1,
SX1509_REG_OFF_1,
SX1509_REG_T_ON_2,
SX1509_REG_I_ON_2,
SX1509_REG_OFF_2,
SX1509_REG_T_ON_3,
SX1509_REG_I_ON_3,
SX1509_REG_OFF_3,
SX1509_REG_T_ON_4,
SX1509_REG_I_ON_4,
SX1509_REG_OFF_4,
SX1509_REG_T_RISE_4,
SX1509_REG_T_Fall_4,
SX1509_REG_T_ON_5,
SX1509_REG_I_ON_5,
SX1509_REG_OFF_5,
SX1509_REG_T_RISE_5,
SX1509_REG_T_Fall_5,
SX1509_REG_T_ON_6,
SX1509_REG_I_ON_6,
SX1509_REG_OFF_6,
SX1509_REG_T_RISE_6,
SX1509_REG_T_Fall_6,
SX1509_REG_T_ON_7,
SX1509_REG_I_ON_7,
SX1509_REG_OFF_7,
SX1509_REG_T_RISE_7,
SX1509_REG_T_Fall_7,
SX1509_REG_T_ON_8,
SX1509_REG_I_ON_8,
SX1509_REG_OFF_8,
SX1509_REG_T_ON_9,
SX1509_REG_I_ON_9,
SX1509_REG_OFF_9,
SX1509_REG_T_ON_10,
SX1509_REG_I_ON_10,
SX1509_REG_OFF_10,
SX1509_REG_T_ON_11,
SX1509_REG_I_ON_11,
SX1509_REG_OFF_11,
SX1509_REG_T_ON_12,
SX1509_REG_I_ON_12,
SX1509_REG_OFF_12,
SX1509_REG_T_RISE_12,
SX1509_REG_T_Fall_12,
SX1509_REG_T_ON_13,
SX1509_REG_I_ON_13,
SX1509_REG_OFF_13,
SX1509_REG_T_RISE_13,
SX1509_REG_T_Fall_13,
SX1509_REG_T_ON_14,
SX1509_REG_I_ON_14,
SX1509_REG_OFF_14,
SX1509_REG_T_RISE_14,
SX1509_REG_T_Fall_14,
SX1509_REG_T_ON_15,
SX1509_REG_I_ON_15,
SX1509_REG_OFF_15,
SX1509_REG_T_RISE_15,
SX1509_REG_T_Fall_15,
SX1509_REG_HIGH_INPUT_B,
SX1509_REG_HIGH_INPUT_A,
SX1509_REG_RESET = 0x7D,
SX1509_REG_TEST_1,
SX1509_REG_TEST_2
} SX1509Regs;
#endif

View File

@@ -0,0 +1,212 @@
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#include <stdint.h>
#include "include/test_ltc4015.h"
int16_t ocmp_ltc4015_get_battery_voltage(LTC4015_Dev *dev, int16_t value)
{
switch (dev->cfg.chem) {
case LTC4015_CHEM_LEAD_ACID:
return ((int16_t)value / 1000.0) * (128.176 * dev->cfg.cellcount);
case LTC4015_CHEM_LI_FE_PO4:
case LTC4015_CHEM_LI_ION:
return ((int16_t)value / 1000.0) * (192.264 * dev->cfg.cellcount);
default:
break;
}
return 0;
}
int16_t ocmp_ltc4015_get_battery_current(LTC4015_Dev *dev, int16_t value)
{
int16_t expBatteryCurrent = 0;
expBatteryCurrent = ((float)((int16_t)value * 1.46487)) / (dev->cfg.r_snsb);
return expBatteryCurrent;
}
int16_t ocmp_ltc4015_get_system_voltage(int16_t value)
{
int16_t expSystemVoltage = 0;
expSystemVoltage = (int16_t)value * 1.648;
return expSystemVoltage;
}
int16_t ocmp_ltc4015_get_input_voltage(int16_t value)
{
int16_t expInputVoltage = 0;
expInputVoltage = (int16_t)value * 1.648;
return expInputVoltage;
}
int16_t ocmp_ltc4015_get_input_current(LTC4015_Dev *dev, int16_t value)
{
int16_t expInputCurrent = 0;
expInputCurrent = ((float)((int16_t)value * 1.46487)) / (dev->cfg.r_snsi);
return expInputCurrent;
}
int16_t ocmp_ltc4015_get_dia_temperature(int16_t value)
{
int16_t expDieTemperature = 0;
expDieTemperature = (((int16_t)value - 12010) / 45.6);
return expDieTemperature;
}
int16_t ocmp_ltc4015_get_icharge_dac(LTC4015_Dev *dev, int16_t value)
{
int16_t expICharge = 0;
expICharge = (int16_t)((value + 1) / dev->cfg.r_snsb);
return expICharge;
}
int16_t ocmp_ltc4015_get_cfg_battery_current_low(LTC4015_Dev *dev,
int16_t value)
{
int16_t expBatteryCurrentLow = 0;
expBatteryCurrentLow = ((int16_t)value * 1.46487) / dev->cfg.r_snsb;
return expBatteryCurrentLow;
}
int16_t ocmp_ltc4015_get_cfg_input_voltage_low(int16_t value)
{
int16_t expInputVoltageLow = 0;
expInputVoltageLow = (int16_t)value * 1.648;
return expInputVoltageLow;
}
int16_t ocmp_ltc4015_get_cfg_input_current_high(LTC4015_Dev *dev, int16_t value)
{
int16_t expInputCurrentHigh = 0;
expInputCurrentHigh = ((int16_t)value * 1.46487) / dev->cfg.r_snsi;
return expInputCurrentHigh;
}
uint16_t ocmp_ltc4015_get_cfg_input_current_limit(LTC4015_Dev *dev,
uint16_t value)
{
uint16_t expInputCurrentLimit = 0;
expInputCurrentLimit = ((value + 1) * 500.0) / dev->cfg.r_snsi;
return expInputCurrentLimit;
}
uint16_t ocmp_ltc4015_get_cfg_icharge(LTC4015_Dev *dev, uint16_t value)
{
uint16_t expIcharge = 0;
expIcharge = (value + 1) * 1000 / dev->cfg.r_snsb;
return expIcharge;
}
uint16_t ocmp_ltc4015_get_cfg_vcharge(LTC4015_Dev *dev, uint16_t value)
{
uint16_t vcharge = 0;
switch (dev->cfg.chem) {
case LTC4015_CHEM_LEAD_ACID:
vcharge =
round(((value / 105.0) + 2.0) * dev->cfg.cellcount * 1000.0);
break;
case LTC4015_CHEM_LI_FE_PO4:
vcharge =
round(((value / 80.0) + 3.4125) * dev->cfg.cellcount * 1000.0);
break;
case LTC4015_CHEM_LI_ION:
vcharge =
round(((value / 80.0) + 3.8125) * dev->cfg.cellcount * 1000.0);
break;
default:
break;
}
return vcharge;
}
int16_t ocmp_ltc4015_get_cfg_die_temperature_high(int16_t value)
{
int16_t expDieTempHigh = 0;
expDieTempHigh = (((int16_t)value - 12010) / 45.6);
return expDieTempHigh;
}
int16_t ocmp_ltc4015_set_cfg_battery_voltage(LTC4015_Dev *dev, int16_t value)
{
switch (dev->cfg.chem) {
case LTC4015_CHEM_LEAD_ACID:
return (value / (dev->cfg.cellcount * 128.176)) * 1000.0;
case LTC4015_CHEM_LI_FE_PO4:
case LTC4015_CHEM_LI_ION:
return (value / (dev->cfg.cellcount * 192.264)) * 1000.0;
default:
break;
}
return 0;
}
uint16_t ocmp_ltc4015_set_cfg_battery_current_low(LTC4015_Dev *dev,
int16_t value)
{
uint16_t expBatteryCurrentLow = 0;
expBatteryCurrentLow = (value * dev->cfg.r_snsb) / (1.46487);
return expBatteryCurrentLow;
}
uint16_t ocmp_ltc4015_set_cfg_input_voltage_low(int16_t value)
{
uint16_t expInputVoltageLow = 0;
expInputVoltageLow = (value / (1.648));
return expInputVoltageLow;
}
uint16_t ocmp_ltc4015_set_cfg_input_current_high(LTC4015_Dev *dev,
int16_t value)
{
uint16_t expInputCurrentHigh = 0;
expInputCurrentHigh = ((value * dev->cfg.r_snsi) / 1.46487);
return expInputCurrentHigh;
}
uint16_t ocmp_ltc4015_set_cfg_input_current_limit(LTC4015_Dev *dev,
int16_t value)
{
uint16_t expInputCurrentLimit = 0;
expInputCurrentLimit = ((value * dev->cfg.r_snsi) / 500) - 1;
return expInputCurrentLimit;
}
int ocmp_ltc4015_set_cfg_icharge(LTC4015_Dev *dev, uint16_t value)
{
int expIcharge = 0;
expIcharge = round((value * dev->cfg.r_snsb) / 1000.0) - 1;
expIcharge = MAX(0, expIcharge);
return expIcharge;
}
double ocmp_ltc4015_set_cfg_vcharge(LTC4015_Dev *dev, int16_t value)
{
double targetV = value / (1000.0 * dev->cfg.cellcount);
double expVChargeSetting = 0;
switch (dev->cfg.chem) {
case LTC4015_CHEM_LEAD_ACID:
expVChargeSetting = round((targetV - 2.0) * 105.0);
break;
case LTC4015_CHEM_LI_FE_PO4:
expVChargeSetting = round((targetV - 3.4125) * 80.0);
break;
case LTC4015_CHEM_LI_ION:
expVChargeSetting = round((targetV - 3.8125) * 80.0);
break;
default:
break;
}
expVChargeSetting = MAX(0, expVChargeSetting);
return expVChargeSetting;
}
uint16_t ocmp_ltc4015_set_cfg_die_temperature_high(int16_t value)
{
uint16_t expdieTempAlertLimit = 0;
expdieTempAlertLimit = (value * 45.6) + 12010;
return expdieTempAlertLimit;
}

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,10 @@ default:
@mkdir -p $(output_dir)
make all
all: gen_schema ocmw_uart ocmw_usb ocmw_eth occli ocmw_eth_stub ocware_stub hash
all: get_cfg gen_schema ocmw_uart ocmw_usb ocmw_eth occli ocmw_eth_stub ocware_stub hash
get_cfg:
cd ../utilities/build; ./envDetect.sh
gen_schema:
cd ../utilities/schema; ./mk_schema.sh

View File

@@ -0,0 +1,53 @@
#!/bin/sh -e
BUILDHOST=$(uname -a)
GCCVER=$(gcc --version)
GITHASH=$(git rev-parse HEAD)
if [ $# = 2 ]; then
BUILDTYPE="\tEC Build"
BUILDFNAME="build_ec_cfg.txt"
UNITYVER=""
if [ -e "$1" ]; then
ARMVER=$($1 --version)
else
ARMVER="arm-none-eabi-gcc: Not found"
fi
if [ -d "$2" ]; then
TIRTOSVER="TI RTOS: $2"
else
TIRTOSVER="TI RTOS: Not found"
fi
elif [ $# = 1 ]; then
BUILDTYPE="\tUnit Test Build"
BUILDFNAME="build_ut_cfg.txt"
ARMVER=""
TIRTOSVER=""
UNITYVER="Unity: $1"
else
BUILDTYPE="\tHost Build"
BUILDFNAME="build_host_cfg.txt"
ARMVER=""
TIRTOSVER=""
UNITYVER=""
fi
{
echo "$BUILDTYPE"
echo
if [ ! "$UNITYVER" = "" ]; then
echo "$UNITYVER"
echo
fi
echo "Git Hash: $GITHASH"
echo
echo "Build Host: $BUILDHOST"
echo
if [ ! "$TIRTOSVER" = "" ]; then
echo "$TIRTOSVER"
echo
fi
echo "GCC: $GCCVER"
echo
if [ ! "$ARMVER" = "" ]; then
echo "$ARMVER"
echo
fi
} > $BUILDFNAME