Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -rd96d1805307c4e4586416629081b3314037392bf -r085476747d1b466802f94f5926fc53a8ec463ec5 --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision d96d1805307c4e4586416629081b3314037392bf) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 085476747d1b466802f94f5926fc53a8ec463ec5) @@ -668,18 +668,21 @@ { BLOOD_LEAK_STATE_T state = BLOOD_LEAK_SELF_TEST_STATE; +#ifndef IGNORE_BLOOD_LEAK_SELF_TEST if ( SELF_TEST_STATUS_IN_PROGRESS == bloodLeakSelfTestStatus ) { if ( FALSE == noFPGABloodLeakDetected() ) // Faked blood leak caused by independent MCU board { bloodLeakSelfTestStatus = SELF_TEST_STATUS_PASSED; clearFPGABloodLeakSelfTest(); } + else if ( TRUE == didTimeout( bloodLeakSelfTestStartTime, BLOOD_LEAK_TIMEOUT_MS ) ) { bloodLeakSelfTestStatus = SELF_TEST_STATUS_FAILED; - +#ifndef IGNORE_BLOOD_LEAK_ALARM activateAlarmNoData( ALARM_ID_HD_BLOOD_LEAK_SELF_TEST_FAILURE ); +#endif } } else @@ -690,6 +693,7 @@ state = BLOOD_LEAK_NORMAL_STATE; } } +#endif return state; } Index: firmware/App/Controllers/BloodLeak.h =================================================================== diff -u -rd96d1805307c4e4586416629081b3314037392bf -r085476747d1b466802f94f5926fc53a8ec463ec5 --- firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision d96d1805307c4e4586416629081b3314037392bf) +++ firmware/App/Controllers/BloodLeak.h (.../BloodLeak.h) (revision 085476747d1b466802f94f5926fc53a8ec463ec5) @@ -67,7 +67,7 @@ SELF_TEST_STATUS_T execBloodLeakSelfTest( void ); BLOOD_LEAK_STATUS_T getBloodLeakStatus( void ); -SELF_TEST_STATUS_T getBloodLeakSelfTestStatus( void ); +SELF_TEST_STATUS_T getBloodLeakSelfTestStatus( void ); BOOL testSetBloodLeakDataPublishIntervalOverride( U32 value ); BOOL testResetBloodLeakDataPublishIntervalOverride( void ); Index: firmware/App/Modes/TreatmentEnd.c =================================================================== diff -u -r97915871fe011bc235c7a7f3c8690ee95ae637ea -r085476747d1b466802f94f5926fc53a8ec463ec5 --- firmware/App/Modes/TreatmentEnd.c (.../TreatmentEnd.c) (revision 97915871fe011bc235c7a7f3c8690ee95ae637ea) +++ firmware/App/Modes/TreatmentEnd.c (.../TreatmentEnd.c) (revision 085476747d1b466802f94f5926fc53a8ec463ec5) @@ -50,6 +50,7 @@ static BOOL txEndAlarmRinsebackRequested; ///< Flag indicates user requesting rinseback from alarm. static BOOL txEndAlarmEndTreatmentRequested; ///< Flag indicates user requesting end treatment from alarm. static BOOL txEndRinsebackRequested; ///< Flag indicates user requesting final rinseback. +static BOOL txEndDrainCmdSent; ///< Flag indicates DG Drain command has been sent. // ********** private function prototypes ********** @@ -76,6 +77,7 @@ treatmentEndState = TREATMENT_END_WAIT_FOR_RINSEBACK_STATE; txEndTimerCtr = 0; bloodSittingTimerCtr = 0; + txEndDrainCmdSent = FALSE; resetTreatmentEndFlags(); } @@ -228,7 +230,11 @@ } else { - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, FALSE, TRUE ); + if ( txEndDrainCmdSent != TRUE ) + { + txEndDrainCmdSent = TRUE; + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, FALSE, TRUE ); + } } } Index: firmware/App/Modes/TreatmentStop.c =================================================================== diff -u -r8e1228bfe377a61aa0c2bc9df0f0abc4b4d4ab71 -r085476747d1b466802f94f5926fc53a8ec463ec5 --- firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision 8e1228bfe377a61aa0c2bc9df0f0abc4b4d4ab71) +++ firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision 085476747d1b466802f94f5926fc53a8ec463ec5) @@ -17,6 +17,7 @@ #include "AirTrap.h" #include "BloodFlow.h" +#include "BloodLeak.h" #include "DGInterface.h" #include "DialInFlow.h" #include "DialOutFlow.h" @@ -97,6 +98,7 @@ { setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, TRUE ); } + setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); setupForBloodRecirculationState(); @@ -106,6 +108,9 @@ // Reset saline bolus state in case alarm interrupted one resetSalineBolus(); + // Exit blood leak normal state so there will no blood detection alarm + exitBloodLeakNormalState(); + // Should always have an alarm active in treatment stop sub-mode so that user can take action if ( FALSE == isAnyAlarmActive() ) {