Index: firmware/App/Modes/ModeGenIdle.c =================================================================== diff -u -r1e22b6ff6f42ddc57ad6c17e56057ab8a3765680 -ra6dff99e22bb6f646adfe3acf4f461cb43aec979 --- firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision 1e22b6ff6f42ddc57ad6c17e56057ab8a3765680) +++ firmware/App/Modes/ModeGenIdle.c (.../ModeGenIdle.c) (revision a6dff99e22bb6f646adfe3acf4f461cb43aec979) @@ -91,9 +91,7 @@ { genIdleState = DG_GEN_IDLE_MODE_STATE_START; hdLostCommStartTime_ms = 0; - targetFillVolumeML = 0; genIdlePublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - handleBadFillFlag = FALSE; } /*********************************************************************//** @@ -269,7 +267,7 @@ else { badFillState = DG_HANDLE_BAD_FILL_STATE_START; - result = DG_GEN_IDLE_MODE_STATE_FLUSH_WATER; + result = DG_GEN_IDLE_MODE_STATE_FLUSH_WATER; } return result; @@ -307,6 +305,7 @@ { case DG_HANDLE_BAD_FILL_STATE_START: badFillState = DG_HANDLE_BAD_FILL_STATE_FIRST_DRAIN; + requestNewOperationMode( DG_MODE_DRAI ); // go to drain mode to empty bad dialysate because this is a bad fill break; case DG_HANDLE_BAD_FILL_STATE_FIRST_DRAIN: // idle 1.0 @@ -348,11 +347,17 @@ *************************************************************************/ static DG_GEN_IDLE_MODE_BAD_FILL_STATE_T handleFirstDrainState( void ) { - DG_GEN_IDLE_MODE_BAD_FILL_STATE_T result = DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL; // after first drain is completed, go to next bad fill sub-state + DG_GEN_IDLE_MODE_BAD_FILL_STATE_T state = DG_HANDLE_BAD_FILL_STATE_FIRST_DRAIN; // after first drain is completed, go to next bad fill sub-state - requestNewOperationMode( DG_MODE_DRAI ); // go to drain mode to empty bad dialysate because this is a bad fill + if ( FALSE == isAlarmActive( ALARM_ID_FILL_CONDUCTIVITY_OUT_OF_RANGE ) ) // alarm is no longer active - cleared by user + { + targetFillVolumeML = getTargetFillVolumeML(); // save the HD target fill volume before command 1000 mL fill volume + startFillCmd( BAD_FLUSH_FILL_TARGET_VOLUME_ML, getTargetFillFlowRateLPM() ); - return result; + state = DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL; + } + + return state; } /*********************************************************************//** @@ -365,9 +370,11 @@ *************************************************************************/ static DG_GEN_IDLE_MODE_BAD_FILL_STATE_T handleFlushFillState( void ) { - DG_GEN_IDLE_MODE_BAD_FILL_STATE_T result = DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL; + DG_GEN_IDLE_MODE_BAD_FILL_STATE_T state = DG_HANDLE_BAD_FILL_STATE_SECOND_DRAIN; - if ( FALSE == isAlarmActive( ALARM_ID_FILL_CONDUCTIVITY_OUT_OF_RANGE ) ) // alarm is no longer active - cleared by user + requestNewOperationMode( DG_MODE_DRAI ); // go to drain mode to empty bad dialysate because this is a bad fill + + /*if ( FALSE == isAlarmActive( ALARM_ID_FILL_CONDUCTIVITY_OUT_OF_RANGE ) ) // alarm is no longer active - cleared by user { targetFillVolumeML = getTargetFillVolumeML(); // save the HD target fill volume before command 1000 mL fill volume startFillCmd( BAD_FLUSH_FILL_TARGET_VOLUME_ML, getTargetFillFlowRateLPM() ); @@ -380,9 +387,9 @@ { result = DG_HANDLE_BAD_FILL_STATE_SECOND_DRAIN; // (idle 1.2) } - } + }*/ - return result; + return state; } /*********************************************************************//** @@ -395,11 +402,13 @@ *************************************************************************/ static DG_GEN_IDLE_MODE_BAD_FILL_STATE_T handleSecondDrainState( void ) { - DG_GEN_IDLE_MODE_BAD_FILL_STATE_T result = DG_HANDLE_BAD_FILL_STATE_REFILL; // after second drain completed, go to refill sub-state (idle 1.3) + DG_GEN_IDLE_MODE_BAD_FILL_STATE_T state = DG_HANDLE_BAD_FILL_STATE_CLEAR_ALARM; // after second drain completed, go to refill sub-state (idle 1.3) - requestNewOperationMode( DG_MODE_DRAI ); // go to drain mode to empty bad dialysate because this is a bad fill + //requestNewOperationMode( DG_MODE_DRAI ); // go to drain mode to empty bad dialysate because this is a bad fill - return result; + startFillCmd( targetFillVolumeML, getTargetFillFlowRateLPM() ); // refill to the saved target fill volume (~1500 mL) + + return state; } /*********************************************************************//** @@ -434,7 +443,7 @@ // clear wait for dialysate alarm condition to allow resume clearAlarmCondition( ALARM_ID_CREATING_DIALYSATE_PLEASE_WAIT ); // resume option will appear handleBadFillFlag = FALSE; // set flag to FALSE here so next call to idle exec will move to normal flush water state - genIdleState = DG_GEN_IDLE_MODE_STATE_START; + genIdleState = DG_GEN_IDLE_MODE_STATE_START; return result; }