Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -rd91a24c730aeb5cd7e3eba9ef4eca78e442911f8 -r1a685471524555a374854c0c9ec8e208e71fe2df --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision d91a24c730aeb5cd7e3eba9ef4eca78e442911f8) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 1a685471524555a374854c0c9ec8e208e71fe2df) @@ -8,13 +8,14 @@ * @file ModeStandby.c * * @author (last) Sean Nash -* @date (last) 28-Aug-2020 +* @date (last) 08-Oct-2020 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 * ***************************************************************************/ +#include "AirTrap.h" #include "AlarmLamp.h" #include "BloodFlow.h" #include "Buttons.h" @@ -52,9 +53,8 @@ /*********************************************************************//** * @brief * The initStandbyMode function initializes the Standby Mode module. - * @details - * Inputs : none - * Outputs : Standby Mode module initialized. + * @details Inputs: none + * @details Outputs: Standby Mode module initialized. * @return none *************************************************************************/ void initStandbyMode( void ) @@ -66,9 +66,8 @@ /*********************************************************************//** * @brief * The transitionToStandbyMode function prepares for transition to standby mode. - * @details - * Inputs : none - * Outputs : Standby Mode module re-initialized, DG interface initialized, + * @details Inputs: none + * @details Outputs: Standby Mode module re-initialized, DG interface initialized, * blood & dialysate pumps shut off. * @return none *************************************************************************/ @@ -77,14 +76,12 @@ // re-initialize when transitioning to standby mode initStandbyMode(); initDGInterface(); + resetAirTrap(); // pumps should be off setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); -#ifdef EMC_TEST_BUILD - enableValvesPIDControl(0); // enable valves -#endif #ifdef RM46_EVAL_BOARD_TARGET start = getMSTimerCount(); #endif @@ -93,9 +90,8 @@ /*********************************************************************//** * @brief * The execStandbyMode function executes the Standby Mode state machine. - * @details - * Inputs : currentStandbyState - * Outputs : currentStandbyState + * @details Inputs: currentStandbyState + * @details Outputs: currentStandbyState * @return current state (sub-mode) *************************************************************************/ U32 execStandbyMode( void ) @@ -108,17 +104,17 @@ DG_OP_MODE_T dgOpMode = getDGOpMode(); // TODO - the DG mode & sub-mode come as a pair at interval - they MUST be kept together. U32 dgSubMode = getDGSubMode(); -#ifdef UF_TEST_WITH_DG +#ifndef RUN_WITHOUT_DG // state machine to get DG to prep a reservoir so we can start a treatment switch ( currentStandbyState ) { case STANDBY_START_STATE: // temporary test code - TODO - remove later if ( TRUE == isDGCommunicating() ) { - //homeBloodPump(); - //homeDialInPump(); - //homeDialOutPump(); + homeBloodPump(); + homeDialInPump(); + homeDialOutPump(); cmdSetDGDialysateTargetTemps( 39.0, 37.0 ); cmdSetDGActiveReservoir( DG_RESERVOIR_2 ); cmdStartDG(); @@ -178,21 +174,28 @@ break; case STANDBY_WAIT_FOR_TREATMENT_STATE: - if ( TRUE == treatStartReqReceived ) - { - requestNewOperationMode( MODE_TPAR ); - treatStartReqReceived = FALSE; - } // TODO - test code +#ifdef DISABLE_UI_TREATMENT_WORKFLOW if ( TRUE == stop ) +#endif { if ( DG_MODE_CIRC == dgOpMode ) { if ( DG_RECIRCULATE_MODE_STATE_RECIRC_WATER == dgSubMode ) { +#ifndef DISABLE_UI_TREATMENT_WORKFLOW + if ( TRUE == treatStartReqReceived ) + { + setStartReservoirVolume(); + cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); + requestNewOperationMode( MODE_TPAR ); + treatStartReqReceived = FALSE; + } +#else setStartReservoirVolume(); cmdSetDGActiveReservoir( DG_RESERVOIR_1 ); requestNewOperationMode( MODE_TPAR ); +#endif } } } @@ -213,6 +216,9 @@ homeBloodPump(); homeDialInPump(); homeDialOutPump(); +#ifdef EMC_TEST_BUILD + startAirTrapControl(); +#endif break; case STANDBY_WAIT_FOR_TREATMENT_STATE: @@ -224,30 +230,36 @@ // TODO - test code if ( TRUE == stop ) { + treatStartReqReceived = FALSE; + setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); + setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); + setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); + setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); + requestNewOperationMode( MODE_TPAR ); #ifdef EMC_TEST_BUILD if ( stop != button_state ) { toggle = INC_WRAP( toggle, 0, 3 ); switch ( toggle ) { case 0: // pumps and valves off - setDialyzerInletValvePosition( 0 ); - setDialyzerOutletValvePosition( 0 ); - setVenousBloodValvePosition( 0 ); - setArterialBloodValvePosition( 0 ); + 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 - setBloodPumpTargetFlowRate( 500, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setBloodPumpTargetFlowRate( 200, 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 - setDialyzerInletValvePosition( 12000 ); - setDialyzerOutletValvePosition( 12000 ); - setVenousBloodValvePosition( 12000 ); - setArterialBloodValvePosition( 12000 ); + 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 @@ -261,10 +273,10 @@ 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 ); - setDialyzerInletValvePosition( 0 ); - setDialyzerOutletValvePosition( 0 ); - setVenousBloodValvePosition( 0 ); - setArterialBloodValvePosition( 0 ); + 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; } } @@ -296,9 +308,8 @@ * @brief * The signalUserStartingTreatment function handles user initiation of a * treatment. - * @details - * Inputs : none - * Outputs : requested mode transition to treatment parameters mode + * @details Inputs: none + * @details Outputs: requested mode transition to treatment parameters mode * @return TRUE if signal accepted, FALSE if not *************************************************************************/ BOOL signalUserStartingTreatment( void )