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 ); } /*********************************************************************//** Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r3d72b777cf1ceb673d118341c46e2d6d5b7b75f5 -r3d3cc1e6819f83db631270dc0fd019d15739db08 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3d72b777cf1ceb673d118341c46e2d6d5b7b75f5) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3d3cc1e6819f83db631270dc0fd019d15739db08) @@ -1201,6 +1201,21 @@ /*********************************************************************//** * @brief + * The sendConsumableInstallCmdResponse function constructs a Consumable Install Confirm user action + * response to the UI and queues the msg for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Consumable Install Confirm command response msg constructed and queued. + * @param accepted T/F - was Consumable Install Confirm request accepted? + * @param reason reason why request was rejected (or zero if accepted) + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendConsumableInstallCmdResponse( BOOL accepted, U32 reason ) +{ + return sendUIResponseMsg( MSG_ID_UI_INSTALLATION_CONFIRM_RESPONSE, accepted, reason ); +} + +/*********************************************************************//** + * @brief * The handleInstallationConfirm function handles user confirms disposable * installation msg from the UI. * @details Inputs: none Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r3d72b777cf1ceb673d118341c46e2d6d5b7b75f5 -r3d3cc1e6819f83db631270dc0fd019d15739db08 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3d72b777cf1ceb673d118341c46e2d6d5b7b75f5) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3d3cc1e6819f83db631270dc0fd019d15739db08) @@ -254,6 +254,9 @@ // MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM void handleConsumableInstallConfirm( MESSAGE_T *message ); +// MSG_ID_UI_INSTALLATION_CONFIRM_RESPONSE +BOOL sendConsumableInstallCmdResponse( BOOL accepted, U32 reason ); + // MSG_ID_UI_INSTALLATION_CONFIRM void handleInstallationConfirm( MESSAGE_T *message );