Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r804715137aae49c89ffb871ba561d7498d19108a -rac2842e1727bf631b7249927f429bbf1368b75ba --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 804715137aae49c89ffb871ba561d7498d19108a) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision ac2842e1727bf631b7249927f429bbf1368b75ba) @@ -64,6 +64,14 @@ NUM_OF_RESERVOIR_STEADY_CYCLES ///< Number of Reservoir steady cycle load cell readings } RESERVOIR_STEADY_CYCLE_T; +typedef enum BLD_Zeroing_Request_Status +{ + BLOOD_LEAK_ZEROING_RQST_READY = 0, ///< Blood leak zeroing request ready. + BLOOD_LEAK_ZEROING_RQST_REQUESTED, ///< Blood leak zeroing request requested. + BLOOD_LEAK_ZEROING_RQST_IN_PROGRESS, ///< Blood leak zeroing request in progress. + NUM_OF_BLOOD_LEAK_ZEROING_RQST ///< Number of blood leak zeroing request. +} BLOOD_LEAK_ZEROING_RQST_T; + // ********** private data ********** /// Blood leak treatment zeroing data structure @@ -73,7 +81,7 @@ F32 rsrvr2DPiFlushedVolML; ///< Active reservoir to dialysate inlet pump flushed volume in milliliters. 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. - BOOL isZeroingNeededAfterRsrvrSwitch; ///< Flag to indicate blood leak zeroing is needed after reservoir switch. + BLOOD_LEAK_ZEROING_RQST_T zeroingRequestState; ///< Blood leak zeroing request state. BLOOD_LEAK_ZEROING_STATE_T bloodLeakZeroingState; ///< Blood leak zeroing state. } BLOOD_LEAK_ZEROING_T ; @@ -188,7 +196,7 @@ } resetSalineBolus(); - resetBloodLeakZeroing(); + resetBloodLeakZeroingVariables(); } /*********************************************************************//** @@ -243,6 +251,9 @@ resetReservoirsVariables(); + // Reset the blood leak zeroing variables + resetBloodLeakZeroingVariables(); + // Set valves for dialysis setValvePosition( VDI, VALVE_POSITION_B_OPEN ); setValvePosition( VDO, VALVE_POSITION_B_OPEN ); @@ -697,17 +708,15 @@ // Check ultrafiltration control during dialysis (even when ultrafiltration is paused). checkUFControl(); - if ( TRUE == isBloodLeakZeroingNeeded() ) + if ( ( TRUE == isBloodLeakZeroingNeeded() ) && ( BLOOD_LEAK_ZEROING_RQST_READY == bloodLeakZeroingStatus.zeroingRequestState ) ) { - bloodLeakZeroingStatus.isZeroingNeededAfterRsrvrSwitch = TRUE; + bloodLeakZeroingStatus.zeroingRequestState = BLOOD_LEAK_ZEROING_RQST_REQUESTED; } - if ( ( TRUE == bloodLeakZeroingStatus.isZeroingNeededAfterRsrvrSwitch ) && ( DIALYSIS_UF_STATE == currentDialysisState ) ) + if ( ( BLOOD_LEAK_ZEROING_RQST_REQUESTED == bloodLeakZeroingStatus.zeroingRequestState ) && ( DIALYSIS_UF_STATE == currentDialysisState ) ) { if ( TRUE == checkHasReservoirBeenSwitched() ) { - // Reset the blood leak zeroing variables - resetBloodLeakZeroing(); requestBloodLeakZeroing( FALSE ); } } @@ -1341,7 +1350,7 @@ data.bolSalineVolumeMl = bolusSalineVolumeDelivered_mL; data.bloodLeakZeroingDPi2BLDFlushVolumeML = bloodLeakZeroingStatus.DPi2BLDFlushedVolML; data.bloodLeakZeroingRsrvr2DPiFlushVolumeML = bloodLeakZeroingStatus.rsrvr2DPiFlushedVolML; - data.bloodLeakZeroingNeededAfterRsrvrSwitch = bloodLeakZeroingStatus.isZeroingNeededAfterRsrvrSwitch; + data.bloodLeakZeroingNeededAfterRsrvrSwitch = (U32)bloodLeakZeroingStatus.zeroingRequestState; broadcastData( MSG_ID_SALINE_BOLUS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( SALINE_BOLUS_DATA_PAYLOAD_T ) ); salineBolusBroadcastTimerCtr = 0; @@ -1582,6 +1591,7 @@ { bloodLeakZeroingStatus.hasBloodLeakZeroingBeenRequested = TRUE; bloodLeakZeroingStatus.isZeroingRequestedFromTreatmentStop = isRequestFromTreatmentStop; + bloodLeakZeroingStatus.zeroingRequestState = BLOOD_LEAK_ZEROING_RQST_IN_PROGRESS; if ( FALSE == isRequestFromTreatmentStop ) { @@ -1593,20 +1603,20 @@ /*********************************************************************//** * @brief - * The resetBloodLeakZeroingParameters function resets the blood leak zeroing - * parameters. + * The resetBloodLeakZeroingVariables function resets the blood leak zeroing + * variables. * @details Inputs: none * @details Outputs: bloodLeakZeroing * @return none *************************************************************************/ -void resetBloodLeakZeroing( void ) +void resetBloodLeakZeroingVariables( void ) { bloodLeakZeroingStatus.DPi2BLDFlushedVolML = 0.0F; bloodLeakZeroingStatus.rsrvr2DPiFlushedVolML = 0.0F; bloodLeakZeroingStatus.bloodLeakZeroingState = BLD_ZEROING_IDLE_STATE; bloodLeakZeroingStatus.hasBloodLeakZeroingBeenRequested = FALSE; bloodLeakZeroingStatus.isZeroingRequestedFromTreatmentStop = FALSE; - bloodLeakZeroingStatus.isZeroingNeededAfterRsrvrSwitch = FALSE; + bloodLeakZeroingStatus.zeroingRequestState = BLOOD_LEAK_ZEROING_RQST_READY; } /*********************************************************************//** Index: firmware/App/Modes/Dialysis.h =================================================================== diff -u -r804715137aae49c89ffb871ba561d7498d19108a -rac2842e1727bf631b7249927f429bbf1368b75ba --- firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision 804715137aae49c89ffb871ba561d7498d19108a) +++ firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision ac2842e1727bf631b7249927f429bbf1368b75ba) @@ -86,7 +86,7 @@ DIALYSIS_STATE_T execBloodLeakZeroing( void ); void requestBloodLeakZeroing( BOOL isRequestFromTreatmentStop ); -void resetBloodLeakZeroing( void ); +void resetBloodLeakZeroingVariables( void ); /**@}*/ Index: firmware/App/Modes/TreatmentStop.c =================================================================== diff -u -rb71077660606609cc3b06911ad4aaa2ffaebd9f2 -rac2842e1727bf631b7249927f429bbf1368b75ba --- firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision b71077660606609cc3b06911ad4aaa2ffaebd9f2) +++ firmware/App/Modes/TreatmentStop.c (.../TreatmentStop.c) (revision ac2842e1727bf631b7249927f429bbf1368b75ba) @@ -119,7 +119,7 @@ resetSalineBolus(); // Reset blood leak zeroing params - resetBloodLeakZeroing(); + resetBloodLeakZeroingVariables(); // Enable venous bubble detection (in case returning from mid-treatment rinseback) setVenousBubbleDetectionEnabled( TRUE );