Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r36eda8f2799310ff842cf035a3eaa96c7c2bccdb -r8188bc76ce8b9715a61085da1c5a991fe5c9d3c0 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 36eda8f2799310ff842cf035a3eaa96c7c2bccdb) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8188bc76ce8b9715a61085da1c5a991fe5c9d3c0) @@ -8,7 +8,7 @@ * @file ModePreTreat.c * * @author (last) Dara Navaei -* @date (last) 04-May-2023 +* @date (last) 17-May-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -49,7 +49,7 @@ #define PRE_TREATMENT_NORMAL_FILL_TARGET_TEMP_C ( 37.0F + 2.0F ) ///< Pre treatment normal fill target temperature in C. #define PRE_TREATMENT_MIN_FILL_RESERVOIR_VOLUME_ML 500 ///< Fill reservoir to this volume minimum to prep volume during development. -#define PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML 500 ///< Fill reservoir to this volume (in mL) to flush filter and lines. +#define PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML 400 ///< Fill reservoir to this volume (in mL) to flush filter and lines. #define PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML 1300 ///< Fill reservoir one to this volume (in mL) during pre-treatment mode. #define PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML 600 ///< Fill reservoir two to this volume (in mL) during pre-treatment mode. #define PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML 1500 ///< Fill reservoir to this volume minimum to prep volume during development. @@ -143,7 +143,7 @@ static U32 getPreTreatmentFillVolume( DG_RESERVOIR_ID_T inactiveRes ); static void setPreTreatmentHeatingParams( F32 targetTempC, U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ); -// Test configuration teset function +// Test configuration test function static void execPreTreatmentTestConfigReservoirMgmt( void ); /*********************************************************************//** @@ -447,7 +447,7 @@ if ( HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE == currentPreTreatmentState ) { - if ( PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE == currentPreTxPatConnState ) + if ( currentPreTxPatConnState >= PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE ) { patientConnectionConfirm = TRUE; accepted = TRUE; @@ -520,17 +520,14 @@ break; case ALARM_ACTION_END_TREATMENT: - if ( HD_PRE_TREATMENT_PRIME_STATE > currentPreTreatmentState ) + if ( currentPreTreatmentState > HD_PRE_TREATMENT_WATER_SAMPLE_STATE ) { - if ( HD_PRE_TREATMENT_WATER_SAMPLE_STATE == currentPreTreatmentState ) - { - cmdDGSampleWater( SAMPLE_WATER_CMD_END ); - } - requestNewOperationMode( MODE_STAN ); + requestNewOperationMode( MODE_POST ); } else { - requestNewOperationMode( MODE_POST ); + requestNewOperationMode( MODE_STAN ); + cmdStopDG(); } break; @@ -713,6 +710,11 @@ signalDialOutPumpHardStop(); setDialInPumpTargetFlowRate( DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); cmdStartDGTrimmerHeater(); + + if ( TRUE == getTestConfigStatus( TEST_CONFIG_EXPEDITE_PRE_TREATMENT ) ) + { + setOcclusionInstallLevel(); + } } /*********************************************************************//** @@ -812,6 +814,7 @@ { submodeCompleteTransitionTimeCounter = 0; state = HD_PRE_TREATMENT_CART_INSTALL_STATE; + setCurrentSubState( NO_SUB_STATE ); transitionToCartridgeInstallation(); } } @@ -961,6 +964,8 @@ *************************************************************************/ static HD_PRE_TREATMENT_MODE_STATE_T handlePatientConnectionState( void ) { + HD_PRE_TREATMENT_PAT_CONN_STATE_T priorSubState = currentPreTxPatConnState; + switch ( currentPreTxPatConnState ) { case PRE_TREATMENT_PAT_CONN_WAIT_FOR_UF_VOL_STATE: @@ -984,6 +989,12 @@ break; } + if ( priorSubState != currentPreTxPatConnState ) + { + setCurrentSubState( (U32)currentPreTxPatConnState ); + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, currentPreTxPatConnState ); + } + // handle alarms w/ stop property if ( TRUE == doesAlarmStatusIndicateStop() ) { @@ -1073,7 +1084,6 @@ if ( ( TRUE == doorOpened ) && ( STATE_CLOSED == getSwitchStatus( FRONT_DOOR ) ) ) { doorClosedRequired( TRUE, TRUE ); - doorOpened = FALSE; nextState = PRE_TREATMENT_PAT_CONN_WAIT_FOR_USER_CONFIRM_STATE; } @@ -1095,7 +1105,6 @@ if ( TRUE == patientConnectionConfirm ) { - patientConnectionConfirm = FALSE; nextState = PRE_TREATMENT_PAT_CONN_WAIT_FOR_TREATMENT_START_STATE; } @@ -1106,7 +1115,8 @@ * @brief * The handlePatientConnectionWait4TreatmentStartState function handles the wait * for treatment start state of pre-treatment patient connection sub-mode. - * @details Inputs: treatmentStartRequested, currentReservoirMgmtState + * @details Inputs: treatmentStartRequested, currentReservoirMgmtState, + * doorOpened * @details Outputs: none * @return next patient connection state *************************************************************************/ @@ -1125,6 +1135,8 @@ { DG_RESERVOIR_ID_T activeRes = getDGActiveReservoir(); + patientConnectionConfirm = FALSE; + doorOpened = FALSE; setStartReservoirVolume( activeRes ); requestNewOperationMode( MODE_TREA ); }