Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r1e22b6ff6f42ddc57ad6c17e56057ab8a3765680 -r4853f9f01e6a406783201902937d9ace760b0b38 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 1e22b6ff6f42ddc57ad6c17e56057ab8a3765680) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 4853f9f01e6a406783201902937d9ace760b0b38) @@ -450,21 +450,24 @@ DG_VERSIONS_T payload; U08 *payloadPtr = msg.payload; - // populate payload - payload.major = (U08)DG_VERSION_MAJOR; - payload.minor = (U08)DG_VERSION_MINOR; - payload.micro = (U08)DG_VERSION_MICRO; - payload.build = (U16)DG_VERSION_BUILD; - payload.compatibilityRev = (U32)SW_COMPATIBILITY_REV; - getFPGAVersions( &payload.fpgaId, &payload.fpgaMajor, &payload.fpgaMinor, &payload.fpgaLab ); + if ( message->hdr.payloadLen == sizeof( U08 ) + sizeof( U08 ) + sizeof( U08 ) + sizeof( U16 ) + sizeof( U32 ) ) + { + // populate payload + payload.major = (U08)DG_VERSION_MAJOR; + payload.minor = (U08)DG_VERSION_MINOR; + payload.micro = (U08)DG_VERSION_MICRO; + payload.build = (U16)DG_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_DG_VERSION; - msg.hdr.payloadLen = sizeof( DG_VERSIONS_T ); + // create a message record + blankMessage( &msg ); + msg.hdr.msgID = MSG_ID_DG_VERSION; + msg.hdr.payloadLen = sizeof( DG_VERSIONS_T ); - // fill message payload - memcpy( payloadPtr, &payload, sizeof( DG_VERSIONS_T ) ); + // fill message payload + memcpy( payloadPtr, &payload, sizeof( DG_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_DG_BROADCAST, ACK_NOT_REQUIRED ); @@ -497,7 +500,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;