Index: firmware/App/Services/AlarmMgmtDD.c =================================================================== diff -u -r26ee1d67dca19aac1850077cbd41c05498cf059d -r262381341fba476bb71f5cf0d67ac2fe17dee9c6 --- firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision 26ee1d67dca19aac1850077cbd41c05498cf059d) +++ firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision 262381341fba476bb71f5cf0d67ac2fe17dee9c6) @@ -16,38 +16,34 @@ ***************************************************************************/ #include "AlarmMgmtDD.h" +#include "Messaging.h" #include "OperationModes.h" #include "PersistentAlarm.h" #include "SafetyShutdown.h" -#include "TaskGeneral.h" -#include "Timers.h" -#include "Messaging.h" -#include "TDDefs.h" #include "SystemCommDD.h" +#include "TaskGeneral.h" +#include "TDDefs.h" +#include "Timers.h" + /** * @addtogroup AlarmManagement * @{ */ // ********** private definitions ********** -/// Interval (ms/task time) at which the alarm information is published on the CAN bus. -#define ALARM_INFO_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) +#define ALARM_INFO_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Interval (ms/task time) at which the alarm information is published on the CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 12 ///< Data publish counter start count. -#define ALARM_DG_FAULT_LED_ON_INTERVAL ( MS_PER_SECOND / 4 / TASK_GENERAL_INTERVAL ) ///< LED Flash ON time interval time -#define ALARM_DG_FAULT_LED_OFF_INTERVAL ( ALARM_DG_FAULT_LED_ON_INTERVAL * 2 ) ///< LED Flash OFF time interval time - -U32 alarmLEDTimer; ///< Alarm LED timer +#define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. -const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. - -#define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. +const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. // ********** private data ********** static U32 alarmInfoPublicationTimerCounter; ///< Used to schedule alarm information publication to CAN bus. -static BOOL isAFaultAlarmActive; ///< Boolean flag to indicate whether a DG fault alarm is active. +static BOOL isAFaultAlarmActive; ///< Boolean flag to indicate whether a DD fault alarm is active. + /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; @@ -61,14 +57,12 @@ * @brief * The initAlarmMgmtDD function initializes the AlarmMgmt module. * @details \b Inputs: none - * @details \b Outputs: alarmInfoPublicationTimerCounter, alarmLEDTimer, - * isAFaultAlarmActive, alarmIsActive, alarmIsDetected + * @details \b Outputs: unit variables initialized. * @return none *************************************************************************/ void initAlarmMgmtDD( void ) { alarmInfoPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - alarmLEDTimer = 0; isAFaultAlarmActive = FALSE; // Initialize common alarm mgmt unit @@ -77,7 +71,7 @@ /*********************************************************************//** * @brief - * The execAlarmMgmt function executes the alarm management module. + * The execAlarmMgmt function executes periodic alarm management operations. * @details \b Inputs: none * @details \b Outputs: none * @return none @@ -111,14 +105,14 @@ // activate alarm activateAlarm( alarm ); - if ( TRUE == props.alarmIsDGFault ) + if ( TRUE == props.alarmIsDDFault ) { - // There is a DG fault alarm. + // There is a DD fault alarm. isAFaultAlarmActive = TRUE; if ( TRUE == isTransitionToFaultRequired() ) { - // If alarm is a DG fault and the alarm manager can transition to fault immediately, go to fault mode + // If alarm is a DD fault and the alarm manager can transition to fault immediately, go to fault mode requestNewOperationMode( DD_MODE_FAUL ); } } @@ -167,7 +161,9 @@ * is broadcast to the rest of the system. This function will include * two given data in the broadcast message for logging. * @details \b Inputs: none - * @details \b Outputs: alarm triggered message sent, alarm activated + * @details \b Outputs: alarm triggered message sent, alarm activated + * @details \b Message \b sent: MSG_ID_ALARM_TRIGGERED to update Alarm + * trigerred details along with the supporting data. * @param alarm ID of alarm to activate * @param alarmData1 supporting data to include in alarm message * @param alarmData2 supporting data to include in alarm message @@ -200,6 +196,8 @@ * An alarm message is broadcast to the rest of the system. * @details \b Inputs: none * @details \b Outputs: AlarmStatusTable[] + * @details \b Message \Sent: MSG_ID_ALARM_CLEARED to update clearance of + * the alarm. * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm needs * to be cleared. * @param alarm ID of alarm to clear @@ -212,8 +210,8 @@ // verify given alarm if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) { - // clear alarm and broadcast alarm clear if not already cleared (and not a DG fault which should not be cleared) - if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDGFault != TRUE ) ) + // clear alarm and broadcast alarm clear if not already cleared (and not a DD fault which should not be cleared) + if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDDFault != TRUE ) ) { if ( TRUE == isTDCommunicating() ) { @@ -235,6 +233,8 @@ * flag. Also an alarm message is broadcast to the rest of the system. * @details \b Inputs: none * @details \b Outputs: alarmIsDetected[] + * @details \b Message \b Sent: MSG_ID_ALARM_CONDITION_CLEARED to update + * alarm condition clearance. * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm conditioned * needs to be cleared * @param alarm ID of alarm to clear condition for @@ -280,6 +280,8 @@ * interval. * @details \b Inputs: * @details \b Outputs: alarm information are published to CAN bus. + * @details \b Message \b Sent: MSG_ID_DD_ALARM_INFO_DATA to puslish saftey + * shutdown activation details. * @return none *************************************************************************/ static void publishAlarmInfo( void ) @@ -292,7 +294,6 @@ data.safetyShutdownStatus = (U32)isSafetyShutdownActivated(); broadcastData( MSG_ID_DD_ALARM_INFO_DATA, COMM_BUFFER_OUT_CAN_DD_ALARM, (U08*)&data, sizeof( SAFETY_SHUTDOWN_ACTIVATION_DATA_T ) ); - //broadcastCPLDStatus(); alarmInfoPublicationTimerCounter = 0; } } @@ -303,6 +304,7 @@ * all active alarms. * @details \b Inputs: alarmIsActive[] * @details \b Outputs: re-send active alarms to UI +* @details \b Message \b Sent: MSG_ID_ALARM_TRIGGERED to resend all active alarms. * @return none *************************************************************************/ void handleResendActiveAlarmsRequest( void ) @@ -331,12 +333,12 @@ BOOL status = FALSE; // Check all the inlet water conditions -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_HIGH ); -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_TEMP_TOO_LOW ); -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_HIGH ); -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_COND_TOO_LOW ); -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH ); -// status |= isAlarmActive( ALARM_ID_DG_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_TEMP_TOO_HIGH ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_TEMP_TOO_LOW ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_COND_TOO_HIGH ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_COND_TOO_LOW ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_HIGH ); +// status |= isAlarmActive( ALARM_ID_DD_CLEANING_MODE_INLET_WATER_PRESSURE_TOO_LOW ); return status; } @@ -356,11 +358,9 @@ switch( opMode ) { - //case DG_MODE_FLUS: + //case DD_MODE_FLUS: case DD_MODE_HEAT: - //case DG_MODE_CHEM: case DD_MODE_SERV: - //case DG_MODE_CHFL: case DD_MODE_HCOL: case DD_MODE_ROPS: status = FALSE; @@ -382,9 +382,10 @@ * @brief * The testClearAllAlarms function clears all active alarms, even if they * are non-recoverable or faults. The caller of this function must provide - * the correct 32-bit key. A Dialin user must also be logged into DG. + * the correct 32-bit key. A Dialin user must also be logged into DD. * @details \b Inputs: none * @details \b Outputs: alarmIsActive[], alarmStartedAt[] + * @details \b Message \b Sent: MSG_ID_ALARM_CLEARED to clear all alarms. * @param key 32-bit supervisor alarm key required to perform this function * @return TRUE if override reset successful, FALSE if not *************************************************************************/ Index: firmware/App/Services/AlarmMgmtDD.h =================================================================== diff -u -rf6b89ff07c594756de79c090cac2e74c7e7e5173 -r262381341fba476bb71f5cf0d67ac2fe17dee9c6 --- firmware/App/Services/AlarmMgmtDD.h (.../AlarmMgmtDD.h) (revision f6b89ff07c594756de79c090cac2e74c7e7e5173) +++ firmware/App/Services/AlarmMgmtDD.h (.../AlarmMgmtDD.h) (revision 262381341fba476bb71f5cf0d67ac2fe17dee9c6) @@ -14,13 +14,11 @@ * @date (original) 05-Aug-2024 * ***************************************************************************/ - #ifndef __ALARM_MGMT_DD_H__ #define __ALARM_MGMT_DD_H__ + -//#include "DDCommon.h" - /** * @defgroup AlarmManagement AlarmManagement * @brief Alarm management service module. Provides general alarm management functionality @@ -68,7 +66,6 @@ BOOL testSetAlarmInfoPublishIntervalOverride( U32 ms ); BOOL testResetAlarmInfoPublishIntervalOverride( void ); - /**@}*/ #endif Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r26ee1d67dca19aac1850077cbd41c05498cf059d -r262381341fba476bb71f5cf0d67ac2fe17dee9c6 --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 26ee1d67dca19aac1850077cbd41c05498cf059d) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 262381341fba476bb71f5cf0d67ac2fe17dee9c6) @@ -7,10 +7,10 @@ * * @file AlarmMgmtSWFaults.h * -* @author (last) Sean +* @author (last) Vinayakam Mani * @date (last) 30-Jul-2024 * -* @author (original) Sean +* @author (original) Vinayakam Mani * @date (original) 30-Jul-2024 * ***************************************************************************/ @@ -29,130 +29,70 @@ typedef enum { SW_FAULT_ID_NONE = 0, - SW_FAULT_ID_INT_ADC_DATA_OVERRUN, - SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED, - SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, - SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, - SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, // 5 - SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, - SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, - SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA, // 10 - SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER, - SW_FAULT_ID_FPGA_INVALID_STATE, // 15 - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR_COND, - SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA, // 20 - SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL, - SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, // 25 - SW_FAULT_ID_WATCHDOG_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE3, // to support common code alarms - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR2, // to support common code alarms - SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED1, // to support common code alarms - SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL, // 30 - SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, - SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, - SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, - SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, // 35 - SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, - SW_FAULT_ID_HEATERS_INVALID_HEATER_ID_SELECTED, - SW_FAULT_ID_HEATERS_INVALID_EXEC_STATE, - SW_FAULT_ID_INVALID_EMSTAT_CONDUCTIVITY_BOARD_SELECTED, - SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME, // 40 - SW_FAULT_ID_VALVES_INVALID_VALVE_ID, - SW_FAULT_ID_CAN_PARITY_ERROR, - SW_FAULT_ID_CAN_PASSIVE_WARNING, - SW_FAULT_ID_CAN_OFF_ERROR, - SW_FAULT_ID_FPGA_UART_FRAME_ERROR, // 45 - SW_FAULT_ID_FPGA_UART_OVERRUN_ERROR, - SW_FAULT_ID_UTIL_TIME_WINDOWED_COUNT_ERROR, - SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED2, - SW_FAULT_ID_INVALID_CAN_MESSAGE_BOX, // to support common code alarms - SW_FAULT_ID_SYSTEM_CMMM_CAN_TRANSMIT_REJECTED, // 50 - SW_FAULT_ID_SYSTEM_COMM_INVALID_FRAME_SIZE, - SW_FAULT_ID_UTIL_INVALID_WIN_COUNT, - SW_FAULT_ID_UTIL_INVALID_WIN_MAX_COUNT, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX, - SW_FAULT_ID_CONCENTRATE_PUMP_EXEC_INVALID_STATE, // 55 - SW_FAULT_ID_CONCENTRATE_PUMP_INVALID_PUMP_ID, - SW_FAULT_ID_SEMAPHORE_IN_USE_TIMEOUT, - SW_FAULT_ID_SERVICE_MODE_INVALID_EXEC_STATE, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX1, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX2, // 60 - SW_FAULT_ID_THERMISTORS_INVALID_EXEC_STATE, - SW_FAULT_ID_THERMISTORS_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_INVALID_THERMISTOR_SELECTED, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX3, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED1, // 65 - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED2, - SW_FAULT_ID_RO_PUMP_INVALID_EXEC_STATE, - SW_FAULT_ID_RO_PUMP_INVALID_FLOW_RATE_SET, - SW_FAULT_ID_DRAIN_PUMP_INVALID_EXEC_STATE, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED3, // 70 - SW_FAULT_ID_RO_PUMP_INVALID_PRESSURE_SELECTED, - SW_FAULT_ID_DRAIN_PUMP_TARGET_FLOW_LPM_SELECTED, - SW_FAULT_ID_INVALID_TEMPERATURE_SENSOR_SELECTED, - SW_FAULT_ID_DRAIN_PUMP_INVALID_RPM_SELECTED, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID, // 75 - SW_FAULT_ID_DG_FLUSH_INVALID_EXEC_STATE, - SW_FAULT_ID_HEAT_DISINFECT_INVALID_EXEC_STATE, - SW_FAULT_ID_WATCHDOG_INVALID_TASK, - SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE, - SW_FAULT_ID_AVAILABLE_2, // 80 - SW_FAULT_ID_AVAILABLE_3, - SW_FAULT_ID_AVAILABLE_4, - SW_FAULT_ID_AVAILABLE_5, - SW_FAULT_ID_PRESSURE_INVALID_EXEC_STATE, - SW_FAULT_ID_INVALID_NVDATAMGMT_EXEC_CAL_STATE, // 85 - SW_FAULT_ID_INVALID_VALVE_ID, - SW_FAULT_ID_INVALID_INT_ADC_CHANNEL_NUMBER, - SW_FAULT_ID_INVALID_RTI_NOTIFICATION, - SW_FAULT_ID_CAN_TX_FAULT, - SW_FAULT_ID_INVALID_CAN_MESSAGE_SIZE, // 90 - SW_FAULT_ID_INVALID_CONDUCTIVITY_SENSOR_ID, - SW_FAULT_ID_INVALID_PRESSURE_SENSOR_SELECTED, - SW_FAULT_ID_INVALID_TASK, - SW_FAULT_ID_INVALID_VOLTAGE_MONITOR_STATE, - SW_FAULT_ID_INVALID_MONITORED_VOLTAGE_ID, // 95 - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_GET_PROPS, - SW_FAULT_ID_AVAILABLE_1, - SW_FAULT_ID_DD_INVALID_SWITCH_ID, - SW_FAULT_ID_DD_PRESSURES_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_SAFETY_SHUTDOWN_INVALID_SELF_TEST_STATE, // 100 - SW_FAULT_ID_PHANTOM_INTERRUPT, - SW_FAULT_ID_ILLEGAL_MEM_ACCESS, - SW_FAULT_ID_INVALID_CHEMICAL_BOTTLE_SELECTED, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED, - SW_FAULT_ID_INVALID_FLOW_SENSOR_SELECTED, // 105 - SW_FAULT_ID_INVALID_SERVICE_STATE_SELECTED, - SW_FAULT_ID_INVALID_NV_RECORD_SELECTED, - SW_FAULT_ID_WRITE_USAGE_INFO_TO_NV_FAILURE, - SW_FAULT_ID_INVALID_FPGA_ERROR_GROUP_SELECTED, - SW_FAULT_ID_INVALID_LED_COLOR_SELECTED, // 110 - SW_FAULT_ID_INVALID_SWITCH_SELECTED, - SW_FAULT_ID_INVALID_USAGE_INFO_SELECTED, - SW_FAULT_ID_NVDATA_MANAGEMENT_OPS_TIMEOUT, - SW_FAULT_ID_NVDATA_RTC_RAM_OPS_FAILURE, - SW_FAULT_ID_HEAT_DISINFECT_ACTIVE_COOL_INVALID_EXEC_STATE, // 115 - SW_FAULT_ID_DG_CHEM_DISINFECT_FLUSH_INVALID_EXEC_STATE, - SW_FAULT_ID_INVALID_PI_PROFILE_SELECTED, - SW_FAULT_ID_PI_CTRL_INVALID_STEP_LIMIT, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_GET_RANK, - SW_FAULT_ID_DD_INVALID_TEST_CONFIG_SELECTED, // 120 - SW_FAULT_ID_DD_INVALID_TEST_CONFIG_SELECTED1, - SW_FAULT_ID_DD_INVALID_TEST_CONFIG_SELECTED2, - SW_FAULT_ID_DD_INVALID_COND_SNSNR_CAL_TABLE_SELECTED, - SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED3, + SW_FAULT_ID_INT_ADC_DATA_OVERRUN = 1, + SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED = 2, + SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE = 3, + SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED = 4, + SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE = 5, + SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED = 6, + SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO = 7, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE = 8, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR = 9, + SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA = 10, + SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER = 11, + SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER = 12, + SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER = 13, + SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER = 14, + SW_FAULT_ID_FPGA_INVALID_STATE = 15, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR_COND = 16, + SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA = 17, + SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA = 18, + SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA = 19, + SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA = 20, + SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL = 21, + SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE = 22, + SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE = 23, + SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE = 24, + SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE = 25, + SW_FAULT_ID_WATCHDOG_INVALID_SELF_TEST_STATE = 26, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE3 = 27, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR2 = 28, + SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED1 = 29, + SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL = 30, + SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME = 31, + SW_FAULT_ID_VALVES_INVALID_VALVE_ID = 32, + SW_FAULT_ID_CAN_PARITY_ERROR = 33, + SW_FAULT_ID_CAN_PASSIVE_WARNING = 34, + SW_FAULT_ID_CAN_OFF_ERROR = 35, + SW_FAULT_ID_UTIL_TIME_WINDOWED_COUNT_ERROR = 36, + SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED2 = 37, + SW_FAULT_ID_INVALID_CAN_MESSAGE_BOX = 38, + SW_FAULT_ID_SYSTEM_CMMM_CAN_TRANSMIT_REJECTED = 39, + SW_FAULT_ID_SYSTEM_COMM_INVALID_FRAME_SIZE = 40, + SW_FAULT_ID_UTIL_INVALID_WIN_COUNT = 41, + SW_FAULT_ID_UTIL_INVALID_WIN_MAX_COUNT = 42, + SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX = 43, + SW_FAULT_ID_SEMAPHORE_IN_USE_TIMEOUT = 44, + SW_FAULT_ID_SERVICE_MODE_INVALID_EXEC_STATE = 45, + SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX1 = 46, + SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX2 = 47, + SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX3 = 48, + SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED1 = 49, + SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED2 = 50, + SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED3 = 51, + SW_FAULT_ID_DRAIN_PUMP_INVALID_RPM_SELECTED = 52, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID = 53, + SW_FAULT_ID_WATCHDOG_INVALID_TASK = 54, + SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE = 55, + SW_FAULT_ID_INVALID_INT_ADC_CHANNEL_NUMBER = 56, + SW_FAULT_ID_INVALID_RTI_NOTIFICATION = 57, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_GET_PROPS = 58, + SW_FAULT_ID_SAFETY_SHUTDOWN_INVALID_SELF_TEST_STATE = 59, + SW_FAULT_ID_PHANTOM_INTERRUPT = 60, + SW_FAULT_ID_ILLEGAL_MEM_ACCESS = 61, + SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED = 62, + SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_GET_RANK = 63, + SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED3 = 64, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T;