Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -rc137d3c7cb17b0364d745e10ff6dbd1901eb1baa -rd28280f1054fc9ddf9304a11373dc9ee963425e3 --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision c137d3c7cb17b0364d745e10ff6dbd1901eb1baa) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision d28280f1054fc9ddf9304a11373dc9ee963425e3) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2022 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ModeFault.c * -* @author (last) Quang Nguyen -* @date (last) 29-Jun-2021 +* @author (last) Sean Nash +* @date (last) 13-Jul-2022 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -62,13 +62,22 @@ U32 transitionToFaultMode( void ) { HD_OP_MODE_T previousOpMode = getPreviousOperationMode(); + DG_OP_MODE_T dgOperationMode = getDGOpMode(); + doorClosedRequired( FALSE, FALSE ); + syringeDetectionRequired( FALSE ); + // 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 ); // Stop trimmer heater cmdStopDGTrimmerHeater(); + // If DG filling, abort it + if ( DG_MODE_FILL == dgOperationMode ) + { + cmdStopDGFill(); + } // Publish POST failure status to UI if fault triggered in Init/POST mode if ( MODE_INIT == previousOpMode ) { @@ -94,6 +103,7 @@ U32 execFaultMode( void ) { BOOL stop = isStopButtonPressed(); + DG_OP_MODE_T dgOperationMode = getDGOpMode(); #ifndef EMC_TEST_BUILD // Ensure all pumps are stopped @@ -108,6 +118,12 @@ setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); + + // If DG not stopped, stop it + if ( DG_MODE_GENE == dgOperationMode ) + { + cmdStopDG(); + } #else // TODO - EMC test code - remove later static U32 toggle = 0; @@ -122,7 +138,7 @@ { case 0: // Pumps and valves off setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP, 0.0F ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); @@ -139,14 +155,14 @@ case 2: // Pumps on, valves in pos A setBloodPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialInPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialInPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP, 0.0F ); setDialOutPumpTargetRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); break; 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 ); + setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP, 0.0F ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE );