Index: firmware/App/Monitors/Battery.c =================================================================== diff -u -r9e14f8c931ea3f2afdedc92de71bd497868a4176 -ree67a27bd69956eb8cfd7c5986538b441b8b7aa7 --- firmware/App/Monitors/Battery.c (.../Battery.c) (revision 9e14f8c931ea3f2afdedc92de71bd497868a4176) +++ firmware/App/Monitors/Battery.c (.../Battery.c) (revision ee67a27bd69956eb8cfd7c5986538b441b8b7aa7) @@ -28,39 +28,27 @@ // ********** private definitions ********** -#define BATTERY_CHARGER_ADDR_STATUS1 0x21 ///< Battery charger status register 1 -#define BATTERY_CHARGER_ADDR_STATUS2 0x22 ///< Battery charger status register 2. -#define BATTERY_CHARGER_ADDR_FAULT 0x24 ///< Command to get battery charger fault. -#define BATTERY_PACK_ERROR_BITS 0x0F ///< Error codes are in the first byte. - -#define BATTERY_MONITOR_INTERVAL_MS 850 ///< Battery monitor interval in ms. +#define BATTERY_MONITOR_INTERVAL_MS 247 ///< Battery monitor interval in ms. #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_CHARGER_ADDR_TS 0x08 ///< Battery thermistor ADC register. -#define BATTERY_CHARGER_ADDR_VBAT 0x09 ///< Battery voltage ADC register. -#define BATTERY_CHARGER_ADDR_VSYS 0x35 ///< Battery system voltage ADC register. -#define BATTERY_CHARGER_ADDR_CURRENT 0x0a ///< Battery current ADC register. -#define BATTERY_PACK_ADDR_RELATIVE_STATE_OF_CHARGE 0x0d ///< Battery pack address relative state of charge. -#define BATTERY_PACK_ADDR_REMAINING_CAPACITY 0x0f ///< Battery pack address remaining capacity. -#define BATTERY_PACK_ADDR_FULL_CHARGE_CAPACITY 0x10 ///< Battery pack address full charge capacity. -#define BATTERY_PACK_ADDR_BATTERY_STATUS 0x16 ///< Battery pack address battery status. #define BATTERY_MIN_CAPACITY_MAH 1950.0F ///< Minimum battery capacity for starting a treatment. // ********** private data ********** /// Persist time (in ms) for battery pack status error condition. -static const U32 BATT_STATUS_ERROR_PERSIST_MS = ( 5 * MS_PER_SECOND ); +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 static OVERRIDE_U32_T batteryChargerStatus; ///< Battery charger status -static OVERRIDE_F32_T batteryRemCapacity_mAh; ///< Battery pack remaining capacity (in mAh). +static OVERRIDE_U32_T batteryRemCapacity_mAh; ///< Battery pack remaining capacity (in mAh). static BATTERY_MANAGEMENT_ENUM_T current_BM_value; ///< Index for which battery data to read now. static BATTERY_DATA_PAYLOAD_T BatteryData; ///< Record with latest battery data. // ********** private function prototypes ********** -static F32 getBatteryRemainingCapacity_mAh( void ); +static U32 getBatteryRemainingCapacity_mAh( void ); static U32 getBatteryStatus( void ); static U32 getBatteryChargerStatus( void ); static void getBatteryManagementData( void ); @@ -152,9 +140,9 @@ * @details \b Outputs: none * @return latest battery remaining capacity in mAh. *************************************************************************/ -static F32 getBatteryRemainingCapacity_mAh( void ) +static U32 getBatteryRemainingCapacity_mAh( void ) { - F32 result = batteryRemCapacity_mAh.data; + U32 result = batteryRemCapacity_mAh.data; if ( OVERRIDE_KEY == batteryRemCapacity_mAh.override ) { @@ -187,55 +175,55 @@ switch( current_BM_value ) { case BATTERY_PACK_REMAINING_CAPACITY: - getBatteryData (BATTERY_PACK_ADDRESS, BATTERY_PACK_ADDR_REMAINING_CAPACITY, &BatteryData.RemainingCapacity ); - batteryRemCapacity_mAh.data = (F32)BatteryData.RemainingCapacity; + getBatteryData (BATTERY_PACK_ADDRESS, BATTERY_PACK_REMAINING_CAPACITY, &BatteryData.RemainingCapacity ); + batteryRemCapacity_mAh.data = BatteryData.RemainingCapacity; break; case BATTERY_PACK_BATTERY_STATUS: - getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_ADDR_BATTERY_STATUS, &BatteryData.BatteryStatus ); + getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_BATTERY_STATUS, &BatteryData.BatteryStatus ); batteryStatus.data = BatteryData.BatteryStatus; if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_TD_BATTERY_PACK_ERROR_DETECTED, ( getBatteryStatus() & BATTERY_PACK_ERROR_BITS ) != 0 ) ) ) { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_BATTERY_PACK_ERROR_DETECTED, getBatteryStatus(), BATTERY_PACK_ERROR_BITS ); } break; + case BATTERY_PACK_RELATIVE_STATE_OF_CHARGE: + getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_RELATIVE_STATE_OF_CHARGE, &BatteryData.RelativeStateOfCharge ); + break; + + case BATTERY_PACK_FULL_CHARGE_CAPACITY: + getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_FULL_CHARGE_CAPACITY, &BatteryData.FullChargeCapacity ); + break; + case BATTERY_CHARGER_STATUS: - if ( TRUE == getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_ADDR_STATUS1, &BatteryData.BatteryChargerStatus ) ) + if ( TRUE == getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_STATUS, &BatteryData.BatteryChargerStatus ) ) { batteryChargerStatus.data = BatteryData.BatteryChargerStatus; } break; - case BATTERY_PACK_RELATIVE_STATE_OF_CHARGE: - getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_ADDR_RELATIVE_STATE_OF_CHARGE, &BatteryData.RelativeStateOfCharge ); - break; - - case BATTERY_PACK_FULL_CHARGE_CAPACITY: - getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_PACK_ADDR_FULL_CHARGE_CAPACITY, &BatteryData.FullChargeCapacity ); - break; - case BATTERY_CHARGER_TS: - getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_ADDR_TS, &BatteryData.TS ); + getBatteryData ( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_TS, &BatteryData.TS ); BatteryData.TS = (BatteryData.TS * 1024.0f) / 100.0F; break; case BATTERY_CHARGER_VBAT: - getBatteryData( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_ADDR_VBAT, &BatteryData.VBAT ); + getBatteryData( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_VBAT, &BatteryData.VBAT ); BatteryData.VBAT = BatteryData.VBAT * 2U; break; case BATTERY_CHARGER_VSYS: - getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_ADDR_VSYS, &BatteryData.VSYS ); + getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_VSYS, &BatteryData.VSYS ); BatteryData.VSYS = BatteryData.VSYS * 2U; break; case BATTERY_CHARGER_FAULT: - getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_ADDR_FAULT, &BatteryData.FaultStatus ); + getBatteryData( BATTERY_CHARGER_ADDRESS, BATTERY_CHARGER_FAULT, &BatteryData.FaultStatus ); break; case BATTERY_CHARGER_CURRENT: - getBatteryData( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_ADDR_CURRENT, &BatteryData.IBAT ); + getBatteryData( BATTERY_PACK_ADDRESS, BATTERY_CHARGER_CURRENT, &BatteryData.IBAT ); BatteryData.IBAT = BatteryData.IBAT * 2U; break; @@ -275,7 +263,7 @@ *************************************************************************/ static void publishBatteryDataPayload( void ) { - BatteryData.RemainingCapacity = (U32)getBatteryRemainingCapacity_mAh(); + BatteryData.RemainingCapacity = getBatteryRemainingCapacity_mAh(); BatteryData.BatteryStatus = getBatteryStatus(); BatteryData.BatteryChargerStatus = getBatteryChargerStatus(); BatteryData.BatteryI2CStatus = getI2CStatusRegister( FALSE ); @@ -299,7 +287,7 @@ *************************************************************************/ BOOL testBatteryRemainingCapacityOverride( MESSAGE_T *message ) { - BOOL result = f32Override( message, &batteryRemCapacity_mAh ); + BOOL result = f32Override( message, (OVERRIDE_F32_T*) &batteryRemCapacity_mAh ); return result; }