Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r35f1db1a4e254a69234e50082d0cce0122e6a84c -rcc3f9f20ed1a76552e2f433f4cbb7a9f2ae67713 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 35f1db1a4e254a69234e50082d0cce0122e6a84c) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision cc3f9f20ed1a76552e2f433f4cbb7a9f2ae67713) @@ -24,6 +24,7 @@ #include "ModePreTreat.h" #include "OperationModes.h" #include "PinchValve.h" +#include "Prime.h" #include "StatePreTxRecirculate.h" #include "SyringePump.h" #include "TaskGeneral.h" @@ -108,13 +109,13 @@ { initPreTreatmentMode(); initTubeSetInstall(); + initPrime(); // TODO: remove after implementing blood pump homing in some state homeBloodPump(); - // TODO: remove these homeValve() when SELF_TEST_NO_CART_STATE is implemented (homing valves is handled over there). - homeValve(H1_VALV, FALSE, FALSE); - homeValve(H19_VALV, FALSE, FALSE); + setValvePosition( H1_VALV, VALVE_POSITION_A_INSERT_EJECT ); + setValvePosition( H19_VALV, VALVE_POSITION_A_INSERT_EJECT ); return (U32)currentPreTreatmentState; } @@ -214,7 +215,9 @@ break; case TD_PRE_TREATMENT_CONFIRM_RX_STATE: - // No action required. + signalBloodPumpHardStop(); + setValvePosition( H1_VALV, VALVE_POSITION_C_CLOSE ); + setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); break; case TD_PRE_TREATMENT_RECIRCULATE_STATE: @@ -223,14 +226,14 @@ case TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE: signalBloodPumpHardStop(); - setValvePosition( H1_VALV, VALVE_POSITION_B_OPEN ); + setValvePosition( H1_VALV, VALVE_POSITION_C_CLOSE ); setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); setAirPumpState( AIR_PUMP_STATE_OFF, AIR_PUMP_MOTOR_OFF ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); stopSyringePump(); - // TODO: Set H5 ejector Off. + // TODO: Set H5 ejector Off.state // TODO: Command DD to bypass dialyzer, set QDt to prescribed rate, // Quf to 0, and Qs to 0. break; @@ -286,6 +289,7 @@ state = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; } + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); state = TD_PRE_TREATMENT_PRIME_STATE; return state; @@ -307,6 +311,9 @@ if ( PRIME_COMPLETE_STATE == getCurrentPrimeState() ) { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_TD_PRIME_COMPLETE, (U32)getCurrentPrimeState() ); + transitionToPreTxRecirculate(); state = TD_PRE_TREATMENT_RECIRCULATE_STATE; } @@ -327,9 +334,11 @@ execPreTxRecirculate(); - if ( TRUE == continueFromRecirculateRequested ) + //if ( TRUE == continueFromRecirculateRequested ) + if ( FALSE == isAnyAlarmActive() ) { - continueFromRecirculateRequested = FALSE; + //continueFromRecirculateRequested = FALSE; + endAirTrapControl(); state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; } @@ -366,7 +375,8 @@ presUFRateMlMin = ( presUFVolumeL * (F32)ML_PER_LITER ) / (F32)getTreatmentParameterU32( TREATMENT_PARAM_TREATMENT_DURATION ); // Direct DD to generate dialysate and bypass while priming blood cmdStartGenerateDialysate( (F32)getTreatmentParameterU32( TREATMENT_PARAM_DIALYSATE_FLOW ), presUFRateMlMin, - getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ), TRUE, + 0, //getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ), //TODO: Update temperature with tx param temp when we are ready + TRUE, getTreatmentParameterF32( TREATMENT_PARAM_ACID_CONCENTRATE_CONV_FACTOR ), bicarbConvFactor, getTreatmentParameterU32( TREATMENT_PARAM_SODIUM ),