Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r2c16de14d2acd2aa1e36943f95c3855da094dc97 -r3479c42f6bf13fb6c565cc48ba13936e1ec22be9 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 2c16de14d2acd2aa1e36943f95c3855da094dc97) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 3479c42f6bf13fb6c565cc48ba13936e1ec22be9) @@ -48,6 +48,7 @@ static BOOL homingInitiated; ///< Flag indicates actuators have been homed. static FLUID_TYPE_T fluidType; ///< Fluid type assigned based on user selection. static TREATMENT_TYPE_T modality; ///< Modality from the treatment initiation. +static BOOL positionARequested; // Temporay // ********** private function prototypes ********** @@ -66,6 +67,7 @@ currentStandbyState = STANDBY_START_STATE; treatStartReqReceived = FALSE; homingInitiated = FALSE; + positionARequested = FALSE; //Temp fluidType = FLUID_TYPE_UNKNOWN; modality = TREATMENT_MODALITY_HD_SALINE_FLUID; } @@ -162,27 +164,72 @@ * @details \b Outputs: homingInitiated * @return next state of the standby mode state machine *************************************************************************/ +//static TD_STANDBY_STATE_T handleStandbyModeStartState( void ) +//{ +// TD_STANDBY_STATE_T state = STANDBY_START_STATE; +// +// if ( FALSE == homingInitiated ) +// { +// VALVE_T valve; +// // Initiate homing for both pinch valves. +// for ( valve = FIRST_VALVE; valve < NUM_OF_VALVES; ++valve ) +// { +// homeValve( valve, FALSE, TRUE ); +// } +// homingInitiated = TRUE; +// } +// else if ( ( VALVE_STATE_IDLE == getValveState( H1_VALV ) ) && +// ( VALVE_STATE_IDLE == getValveState( H19_VALV ) ) ) +// { +// // After homing completes, move both pinch valves to Position A. +// setValvePosition( H1_VALV, VALVE_POSITION_A_INSERT_EJECT ); +// setValvePosition( H19_VALV, VALVE_POSITION_A_INSERT_EJECT ); +// homingInitiated = FALSE; +// state = STANDBY_WAIT_FOR_TREATMENT_STATE; +// } +// +// return state; +//} + static TD_STANDBY_STATE_T handleStandbyModeStartState( void ) { TD_STANDBY_STATE_T state = STANDBY_START_STATE; if ( FALSE == homingInitiated ) { - VALVE_T valve; - // Initiate homing for both pinch valves. - for ( valve = FIRST_VALVE; valve < NUM_OF_VALVES; ++valve ) + BOOL h1HomeAccepted; + BOOL h19HomeAccepted; + + h1HomeAccepted = homeValve( H1_VALV, FALSE, TRUE ); + + h19HomeAccepted = homeValve( H19_VALV, FALSE, TRUE ); + + if ( ( TRUE == h1HomeAccepted ) && + ( TRUE == h19HomeAccepted ) ) { - homeValve( valve, FALSE, TRUE ); + homingInitiated = TRUE; } - homingInitiated = TRUE; } - else if ( ( VALVE_STATE_IDLE == getValveState( H1_VALV ) ) && + else if ( ( FALSE == positionARequested ) && + ( VALVE_STATE_IDLE == getValveState( H1_VALV ) ) && ( VALVE_STATE_IDLE == getValveState( H19_VALV ) ) ) { - // After homing completes, move both pinch valves to Position A. - setValvePosition( H1_VALV, VALVE_POSITION_A_INSERT_EJECT ); - setValvePosition( H19_VALV, VALVE_POSITION_A_INSERT_EJECT ); - homingInitiated = FALSE; + BOOL h1PositionAccepted; + BOOL h19PositionAccepted; + + h1PositionAccepted = setValvePosition( H1_VALV, VALVE_POSITION_A_INSERT_EJECT ); + h19PositionAccepted = setValvePosition( H19_VALV, VALVE_POSITION_A_INSERT_EJECT ); + + if ( ( TRUE == h1PositionAccepted ) && + ( TRUE == h19PositionAccepted ) ) + { + positionARequested = TRUE; + } + } + else if ( ( TRUE == positionARequested ) && + ( VALVE_POSITION_A_INSERT_EJECT == getValvePosition( H1_VALV ) ) && + ( VALVE_POSITION_A_INSERT_EJECT == getValvePosition( H19_VALV ) ) ) + { state = STANDBY_WAIT_FOR_TREATMENT_STATE; }