Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rfa356a2bce909141f45c6832659fa1ceea5bfbba -rf4199248340b66e66abbe99599d5d30ce980ea5f --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision fa356a2bce909141f45c6832659fa1ceea5bfbba) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision f4199248340b66e66abbe99599d5d30ce980ea5f) @@ -184,8 +184,31 @@ *************************************************************************/ void transitionToDialysis( void ) { - startAirTrapControl(); // TODO - do we need to start this sooner? After prime? start/stop as needed depending on mode/sub-mode (e.g. dialysis, rinseback, prime, ...)? + // Set last UF timestamp so UF ref is resumed from this time + lastUFTimeStamp = getMSTimerCount(); + // Send dialysate outlet pump latest UF volumes + setDialOutUFVolumes( refUFVolume, measUFVolume ); + // Set valves for dialysis + setValvePosition( VDI, VALVE_POSITION_B_OPEN ); + setValvePosition( VDO, VALVE_POSITION_B_OPEN ); + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); + setValvePosition( VBV, VALVE_POSITION_B_OPEN ); + // Restart pumps +#ifndef RUN_PUMPS_OPEN_LOOP + setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); +#else + setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); +#endif + setDialOutPumpTargetRate( setDialysateFlowRate + (S32)setUFRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + // TODO - Heparin pump + // Tell DG to start heating dialysate + cmdStartDGTrimmerHeater(); + + startAirTrapControl(); + // Set user alarm recovery actions allowed in this sub-mode setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, TRUE ); @@ -229,41 +252,6 @@ /*********************************************************************//** * @brief - * The startDialysis function starts/resumes dialysis. This function - * will be called by Treatment Mode when beginning or resuming dialysis - * treatment. - * @details Inputs: none - * @details Outputs: Dialysis module prepared for immediate resumption. - * @return none - *************************************************************************/ -void startDialysis( void ) -{ - // Set last UF timestamp so UF ref is resumed from this time - lastUFTimeStamp = getMSTimerCount(); - // Send dialysate outlet pump latest UF volumes - setDialOutUFVolumes( refUFVolume, measUFVolume ); - - // Set valves for dialysis - setValvePosition( VDI, VALVE_POSITION_B_OPEN ); - setValvePosition( VDO, VALVE_POSITION_B_OPEN ); - setValvePosition( VBA, VALVE_POSITION_B_OPEN ); - setValvePosition( VBV, VALVE_POSITION_B_OPEN ); - // Restart pumps -#ifndef RUN_PUMPS_OPEN_LOOP - setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); -#else - setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); -#endif - setDialOutPumpTargetRate( setDialysateFlowRate + (S32)setUFRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); - // TODO - Heparin pump - // Tell DG to start heating dialysate - cmdStartDGTrimmerHeater(); -} - -/*********************************************************************//** - * @brief * The stopDialysis function stops dialysis. This function will be called * by Treatment Mode when an alarm occurs or the user pressed the stop button. * Dialysis may be resumed later. @@ -1008,7 +996,7 @@ currentUFState = UF_RUNNING_STATE; } // Resume dialysis - startDialysis(); + transitionToDialysis(); } }