Index: firmware/.cproject =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/.cproject (.../.cproject) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/.cproject (.../.cproject) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -45,6 +45,7 @@ + Index: firmware/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/.settings/org.eclipse.core.resources.prefs (.../org.eclipse.core.resources.prefs) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/.settings/org.eclipse.core.resources.prefs (.../org.eclipse.core.resources.prefs) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -1,4 +1,6 @@ eclipse.preferences.version=1 +encoding//Debug/App/Drivers/subdir_rules.mk=UTF-8 +encoding//Debug/App/Drivers/subdir_vars.mk=UTF-8 encoding//Debug/App/Modes/subdir_rules.mk=UTF-8 encoding//Debug/App/Modes/subdir_vars.mk=UTF-8 encoding//Debug/App/Services/subdir_rules.mk=UTF-8 Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -279,7 +279,7 @@ case DG_POST_STATE_FAILED: // Should not get here - any failed post test should have already triggered a fault and taken us to fault m default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, postState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, postState ) postState = DG_POST_STATE_FAILED; break; } Index: firmware/App/Modes/ModeService.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Modes/ModeService.c (.../ModeService.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -84,7 +84,7 @@ break; default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_SERVICE_MODE_INVALID_EXEC_STATE, serviceState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_SERVICE_MODE_INVALID_EXEC_STATE, serviceState ) serviceState = DG_SERVICE_STATE_START; break; } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -194,7 +194,7 @@ break; default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE, standbyState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_STANDBY_MODE_INVALID_EXEC_STATE, standbyState ) standbyState = DG_STANDBY_MODE_STATE_IDLE; break; } Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -157,7 +157,7 @@ // is requested new mode valid and legal at this time? if ( newMode >= DD_MODE_NLEG ) { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, (U32)newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, (U32)newMode ) newMode = currentMode; } @@ -234,7 +234,7 @@ // break; default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, (U32)currentMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, (U32)currentMode ) currentMode = DD_MODE_FAUL; currentSubMode = 0; break; @@ -272,7 +272,7 @@ } else { // invalid mode requested - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, (U32)newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, (U32)newMode ) } } @@ -411,7 +411,7 @@ // currentSubMode = transitionToROPermeateSampleMode(); // break; default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, (U32)newMode ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, (U32)newMode ) break; } Index: firmware/App/Services/AlarmMgmtDD.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -134,7 +134,7 @@ } else { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) } } @@ -183,7 +183,7 @@ *************************************************************************/ void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) { - //HD_MODE_SUB_MODE_T hdModes; +// HD_MODE_SUB_MODE_T hdModes; ALARM_T props = getAlarmProperties( alarm ); //getHDOperationMode( &hdModes ); @@ -230,7 +230,7 @@ } else { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) } } @@ -260,7 +260,7 @@ } else { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID, alarm ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_ID, alarm ) } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -29,74 +29,129 @@ typedef enum { SW_FAULT_ID_NONE = 0, - SW_FAULT_ID_ALARM_LAMP_INVALID_PATTERN_REQUESTED = 1, - SW_FAULT_ID_ALARM_LAMP_INVALID_SELF_TEST_STATE = 2, - SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE = 3, - SW_FAULT_ID_MODE_STANDBY_INVALID_STATE = 4, - SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED = 5, - SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE = 6, - SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED = 7, - SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_SIGNAL_ACTION = 8, - SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO = 9, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE1 = 10, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE2 = 11, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR1 = 12, - SW_FAULT_ID_ALARM_MGMT_INVALID_USER_ACTION = 13, - SW_FAULT_ID_INVALID_ALARM_USER_ACTION1 = 14, - SW_FAULT_ID_INVALID_ALARM_USER_ACTION2 = 15, - SW_FAULT_ID_ALARM_MGMT_LAMP_INVALID_ALARM_STATE = 16, - SW_FAULT_ID_ALARM_MGMT_AUDIO_INVALID_ALARM_STATE = 17, - SW_FAULT_ID_ALARM_MGMT_INVALID_FIFO_TO_RESET = 18, - SW_FAULT_ID_HD_INVALID_ALARM_AUDIO_STATE = 19, - SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA = 20, - SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER = 21, - SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER = 22, - SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER = 23, - SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER = 24, - SW_FAULT_ID_INVALID_DD_OPERATING_MODE = 25, - SW_FAULT_ID_DD_INVALID_COMMAND_RESPONSE_ID = 26, - SW_FAULT_ID_FPGA_INVALID_ALARM_AUDIO_PARAM = 27, - SW_FAULT_ID_PHANTOM_INTERRUPT = 28, - SW_FAULT_ID_INVALID_RTI_NOTIFICATION = 29, - SW_FAULT_ID_CAN_PARITY_ERROR = 30, - SW_FAULT_ID_CAN_OFF_ERROR = 31, - SW_FAULT_ID_UNEXPECTED_DMA_INTERRUPT = 32, - SW_FAULT_ID_INTERRUPTS_INVALID_EDGE_DETECTED = 33, - SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL = 34, - SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL = 35, - SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE = 36, - SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE = 37, - SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE = 38, - SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE = 39, - SW_FAULT_ID_ILLEGAL_MEM_ACCESS = 40, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE3 = 41, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR2 = 42, - SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED1 = 43, - SW_FAULT_ID_INVALID_ALARM_ID_REFERENCED2 = 44, - SW_FAULT_ID_FPGA_INVALID_IN_STATE = 45, - SW_FAULT_ID_FPGA_INVALID_OUT_STATE = 46, - SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA = 47, - SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA = 48, - SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA = 49, - SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA = 50, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX1 = 51, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX2 = 52, - SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX3 = 53, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED1 = 54, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED2 = 55, - SW_FAULT_ID_INVALID_FPGA_SENSOR_GROUP_SELECTED3 = 56, - SW_FAULT_ID_INVALID_CAN_MESSAGE_BOX = 57, - SW_FAULT_ID_SYSTEM_CMMM_CAN_TRANSMIT_REJECTED = 58, - SW_FAULT_ID_SYSTEM_COMM_INVALID_FRAME_SIZE = 59, - SW_FAULT_ID_HD_INVALID_TEST_CONFIG_SELECTED1 = 60, - SW_FAULT_ID_HD_INVALID_TEST_CONFIG_SELECTED2 = 61, - SW_FAULT_ID_UTIL_INVALID_WIN_MAX_COUNT = 62, - SW_FAULT_ID_UTIL_INVALID_WIN_COUNT = 63, - SW_FAULT_ID_UTIL_TIME_WINDOWED_COUNT_ERROR = 64, - SW_FAULT_ID_SEMAPHORE_IN_USE_TIMEOUT = 65, - SW_FAULT_ID_WATCHDOG_INVALID_SELF_TEST_STATE = 66, - SW_FAULT_ID_WATCHDOG_INVALID_TASK = 67, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_FOR_START_TIME = 68, + 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_IN_STATE, // 15 + SW_FAULT_ID_FPGA_INVALID_OUT_STATE, + 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_GEN_IDLE_MODE_INVALID_EXEC_STATE, // 80 + SW_FAULT_ID_DRAIN_MODE_INVALID_EXEC_STATE, + SW_FAULT_ID_FILL_MODE_INVALID_EXEC_STATE, + SW_FAULT_ID_SOLO_MODE_INVALID_EXEC_STATE, + 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_AVAILABLE_2, + SW_FAULT_ID_DD_CHEM_DISINFECT_INVALID_EXEC_STATE, + 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_AVAILABLE_3, + 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, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -158,7 +158,7 @@ // if buffer overflows persists, fault if ( calcTimeSince( firstBufferOverflowTimeStamp ) > BUFFER_OVERFLOW_PERSISTENCE_MS ) { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA, (U32)buffer ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA, (U32)buffer ) } } else // first overflow - set time stamp for persistence check @@ -176,7 +176,7 @@ } else // invalid buffer given { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER, buffer ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER, buffer ) } return result; @@ -234,7 +234,7 @@ } else // invalid buffer given { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER, buffer ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER, buffer ) } return result; @@ -290,7 +290,7 @@ } else // invalid buffer given { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER, buffer ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER, buffer ) } return numOfBytesPeeked; @@ -319,7 +319,7 @@ } else // invalid buffer { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER, buffer ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER, buffer ) } return result; Index: firmware/App/Services/CommBuffers.h =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/CommBuffers.h (.../CommBuffers.h) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/CommBuffers.h (.../CommBuffers.h) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -31,7 +31,7 @@ // ********** public definitions ********** -/// List of comm buffers. +/// Enumeration of CAN communication buffers. Buffers are ordered by priority. typedef enum Comm_Buffers { COMM_BUFFER_NOT_USED = 0, ///< Unused buffer - CAN message boxes start at 1 @@ -40,14 +40,12 @@ COMM_BUFFER_IN_CAN_RO_ALARM, ///< Buffer for incoming RO alarm messages COMM_BUFFER_IN_CAN_UI_ALARM, ///< Receiving buffer for UI alarm via CAN COMM_BUFFER_IN_CAN_TD_2_DD, ///< Receiving buffer for TD to DD communication via CAN - COMM_BUFFER_OUT_CAN_DD_2_TD, ///< Transmitting buffer for DD to TD communication via CAN - COMM_BUFFER_IN_CAN_TD_BROADCAST, ///< Receiving buffer for TD broadcast communication via CAN + COMM_BUFFER_OUT_CAN_DD_2_TD, ///< Transmitting buffer for DD to TD communication via CAN + COMM_BUFFER_OUT_CAN_DD_2_RO, ///< Transmitting buffer for DD to RO communication via CAN COMM_BUFFER_IN_CAN_RO_2_DD, ///< Receiving buffer for RO to DD communication via CAN - COMM_BUFFER_OUT_CAN_DD_2_RO, ///< Transmitting buffer for DD to RO communication via CAN + COMM_BUFFER_IN_CAN_TD_BROADCAST, ///< Receiving buffer for TD broadcast communication via CAN + COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Transmitting buffer for DD broadcast communication via CAN COMM_BUFFER_IN_CAN_RO_BROADCAST, ///< Receiving buffer for RO broadcast communication via CAN - //COMM_BUFFER_OUT_CAN_DD_2_UI, ///< Transmitting buffer for DD to UI communication via CAN - COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Transmitting buffer for DD broadcast communication via CAN - //COMM_BUFFER_IN_CAN_UI_2_DD, ///< Receiving buffer for UI to DD communication via CAN COMM_BUFFER_IN_CAN_UI_BROADCAST, ///< Receiving buffer for UI broadcast communication via CAN COMM_BUFFER_IN_CAN_PC, ///< Receiving buffer for PC communication via CAN COMM_BUFFER_OUT_CAN_PC, ///< Transmitting buffer for PC communication via CAN Index: firmware/App/Services/FPGADD.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/FPGADD.c (.../FPGADD.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Services/FPGADD.c (.../FPGADD.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -348,7 +348,7 @@ if ( FPGA_EXPECTED_ID == fpgaHeader.fpgaId ) { // Check FPGA compatibility w/ firmware - if ( DG_FPGA_COMPATIBILITY_REV == fpgaSensorReadings.fpgaCompatibilityRev ) + if ( DD_FPGA_COMPATIBILITY_REV == fpgaSensorReadings.fpgaCompatibilityRev ) { result = SELF_TEST_STATUS_PASSED; } Index: firmware/App/Services/Interrupts.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/Interrupts.c (.../Interrupts.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -76,7 +76,7 @@ *************************************************************************/ void phantomInterrupt( void ) { - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_PHANTOM_INTERRUPT ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_PHANTOM_INTERRUPT ) } /*********************************************************************//** @@ -108,7 +108,7 @@ break; default: - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_RTI_NOTIFICATION, notification ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_RTI_NOTIFICATION, notification ) break; } } @@ -153,7 +153,7 @@ can1ParityCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_PARITY ) ) { - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PARITY_ERROR ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CAN_PARITY_ERROR ) } } // Bus off - our transmitter has counted 255+ errors @@ -162,7 +162,7 @@ can1BusOffCnt++; if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_CAN_OFF ) ) { - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_CAN_OFF_ERROR ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_CAN_OFF_ERROR ) } } // Warning - our transmitter has counted 96+ errors Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -23,6 +23,7 @@ #include "OperationModes.h" #include "Utilities.h" #include "SystemCommDD.h" +#include "PAL.h" /** * @addtogroup Messaging @@ -42,6 +43,44 @@ #pragma pack(pop) +/// Array of CAN communication buffers to respond on (aligned with enum Comm_Buffers). +static const COMM_BUFFER_T tdResponseBuffers[ NUM_OF_COMM_BUFFERS ] = +{ + COMM_BUFFER_NOT_USED, ///< CAN message boxes start at 1 so we will not use this buffer + COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming TD alarm messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD alarm messages so no response buffer + COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming RO alarm messages + COMM_BUFFER_OUT_CAN_DD_ALARM, ///< Buffer for responding to incoming UI alarm messages + COMM_BUFFER_OUT_CAN_DD_2_TD, ///< Buffer for responding to incoming TD to DD messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD to TD messages so no response buffer + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD to RO messages so no response buffer + COMM_BUFFER_OUT_CAN_DD_2_RO, ///< Buffer for responding to incoming RO to DD messages + COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming TD broadcast messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing DD broadcast messages so no response buffer + COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming RO broadcast messages + COMM_BUFFER_OUT_CAN_DD_BROADCAST, ///< Buffer for responding to incoming UI broadcast messages + COMM_BUFFER_OUT_CAN_PC, ///< Buffer for responding to incoming PC to TD messages + COMM_BUFFER_NOT_USED, ///< Buffer for outgoing HD to PC messages so no response buffer +}; + + +typedef BOOL (*MsgFuncPtr)( MESSAGE_T* ); + +/// Message handling function lookup table +static const U16 MSG_FUNCTION_HANDLER_LOOKUP[] = { + MSG_ID_TESTER_LOGIN_REQUEST, + MSG_ID_DD_SOFTWARE_RESET_REQUEST +}; + +/// Message handling function table +static const MsgFuncPtr MSG_FUNCTION_HANDLERS[] = { + &handleTesterLogInRequest, + &handleDDSoftwareResetRequest +}; + +#define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLERS) / sizeof(MsgFuncPtr)) + + // ********** private data ********** static BOOL testerLoggedIn = FALSE; ///< Flag indicates whether tester logged in or not. @@ -53,7 +92,6 @@ static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); -static BOOL sendUIResponseMsg( MSG_ID_T msgID, UI_RESPONSE_PAYLOAD_T *uiResponse ); /*********************************************************************//** * @brief @@ -110,9 +148,9 @@ // add 8-bit CRC data[ msgSize++ ] = crc; - // pad with zero bytes to get length a multiple of CAN_MESSAGE_PAYLOAD_SIZE (8) - sizeMod = msgSize % CAN_MESSAGE_PAYLOAD_SIZE; - sizePad = ( sizeMod == 0 ? 0 : CAN_MESSAGE_PAYLOAD_SIZE - sizeMod ); + // pad with zero bytes to get length a multiple of CAN_FRAME_PAYLOAD_SIZE (8) + sizeMod = msgSize % CAN_FRAME_PAYLOAD_SIZE; + sizePad = ( sizeMod == 0 ? 0 : CAN_FRAME_PAYLOAD_SIZE - sizeMod ); for ( i = 0; i < sizePad; i++ ) { data[ msgSize++ ] = 0; @@ -124,7 +162,7 @@ if ( FALSE == addMsgToPendingACKList( &msg, buffer, data, msgSize ) ) { error = TRUE; - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) } } @@ -169,7 +207,7 @@ /*********************************************************************//** * @brief * The sendTestAckResponseMsg function constructs a simple response message for - * a handled test message and queues it for transmit on the appropriate UART channel. + * a handled test message and queues it for transmit on the appropriate CAN channel. * @details Inputs: none * @details Outputs: response message constructed and queued for transmit. * @param msgID ID of handled message that we are responding to @@ -196,37 +234,72 @@ /*********************************************************************//** * @brief - * The sendUIResponseMsg function constructs an UI response message for a - * handled UI message and queues it for transmit on the appropriate CAN channel. - * @details Inputs: none - * @details Outputs: response message constructed and queued for transmit. - * @param msgID ID of handled message that we are responding to - * @param ui response pointer to the UI response payload - * @return TRUE if response message successfully queued for transmit, FALSE if not + * The getMsgHandler function finds the appropriate handler function + * for the given message. + * @details Inputs: MSG_FUNCTION_HANDLER_LOOKUP[], MSG_FUNCTION_HANDLERS[] + * @details Outputs: none + * @param msgID ID of message to find handler function for + * @return pointer to appropriate function to handle given message *************************************************************************/ -static BOOL sendUIResponseMsg( MSG_ID_T msgID, UI_RESPONSE_PAYLOAD_T *uiResponse ) +static MsgFuncPtr getMsgHandler( U16 msgID ) { - BOOL result; - MESSAGE_T msg; - UI_RESPONSE_PAYLOAD_T cmd; + U32 i; + MsgFuncPtr func = 0; - cmd.fwValue = uiResponse->fwValue; - cmd.accepted = uiResponse->accepted; - cmd.rejectionReason = uiResponse->rejectionReason; + // Search for the index associated with the given override command message ID and then use index to get the handling function + for ( i = 0; i < NUM_OF_FUNCTION_HANDLERS; i++ ) + { + if ( MSG_FUNCTION_HANDLER_LOOKUP[i] == msgID ) + { + func = MSG_FUNCTION_HANDLERS[i]; + break; + } + } + return func; +} - // Create a message record - blankMessage( &msg ); - msg.hdr.msgID = msgID; - msg.hdr.payloadLen = sizeof( UI_RESPONSE_PAYLOAD_T ); - memcpy( &msg.payload, &cmd, sizeof( UI_RESPONSE_PAYLOAD_T ) ); +/*********************************************************************//** + * @brief + * The handleIncomingMessage function calls the appropriate handler function + * for the given message. + * @details Inputs: none + * @details Outputs: Appropriate message handler function called + * @param message Incoming message to handle + * @return none + *************************************************************************/ +void handleIncomingMessage( MESSAGE_T *message ) +{ + BOOL ack = FALSE; // assume we will NAK until we have successful handling of message + COMM_BUFFER_T respBuffer = tdResponseBuffers[ message->in_buffer ]; - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - //result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DD_2_UI, ACK_REQUIRED ); + // if Dialin message, ensure Dialin is logged in before processing it + if ( ( message->hdr.msgID <= MSG_ID_FIRST_DD_TESTER_MESSAGE ) || + ( TRUE == isTestingActivated() ) ) + { + MsgFuncPtr msgFuncPtr; - return result; + // Find the appropriate message handling function to call + msgFuncPtr = getMsgHandler( message->hdr.msgID ); + // Ensure a handler is found before calling it + if ( msgFuncPtr != 0 ) + { // Call the appropriate message handling function + ack = (*msgFuncPtr)( message ); + } + } + // ACK/NAK request + if ( message->hdr.msgID < MSG_ID_FIRST_DD_TESTER_MESSAGE ) + { + if ( respBuffer != COMM_BUFFER_NOT_USED ) + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, respBuffer, ack ); + } + } + else + { + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, ack ); + } } - // *********************************************************************** // ***************** Message Sending Helper Functions ******************** // *********************************************************************** @@ -262,7 +335,8 @@ memcpy( &msg.payload, &eventStruct, sizeof( EVENT_PAYLOAD_T ) ); // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - //result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DD_2_UI, ACK_NOT_REQUIRED ); + // TODO : validate the change , DD -> UI channel removed and added DD broadcast instead. + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DD_BROADCAST, ACK_NOT_REQUIRED ); return result; } @@ -436,7 +510,7 @@ * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleTesterLogInRequest( MESSAGE_T *message ) +BOOL handleTesterLogInRequest( MESSAGE_T *message ) { // verify pass code // TODO - placeholder - how do we want to authenticate tester? @@ -452,6 +526,33 @@ } // respond to would be tester sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, testerLoggedIn ); + + return testerLoggedIn; } +/*********************************************************************//** + * @brief + * The handleTDSoftwareResetRequest function handles a request to reset the + * TD firmware processor. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return FALSE if reset command rejected (won't return if reset successful) + *************************************************************************/ +BOOL handleDDSoftwareResetRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify payload length + if ( 0 == message->hdr.payloadLen ) + { // S/w reset of processor + result = TRUE; // Reset will prevent this from getting transmitted though + setSystemREG1_SYSECR( (0x2) << 14 ); // Reset processor + } + + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); + + return result; +} + /**@}*/ Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -56,6 +56,8 @@ BOOL broadcastAlarmConditionCleared( U32 alarm ); +void handleIncomingMessage( MESSAGE_T *message ); + // ACK MSG BOOL sendACKMsg( MESSAGE_T *message ); @@ -68,7 +70,8 @@ BOOL sendEvent( DG_EVENT_ID_T event, EVENT_DATA_T dat1, EVENT_DATA_T dat2 ); -void handleTesterLogInRequest( MESSAGE_T *message ); +BOOL handleTesterLogInRequest( MESSAGE_T *message ); +BOOL handleDDSoftwareResetRequest( MESSAGE_T *message ); /**@}*/ Index: firmware/App/Services/MsgQueues.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/MsgQueues.c (.../MsgQueues.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -88,12 +88,12 @@ } else // msg queue is full { - //SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL ) + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL ) } } else // invalid message queue { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE, queue ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE, queue ) } return result; @@ -133,7 +133,7 @@ } else // invalid message queue { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE, queue ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE, queue ) } return result; @@ -161,7 +161,7 @@ } else // invalid message queue { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE, queue ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE, queue ) } return result; @@ -189,7 +189,7 @@ } else // invalid message queue { - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, queue ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, queue ) } return result; Index: firmware/App/Services/SystemCommDD.c =================================================================== diff -u -rcd3af1ebb7396ba3b2bec1d779510d29c30014f4 -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/SystemCommDD.c (.../SystemCommDD.c) (revision cd3af1ebb7396ba3b2bec1d779510d29c30014f4) +++ firmware/App/Services/SystemCommDD.c (.../SystemCommDD.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -199,6 +199,25 @@ /*********************************************************************//** * @brief + * The checkTooManyBadMsgCRCs function checks for too many bad message CRCs + * within a set period of time. Assumed function is being called when a new + * bad CRC is detected so a new bad CRC will be added to the list. + * @details Inputs: badCRCTimeStamps[], badCRCListIdx, badCRCListCount + * @details Outputs: possibly a "too many bad CRCs" alarm + * @return none + *************************************************************************/ +void checkTooManyBadMsgCRCs( void ) +{ + if ( TRUE == incTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC ) ) + { + //TODO : define alarm ID + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DD_COMM_TOO_MANY_BAD_CRCS, 2 ); // 2 for DG + } +} + + +/*********************************************************************//** + * @brief * The getOutBufferID function gets the buffer ID for a given buffer index. * @details Inputs: CAN_OUT_BUFFERS[] * @details Outputs: none @@ -234,7 +253,7 @@ void processReceivedMessage( MESSAGE_T *message ) { // Handle any messages from other sub-systems - //handleIncomingMessage( message ); + handleIncomingMessage( message ); } Index: firmware/App/Services/SystemCommDD.h =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/App/Services/SystemCommDD.h (.../SystemCommDD.h) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/App/Services/SystemCommDD.h (.../SystemCommDD.h) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -33,17 +33,8 @@ // ********** public definitions ********** -/* -#define MESSAGE_SYNC_BYTE 0xA5 ///< Denali message syncronization byte. - -#define CAN_MESSAGE_PAYLOAD_SIZE 8 ///< CAN frame payload size (in bytes). - -#define MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK 0xFFFF ///< Denali message ID for acknowledging received messages (when required). -#define MSG_ACK_BIT 0x8000 ///< ACK bit in sequence number that indicates an ACK is required. #define MAX_MSG_SEQ_NO 0x7FFF ///< Maximum sequence number for Denali message (then wraps to 1). #define MIN_MSG_SEQ_NO 0x0001 ///< Minimum sequence number for Denali message. -#define MAX_ACK_MSG_SIZE ( sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ) ///< Maximum size (in bytes) of Denali message including full (wrapped) message + sync + any CAN padding) -*/ #define NUM_OF_CAN_OUT_BUFFERS 5 ///< Number of CAN buffers for transmit #define NUM_OF_CAN_IN_BUFFERS 9 ///< Number of CAN buffers for receiving @@ -58,7 +49,8 @@ BOOL isOnlyCANNode( void ); void setOnlyCANNode( BOOL only ); void clearCANXmitBuffers( void ); -void checkForCommTimeouts( void ); +void checkForCommTimeouts( void ); +void checkTooManyBadMsgCRCs( void ); BOOL testSetHDCommunicationStatus( U32 value ); BOOL testResetHDCommuncationStatus( void ); Index: firmware/source/sys_selftest.c =================================================================== diff -u -r8b8fff67b95805272f37855346d600599aaec03d -r52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a --- firmware/source/sys_selftest.c (.../sys_selftest.c) (revision 8b8fff67b95805272f37855346d600599aaec03d) +++ firmware/source/sys_selftest.c (.../sys_selftest.c) (revision 52ded7b22d4b413aa8182f1343e4fbb78e8c3b0a) @@ -1129,7 +1129,7 @@ uint32_t marker = STACK_MARKER; uint32_t contentOfLinkRegister = *(volatile uint32_t*)( &marker + LR_OFFSET_WORD_IN_STACK ); *(volatile uint32_t*)( &marker + LR_OFFSET_WORD_IN_STACK ) = contentOfLinkRegister + LR_OFFSET_ADJUSTMENT; - //SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, (U32)SW_FAULT_ID_ILLEGAL_MEM_ACCESS, contentOfLinkRegister ) // log LR to determine what caused violation + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, (U32)SW_FAULT_ID_ILLEGAL_MEM_ACCESS, contentOfLinkRegister ) // log LR to determine what caused violation /* USER CODE END */ }