Index: firmware/App/Modes/BloodPrime.c =================================================================== diff -u -rf9a866abfc44db38c01cb795fea894cce1042eec -r38355442b06187fe5d57deca647b3adf2fa26b89 --- firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision f9a866abfc44db38c01cb795fea894cce1042eec) +++ firmware/App/Modes/BloodPrime.c (.../BloodPrime.c) (revision 38355442b06187fe5d57deca647b3adf2fa26b89) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file BloodPrime.c * -* @author (last) Dara Navaei -* @date (last) 01-Sep-2022 +* @author (last) Michael Garthwaite +* @date (last) 15-May-2023 * * @author (original) Sean Nash * @date (original) 06-Feb-2021 @@ -36,10 +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 DEFAULT_BLOOD_PRIME_VOLUME_ML 300.0F ///< Default blood prime volume (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 @@ -67,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 ********** @@ -93,8 +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; - bloodPrimeTargetVolume_mL = DEFAULT_BLOOD_PRIME_VOLUME_ML; resetBloodPrimeFlags(); bloodPrimeTargetVolume_mL = (F32)TUBING_BLOOD_PRIME_VOLUME_ML + (F32)getDialyzerBloodVolume(); @@ -145,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(); @@ -228,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 ) @@ -239,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 @@ -298,7 +282,7 @@ bloodPrimePublishTimerCtr = 0; data.targetBloodPrimeVolumeMl = bloodPrimeTargetVolume_mL; data.deliveredBloodPrimeVolumeMl = MAX( 0.0, getBloodPrimeVolume() ); - broadcastData( MSG_ID_HD_BLOOD_PRIME_PROGRESS, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( BLOOD_PRIME_DATA_PAYLOAD_T ) ); + broadcastData( MSG_ID_HD_BLOOD_PRIME_PROGRESS_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( BLOOD_PRIME_DATA_PAYLOAD_T ) ); } }