Index: firmware/App/Modes/Prime.c =================================================================== diff -u -rc505a4234cdecb0433432090640528e7ca09f5c7 -re2cf7feff54dad3fc5be72619fa64b5421fc6f9f --- firmware/App/Modes/Prime.c (.../Prime.c) (revision c505a4234cdecb0433432090640528e7ca09f5c7) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision e2cf7feff54dad3fc5be72619fa64b5421fc6f9f) @@ -7,8 +7,8 @@ * * @file Prime.c * -* @author (last) James Walter Taylor -* @date (last) 18-Aug-2023 +* @author (last) Vinayakam Mani +* @date (last) 29-Aug-2023 * * @author (original) Quang Nguyen * @date (original) 08-Dec-2020 @@ -40,7 +40,6 @@ #define MAX_PRIME_TIME ( 30 * SEC_PER_MIN ) ///< Maximum prime time (in seconds). #define PRIME_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the prime data is published on the CAN bus. -#define BLOOD_PUMP_FAST_FLOW_RATE_PURGE_AIR_ML_MIN 300 ///< Blood pump fast flow rate to fill fluid. #define BLOOD_PUMP_SLOW_FLOW_RATE_PURGE_AIR_ML_MIN 150 ///< Blood pump slow flow rate after fluid reach lower level of air trap sensor. #define BLOOD_PUMP_SALINE_FLOW_RATE_PURGE_AIR_ML_MIN 200 ///< Blood pump very slow flow rate during prime saline dialyzer state #define BLOOD_PUMP_SLOW_FLOW_RATE_CIRC_BLOOD_CIRCUIT_ML_MIN 150 ///< Blood pump slow flow rate during prime recirculate blood circuit state. @@ -130,7 +129,6 @@ static BOOL primeStartRequested; ///< Flag indicates user requesting to start prime. static BOOL primeResumeRequested; ///< Flag indicates user requesting prime resume. -static BOOL primeFirstPurgePass; ///< Flag indicates to transition to a faster purge speed. static U32 noAirDetectedStartTime; ///< starting time when detecting no air. static U32 purgeAirTimeOutStartTime; ///< Starting time for purge air state time out. @@ -196,7 +194,6 @@ void transitionToPrime( void ) { primeStartTime = getMSTimerCount(); - primeFirstPurgePass = TRUE; setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); @@ -460,7 +457,7 @@ * @brief * The purgeAirValvesBloodPumpControl function controls valves and blood pump * to purge air. - * @details Inputs: primeFirstPurgePass + * @details Inputs: None * @details Outputs: run blood pump, close VDI, VDO, VBA and VBV valves, open VBT valve * @return current state (sub-mode) *************************************************************************/ @@ -474,14 +471,10 @@ signalDialOutPumpHardStop(); signalDialInPumpHardStop(); - if ( FALSE == primeFirstPurgePass ) - { - setBloodPumpTargetFlowRate( BLOOD_PUMP_FAST_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - } - else - { - setBloodPumpTargetFlowRate( BLOOD_PUMP_SLOW_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - } + + // Set the Blood Pump rate to 150 mL/min that helps to avoid entering saline bubbles in to PBo line + setBloodPumpTargetFlowRate( BLOOD_PUMP_SLOW_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + } /*********************************************************************//** @@ -635,8 +628,8 @@ * @brief * The handlePrimePurgeAirState function checks for air trap level and moves * to blood circuit circulation state if fluid is detected at upper sensor. - * @details Inputs: air trap levels, primeFirstPurgePass, purgeAirTimeOutStartTime - * @details Outputs: runs blood pump, control valves to trap air, primeFirstPurgePass + * @details Inputs: air trap levels, purgeAirTimeOutStartTime + * @details Outputs: runs blood pump, control valves to trap air * noAirDetectedStartTime * @return current state *************************************************************************/ @@ -661,9 +654,6 @@ setBloodPumpTargetFlowRate( BLOOD_PUMP_FAST_FLOW_RATE_CIRC_BLOOD_CIRCUIT_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - // Once the dialyzer is no longer dry from the first pass of purge air, we can set flow to the fast rate - // until we are in a new priming state. - primeFirstPurgePass = FALSE; noAirDetectedStartTime = getMSTimerCount(); primeDialyzerBubbleClearState = PRIME_BUBBLE_CLEAR_COMPLETE_STATE; state = HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE;