Index: firmware/App/Modes/StateTxBloodPrime.c =================================================================== diff -u -r8308ff18b580bdf0c47994ca74760be8b083dcac -rc7f561ca059b4fada1250823c6462bda68d39587 --- firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision 8308ff18b580bdf0c47994ca74760be8b083dcac) +++ firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision c7f561ca059b4fada1250823c6462bda68d39587) @@ -69,7 +69,7 @@ static U32 bloodPrimeRampControlTimerCtr; ///< Timer counter for determining interval for controlling BP ramp. static U32 bloodPrimePublishTimerCtr; ///< Timer counter for determining interval for blood prime status to be published. -static U32 lastBloodPrimeFlowRate_mL_min; ///< Timer counter for determining for last blood prime status. +static U32 lastBloodPrimeFlowRate_mL_min; ///< Flow rate prior to pausing blood prime. static U32 requestedBloodFlowRate_mL_min; ///< Requested blood flow rate from UI. /// Interval (in task intervals) at which to publish blood prime data to CAN bus. @@ -265,7 +265,8 @@ else if ( TRUE == pendingPauseRequest ) { pendingPauseRequest = FALSE; - lastBloodPrimeFlowRate_mL_min = getTargetBloodFlowRate(); + bloodPrimeResumeState = BLOOD_PRIME_RAMP_STATE; + lastBloodPrimeFlowRate_mL_min = (F32)getTargetBloodFlowRate(); setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); // Close art/ven pinch valves setValvePosition( H1_VALV, VALVE_POSITION_C_CLOSE ); @@ -276,7 +277,9 @@ else if ( TRUE == pendingFlowChangeRequest ) { pendingFlowChangeRequest = FALSE; - setBloodPumpTargetFlowRate( requestedBloodFlowRate_mL_min, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + bloodPrimeRampFlowRate_mL_min = (F32)requestedBloodFlowRate_mL_min; + // To ensure resume returns to RUN state + bloodPrimeResumeState = BLOOD_PRIME_RUN_STATE; result = BLOOD_PRIME_RUN_STATE; } else @@ -354,7 +357,7 @@ { pendingResumeRequest = FALSE; setBloodPumpTargetFlowRate( (U32)lastBloodPrimeFlowRate_mL_min, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - // open art/ven pinch valves + // Open art/ven pinch valves setValvePosition( H1_VALV, VALVE_POSITION_B_OPEN ); setValvePosition( H19_VALV, VALVE_POSITION_B_OPEN ); // Return to state prior to pause @@ -406,7 +409,7 @@ { pendingPauseRequest = TRUE; } - if ( REQUESTED_USER_ACTION_BLOOD_PRIME_RESUME == action ) + else { pendingResumeRequest = TRUE; } @@ -442,10 +445,12 @@ if ( sizeof(U32) == message->hdr.payloadLen ) { - memcpy( &requestedBloodFlowRate_mL_min, message->payload, sizeof( U32 ) ); + U32 requestedRate; + memcpy( &requestedRate, message->payload, sizeof( U32 ) ); result = TRUE; - rejReason = REQUEST_REJECT_REASON_NONE; + requestedBloodFlowRate_mL_min = requestedRate; pendingFlowChangeRequest = TRUE; + rejReason = REQUEST_REJECT_REASON_NONE; } // Respond to request