Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -rd6eafb51a8a2eb0d30ac9a36c80af2f953bf564d --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision d6eafb51a8a2eb0d30ac9a36c80af2f953bf564d) @@ -109,6 +109,7 @@ static void publishRinsebackData( void ); static U32 getPublishRinsebackInterval( void ); +static void handleDialysateRecircOnOff( void ); /*********************************************************************//** * @brief @@ -209,6 +210,9 @@ setBloodPumpTargetFlowRate( rate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // Start air trap leveling control startAirTrapControl(); + // 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(); } /*********************************************************************//** @@ -304,6 +308,9 @@ break; } + // Start/stop dialysate recirculation during rinseback mode based on active alarms that would block it + handleDialysateRecircOnOff(); + if ( priorSubState != rinsebackState ) { SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_SUB_STATE_CHANGE, priorSubState, rinsebackState ); @@ -1041,7 +1048,30 @@ return result; } +/*********************************************************************//** + * @brief + * The handleDialysateRecircOnOff function starts/stops dialysate recirculation + * during rinseback sub-mode based on active alarm properties. + * @details Inputs: none + * @details Outputs: dialysate recirculation started or stopped as appropriate + * @return none + *************************************************************************/ +static void handleDialysateRecircOnOff( void ) +{ + // Stop dialysate recirc if blocked by alarm + if ( ( TRUE == isDialysateRecircBlocked() ) && ( TRUE == isDialInPumpRunning() ) ) + { + signalDialInPumpHardStop(); + cmdStopDGTrimmerHeater(); + } + else if ( ( isDialysateRecircBlocked() != TRUE ) && ( isDialInPumpRunning() != TRUE ) ) + { + setDialInPumpTargetFlowRate( DIALYSATE_FLOW_RATE_FOR_RECIRC, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + cmdStartDGTrimmerHeater(); + } +} + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/