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 Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r82a7dfcafb8524efb11a5e92bcd97945802a0180 -rc7f561ca059b4fada1250823c6462bda68d39587 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 82a7dfcafb8524efb11a5e92bcd97945802a0180) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision c7f561ca059b4fada1250823c6462bda68d39587) @@ -99,6 +99,8 @@ /// Message handling function lookup table static const MSG_HANDLER_LOOKUP_T MSG_FUNCTION_HANDLER_LOOKUP[] = { + { MSG_ID_UI_BLOOD_PRIME_CMD_REQUEST, &bloodPrimeHandleCmdRequest }, + { MSG_ID_UI_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_REQUEST, &bloodPrimeHandleBloodFlowChangeRequest }, { MSG_ID_ALARM_TRIGGERED, &handleAlarmTriggered }, { MSG_ID_ALARM_CONDITION_CLEARED, &handleAlarmConditionCleared }, { MSG_ID_UI_ALARM_USER_ACTION_REQUEST, &handleAlarmUserAction }, @@ -181,8 +183,6 @@ { MSG_ID_TD_EJECTOR_OPT_SENSOR_OVERRIDE_REQUEST, &testEjectorOpticalSensorOverride }, { MSG_ID_TD_BLOOD_PRIME_VOLUME_OVERRIDE, &testBloodPrimeVolumeOverride }, { MSG_ID_TD_BLOOD_PRIME_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testBloodPrimePublishIntervalOverride }, - { MSG_ID_UI_BLOOD_PRIME_CMD_REQUEST, &bloodPrimeHandleCmdRequest }, - { MSG_ID_UI_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_REQUEST, &bloodPrimeHandleBloodFlowChangeRequest }, }; #define NUM_OF_FUNCTION_HANDLERS (sizeof(MSG_FUNCTION_HANDLER_LOOKUP) / sizeof(MSG_HANDLER_LOOKUP_T))