Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -rc67def50892f9a7c2f1f22985b5351465a8f6773 -ra2bc96881a5fc3d8f779246b2abebf15a8de9384 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision c67def50892f9a7c2f1f22985b5351465a8f6773) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision a2bc96881a5fc3d8f779246b2abebf15a8de9384) @@ -17,9 +17,7 @@ #include "AlarmLamp.h" #include "BloodFlow.h" -#ifdef EMC_TEST_BUILD // TODO - test code #include "Buttons.h" -#endif #include "DialInFlow.h" #include "DialOutFlow.h" #include "ModeFault.h" @@ -56,7 +54,10 @@ *************************************************************************/ void transitionToFaultMode( void ) { - // TODO - anything to do here? + // Set user alarm recovery actions allowed in this mode + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); + setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); + setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, FALSE ); } /*********************************************************************//** @@ -68,12 +69,14 @@ *************************************************************************/ U32 execFaultMode( void ) { + BOOL stop = isStopButtonPressed(); + #ifndef EMC_TEST_BUILD - // ensure all pumps are stopped + // Ensure all pumps are stopped signalBloodPumpHardStop(); signalDialInPumpHardStop(); signalDialOutPumpHardStop(); - // ensure all valves are in safe position + // Ensure all valves are in safe position setValveAirTrap( STATE_CLOSED ); setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); @@ -83,7 +86,6 @@ // TODO - EMC test code - remove later static U32 toggle = 0; static BOOL button_state = FALSE; - BOOL stop = isStopButtonPressed(); if ( TRUE == stop ) { @@ -92,33 +94,33 @@ toggle = INC_WRAP( toggle, 0, 3 ); switch ( toggle ) { - case 0: // pumps and valves off + case 0: // Pumps and valves off setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); break; - case 1: // pumps on, valves off + case 1: // Pumps on, valves off setBloodPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialOutPumpTargetRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); break; - case 2: // pumps on, valves on + case 2: // Pumps on, valves on setValvePosition( VDI, VALVE_POSITION_B_OPEN ); setValvePosition( VDO, VALVE_POSITION_B_OPEN ); setValvePosition( VBA, VALVE_POSITION_B_OPEN ); setValvePosition( VBV, VALVE_POSITION_B_OPEN ); break; - case 3: // pumps off, valves on + case 3: // Pumps off, valves on setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); break; - default: // shouldn't get here, reset if we do + default: // Should not get here, reset if we do toggle = 0; setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); @@ -137,4 +139,18 @@ return 0; // TODO - return current state } +/*********************************************************************//** + * @brief + * The signalAlarmActionToFaultMode function executes the given alarm action + * as appropriate while in Fault Mode. + * @details Inputs: none + * @details Outputs: given alarm action executed + * @param action ID of alarm action to execute + * @return none + *************************************************************************/ +void signalAlarmActionToFaultMode( ALARM_ACTION_T action ) +{ + // Fault mode is terminal and already in safe state - no alarm actions handled in this mode. +} + /**@}*/