Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r3d72b777cf1ceb673d118341c46e2d6d5b7b75f5 -r3d3cc1e6819f83db631270dc0fd019d15739db08 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 3d72b777cf1ceb673d118341c46e2d6d5b7b75f5) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 3d3cc1e6819f83db631270dc0fd019d15739db08) @@ -263,16 +263,50 @@ *************************************************************************/ void signalUserConfirmInstallation( void ) { + BOOL accepted = FALSE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; + + confirmInstallRequested = FALSE; + F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); - // Accept installation confirmation if we are in install state of pre-treatment mode and syringe is detected or Heparin not being used in this treatment. + // Accept installation confirmation if we are in install state of pre-treatment mode and + // Door closed, Cartridge installed, syringe is detected or Heparin not being used in this treatment. if ( ( MODE_PRET == getCurrentOperationMode() ) && - ( HD_PRE_TREATMENT_CART_INSTALL_STATE == currentPreTreatmentState ) && - ( ( TRUE == isSyringeDetected() ) || ( ( bolusVol < NEARLY_ZERO ) && ( hepRate < NEARLY_ZERO ) ) ) ) + ( HD_PRE_TREATMENT_CART_INSTALL_STATE == currentPreTreatmentState ) ) { - confirmInstallRequested = TRUE; + if ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) + { + if ( CONSUMABLE_SELF_TESTS_COMPLETE_STATE == getConsumableSelfTestState() ) + { + if ( ( TRUE == isSyringeDetected() ) || ( ( bolusVol < NEARLY_ZERO ) && ( hepRate < NEARLY_ZERO ) ) ) + { + // Everything is properly installed + accepted = TRUE; + confirmInstallRequested = TRUE; + } + else + { + rejReason = REQUEST_REJECT_REASON_SYRINGE_NOT_PRESENT; + } + } + else + { + rejReason = REQUEST_REJECT_REASON_CONSUMABLE_NOT_READY; + } + } + else + { + rejReason = REQUEST_REJECT_REASON_DOOR_NOT_CLOSED; + } } + else + { + rejReason = REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE; + } + + sendConsumableInstallCmdResponse( accepted, (U32) rejReason ); } /*********************************************************************//**