Index: firmware/App/Drivers/BatteryDriver.c =================================================================== diff -u -ree67a27bd69956eb8cfd7c5986538b441b8b7aa7 -r2e75c0c69869132ff4adb46a0509aab7a04d60a3 --- firmware/App/Drivers/BatteryDriver.c (.../BatteryDriver.c) (revision ee67a27bd69956eb8cfd7c5986538b441b8b7aa7) +++ firmware/App/Drivers/BatteryDriver.c (.../BatteryDriver.c) (revision 2e75c0c69869132ff4adb46a0509aab7a04d60a3) @@ -31,17 +31,21 @@ #define BATTERY_COMM_TIME_OUT_MS 2 ///< Battery communication time out in ms. #define BATTERY_CHARGER_SLAVE_ADDRESS 0x6B ///< Battery charger controller device address. #define BATTERY_PACK_SLAVE_ADDRESS 0x0B ///< Battery pack device address. +#define BATTERY_I2C_STATUS_REGISTER_MIN 0 //ToDo +#define BATTERY_I2C_STATUS_REGISTER_MAX 2 //ToDo // ********** private data ********** static OVERRIDE_U32_T batteryI2CStatusRegister; ///< Battery I2C Interrupt Status register + /// Lookup table mapping device enum to I2C slave addresses. -const U32 device_addr[NUM_OF_BATTERY_DEVICES] = { +const U32 device_addr[MAXIMUM_DEVICE_ADDRESSES] = { 0x6B, ///< BATTERY_CHARGER_ADDRESS 0x0B, ///< BATTERY_PACK_ADDRESS }; + /// Lookup table mapping register enum to register addresses. -const U32 reg_addr[END_OF_LIST] = { +const U32 reg_addr[MAXIMUM_BATTERY_REGISTERS] = { 0x00, ///< BEGINNING_OF_LIST 0x0f, ///< BATTERY_PACK_REMAINING_CAPACITY 0x16, ///< BATTERY_PACK_BATTERY_STATUS @@ -76,7 +80,10 @@ *************************************************************************/ void initsetupI2CDriver(void) { - memset(&batteryI2CStatusRegister, 0, sizeof(OVERRIDE_U32_T)); + batteryI2CStatusRegister.data = 0; + batteryI2CStatusRegister.ovData = 0; + batteryI2CStatusRegister.ovInitData = 0; + batteryI2CStatusRegister.override = OVERRIDE_RESET; setupI2CDriver(); } @@ -184,20 +191,20 @@ * and get data based on given command. * @details \b Inputs: none * @details \b Outputs: get data from battery device - * @param devicesel battery device to communicate with. - * @param registersel register to read from batteru device. + * @param device battery device to communicate with. + * @param registers register to read from batteru device. * @param dataPtr pointer to store the register data * @return TRUE if data received successfully, otherwise FALSE *************************************************************************/ -BOOL getBatteryData( BATTERY_DEVICE_ADDRESS_ENUM_T devicesel, BATTERY_MANAGEMENT_ENUM_T registersel, U32 * dataPtr ) +BOOL getBatteryData( BATTERY_DEVICE_ADDRESS_ENUM_T deviceSel, BATTERY_MANAGEMENT_ENUM_T registerSel, U32 * dataPtr ) { BOOL result = FALSE; - if ( TRUE == startCommTx( device_addr[devicesel] ) ) + if ( TRUE == startCommTx( device_addr[deviceSel] ) ) { U16 data = (U16)( (*dataPtr) & MASK_OFF_MSW ); - if ( TRUE == getData( reg_addr[registersel], &data ) ) + if ( TRUE == getData( reg_addr[registerSel], &data ) ) { *dataPtr = data; result = TRUE; @@ -364,7 +371,7 @@ *************************************************************************/ BOOL testBatteryI2CStatusOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, (OVERRIDE_F32_T*)&batteryI2CStatusRegister ); + BOOL result = u32Override( message, &batteryI2CStatusRegister, BATTERY_I2C_STATUS_REGISTER_MIN, BATTERY_I2C_STATUS_REGISTER_MAX ); return result; } Index: firmware/App/Drivers/BatteryDriver.h =================================================================== diff -u -ree67a27bd69956eb8cfd7c5986538b441b8b7aa7 -r2e75c0c69869132ff4adb46a0509aab7a04d60a3 --- firmware/App/Drivers/BatteryDriver.h (.../BatteryDriver.h) (revision ee67a27bd69956eb8cfd7c5986538b441b8b7aa7) +++ firmware/App/Drivers/BatteryDriver.h (.../BatteryDriver.h) (revision 2e75c0c69869132ff4adb46a0509aab7a04d60a3) @@ -45,20 +45,20 @@ 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 + MAXIMUM_BATTERY_REGISTERS, ///< 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 + MAXIMUM_DEVICE_ADDRESSES, ///< 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 ); +BOOL getBatteryData( BATTERY_DEVICE_ADDRESS_ENUM_T deviceSel, BATTERY_MANAGEMENT_ENUM_T registerSel, U32 * dataPtr ); U32 getI2CStatusRegister( BOOL resetOverride ); BOOL testBatteryI2CStatusOverride( MESSAGE_T *message ); Index: firmware/App/Monitors/Battery.c =================================================================== diff -u -ree67a27bd69956eb8cfd7c5986538b441b8b7aa7 -r2e75c0c69869132ff4adb46a0509aab7a04d60a3 --- firmware/App/Monitors/Battery.c (.../Battery.c) (revision ee67a27bd69956eb8cfd7c5986538b441b8b7aa7) +++ firmware/App/Monitors/Battery.c (.../Battery.c) (revision 2e75c0c69869132ff4adb46a0509aab7a04d60a3) @@ -32,12 +32,16 @@ #define BATTERY_COMM_FAULT_COUNT 5 ///< Battery communication fault persistent count before alarming. #define BATTERY_COMM_FAULT_TIMER ( 10 * SEC_PER_MIN * MS_PER_SECOND ) ///< Battery communication fault persistence timer. #define BATTERY_PACK_ERROR_BITS 0x0F ///< Error codes are in the first byte. -// Battery logging #define BATTERY_MIN_CAPACITY_MAH 1950.0F ///< Minimum battery capacity for starting a treatment. +#define BATTERY_REM_CAPACITY_MAH_MIN 0 // ToDo +#define BATTERY_REM_CAPACITY_MAH_MAX 5000 // ToDo +#define BATTERY_STATUS_MIN 0 // ToDo +#define BATTERY_STATUS_MAX 5 // ToDo +#define BATTERY_CHARGER_STATUS_MIN 0 // ToDo +#define BATTERY_CHARGER_STATUS_MAX 5 // ToDo // ********** private data ********** -/// Persist time (in ms) for battery pack status error condition. static const U32 BATT_STATUS_ERROR_PERSIST_MS = ( 5 * MS_PER_SECOND ); ///< Persist time in ms for battery pack status error condition. static U32 lastBatteryMonitorTime; ///< Previous battery monitor time. static OVERRIDE_U32_T batteryStatus; ///< Battery status @@ -66,9 +70,18 @@ initsetupI2CDriver(); current_BM_value = BEGINNING_OF_LIST; lastBatteryMonitorTime = 0; - memset( &batteryStatus, 0, sizeof(OVERRIDE_U32_T)); - memset( &batteryChargerStatus, 0, sizeof(OVERRIDE_U32_T)); - memset( &batteryRemCapacity_mAh, 0, sizeof(OVERRIDE_U32_T)); + batteryStatus.data = 0; + batteryStatus.ovData = 0; + batteryStatus.ovInitData = 0; + batteryStatus.override = OVERRIDE_RESET; + batteryChargerStatus.data = 0; + batteryChargerStatus.ovData = 0; + batteryChargerStatus.ovInitData = 0; + batteryChargerStatus.override = OVERRIDE_RESET; + batteryRemCapacity_mAh.data = 0; + batteryRemCapacity_mAh.ovData = 0; + batteryRemCapacity_mAh.ovInitData = 0; + batteryRemCapacity_mAh.override = OVERRIDE_RESET; memset( &BatteryData, 0, sizeof( BATTERY_DATA_PAYLOAD_T ) ); // Initialize persistent alarm for battery pack status error initPersistentAlarm( ALARM_ID_TD_BATTERY_PACK_ERROR_DETECTED, 0, BATT_STATUS_ERROR_PERSIST_MS ); @@ -227,7 +240,7 @@ BatteryData.IBAT = BatteryData.IBAT * 2U; break; - case END_OF_LIST: + case MAXIMUM_BATTERY_REGISTERS: current_BM_value = BEGINNING_OF_LIST; publishBatteryDataPayload(); break; @@ -287,7 +300,7 @@ *************************************************************************/ BOOL testBatteryRemainingCapacityOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, (OVERRIDE_F32_T*) &batteryRemCapacity_mAh ); + BOOL result = u32Override( message, &batteryRemCapacity_mAh, BATTERY_REM_CAPACITY_MAH_MIN, BATTERY_REM_CAPACITY_MAH_MAX ); return result; } @@ -303,7 +316,7 @@ *************************************************************************/ BOOL testBatteryStatusOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, (OVERRIDE_F32_T*) &batteryStatus ); + BOOL result = u32Override( message, &batteryStatus, BATTERY_STATUS_MIN, BATTERY_STATUS_MAX ); return result; } @@ -319,6 +332,6 @@ *************************************************************************/ BOOL testBatteryChargerStatusOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, (OVERRIDE_F32_T*)&batteryChargerStatus ); + BOOL result = u32Override( message, &batteryChargerStatus, BATTERY_CHARGER_STATUS_MIN, BATTERY_CHARGER_STATUS_MIN ); return result; }