Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r125a27d5a3a116e7b7473ff180daf247270d8e57 -rb8d74fc5b07d0e62d841b4c5a786b2be4e593c63 --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 125a27d5a3a116e7b7473ff180daf247270d8e57) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision b8d74fc5b07d0e62d841b4c5a786b2be4e593c63) @@ -88,7 +88,7 @@ // ********** private function prototypes ********** static void resetPrimeFlags(); -static void handlePrimePauseRequest( void ); +static void setupForPrimePause( void ); static void broadcastPrimingStatus( void ); static void purgeAirValvesBloodPumpControl( void ); @@ -212,9 +212,6 @@ // Prime flags should be handled by now resetPrimeFlags(); - // Handle prime pause request - handlePrimePauseRequest(); - // Broadcast priming data broadcastPrimingStatus(); } @@ -282,23 +279,19 @@ /*********************************************************************//** * @brief - * The handlePrimePauseRequest function handles prime pause request. + * The setupForPrimePause function stop pumps handles prime pause request. * @details Inputs: none * @details Outputs: stop all pumps, switch to prime pause state. * @return none *************************************************************************/ -static void handlePrimePauseRequest( void ) +static void setupForPrimePause( void ) { - if ( ( TRUE == doesAlarmStatusIndicateStop() ) && ( HD_PRIME_PAUSE != currentPrimeState ) ) - { - signalDialOutPumpHardStop(); - signalDialInPumpHardStop(); - signalBloodPumpHardStop(); + signalDialOutPumpHardStop(); + signalDialInPumpHardStop(); + signalBloodPumpHardStop(); - primePauseStartTime = getMSTimerCount(); - previousPrimeState = currentPrimeState; - currentPrimeState = HD_PRIME_PAUSE; - } + primePauseStartTime = getMSTimerCount(); + previousPrimeState = currentPrimeState; } /*********************************************************************//** @@ -384,10 +377,18 @@ *************************************************************************/ static HD_PRE_TREATMENT_PRIME_STATE_T handlePrimeSalineSetupState( void ) { + HD_PRE_TREATMENT_PRIME_STATE_T state = HD_PRIME_SALINE_PURGE_AIR_STATE; + purgeAirValvesBloodPumpControl(); purgeAirTimeOutStartTime = getMSTimerCount(); - return HD_PRIME_SALINE_PURGE_AIR_STATE; + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + + return state; } /*********************************************************************//** @@ -420,6 +421,12 @@ state = HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE; } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -449,6 +456,12 @@ state = HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE; } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -486,6 +499,12 @@ #endif } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -522,6 +541,12 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRIME_DIALYSATE_DIALYZER_TIME_OUT, PRIME_DIALYSATE_DIALYZER_TIME_LIMIT ); } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -554,6 +579,12 @@ state = HD_PRIME_DIALYSATE_BYPASS_STATE; } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -590,6 +621,12 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_PRIME_DIALYSATE_BYPASS_TIME_OUT, PRIME_DIALYSATE_BYPASS_TIME_LIMIT ); } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; } @@ -619,6 +656,12 @@ state = HD_PRIME_COMPLETE; } + if ( TRUE == doesAlarmStatusIndicateStop() ) + { + setupForPrimePause(); + state = HD_PRIME_PAUSE; + } + return state; }