Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r0295b0641d2f7eb2f61bf1d7901134cf9b893afb -rf3b83f75a19b975ad1abead662c8151a2907ac00 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 0295b0641d2f7eb2f61bf1d7901134cf9b893afb) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision f3b83f75a19b975ad1abead662c8151a2907ac00) @@ -25,7 +25,6 @@ #include "DialInFlow.h" #include "Dialysis.h" #include "FPGA.h" -#include "MessagePayloads.h" #include "ModeStandby.h" #include "ModeTreatment.h" #include "ModeTreatmentParams.h" @@ -407,8 +406,37 @@ result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); return result; -} - +} + +/*********************************************************************//** + * @brief + * The sendChangePressureLimitsChangeResponse function constructs a change + * pressure limits response to the UI and queues the msg for transmit on the + * appropriate CAN channel. + * @details Inputs: none + * @details Outputs: Pressure limits change response msg constructed and queued. + * @param data response data record + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendChangePressureLimitsChangeResponse( PRESSURE_LIMIT_CHANGE_RESPONSE_T *data ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_PRESSURE_LIMITS_CHANGE_RESPONSE; + msg.hdr.payloadLen = sizeof( PRESSURE_LIMIT_CHANGE_RESPONSE_T ); + + memcpy( payloadPtr, (U08*)data, sizeof( PRESSURE_LIMIT_CHANGE_RESPONSE_T ) ); + + // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); + + return result; +} + /*********************************************************************//** * @brief * The sendTreatmentParamsRangesToUI function constructs a treatment parameter @@ -1733,8 +1761,33 @@ { sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); } -} - +} + +/*********************************************************************//** + * @brief + * The handleChangePressureLimitsRequest function handles a pressure limits + * change message from the UI. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleChangePressureLimitsRequest( MESSAGE_T *message ) +{ + if ( sizeof( PRESSURE_LIMIT_CHANGE_REQUEST_T ) == message->hdr.payloadLen ) + { + PRESSURE_LIMIT_CHANGE_REQUEST_T data; + + memcpy( &data, &message->payload[0], sizeof(PRESSURE_LIMIT_CHANGE_REQUEST_T) ); + + verifyPressureLimitsChange( &data ); + } + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } +} + /*********************************************************************//** * @brief * The handleDGOpMode function handles a DG broadcast of it's current mode.