Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r5420b3e1f4260d8fbdce3f4f495f19f1a6f05b7e -rb7d279735312c0f04dd53d8903bf21c520b2beee --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 5420b3e1f4260d8fbdce3f4f495f19f1a6f05b7e) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision b7d279735312c0f04dd53d8903bf21c520b2beee) @@ -7,8 +7,8 @@ * * @file ModePostTreat.c * -* @author (last) Behrouz NematiPour -* @date (last) 04-Jan-2022 +* @author (last) Darren Cox +* @date (last) 22-Mar-2022 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -360,15 +360,17 @@ static HD_POST_TREATMENT_STATE_T handlePostTreatmentPatientDisconnectionState( void ) { F32 const bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 const hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); + F32 const hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; VALVE_T valve; - if ( STATE_CLOSED == getFPGADoorState() ) + if (( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) && (STATE_CLOSED == getSwitchStatus( PUMP_TRACK_SWITCH ))) { -#ifdef SKIP_UI_INTERACTION - patientDisconnectionConfirmed = TRUE; -#endif + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_INTERACTION ) ) + { + patientDisconnectionConfirmed = TRUE; + } + if ( TRUE == patientDisconnectionConfirmed ) { patientDisconnectionConfirmed = FALSE; @@ -409,9 +411,10 @@ { HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE; -#ifdef SKIP_UI_INTERACTION - disposableRemovalConfirmed = TRUE; -#endif + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_UI_INTERACTION ) ) + { + disposableRemovalConfirmed = TRUE; + } if ( TRUE == disposableRemovalConfirmed ) { @@ -425,40 +428,38 @@ /*********************************************************************//** * @brief * The handlePostTreatmentVerifyState function verifies cartridge removed, - * syringe removed, and doors are closed before transition to standby mode. + * syringe removed before transition to standby mode. * @details Inputs: doors' status, syringe status, occlusion sensors value * @details Outputs: requested transition to standby mode * @return current state (sub-mode) *************************************************************************/ static HD_POST_TREATMENT_STATE_T handlePostTreatmentVerifyState( void ) { -#ifndef SKIP_CARTRIDGE_REMOVAL - BOOL isCartridgeRemoved = isCartridgeUnloaded(); -#else + // Assuming the cartridge door is removed already. + // This is used when the disable cartridge removal step software configuration is enabled BOOL isCartridgeRemoved = TRUE; + +#ifndef _RELEASE_ + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_CARTRIDGE_REMOVAL_STEP ) != SW_CONFIG_ENABLE_VALUE ) #endif + { + isCartridgeRemoved = isCartridgeUnloaded(); + } - if ( STATE_CLOSED == getFPGADoorState() ) + if ( FALSE == isCartridgeRemoved ) { - if ( FALSE == isCartridgeRemoved ) - { - activateAlarmNoData( ALARM_ID_CARTRIDGE_REMOVAL_FAILURE ); - } + activateAlarmNoData( ALARM_ID_CARTRIDGE_REMOVAL_FAILURE ); + } - if ( TRUE == isSyringeDetected() ) - { - activateAlarmNoData( ALARM_ID_HD_SYRINGE_DETECTED ); - } - // Wait for cartridge and syringe to be removed and for DG to finish any drains/fills. - if ( ( TRUE == isCartridgeRemoved ) && ( FALSE == isSyringeDetected() ) ) - { - cmdStopDG(); - requestNewOperationMode( MODE_STAN ); - } + if ( TRUE == isSyringeDetected() ) + { + activateAlarmNoData( ALARM_ID_HD_SYRINGE_DETECTED ); } - else + // Wait for cartridge and syringe to be removed and for DG to finish any drains/fills. + if ( ( TRUE == isCartridgeRemoved ) && ( FALSE == isSyringeDetected() ) ) { - activateAlarmNoData( ALARM_ID_CARTRIDGE_DOOR_OPENED ); + cmdStopDG(); + requestNewOperationMode( MODE_STAN ); } return HD_POST_TREATMENT_VERIFY_STATE;