Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -re86b330049966e34035f03496e40f22e6bd4e5a9 -r2ed28d3fdc3345c4a3d8f1684d1541f2a27467d8 --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision e86b330049966e34035f03496e40f22e6bd4e5a9) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 2ed28d3fdc3345c4a3d8f1684d1541f2a27467d8) @@ -700,8 +700,8 @@ { bloodLeakSelfTestStatus = SELF_TEST_STATUS_FAILED; state = BLOOD_LEAK_INIT_STATE; + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT, bloodLeakSelfTestStatus, state ) } - SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT, bloodLeakSelfTestStatus, state ) } return state; @@ -739,6 +739,7 @@ state = BLOOD_LEAK_RECOVER_BLOOD_DETECT_STATE; } } + SEND_EVENT_WITH_2_U32_DATA( HD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT, bloodLeakSelfTestStatus, state ) } return state; @@ -917,7 +918,7 @@ { BOOL status = FALSE; BOOL isZeroingNeeded = TRUE; - U32 setPoint = bloodLeakEmbModeCmd[ SP_EMB_MODE_CMD ].commandResp; + U32 setPoint = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandResp; F32 driftMinFromTop = BLD_NOMINAL_INTENSITY - ( setPoint * BLD_MAX_INTENSITY_OUT_OF_RANGE ); F32 driftMaxFromTop = BLD_NOMINAL_INTENSITY - ( setPoint * BLD_MIN_INTENSITY_OUT_OF_RANGE ); BOOL isZeroingAllowed = didTimeout( bloodLeakZeroingStatus.lastZeroingStartTimeMS, BLD_ZERO_MIN_INTERVAL_MS ); @@ -932,6 +933,7 @@ if ( ( TRUE == isZeroingAllowed ) && ( TRUE == didTimeout( bloodLeakZeroingStatus.driftInRangeStartTimeMS, BLD_ZERO_IN_RANGE_DRIFT_TIMEOUT_MS ) ) ) { + SEND_EVENT_WITH_2_F32_DATA( HD_EVENT_BLOOD_LEAK_DRIFT_IN_RANGE, driftMinFromTop, driftMaxFromTop ) status = TRUE; } Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rb9594d9ee1070dbefeaa9f5d56ec0ef2e38a6098 -r2ed28d3fdc3345c4a3d8f1684d1541f2a27467d8 --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision b9594d9ee1070dbefeaa9f5d56ec0ef2e38a6098) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 2ed28d3fdc3345c4a3d8f1684d1541f2a27467d8) @@ -69,7 +69,6 @@ typedef struct { F32 DPiToBLDFlushedVolML; ///< Dialysate inlet pump to blood leak flushed volume in milliliters. - BOOL hasBloodLeakZeroingBeenCompleted; ///< Flag to indicate blood leak zeroing has been completed successfully. BOOL hasBloodLeakZeroingBeenRequested; ///< Flag to indicate blood leak zeroing has been requested. BOOL isZeroingRequestedFromTreatmentStop; ///< Flag to indicate blood leak zeroing has been requested from treatment stop. BLOOD_LEAK_ZEROING_STATE_T bloodLeakZeroingState; ///< Blood leak zeroing state. @@ -685,8 +684,9 @@ if ( ( TRUE == isBloodLeakZeroingNeeded() ) && ( DIALYSIS_UF_STATE == currentDialysisState ) ) { + // Reset the blood leak zeroing variables + resetBloodLeakZeroing(); requestBloodLeakZeroing( FALSE ); - signalInitiatePressureStabilization( USE_NORMAL_STABILIZATION_PERIOD ); } // Dialysis state machine @@ -1135,8 +1135,6 @@ bloodLeakZeroingStatus.DPiToBLDFlushedVolML = 0.0F; // Cmd all pumps to stop - // TODO do we need to stop the dialysate pump? - //setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); stopSyringePump(); @@ -1513,6 +1511,11 @@ { bloodLeakZeroingStatus.hasBloodLeakZeroingBeenRequested = TRUE; bloodLeakZeroingStatus.isZeroingRequestedFromTreatmentStop = isRequestFromTreatmentStop; + + if ( FALSE == isRequestFromTreatmentStop ) + { + signalInitiatePressureStabilization( USE_NORMAL_STABILIZATION_PERIOD ); + } } /*********************************************************************//** @@ -1527,7 +1530,6 @@ { bloodLeakZeroingStatus.DPiToBLDFlushedVolML = 0.0F; bloodLeakZeroingStatus.bloodLeakZeroingState = BLD_ZEROING_IDLE_STATE; - bloodLeakZeroingStatus.hasBloodLeakZeroingBeenCompleted = FALSE; bloodLeakZeroingStatus.hasBloodLeakZeroingBeenRequested = FALSE; bloodLeakZeroingStatus.isZeroingRequestedFromTreatmentStop = FALSE; }