Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r3f032347c774cab541bd9efb143fa874f65d25e9 -r6bb89ac52fecee7db9dc69a3eb727cad0a66370e --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 3f032347c774cab541bd9efb143fa874f65d25e9) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6bb89ac52fecee7db9dc69a3eb727cad0a66370e) @@ -20,8 +20,8 @@ #include "DDInterface.h" #include "ModePreTreat.h" #include "OperationModes.h" -#include "StatePreTxRecirculate.h" #include "StatePreTxHeparinSetup.h" +#include "StatePreTxRecirculate.h" #include "Timers.h" #include "TubeSetInstall.h" #include "TxParams.h" @@ -64,6 +64,8 @@ { // Start a fresh Treatment Parameters session for this run. initTreatmentParameters(); + initPreTxHeparinSetup(); + currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; goToInstallStateRequested = FALSE; continueFromRecirculateRequested = FALSE; @@ -349,6 +351,8 @@ { BOOL paramsValid = getValidTreatParamsReceived(); BOOL paramsConfirmed = getTreatParamsConfirmed(); + BOOL heparinIsPrescribed = ( ( getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ) > 0.0F ) || + ( getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DELIVERY_RATE ) > 0.0F ) ); BOOL isDialysateGoodToDeliver = TRUE; // TODO replace TRUE with getDialysateGoodToDeliverStatus() when we are ready F32 bicarbConvFactor = BICARBONATE_CONVERSION_FACTOR; F32 presUFVolumeL = 0.0F; @@ -357,7 +361,7 @@ TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; DD_OP_MODE_T ddOpMode = getDDOpMode(); - // Valid + confirmed – move to next state: Recirculate State + // Valid + confirmed – move to Heparin Setup or Patient Connection. if ( ( TRUE == paramsValid ) && ( TRUE == paramsConfirmed ) ) { // TODO this command of requesting dialysate delivery will move to appropriate state in pre-treatment once implemented @@ -373,11 +377,18 @@ getTreatmentParameterU32( TREATMENT_PARAM_SODIUM ), getTreatmentParameterU32( TREATMENT_PARAM_BICARBONATE ) ); } + if ( TRUE == heparinIsPrescribed ) + { + transitionToPreTxHeparinSetup(); + state = TD_PRE_TREATMENT_HEPARIN_SETUP_STATE; + } + else + { + state = TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; + } + } - state = TD_PRE_TREATMENT_RECIRCULATE_STATE; - } - - return state; + return state; } /*********************************************************************//** @@ -463,7 +474,6 @@ else if ( TD_PRE_TREATMENT_HEPARIN_SETUP_STATE == currentPreTreatmentState ) { signalResumePreTxHeparinSetup(); - signalPreTxHeparinSyringeLoadConfirmed(); } break;