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 */
}