Index: firmware/App/Modes/TreatmentRecirc.c =================================================================== diff -u -r9b866455bc0e2991c371b54a6a5d9f4ff430b30d -r507a6b77711dc013f876c6378c9a732578e7303d --- firmware/App/Modes/TreatmentRecirc.c (.../TreatmentRecirc.c) (revision 9b866455bc0e2991c371b54a6a5d9f4ff430b30d) +++ firmware/App/Modes/TreatmentRecirc.c (.../TreatmentRecirc.c) (revision 507a6b77711dc013f876c6378c9a732578e7303d) @@ -53,10 +53,10 @@ static BOOL recircEndTreatmentRequested; ///< Flag indicates user requesting end of treatment. static BOOL prevDialysateRecircBlocked; ///< Flag indicates previous user stop dialysate recirculation condition static BOOL prevBloodRecircBlocked; ///< Flag indicates previous user stop blood recirculation condition + // ********** private function prototypes ********** static void resetTreatmentRecircFlags( void ); -static void setFullStop( void ); static void setupForRecirculationState( void ); static void setupForRecirculationStopState( void ); @@ -111,35 +111,6 @@ /*********************************************************************//** * @brief - * The setFullStop function stops all HD activity. This function will be - * called by the recirculation on/off when an alarm (stop, noBloodRecirc, - * noDialysateRecirc) occurs or the user pressed the stop button. - * Recirculation may be resumed. - * @details Inputs: pump status - * @details Outputs: Pumps stopped, blood circuit valves closed. - * @return none - *************************************************************************/ -static void setFullStop( void ) -{ - // Tell DG to stop heating dialysate - cmdStopDGTrimmerHeater(); - - // Stop the peristaltic pumps - signalDialInPumpHardStop(); - signalDialOutPumpHardStop(); - signalBloodPumpHardStop(); - - // stop trimmer heater too - cmdStopDGTrimmerHeater(); - - // Set valves to safe state - // patient blood lines closed - setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); - setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); -} - -/*********************************************************************//** - * @brief * The transitionToTreatmentRecirc function prepares for transition to treatment * re-circulate sub-mode. * @details Inputs: none @@ -565,10 +536,10 @@ * The checkTreatmentRecircOnOff function starts/stops recirculation * during rinseback sub-mode based on active alarm properties. * Simplified case for user stop - all stop/all go states only. - * @details Inputs: prevBloodRecircBlocked, prevDialysateRecircBlocked - * @details Inputs: alarmStatus, recircResumeRequested + * @details Inputs: prevBloodRecircBlocked, prevDialysateRecircBlocked, + * alarmStatus, recircResumeRequested * @details Outputs: recirculation started or stopped as appropriate; - * @details Outputs: prevBloodRecircBlocked,prevDialysateRecircBlocked + * prevBloodRecircBlocked,prevDialysateRecircBlocked * @return none *************************************************************************/ static void checkTreatmentRecircOnOff( void ) @@ -577,22 +548,28 @@ BOOL bloodRecircBlocked = isBloodRecircBlocked(); // Flag indicates user stop blood recirculation condition // if there was any change - if ( ( dialysateRecircBlocked != prevDialysateRecircBlocked ) || ( bloodRecircBlocked != prevBloodRecircBlocked ) ) - { // Stop recirc if blocked by alarm - if ( ( TRUE == dialysateRecircBlocked ) && ( TRUE == bloodRecircBlocked ) ) - { - setFullStop( ); + if ( dialysateRecircBlocked != prevDialysateRecircBlocked ) + { // Stop recirc if blocked by alarm + if ( ( TRUE == dialysateRecircBlocked ) ) + { // Stop the dialin pumps + signalDialInPumpHardStop(); + cmdStopDGTrimmerHeater(); } - else if ( ( dialysateRecircBlocked != TRUE ) && ( bloodRecircBlocked != TRUE ) ) - { - // Re-circulate dialysate side of dialyzer w/ heating to maintain temperature + else if ( ( dialysateRecircBlocked != TRUE ) ) + { // Re-circulate dialysate side of dialyzer w/ heating to maintain temperature setDialInPumpTargetFlowRate( DIALYSATE_FLOW_RATE_FOR_RECIRC, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); cmdStartDGTrimmerHeater(); - recircResumeRequested = TRUE; // User Stop should have put the state machine into stop: mark for restart } - prevBloodRecircBlocked = bloodRecircBlocked; - prevDialysateRecircBlocked = dialysateRecircBlocked; + prevDialysateRecircBlocked = dialysateRecircBlocked; } + if ( bloodRecircBlocked != prevBloodRecircBlocked ) + { // Stop recirc if blocked by alarm + if ( TRUE == bloodRecircBlocked ) + { + signalBloodPumpHardStop(); + } // Pump on/blood and valves dealt with in the state machine. + prevBloodRecircBlocked = bloodRecircBlocked; + } } /*********************************************************************//**