Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r3bb3c65a3b56d6ae66e01a048b4f2bb14c8ab7a2 -re69e93fb39e5a7c3fc54cf4b07e9deeda43d9c98 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 3bb3c65a3b56d6ae66e01a048b4f2bb14c8ab7a2) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision e69e93fb39e5a7c3fc54cf4b07e9deeda43d9c98) @@ -54,7 +54,7 @@ #ifdef DIALYZER_REPRIME_ENABLED // Dialyzer reprime constants -static const U32 DIALYZER_REPRIME_INTERVAL = ((30 * SEC_PER_MIN * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); +static const U32 DIALYZER_REPRIME_INTERVAL = ((5 * SEC_PER_MIN * MS_PER_SECOND) / TASK_GENERAL_INTERVAL); // TODO - restore to 30 minutes /// Dialyzer reprime interval count. Time between reprime attempts. #define DIALYZER_REPRIME_REPRIME_DURATION_MS ( 35 * MS_PER_SECOND ) ///< Duration of dialyzer reprime reprime state. #define DIALYZER_REPRIME_PURGE_PRIOR_1_DURATION_MS ( 10 * MS_PER_SECOND ) ///< Duration of dialyzer reprime purge prior 1 state. @@ -113,7 +113,7 @@ static F32 lastUFVolumeChecked; ///< Starting ultrafiltration volume for accuracy check. #ifdef DIALYZER_REPRIME_ENABLED -static U32 dialyzerReprimeIntervalTimerCtr; ///< Timer counter to determine when the dialyzer reprime should be done. +static U32 dialyzerReprimeIntervalTimerCtr; ///< Timer counter to determine when the dialyzer reprime should be done. static BOOL dialyzerReprimeInProgress; ///< Flag indicates whether the dialyzer reprime has been interrupted. static BOOL dialyzerReprimeFinalReprimeFinished; ///< Flag indicates whether the final dialyzer reprime has completed. static U32 dialyzerReprimeStateTimer; ///< General state timer for tracking duration of dialyzer reprime states. @@ -1293,24 +1293,28 @@ if ( ( TRUE == didTimeout( dialyzerReprimeStateTimer, DIALYZER_REPRIME_PURGE_LINES_DURATION_MS ) ) ) { - setValvePosition( VDI, VALVE_POSITION_B_OPEN ); - setValvePosition( VDO, VALVE_POSITION_B_OPEN ); signalDialInPumpHardStop(); signalDialOutPumpHardStop(); - // Reset the timer for reprime interval and the reprime in progress flag. - dialyzerReprimeIntervalTimerCtr = 0; - dialyzerReprimeInProgress = FALSE; - if ( getTreatmentTimeRemainingSecs() <= DIALYZER_REPRIME_BEFORE_TREATEMENT_END_INTERVAL_SEC) + // Delay 1 more second before resuming treatment + if ( TRUE == didTimeout( dialyzerReprimeStateTimer, DIALYZER_REPRIME_PURGE_LINES_DURATION_MS + MS_PER_SECOND ) ) { - dialyzerReprimeFinalReprimeFinished = TRUE; + setValvePosition( VDI, VALVE_POSITION_B_OPEN ); + setValvePosition( VDO, VALVE_POSITION_B_OPEN ); + // Reset the timer for reprime interval and the reprime in progress flag. + dialyzerReprimeIntervalTimerCtr = 0; + dialyzerReprimeInProgress = FALSE; + if ( getTreatmentTimeRemainingSecs() <= DIALYZER_REPRIME_BEFORE_TREATEMENT_END_INTERVAL_SEC) + { + dialyzerReprimeFinalReprimeFinished = TRUE; + } + // Dialysis back to UF state + *dialysisState = DIALYSIS_UF_STATE; + // This handles resuming UF if it was paused by re-prime + resetSalineBolus(); + // Resume dialysis + transitionToDialysis(); + result = DIALYZER_REPRIME_STATE_DIALYSATE_PUMPS_OFF; } - // Dialysis back to UF state - *dialysisState = DIALYSIS_UF_STATE; - // This handles resuming UF if it was paused by re-prime - resetSalineBolus(); - // Resume dialysis - transitionToDialysis(); - result = DIALYZER_REPRIME_STATE_DIALYSATE_PUMPS_OFF; } return result;