Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r7325348a8b5fce9101d0f68d89c791d48e1a3575 -rce3e0696642099164fa482c864509c67ce65579b --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 7325348a8b5fce9101d0f68d89c791d48e1a3575) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ce3e0696642099164fa482c864509c67ce65579b) @@ -775,7 +775,7 @@ * @param almData2 2nd data associated with alarm * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastAlarmTriggered( U16 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ) +BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ) { BOOL result; MESSAGE_T msg; @@ -784,10 +784,10 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_ALARM_TRIGGERED; - msg.hdr.payloadLen = sizeof( U16 ) + sizeof( U32 ) * 2 * 2; // 2 alarm data recs w/ 2 32-bit values each + msg.hdr.payloadLen = sizeof( U32 ) + sizeof( U32 ) * 2 * 2; // 2 alarm data recs w/ 2 32-bit values each - memcpy( payloadPtr, &alarm, sizeof( U16 ) ); - payloadPtr += sizeof( U16 ); + memcpy( payloadPtr, &alarm, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &almData1.dataType, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &almData1.data, sizeof( U32 ) ); @@ -811,7 +811,7 @@ * @param alarm ID of alarm cleared * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastAlarmCleared( U16 alarm ) +BOOL broadcastAlarmCleared( U32 alarm ) { BOOL result; MESSAGE_T msg; @@ -820,9 +820,9 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_ALARM_CLEARED; - msg.hdr.payloadLen = sizeof( U16 ); + msg.hdr.payloadLen = sizeof( U32 ); - memcpy( payloadPtr, &alarm, sizeof( U16 ) ); + memcpy( payloadPtr, &alarm, sizeof( U32 ) ); // 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_ALARM, ACK_REQUIRED ); @@ -840,7 +840,7 @@ * @param alarm ID of alarm that has had it's condition cleared * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastAlarmConditionCleared( U16 alarm ) +BOOL broadcastAlarmConditionCleared( U32 alarm ) { BOOL result; MESSAGE_T msg; @@ -849,9 +849,9 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_ALARM_CONDITION_CLEARED; - msg.hdr.payloadLen = sizeof( U16 ); + msg.hdr.payloadLen = sizeof( U32 ); - memcpy( payloadPtr, &alarm, sizeof( U16 ) ); + memcpy( payloadPtr, &alarm, sizeof( U32 ) ); // 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_ALARM, ACK_REQUIRED ); @@ -1269,14 +1269,14 @@ *************************************************************************/ void handleAlarmTriggered( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == ( sizeof( U16 ) + sizeof( U32 ) * 2 * 2 ) ) // 2 data records w/ 2 U32s each + if ( message->hdr.payloadLen == ( sizeof( U32 ) + sizeof( U32 ) * 2 * 2 ) ) // 2 data records w/ 2 U32s each { U08 *payloadPtr = message->payload; - U16 alarmID; + U32 alarmID; ALARM_DATA_T alm1, alm2; - memcpy( &alarmID, payloadPtr, sizeof( U16 ) ); - payloadPtr += sizeof( U16 ); + memcpy( &alarmID, payloadPtr, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); memcpy( &alm1.dataType, payloadPtr, sizeof( U32 ) ); payloadPtr += sizeof( U32 ); memcpy( &alm1.data, payloadPtr, sizeof( U32 ) ); @@ -1302,12 +1302,12 @@ *************************************************************************/ void handleAlarmCleared( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == sizeof( U16 ) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { U08 *payloadPtr = message->payload; - U16 alarmID; + U32 alarmID; - memcpy( &alarmID, payloadPtr, sizeof( U16 ) ); + memcpy( &alarmID, payloadPtr, sizeof( U32 ) ); if ( (ALARM_ID_T)alarmID < NUM_OF_ALARM_IDS ) { @@ -1326,12 +1326,12 @@ *************************************************************************/ void handleAlarmUserAction( MESSAGE_T *message ) { - if ( message->hdr.payloadLen == sizeof( U16 ) ) + if ( message->hdr.payloadLen == sizeof( U32 ) ) { U08 *payloadPtr = message->payload; - U16 action; + U32 action; - memcpy( &action, payloadPtr, sizeof( U16 ) ); + memcpy( &action, payloadPtr, sizeof( U32 ) ); if ( (ALARM_USER_ACTION_T)action < NUMBER_OF_ALARM_USER_ACTIONS ) { @@ -1762,6 +1762,65 @@ return result; } +/*********************************************************************//** + * @brief + * The handleUFVolumeSetRequest function handles a UF volume treatment parameter + * set and validate request message from the UI. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleUFVolumeSetRequest( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + if ( message->hdr.payloadLen == sizeof(F32) ) + { + F32 uFVolumeMl; + + memcpy( &uFVolumeMl, message->payload, sizeof(F32) ); + + result = validateAndSetUFVolume( uFVolumeMl ); + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, result ); +} + +/*********************************************************************//** + * @brief + * The sendUFVolumeSetResponseMsg function constructs a UF volume treatment parameter + * response to the UI and queues the msg for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: UF volume treatment parameter response msg constructed and queued. + * @param accepted T/F - is UF volume setting accepted? + * @param rejectReasons reason UF volume setting was rejected (if not accepted) + * @param uFVolumeMl UF volume (in mL) value that is now in place + * @return TRUE if msg successfully queued for transmit, FALSE if not + *************************************************************************/ +BOOL sendUFVolumeSetResponseMsg( BOOL accepted, U32 reason, F32 uFVolumeMl ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_SET_UF_VOLUME_PARAMETER_RESPONSE; + msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ) + sizeof( F32 ); + + memcpy( payloadPtr, &accepted, sizeof( BOOL ) ); + payloadPtr += sizeof( BOOL ); + memcpy( payloadPtr, &reason, sizeof( U32 ) ); + payloadPtr += sizeof( U32 ); + memcpy( payloadPtr, &uFVolumeMl, sizeof( F32 ) ); + + // 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 handleChangeUFSettingsRequest function handles a ultrafiltration