Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -rf4545d449a2a2f9353307a55d2bce9e150591c3d -rc84daa1f07003427fc5cdde8f5651434478f7313 --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision f4545d449a2a2f9353307a55d2bce9e150591c3d) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision c84daa1f07003427fc5cdde8f5651434478f7313) @@ -81,7 +81,7 @@ #define BP_REV_PER_LITER 150.24 ///< rotor revolutions per liter #define BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( BP_REV_PER_LITER / ML_PER_LITER ) ///< conversion factor from mL/min to motor RPM. #define BP_GEAR_RATIO 32.0 ///< blood pump motor to blood pump gear ratio -#define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00028 //308 ///< ~28 BP motor RPM = 1% PWM duty cycle +#define BP_MOTOR_RPM_TO_PWM_DC_FACTOR 0.00028 ///< ~28 BP motor RPM = 1% PWM duty cycle #define BP_PWM_ZERO_OFFSET 0.1 ///< 10% PWM duty cycle = zero speed #define BP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * BP_GEAR_RATIO * BP_MOTOR_RPM_TO_PWM_DC_FACTOR + BP_PWM_ZERO_OFFSET ) ///< conversion factor from mL/min to estimated PWM duty cycle %. @@ -1317,10 +1317,11 @@ * @details * Inputs : none * Outputs : targetBloodFlowRate - * @param value : override target blood flow rate (in mL/min) + * @param value : override target blood flow rate (in mL/min) + * @param ctrlMode : override pump control mode to this mode (0 = closed loop, 1 = open loop) * @return TRUE if override successful, FALSE if not *************************************************************************/ -BOOL testSetTargetBloodFlowRateOverride( S32 value ) +BOOL testSetTargetBloodFlowRateOverride( S32 value, U32 ctrlMode ) { BOOL result = FALSE; @@ -1335,11 +1336,14 @@ else { dir = MOTOR_DIR_FORWARD; + } + if ( ctrlMode < NUM_OF_PUMP_CONTROL_MODES ) + { + targetBloodFlowRate.ovInitData = targetBloodFlowRate.data; // backup current target flow rate + targetBloodFlowRate.ovData = value; + targetBloodFlowRate.override = OVERRIDE_KEY; + result = setBloodPumpTargetFlowRate( ABS(value), dir, (PUMP_CONTROL_MODE_T)ctrlMode ); } - targetBloodFlowRate.ovInitData = targetBloodFlowRate.data; // backup current target flow rate - targetBloodFlowRate.ovData = value; - targetBloodFlowRate.override = OVERRIDE_KEY; - result = setBloodPumpTargetFlowRate( ABS(value), dir, bloodPumpControlMode ); } return result;