Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rdcbd821e41803adc6e582d909207bc97f85ff939 -r5829ee430c39b41b687cfd4ff4f86a1aae4380f3 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision dcbd821e41803adc6e582d909207bc97f85ff939) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 5829ee430c39b41b687cfd4ff4f86a1aae4380f3) @@ -26,6 +26,7 @@ #include "SystemComm.h" #include "CPLD.h" #include "OperationModes.h" +#include "Utilities.h" // ********** private definitions ********** @@ -66,6 +67,7 @@ U32 msgSize = 0; U32 sizeMod, sizePad; U32 i; + U08 crc = crc8( (U08*)(&msg), sizeof( MESSAGE_HEADER_T ) + msg.hdr.payloadLen ); // prefix data with message sync byte data[msgSize++] = MESSAGE_SYNC_BYTE; @@ -78,8 +80,8 @@ memcpy( &data[msgSize], &(msg.payload), msg.hdr.payloadLen ); msgSize += msg.hdr.payloadLen; - // TODO - calculate 8-bit CRC - data[msgSize++] = 0; // TODO - s/b 8-bit CRC when calc is available + // add 8-bit CRC + data[ msgSize++ ] = crc; // pad with zero bytes to get length a multiple of CAN_MESSAGE_PAYLOAD_SIZE (8) sizeMod = msgSize % CAN_MESSAGE_PAYLOAD_SIZE;