Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rbbf4e1a170f66ce07af12908a1d0fe101a934e9e -r4add377f60d45effbdc064b110a59c1b8afd0ab8 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision bbf4e1a170f66ce07af12908a1d0fe101a934e9e) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 4add377f60d45effbdc064b110a59c1b8afd0ab8) @@ -1,6 +1,6 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. @@ -40,6 +40,7 @@ static BOOL treatStartReqReceived = FALSE; ///< Flag indicates user requests treatment begin. static BOOL confirmInstallRequested = FALSE; ///< Flag indicates user confirms disposable installation. +static BOOL continueToTreatmentRequested = FALSE; ///< Flag indicates user requests to continue to treatment from re-circ. static BOOL alarmActionStopReceived = FALSE; ///< Flag indicates an alarm w/ stop property was triggered. static BOOL alarmActionResumeReceived = FALSE; ///< Flag indicates alarm action resume received. @@ -51,6 +52,7 @@ static void publishPreTreatmentState( void ); static void resetSignalFlags( void ); +static void transitionToCartridgeInstallation( void ); static HD_PRE_TREATMENT_MODE_STATE_T handleWaterSampleState( void ); static HD_PRE_TREATMENT_MODE_STATE_T handleSelfTestNoCartState( void ); @@ -174,7 +176,30 @@ /*********************************************************************//** * @brief - * The signalUserBeginningTreatment function handles user start of a + * The signalUserContinueToTreatment function handles user request to continue + * to treatment. + * @details Inputs: none + * @details Outputs: treatStartReqReceived, send response to treatment start + * @return none + *************************************************************************/ +void signalUserContinueToTreatment( void ) +{ + BOOL accepted = FALSE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE; + + if ( HD_PRE_TREATMENT_RECIRCULATE_STATE == currentPreTreatmentState ) + { + continueToTreatmentRequested = TRUE; + accepted = TRUE; + rejReason = REQUEST_REJECT_REASON_NONE; + } + + sendContinueToTreatmentCmdResponse( accepted, rejReason ); +} + +/*********************************************************************//** + * @brief + * The signalUserBeginningTreatment function handles user requests to begin * treatment. * @details Inputs: none * @details Outputs: treatStartReqReceived, send response to treatment start @@ -270,13 +295,34 @@ { treatStartReqReceived = FALSE; confirmInstallRequested = FALSE; + continueToTreatmentRequested = FALSE; alarmActionStopReceived = FALSE; alarmActionResumeReceived = FALSE; } /*********************************************************************//** * @brief + * The transitionToCartridgeInstallation function prepares actuators before + * transition to pre-treatment install state. + * @details Inputs: none + * @details Outputs: valves are in insert position + * @return none + *************************************************************************/ +static void transitionToCartridgeInstallation( void ) +{ + VALVE_T valve; + + for ( valve = VDI; valve < NUM_OF_VALVES; ++valve ) + { + setValvePosition( valve, VALVE_POSITION_A_INSERT_EJECT ); + } + + setValveAirTrap( STATE_CLOSED ); +} + +/*********************************************************************//** + * @brief * The handleWaterSampleState function handles patient connection state * during pre-treatment mode. * @details Inputs: none @@ -291,6 +337,7 @@ if ( TRUE == isSampleWaterPassed() ) { + transitionToNoCartSelfTests(); state = HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; } @@ -327,6 +374,7 @@ if ( TRUE == isNoCartSelfTestsPassed() ) { + transitionToCartridgeInstallation(); state = HD_PRE_TREATMENT_CART_INSTALL_STATE; } @@ -458,8 +506,9 @@ execPreTreatmentRecirc(); - if ( TRUE == isPatientConnectionRequested() ) + if ( TRUE == continueToTreatmentRequested ) { + continueToTreatmentRequested = FALSE; state = HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; }