Index: firmware/App/Modes/StateTxBloodPrime.c =================================================================== diff -u -rc7f561ca059b4fada1250823c6462bda68d39587 -r35eaef35568eefc648519dab7e1d8e289dca2f8b --- firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision c7f561ca059b4fada1250823c6462bda68d39587) +++ firmware/App/Modes/StateTxBloodPrime.c (.../StateTxBloodPrime.c) (revision 35eaef35568eefc648519dab7e1d8e289dca2f8b) @@ -439,25 +439,42 @@ *************************************************************************/ BOOL bloodPrimeHandleBloodFlowChangeRequest( MESSAGE_T *message ) { - BOOL result = FALSE; + BOOL result = FALSE; + BOOL accepted = FALSE; REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT; - UI_RESPONSE_PAYLOAD_T response; if ( sizeof(U32) == message->hdr.payloadLen ) { U32 requestedRate; - memcpy( &requestedRate, message->payload, sizeof( U32 ) ); + memcpy( &requestedRate, message->payload, sizeof(U32) ); result = TRUE; - requestedBloodFlowRate_mL_min = requestedRate; - pendingFlowChangeRequest = TRUE; - rejReason = REQUEST_REJECT_REASON_NONE; + + if ( ( BLOOD_PRIME_RAMP_STATE == bloodPrimeState ) || ( BLOOD_PRIME_RUN_STATE == bloodPrimeState ) ) + { + if ( ( requestedRate >= 50 ) && ( requestedRate <= 500 ) ) + { + requestedBloodFlowRate_mL_min = requestedRate; + pendingFlowChangeRequest = TRUE; + accepted = TRUE; + rejReason = REQUEST_REJECT_REASON_NONE; + } + else + { + rejReason = REQUEST_REJECT_REASON_INVALID_COMMAND; + } + } + else + { + rejReason = REQUEST_REJECT_REASON_INVALID_COMMAND; + } } + { + UI_RESPONSE_PAYLOAD_T respPayload; + respPayload.accepted = accepted; + respPayload.rejectionReason = rejReason; + sendMessage( MSG_ID_TD_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&respPayload), sizeof(UI_RESPONSE_PAYLOAD_T) ); + } - // Respond to request - response.accepted = result; - response.rejectionReason = rejReason; - sendMessage( MSG_ID_TD_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_RESPONSE, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08*)(&response), sizeof( UI_RESPONSE_PAYLOAD_T ) ); - return result; }