Index: firmware/App/Drivers/Battery.c =================================================================== diff -u -r8a9025b76d41a63d760ab1b0dcd7f68852338301 -r9081eeb6ba15f47f13551e147d7da88731746ecd --- firmware/App/Drivers/Battery.c (.../Battery.c) (revision 8a9025b76d41a63d760ab1b0dcd7f68852338301) +++ firmware/App/Drivers/Battery.c (.../Battery.c) (revision 9081eeb6ba15f47f13551e147d7da88731746ecd) @@ -20,8 +20,8 @@ #include "Battery.h" #include "PersistentAlarm.h" #include "SystemCommMessages.h" -#include "Timers.h" - +#include "Timers.h" + /** * @addtogroup Battery * @{ @@ -48,99 +48,103 @@ #define BATTERY_MIN_CAPACITY_MWH 5000.0F ///< Minimum battery capacity for starting a treatment is 10 minutes (5 Wh @ 30W). // Battery logging -#define ADDR_REMAININGCAPACITYALARM 0x01 // SN - Use "_" between words, add prefix BATTERY_PACK_ to each -#define ADDR_REMAININGTIMEALARM 0x02 -#define ADDR_BATTERYMODE 0x03 -#define ADDR_ATRATE 0x04 -#define ADDR_ATRATETIMETOFULL 0x05 -#define ADDR_ATRATETIMETOEMPTY 0x06 -#define ADDR_ATRATEOK 0x07 -#define ADDR_TEMPERATURE 0x08 -#define ADDR_VOLTAGE 0x09 -#define ADDR_CURRENT 0x0a -#define ADDR_AVERAGECURRENT 0x0b -#define ADDR_MAXERROR 0x0c -#define ADDR_RELATIVESTATEOFCHARGE 0x0d -#define ADDR_ABSOLUTESTATEOFCHARGE 0x0e -#define ADDR_REMAININGCAPACITY 0x0f -#define ADDR_FULLCHARGECAPACITY 0x10 -#define ADDR_RUNTIMETOEMPTY 0x11 -#define ADDR_AVERAGETIMETOEMPTY 0x12 -#define ADDR_AVERAGETIMETOFULL 0x13 -#define ADDR_CHARGINGCURRENT 0x14 -#define ADDR_CHARGINGVOLTAGE 0x15 -#define ADDR_BATTERYSTATUS 0x16 -#define ADDR_CYCLECOUNT 0x17 -#define ADDR_DESIGNCAPACITY 0x18 -#define ADDR_DESIGNVOLTAGE 0x19 -#define ADDR_SPECIFICATIONINFO 0x1a -#define ADDR_MANUFACTUREDATE 0x1b -#define ADDR_SERIALNUMBER 0x1c -#define ADDR_MANUFACTURERNAME 0x20 -#define ADDR_DEVICENAME 0x21 -#define ADDR_DEVICECHEMISTRY 0x22 +#define BATTERY_PACK_ADDR_REMAINING_CAPACITY_ALARM 0x01 +#define BATTERY_PACK_ADDR_REMAINING_TIME_ALARM 0x02 +#define BATTERY_PACK_ADDR_BATTERY_MODE 0x03 +#define BATTERY_PACK_ADDR_AT_RATE 0x04 +#define BATTERY_PACK_ADDR_AT_RATE_TIME_TO_FULL 0x05 +#define BATTERY_PACK_ADDR_AT_RATE_TIME_TO_EMPTY 0x06 +#define BATTERY_PACK_ADDR_AT_RATE_OK 0x07 +#define BATTERY_PACK_ADDR_TEMPERATURE 0x08 +#define BATTERY_PACK_ADDR_VOLTAGE 0x09 +#define BATTERY_PACK_ADDR_CURRENT 0x0a +#define BATTERY_PACK_ADDR_AVERAGE_CURRENT 0x0b +#define BATTERY_PACK_ADDR_MAX_ERROR 0x0c +#define BATTERY_PACK_ADDR_RELATIVE_STATE_OF_CHARGE 0x0d +#define BATTERY_PACK_ADDR_ABSOLUTE_STATE_OF_CHARGE 0x0e +#define BATTERY_PACK_ADDR_REMAINING_CAPACITY 0x0f +#define BATTERY_PACK_ADDR_FULL_CHARGE_CAPACITY 0x10 +#define BATTERY_PACK_ADDR_RUN_TIME_TO_EMPTY 0x11 +#define BATTERY_PACK_ADDR_AVERAGE_TIME_TO_EMPTY 0x12 +#define BATTERY_PACK_ADDR_AVERAGE_TIME_TO_FULL 0x13 +#define BATTERY_PACK_ADDR_CHARGING_CURRENT 0x14 +#define BATTERY_PACK_ADDR_CHARGING_VOLTAGE 0x15 +#define BATTERY_PACK_ADDR_BATTERY_STATUS 0x16 +#define BATTERY_PACK_ADDR_CYCLE_COUNT 0x17 +#define BATTERY_PACK_ADDR_DESIGN_CAPACITY 0x18 +#define BATTERY_PACK_ADDR_DESIGN_VOLTAGE 0x19 +#define BATTERY_PACK_ADDR_SPECIFICATION_INFO 0x1a +#define BATTERY_PACK_ADDR_MANUFACTURE_DATE 0x1b +#define BATTERY_PACK_ADDR_SERIAL_NUMBER 0x1c +#define BATTERY_PACK_ADDR_MANUFACTURER_NAME 0x20 +#define BATTERY_PACK_ADDR_DEVICE_NAME 0x21 +#define BATTERY_PACK_ADDR_DEVICE_CHEMISTRY 0x22 /// Persist time (in ms) for battery pack status error condition. static const U32 BATT_STATUS_ERROR_PERSIST_MS = ( 5 * MS_PER_SECOND ); // ENUM of battery management values for iterating -typedef enum BatteryManagementEnum // SN - Add "_" between words in enums with prefix BATTERY_PACK_ or BATTERY_CHARGER_. +typedef enum BatteryManagementEnum { BEGINNING_OF_LIST = 0, - REMAININGCAPACITY1 = BEGINNING_OF_LIST, - BATTERYSTATUS1, - REMAININGCAPACITYALARM, - REMAININGTIMEALARM, - BATTERYMODE, - ATRATE, - ATRATETIMETOFULL, - REMAININGCAPACITY2, - BATTERYSTATUS2, - ATRATETIMETOEMPTY, - ATRATEOK, - TEMPERATURE, - VOLTAGE, - CURRENT, - AVERAGECURRENT, - REMAININGCAPACITY3, - BATTERYSTATUS3, - MAXERROR, - RELATIVESTATEOFCHARGE, - ABSOLUTESTATEOFCHARGE, - FULLCHARGECAPACITY, - RUNTIMETOEMPTY, - AVERAGETIMETOEMPTY, - AVERAGETIMETOFULL, - REMAININGCAPACITY4, - BATTERYSTATUS4, - CHARGINGCURRENT, - CHARGINGVOLTAGE, - CYCLECOUNT, - DESIGNCAPACITY, - DESIGNVOLTAGE, - SPECIFICATIONINFO, - MANUFACTUREDATE, - REMAININGCAPACITY5, - BATTERYSTATUS5, - SERIALNUMBER, - MANUFACTURERNAME, - DEVICENAME, - DEVICECHEMISTRY, - BATTERY_CHARGER_STATUS, + BATTERY_PACK_REMAINING_CAPACITY1, + BATTERY_PACK_BATTERY_STATUS1, + BATTERY_CHARGER_STATUS1, + BATTERY_PACK_REMAINING_CAPACITY_ALARM, + BATTERY_PACK_REMAINING_TIME_ALARM, + BATTERY_PACK_BATTERY_MODE, + BATTERY_PACK_AT_RATE, + BATTERY_PACK_AT_RATE_TIME_TO_FULL, + BATTERY_PACK_REMAINING_CAPACITY2, + BATTERY_PACK_BATTERY_STATUS2, + BATTERY_CHARGER_STATUS2, + BATTERY_PACK_AT_RATE_TIME_TO_EMPTY, + BATTERY_PACK_AT_RATE_OK, + BATTERY_PACK_TEMPERATURE, + BATTERY_PACK_VOLTAGE, + BATTERY_PACK_CURRENT, + BATTERY_PACK_AVERAGE_CURRENT, + BATTERY_PACK_REMAINING_CAPACITY3, + BATTERY_PACK_BATTERY_STATUS3, + BATTERY_CHARGER_STATUS3, + BATTERY_PACK_MAX_ERROR, + BATTERY_PACK_RELATIVE_STATE_OF_CHARGE, + BATTERY_PACK_ABSOLUTE_STATE_OF_CHARGE, + BATTERY_PACK_FULL_CHARGE_CAPACITY, + BATTERY_PACK_RUN_TIME_TO_EMPTY, + BATTERY_PACK_AVERAGE_TIME_TO_EMPTY, + BATTERY_PACK_AVERAGE_TIME_TO_FULL, + BATTERY_PACK_REMAINING_CAPACITY4, + BATTERY_PACK_BATTERY_STATUS4, + BATTERY_CHARGER_STATUS4, + BATTERY_PACK_CHARGING_CURRENT, + BATTERY_PACK_CHARGING_VOLTAGE, + BATTERY_PACK_CYCLE_COUNT, + BATTERY_PACK_DESIGN_CAPACITY, + BATTERY_PACK_DESIGN_VOLTAGE, + BATTERY_PACK_SPECIFICATION_INFO, + BATTERY_PACK_MANUFACTURE_DATE, + BATTERY_PACK_REMAINING_CAPACITY5, + BATTERY_PACK_BATTERY_STATUS5, + BATTERY_CHARGER_STATUS5, + BATTERY_PACK_SERIAL_NUMBER, + BATTERY_PACK_MANUFACTURER_NAME, + BATTERY_PACK_DEVICE_NAME, + BATTERY_PACK_DEVICE_CHEMISTRY, + END_OF_LIST } BATTERY_MANAGEMENT_ENUM_T; // ********** private data ********** static OVERRIDE_F32_T batteryRemCapacity_mAh = { 0.0, 0.0, 0.0, 0 }; ///< Battery pack remaining capacity (in mAh). static U32 lastBatteryMonitorTime = 0; ///< Previous battery monitor time. -static U32 lastBatteryGetDataTime = 0; ///< Previous battery data get time. static U32 lostACPowerPersistentCount = 0; ///< Persistent count for AC power lost alarm. static U32 commFaultPersistentCount = 0; ///< Persistence count for battery comm fault. static BATTERY_MANAGEMENT_ENUM_T current_BM_value; -static BATTERY_MANAGER_PAYLOAD_T BatteryLoggingData; - +static BATTERY_MANAGER_PAYLOAD_T BatteryManagerData; +static BATTERY_STATUS_PAYLOAD_T BatteryStatusData; // ********** private function prototypes ********** static F32 getBatteryRemainingCapacity_mWh( void ); @@ -156,24 +160,24 @@ // For logging static void getBatteryManagementData( void ); static void publishBatteryManagementData( void ); - +static void publishBatteryStatusData( void ); + /*********************************************************************//** * @brief * The initBattery function initializes the Battery module. - * @details Inputs: none + * @details Inputs: none * @details Outputs: Battery module is initialized. - * @return none + * @return none *************************************************************************/ void initBattery( void ) { lastBatteryMonitorTime = 0; lostACPowerPersistentCount = 0; commFaultPersistentCount = 0; - lastBatteryGetDataTime = 0; current_BM_value = BEGINNING_OF_LIST; - lastBatteryGetDataTime = getMSTimerCount(); - memset( &BatteryLoggingData, 0, sizeof( BATTERY_MANAGER_PAYLOAD_T ) ); + memset( &BatteryStatusData, 0, sizeof( BATTERY_STATUS_PAYLOAD_T ) ); + memset( &BatteryManagerData, 0, sizeof( BATTERY_MANAGER_PAYLOAD_T ) ); // Initialize persistent alarm for battery pack status error initPersistentAlarm( ALARM_ID_HD_BATTERY_PACK_ERROR_DETECTED, 0, BATT_STATUS_ERROR_PERSIST_MS ); @@ -184,10 +188,8 @@ /*********************************************************************//** * @brief * The execBatteryMonitor function monitors the battery status. - * @details Inputs: lastBatteryMonitorTime, hasBatteryChargerStatus, batteryStatus, - * batteryRelStateOfCharge_pct, batteryPackStatus, lostACPowerPersistentCount - * @details Outputs: lastBatteryMonitorTime, hasBatteryChargerStatus, - * lostACPowerPersistentCount, batteryRelStateOfCharge_pct, batteryRemCapacity_mAh + * @details Inputs: lastBatteryMonitorTime + * @details Outputs: lastBatteryMonitorTime * @return none *************************************************************************/ void execBatteryMonitor( void ) @@ -448,6 +450,7 @@ return result; } + /*********************************************************************//** * @brief * The getBatteryManagementData function accumulates the battery management data and publishes when complete @@ -457,154 +460,162 @@ *************************************************************************/ static void getBatteryManagementData(void) { + // Increment the position in the enum. Starting value is BEGINNING_OF_LIST (0), so on the first + // cycle through this function it will be set to the first valid position (1) + current_BM_value += 1; + switch( current_BM_value ) { - case REMAININGCAPACITY1: - case REMAININGCAPACITY2: - case REMAININGCAPACITY3: - case REMAININGCAPACITY4: - case REMAININGCAPACITY5: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_REMAININGCAPACITY, &BatteryLoggingData.RemainingCapacity); - batteryRemCapacity_mAh.data = (F32)BatteryLoggingData.RemainingCapacity * BATTERY_MAH_2_MWH_FACTOR; + case BATTERY_PACK_REMAINING_CAPACITY1: + case BATTERY_PACK_REMAINING_CAPACITY2: + case BATTERY_PACK_REMAINING_CAPACITY3: + case BATTERY_PACK_REMAINING_CAPACITY4: + case BATTERY_PACK_REMAINING_CAPACITY5: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_REMAINING_CAPACITY, &BatteryStatusData.RemainingCapacity); + batteryRemCapacity_mAh.data = (F32)BatteryStatusData.RemainingCapacity * BATTERY_MAH_2_MWH_FACTOR; break; - case BATTERYSTATUS1: - case BATTERYSTATUS2: - case BATTERYSTATUS3: - case BATTERYSTATUS4: - case BATTERYSTATUS5: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_BATTERYSTATUS, &BatteryLoggingData.BatteryStatus); - if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_BATTERY_PACK_ERROR_DETECTED, ( BatteryLoggingData.BatteryStatus & BATTERY_PACK_ERROR_BITS ) != 0 ) ) ) + case BATTERY_PACK_BATTERY_STATUS1: + case BATTERY_PACK_BATTERY_STATUS2: + case BATTERY_PACK_BATTERY_STATUS3: + case BATTERY_PACK_BATTERY_STATUS4: + case BATTERY_PACK_BATTERY_STATUS5: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_BATTERY_STATUS, &BatteryStatusData.BatteryStatus); + if ( ( TRUE == isPersistentAlarmTriggered( ALARM_ID_HD_BATTERY_PACK_ERROR_DETECTED, ( BatteryStatusData.BatteryStatus & BATTERY_PACK_ERROR_BITS ) != 0 ) ) ) { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_BATTERY_PACK_ERROR_DETECTED, BatteryLoggingData.BatteryStatus ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_BATTERY_PACK_ERROR_DETECTED, BatteryStatusData.BatteryStatus ); } break; - - case REMAININGCAPACITYALARM: - getBatteryData( BATTERY_PACK_SLAVE_ADDRESS, ADDR_REMAININGCAPACITYALARM, &BatteryLoggingData.RemainingCapacityAlarm ); + + case BATTERY_PACK_REMAINING_CAPACITY_ALARM: + getBatteryData( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_REMAINING_CAPACITY_ALARM, &BatteryManagerData.RemainingCapacityAlarm ); break; - case REMAININGTIMEALARM: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_REMAININGTIMEALARM, &BatteryLoggingData.RemainingTimeAlarm); - break; + case BATTERY_PACK_REMAINING_TIME_ALARM: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_REMAINING_TIME_ALARM, &BatteryManagerData.RemainingTimeAlarm); + break; - case BATTERYMODE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_BATTERYMODE, &BatteryLoggingData.BatteryMode); + case BATTERY_PACK_BATTERY_MODE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_BATTERY_MODE, &BatteryManagerData.BatteryMode); break; - case ATRATE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_ATRATE, &BatteryLoggingData.AtRate); + case BATTERY_PACK_AT_RATE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AT_RATE, &BatteryManagerData.AtRate); break; - case ATRATETIMETOFULL: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_ATRATETIMETOFULL, &BatteryLoggingData.AtRateTimeToFull); + case BATTERY_PACK_AT_RATE_TIME_TO_FULL: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AT_RATE_TIME_TO_FULL, &BatteryManagerData.AtRateTimeToFull); break; - case ATRATETIMETOEMPTY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_ATRATETIMETOEMPTY, &BatteryLoggingData.AtRateTimeToEmpty); + case BATTERY_PACK_AT_RATE_TIME_TO_EMPTY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AT_RATE_TIME_TO_EMPTY, &BatteryManagerData.AtRateTimeToEmpty); break; - case ATRATEOK: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_ATRATEOK, &BatteryLoggingData.AtRateOK); + case BATTERY_PACK_AT_RATE_OK: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AT_RATE_OK, &BatteryManagerData.AtRateOK); break; - case TEMPERATURE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_TEMPERATURE, &BatteryLoggingData.Temperature); - break; + case BATTERY_PACK_TEMPERATURE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_TEMPERATURE, &BatteryManagerData.Temperature); + break; - case VOLTAGE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_VOLTAGE, &BatteryLoggingData.Voltage); + case BATTERY_PACK_VOLTAGE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_VOLTAGE, &BatteryManagerData.Voltage); break; - case CURRENT: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_CURRENT, &BatteryLoggingData.Current); - break; + case BATTERY_PACK_CURRENT: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_CURRENT, &BatteryManagerData.Current); + break; - case AVERAGECURRENT: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_AVERAGECURRENT, &BatteryLoggingData.AverageCurrent); + case BATTERY_PACK_AVERAGE_CURRENT: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AVERAGE_CURRENT, &BatteryManagerData.AverageCurrent); break; - case MAXERROR: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_MAXERROR, &BatteryLoggingData.MaxError); + case BATTERY_PACK_MAX_ERROR: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_MAX_ERROR, &BatteryManagerData.MaxError); break; - case RELATIVESTATEOFCHARGE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_RELATIVESTATEOFCHARGE, &BatteryLoggingData.RelativeStateOfCharge); + case BATTERY_PACK_RELATIVE_STATE_OF_CHARGE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_RELATIVE_STATE_OF_CHARGE, &BatteryManagerData.RelativeStateOfCharge); break; - case ABSOLUTESTATEOFCHARGE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_ABSOLUTESTATEOFCHARGE, &BatteryLoggingData.AbsoluteStateOfCharge); + case BATTERY_PACK_ABSOLUTE_STATE_OF_CHARGE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_ABSOLUTE_STATE_OF_CHARGE, &BatteryManagerData.AbsoluteStateOfCharge); break; - case FULLCHARGECAPACITY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_FULLCHARGECAPACITY, &BatteryLoggingData.FullChargeCapacity); + case BATTERY_PACK_FULL_CHARGE_CAPACITY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_FULL_CHARGE_CAPACITY, &BatteryManagerData.FullChargeCapacity); break; - case RUNTIMETOEMPTY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_RUNTIMETOEMPTY, &BatteryLoggingData.RunTimeToEmpty); + case BATTERY_PACK_RUN_TIME_TO_EMPTY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_RUN_TIME_TO_EMPTY, &BatteryManagerData.RunTimeToEmpty); break; - case AVERAGETIMETOEMPTY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_AVERAGETIMETOEMPTY, &BatteryLoggingData.AverageTimeToEmpty); + case BATTERY_PACK_AVERAGE_TIME_TO_EMPTY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AVERAGE_TIME_TO_EMPTY, &BatteryManagerData.AverageTimeToEmpty); break; - case AVERAGETIMETOFULL: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_AVERAGETIMETOFULL, &BatteryLoggingData.AverageTimeToFull); + case BATTERY_PACK_AVERAGE_TIME_TO_FULL: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_AVERAGE_TIME_TO_FULL, &BatteryManagerData.AverageTimeToFull); break; - case CHARGINGCURRENT: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_CHARGINGCURRENT, &BatteryLoggingData.ChargingCurrent); + case BATTERY_PACK_CHARGING_CURRENT: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_CHARGING_CURRENT, &BatteryManagerData.ChargingCurrent); break; - case CHARGINGVOLTAGE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_CHARGINGVOLTAGE, &BatteryLoggingData.ChargingVoltage); + case BATTERY_PACK_CHARGING_VOLTAGE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_CHARGING_VOLTAGE, &BatteryManagerData.ChargingVoltage); break; - case CYCLECOUNT: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_CYCLECOUNT, &BatteryLoggingData.CycleCount); + case BATTERY_PACK_CYCLE_COUNT: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_CYCLE_COUNT, &BatteryManagerData.CycleCount); break; - case DESIGNCAPACITY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_DESIGNCAPACITY, &BatteryLoggingData.DesignCapacity); + case BATTERY_PACK_DESIGN_CAPACITY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_DESIGN_CAPACITY, &BatteryManagerData.DesignCapacity); break; - case DESIGNVOLTAGE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_DESIGNVOLTAGE, &BatteryLoggingData.DesignVoltage); + case BATTERY_PACK_DESIGN_VOLTAGE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_DESIGN_VOLTAGE, &BatteryManagerData.DesignVoltage); break; - case SPECIFICATIONINFO: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_SPECIFICATIONINFO, &BatteryLoggingData.SpecificationInfo); + case BATTERY_PACK_SPECIFICATION_INFO: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_SPECIFICATION_INFO, &BatteryManagerData.SpecificationInfo); break; - case MANUFACTUREDATE: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_MANUFACTUREDATE, &BatteryLoggingData.ManufactureDate); + case BATTERY_PACK_MANUFACTURE_DATE: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_MANUFACTURE_DATE, &BatteryManagerData.ManufactureDate); break; - case SERIALNUMBER: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_SERIALNUMBER, &BatteryLoggingData.SerialNumber); + case BATTERY_PACK_SERIAL_NUMBER: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_SERIAL_NUMBER, &BatteryManagerData.SerialNumber); break; - case MANUFACTURERNAME: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_MANUFACTURERNAME, &BatteryLoggingData.ManufacturerName); + case BATTERY_PACK_MANUFACTURER_NAME: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_MANUFACTURER_NAME, &BatteryManagerData.ManufacturerName); break; - case DEVICENAME: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_DEVICENAME, &BatteryLoggingData.DeviceName); - break; + case BATTERY_PACK_DEVICE_NAME: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_DEVICE_NAME, &BatteryManagerData.DeviceName); + break; - case DEVICECHEMISTRY: - getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, ADDR_DEVICECHEMISTRY, &BatteryLoggingData.DeviceChemistry); - break; - - case BATTERY_CHARGER_STATUS: - if ( TRUE == getBatteryData( BATTERY_CHARGER_SLAVE_ADDRESS, BATTERY_CHARGER_STATUS_CMD, &BatteryLoggingData.BatteryChargerStatus ) ) + case BATTERY_PACK_DEVICE_CHEMISTRY: + getBatteryData ( BATTERY_PACK_SLAVE_ADDRESS, BATTERY_PACK_ADDR_DEVICE_CHEMISTRY, &BatteryManagerData.DeviceChemistry); + break; + + case BATTERY_CHARGER_STATUS1: + case BATTERY_CHARGER_STATUS2: + case BATTERY_CHARGER_STATUS3: + case BATTERY_CHARGER_STATUS4: + case BATTERY_CHARGER_STATUS5: + if ( TRUE == getBatteryData( BATTERY_CHARGER_SLAVE_ADDRESS, BATTERY_CHARGER_STATUS_CMD, &BatteryStatusData.BatteryChargerStatus ) ) { - if ( 0 == ( BatteryLoggingData.BatteryChargerStatus & BATTERY_CHARGER_STATUS_AC_PRESENT_MASK ) ) + if ( 0 == ( BatteryStatusData.BatteryChargerStatus & BATTERY_CHARGER_STATUS_AC_PRESENT_MASK ) ) { if ( ++lostACPowerPersistentCount > AC_POWER_LOST_PERSISTENT_COUNT ) { #ifndef DISABLE_BATT_COMM - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_AC_POWER_LOST, BatteryLoggingData.BatteryChargerStatus ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_AC_POWER_LOST, BatteryStatusData.BatteryChargerStatus ); #endif } } @@ -614,20 +625,20 @@ lostACPowerPersistentCount = 0; } } - break; + publishBatteryStatusData(); + break; + case END_OF_LIST: current_BM_value = BEGINNING_OF_LIST; publishBatteryManagementData(); - break; + break; default: // TODO s/w fault break; } - // Go to next value for next time - current_BM_value += 1; } @@ -643,9 +654,23 @@ static void publishBatteryManagementData( void ) { - broadcastData( MSG_ID_HD_BATTERY_MANAGEMENT_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&BatteryLoggingData, sizeof( BATTERY_MANAGER_PAYLOAD_T ) ); + broadcastData( MSG_ID_HD_BATTERY_MANAGEMENT_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&BatteryManagerData, sizeof( BATTERY_MANAGER_PAYLOAD_T ) ); } + +/*********************************************************************//** + * @brief + * The publishBatteryStatusData function publishes the battery status data + * @details Inputs: + * @details Outputs: send battery status data + * @return none + *************************************************************************/ +static void publishBatteryStatusData( void ) +{ + + broadcastData( MSG_ID_HD_BATTERY_STATUS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&BatteryStatusData, sizeof( BATTERY_STATUS_PAYLOAD_T ) ); + +} /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/