Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r56b75f69ad7964feb825429db978de284095e0cb -rec40ff879ab8f621fa4cff35f0d69c2804f69c12 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 56b75f69ad7964feb825429db978de284095e0cb) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ec40ff879ab8f621fa4cff35f0d69c2804f69c12) @@ -3065,27 +3065,28 @@ HD_VERSIONS_T payload; U08 *payloadPtr = msg.payload; - U32 len = message->hdr.payloadLen; + if ( message->hdr.payloadLen == sizeof( U08 ) + sizeof( U08 ) + sizeof( U08 ) + sizeof( U16 ) + sizeof( U32 ) ) + { + // Get UI version data from this request msg and have it recorded + handleUIVersionResponse( message ); - // Get UI version data from this request msg and have it recorded - handleUIVersionResponse( message ); + // Populate payload for response + payload.major = (U08)HD_VERSION_MAJOR; + payload.minor = (U08)HD_VERSION_MINOR; + payload.micro = (U08)HD_VERSION_MICRO; + payload.build = (U16)HD_VERSION_BUILD; + payload.compatibilityRev = (U32)SW_COMPATIBILITY_REV; + getFPGAVersions( &payload.fpgaId, &payload.fpgaMajor, &payload.fpgaMinor, &payload.fpgaLab ); - // Populate payload for response - payload.major = (U08)HD_VERSION_MAJOR; - payload.minor = (U08)HD_VERSION_MINOR; - payload.micro = (U08)HD_VERSION_MICRO; - payload.build = (U16)HD_VERSION_BUILD; - payload.compatibilityRev = (U32)SW_COMPATIBILITY_REV; - getFPGAVersions( &payload.fpgaId, &payload.fpgaMajor, &payload.fpgaMinor, &payload.fpgaLab ); + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_HD_VERSION; + msg.hdr.payloadLen = sizeof( HD_VERSIONS_T ); - // Create a message record - blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_HD_VERSION; - msg.hdr.payloadLen = sizeof( HD_VERSIONS_T ); + // Fill message payload + memcpy( payloadPtr, &payload, sizeof( HD_VERSIONS_T ) ); + } - // Fill message payload - memcpy( payloadPtr, &payload, sizeof( HD_VERSIONS_T ) ); - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); } @@ -3139,7 +3140,7 @@ msg.hdr.payloadLen = MAX_TOP_LEVEL_SN_CHARS + 1; // Fill message payload - memcpy( payloadPtr, &system.topLevelSN, MAX_TOP_LEVEL_SN_CHARS ); + memcpy( payloadPtr, &system.topLevelSN, sizeof( U08 ) * MAX_TOP_LEVEL_SN_CHARS ); payloadPtr += MAX_TOP_LEVEL_SN_CHARS; *payloadPtr = 0;