Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -rc9084eb8f7c63d230e64fb7e5d641f6b80b918c7 -rdae01c2b3dcc48247aee6b41888d2dcd3bab9c2e --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision c9084eb8f7c63d230e64fb7e5d641f6b80b918c7) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision dae01c2b3dcc48247aee6b41888d2dcd3bab9c2e) @@ -59,22 +59,31 @@ /// Defined states for the Load Cell cycles. typedef enum Reservoir_Steady_Cycle { - RESERVOIR_STEADY_CYCLE_START = 0, ///< Reservoir steady cycle load cell reading at Start - RESERVOIR_STEADY_CYCLE_FINAL, ///< Reservoir steady cycle load cell reading at Final - NUM_OF_RESERVOIR_STEADY_CYCLES ///< Number of Reservoir steady cycle load cell readings + RESERVOIR_STEADY_CYCLE_START = 0, ///< Reservoir steady cycle load cell reading at Start. + RESERVOIR_STEADY_CYCLE_FINAL, ///< Reservoir steady cycle load cell reading at Final. + NUM_OF_RESERVOIR_STEADY_CYCLES ///< Number of Reservoir steady cycle load cell readings. } RESERVOIR_STEADY_CYCLE_T; +/// Blood leak zeroing request status +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 typedef struct { - F32 DPi2BLDFlushedVolML; ///< Dialysate inlet pump to blood leak flushed volume in milliliters. - 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_STATE_T bloodLeakZeroingState; ///< Blood leak zeroing state. + F32 DPi2BLDFlushedVolML; ///< Dialysate inlet pump to blood leak flushed volume in milliliters. + 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. + 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 ; static DIALYSIS_STATE_T currentDialysisState; ///< Current state of the dialysis sub-mode state machine. @@ -188,7 +197,7 @@ } resetSalineBolus(); - resetBloodLeakZeroing(); + resetBloodLeakZeroingVariables(); } /*********************************************************************//** @@ -243,6 +252,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 +709,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 ); } } @@ -1340,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; @@ -1581,6 +1591,7 @@ { bloodLeakZeroingStatus.hasBloodLeakZeroingBeenRequested = TRUE; bloodLeakZeroingStatus.isZeroingRequestedFromTreatmentStop = isRequestFromTreatmentStop; + bloodLeakZeroingStatus.zeroingRequestState = BLOOD_LEAK_ZEROING_RQST_IN_PROGRESS; if ( FALSE == isRequestFromTreatmentStop ) { @@ -1592,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; } /*********************************************************************//**