Index: firmware/App/Modes/Prime.c =================================================================== diff -u -r76a5589f5a6d68bcb35379c9977a50a57056b299 -r9a9770851a76fde14c967fcc8d492e6909595e6b --- firmware/App/Modes/Prime.c (.../Prime.c) (revision 76a5589f5a6d68bcb35379c9977a50a57056b299) +++ firmware/App/Modes/Prime.c (.../Prime.c) (revision 9a9770851a76fde14c967fcc8d492e6909595e6b) @@ -46,7 +46,7 @@ #define BLOOD_PUMP_FLOW_RATE_SALINE_DIALYZER_ML_MIN 300 ///< Blood pump flow rate during prime the saline dialyzer dialysate state. #define DIALYSATE_DIALYZER_TUBE_VOLUME_ML 115 ///< This total tube volume is used to calculate the Dpi & Dpo time out in the dialysate dialyzer state. -#define DIALYSATE_DIALYZER_BYPASS_TUBE_VOLUME_ML 30 ///< This volume is used to calculate the DPi pump time out in the dialyzer bypass state +#define DIALYSATE_DIALYZER_BYPASS_TUBE_VOLUME_ML 75 ///< This volume is used to calculate the DPi pump time out in the dialyzer bypass state #define DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN 300 ///< Dialysate pump flow rate during priming fluid path. #define LOAD_CELL_VOLUME_NOISE_TOLERANCE 5.00 ///< Allow 5 mL tolerance on load cell readings. @@ -55,8 +55,8 @@ #define PURGE_AIR_TIME_OUT_COUNT ( 60 * MS_PER_SECOND ) ///< Time period count for purge air time out. #define LOAD_CELL_STEADY_VOLUME_SAMPLING_TIME ( 1 * MS_PER_SECOND ) ///< Time load cell reading steady state detection sampling time in seconds. //#define PRIME_DIALYSATE_DIALYZER_TIME_LIMIT ( 120 * MS_PER_SECOND ) ///< Time limit for priming dialysate dialyzer circuit. -#define PRIME_DIALYSATE_BYPASS_TIME_LIMIT ( 6 * MS_PER_SECOND ) ///< Time limit for priming dialysate bypass circuit. -//#define PRIME_SALINE_DIALYZER_TIME_LIMIT ( 120 * MS_PER_SECOND ) ///< Two minutes time limit for priming saline dialyzer path. +#define PRIME_DIALYSATE_BYPASS_TIME_LIMIT ( 15 * MS_PER_SECOND ) ///< Time limit for priming dialysate bypass circuit. +#define PRIME_SALINE_DIALYZER_TIME_LIMIT ( 7 * MS_PER_SECOND ) ///< Time limit for priming saline dialyzer path. /// States of the treatment reservoir management state machine. typedef enum PrimeReservoirMgmt_States @@ -86,10 +86,7 @@ { 87, 233 }, { 102, 280 } }; -static U32 primeSalineDialyzerTimeLimit; ///< Time limit for priming saline dialyzer air valve path. static U32 primeDialysateDialyzerTimeLimit; ///< Time limit for priming dialysate dialyzer path. -static U32 primeSalineDialyzerDialysateTimeLimit; ///< Time limit for priming saline dialyzer dialysate path. -static U32 primeDialysateBypassTimeLimit; ///< Time limit for priming dialysate bypass path. static HD_PRE_TREATMENT_PRIME_STATE_T currentPrimeState; ///< Current state of the prime sub-mode state machine. static HD_PRE_TREATMENT_PRIME_STATE_T previousPrimeState; ///< Previous state of the prime sub-mode, to use when resuming from pause. @@ -430,7 +427,7 @@ signalDialOutPumpHardStop(); signalDialInPumpHardStop(); - setBloodPumpTargetFlowRate( BLOOD_PUMP_SALINE_FLOW_RATE_PURGE_AIR_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + setBloodPumpTargetFlowRate( BLOOD_PUMP_FLOW_RATE_SALINE_DIALYZER_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); } /*********************************************************************//** @@ -594,8 +591,8 @@ U32 dialyzerDialysateVolume = getDialyzerDialysateVolume(); // Calculate the time out value that must passed prior to checking for the steady state volume in the reservoir - primeDialysateDialyzerTimeLimit = ( ( DIALYSATE_DIALYZER_TUBE_VOLUME_ML + dialyzerDialysateVolume ) * 60 ) / DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN; - previousReservoirVolume = 0.0;. + primeDialysateDialyzerTimeLimit = (U32)( ( ( DIALYSATE_DIALYZER_TUBE_VOLUME_ML + dialyzerDialysateVolume ) * 60 ) / DIALYSATE_PUMP_PRIME_FLOW_RATE_ML_MIN ); + previousReservoirVolume = 0.0; steadyVolumeCount = 0; loadcellSteadyVolumeStartTime = getMSTimerCount(); primeDialysateDialyzerStartTime = getMSTimerCount(); @@ -667,7 +664,7 @@ } else { - loadcellSteadyVolumeStartTime = getMSTimerCount(); // re-init this timer if 120 sec has not expired + loadcellSteadyVolumeStartTime = getMSTimerCount(); } if ( TRUE == didTimeout( primeDialysateDialyzerStartTime, primeDialysateDialyzerTimeLimit + 55 ) ) @@ -696,8 +693,6 @@ { HD_PRE_TREATMENT_PRIME_STATE_T state = HD_PRIME_SALINE_DIALYZER_STATE; - U32 dialyzerBloodVolume = getDialyzerBloodVolume(); // get the dialyzer blood channel volume from the table - primeSalineDialyzerDialysateTimeLimit = ( dialyzerBloodVolume * 60 ) / BLOOD_PUMP_FLOW_RATE_SALINE_DIALYZER_ML_MIN; primeSalineDialyzerStartTime = getMSTimerCount(); purgeAirDialyzerBloodPumpControl(); @@ -722,7 +717,7 @@ { HD_PRE_TREATMENT_PRIME_STATE_T state = HD_PRIME_SALINE_DIALYZER_STATE; - if ( TRUE == didTimeout( primeSalineDialyzerStartTime, primeSalineDialyzerDialysateTimeLimit ) ) + if ( TRUE == didTimeout( primeSalineDialyzerStartTime, PRIME_SALINE_DIALYZER_TIME_LIMIT ) ) { state = HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE; } @@ -834,7 +829,7 @@ } else { - loadcellSteadyVolumeStartTime = getMSTimerCount(); // re-init this timer if 120 sec has not expired + loadcellSteadyVolumeStartTime = getMSTimerCount(); } if ( TRUE == didTimeout( primeDialysateBypassStartTime, PRIME_DIALYSATE_BYPASS_TIME_LIMIT + 55 ) ) // allocate 55 seconds for the steady state logic to do its job before timing out