Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -r4ddf1777acc4298a9ed034e56b66916256d22c18 -r38355442b06187fe5d57deca647b3adf2fa26b89 --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 4ddf1777acc4298a9ed034e56b66916256d22c18) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 38355442b06187fe5d57deca647b3adf2fa26b89) @@ -7,8 +7,8 @@ * * @file BloodPrime.c * -* @author (last) Sean Nash -* @date (last) 24-Jan-2023 +* @author (last) Michael Garthwaite +* @date (last) 15-May-2023 * * @author (original) Sean Nash * @date (original) 06-Feb-2021 @@ -36,9 +36,7 @@ // ********** private definitiions *********** -#define TUBING_BLOOD_PRIME_VOLUME_ML 80.0F ///< Target blood prime volume to prime the blood side circuit (in mL). -#define MAX_BLOOD_PRIME_VOLUME_ERROR_ML 60.0F ///< Maximum error in total additional blood prime volume (20% of total). -#define MIN_RAMP_TIME_SEC 60 ///< Minimum ramp time for blood prime (in seconds). +#define MIN_RAMP_TIME_SEC 60 ///< Minimum ramp time for blood prime (in seconds). /// Initial flow rate for blood pump when starting blood prime operation. #define BLOOD_PRIME_INIT_BP_FLOW_RATE_ML_MIN 100 @@ -66,7 +64,6 @@ static OVERRIDE_U32_T bloodPrimePublishInterval = { BLOOD_PRIME_DATA_PUBLISH_INTERVAL, BLOOD_PRIME_DATA_PUBLISH_INTERVAL, BLOOD_PRIME_DATA_PUBLISH_INTERVAL, 0 }; static OVERRIDE_F32_T cumulativeBloodPrimeVolume_mL = { 0.0, 0.0, 0.0, 0 }; ///< Total cumulative blood prime volume (in mL) from measured blood flow rate. -static F32 expectedBloodPrimeVolume_mL = 0.0; ///< Total cumulative blood prime volume (in mL) expected based on target blood flow rate. // ********** private function prototypes ********** @@ -92,7 +89,6 @@ bloodPrimeRampControlTimerCtr = 0; bloodPrimePublishTimerCtr = BLOOD_PRIME_DATA_PUBLISH_INTERVAL - 2; // setup so publish will occur time after next cumulativeBloodPrimeVolume_mL.data = 0.0; - expectedBloodPrimeVolume_mL = 0.0; resetBloodPrimeFlags(); bloodPrimeTargetVolume_mL = (F32)TUBING_BLOOD_PRIME_VOLUME_ML + (F32)getDialyzerBloodVolume(); @@ -143,6 +139,7 @@ setBloodPumpTargetFlowRate( (U32)bloodPrimeRampFlowRate_mL_min, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( DIALYSATE_FLOW_RATE_FOR_RECIRC, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); cmdStartDGTrimmerHeater(); + setCurrentSubState( NO_SUB_STATE ); // Start air trap control startAirTrapControl(); @@ -226,7 +223,6 @@ // Update blood prime volume delivered so far cumulativeBloodPrimeVolume_mL.data += ( getMeasuredBloodFlowRate() * BLOOD_PRIME_FLOW_INTEGRATOR ); - expectedBloodPrimeVolume_mL += ( (F32)getTargetBloodFlowRate() * BLOOD_PRIME_FLOW_INTEGRATOR ); // Has blood prime completed? if ( getBloodPrimeVolume() >= bloodPrimeTargetVolume_mL ) @@ -237,16 +233,6 @@ signalBloodPrimeToDialysis(); // Signal treatment mode that it's time to start dialysis cmdStopDGTrimmerHeater(); // Stop trimmer heater - dialysis sub-mode will restart as appropriate } - // Is blood prime taking too long based on set BP rate? - else if ( fabs( expectedBloodPrimeVolume_mL - getBloodPrimeVolume() ) > MAX_BLOOD_PRIME_VOLUME_ERROR_ML ) - { -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_PUMP_FLOW_CHECKS ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - activateAlarmNoData( ALARM_ID_BLOOD_PRIME_VOLUME_CHECK_FAILURE ); - } - } else { // ramp blood pump on ramp interval