Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rf2bca231c02c9afbb6600556a18eac29a8058d5f -r6aeb55fc06ec5d67c24596986a22d909bfc91943 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision f2bca231c02c9afbb6600556a18eac29a8058d5f) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6aeb55fc06ec5d67c24596986a22d909bfc91943) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2023 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file SystemCommMessages.c * * @author (last) Dara Navaei -* @date (last) 20-Oct-2023 +* @date (last) 30-Jan-2024 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -292,27 +292,20 @@ { BOOL result; MESSAGE_T msg; - U08 *payloadPtr = msg.payload; - U32 e = (U32)event; - // Convert the two data types enums to U32. The enums are interpreted as a U08 by the compiler - U32 dataType1 = (U32)dat1.dataType; - U32 dataType2 = (U32)dat2.dataType; + EVENT_PAYLOAD_T eventStruct; + eventStruct.event = (U32)event; + eventStruct.dataType1 = (U32)dat1.dataType; + eventStruct.data1 = dat1.data; + eventStruct.dataType2 = (U32)dat2.dataType; + eventStruct.data2 = dat2.data; + // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_EVENT; - // The payload length is the event ID, 2 event datas and the events data types for each of the event data - msg.hdr.payloadLen = sizeof( U32 ) + 2 * sizeof( EVENT_DATAS_T ) + 2 * sizeof( U32 ); + msg.hdr.msgID = MSG_ID_DG_EVENT; + msg.hdr.payloadLen = sizeof( EVENT_PAYLOAD_T ); - memcpy( payloadPtr, &e, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &dataType1, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &dat1.data, sizeof( EVENT_DATAS_T ) ); - payloadPtr += sizeof( EVENT_DATAS_T ); - memcpy( payloadPtr, &dataType2, sizeof( U32 ) ); - payloadPtr += sizeof( U32 ); - memcpy( payloadPtr, &dat2.data, sizeof( EVENT_DATAS_T ) ); + memcpy( &msg.payload, &eventStruct, sizeof( EVENT_PAYLOAD_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_DG_2_UI, ACK_NOT_REQUIRED ); @@ -639,6 +632,8 @@ MESSAGE_T msg; DG_ACID_CONCENTRATES_RECORD_T acid; DG_BICARB_CONCENTRATES_RECORD_T bicarb; + F32 acidConcMixRatio = 0.0F; + F32 bicarbConcMixRatio = 0.0F; // By the time these are requested, the prepare time is no longer needed since the concentrate lines are // primed before the actual treatment starts U32 fillPrepTimeMS = 0; @@ -647,15 +642,18 @@ getAcidConcentrateCalRecord( &acid ); getBicarbConcentrateCalRecord( &bicarb ); + acidConcMixRatio = acid.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidConcMixRatio; + bicarbConcMixRatio = bicarb.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbConcMixRatio; + // Create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_DG_CONCENTRATE_MIXING_RATIOS_DATA; msg.hdr.payloadLen = sizeof( F32 ) + sizeof( F32 ) + sizeof( U32 ); // Fill message payload - memcpy( payloadPtr, &acid.acidConcentrate[ CAL_DATA_ACID_CONCENTRATE_1 ].acidConcMixRatio, sizeof( F32 ) ); + memcpy( payloadPtr, &acidConcMixRatio, sizeof( F32 ) ); payloadPtr += sizeof( F32 ); - memcpy( payloadPtr, &bicarb.bicarbConcentrate[ CAL_DATA_BICARB_CONCENTRATE_1 ].bicarbConcMixRatio, sizeof( F32 ) ); + memcpy( payloadPtr, &bicarbConcMixRatio, sizeof( F32 ) ); payloadPtr += sizeof( U32 ); memcpy( payloadPtr, &fillPrepTimeMS, sizeof( U32 ) ); @@ -1289,17 +1287,17 @@ *************************************************************************/ void handleUIClockSyncRequest( MESSAGE_T *message ) { - BOOL result = FALSE; - U32 rejReason = REQUEST_REJECT_REASON_NONE; MESSAGE_T msg; - U08 *payloadPtr = msg.payload; + BOOL result = FALSE; + U32 rejReason = REQUEST_REJECT_REASON_NONE; + U08 *payloadPtr = msg.payload; + U32 *messagePayload = (U32*)message->payload; if ( message->hdr.payloadLen == sizeof( U32 ) ) { U32 epoch; - memcpy( &epoch, message->payload, sizeof( U32 ) ); - isEpochValid ( epoch ); + memcpy( &epoch, messagePayload, sizeof( U32 ) ); result = setRTCEpoch( epoch ); if ( FALSE == result ) {