Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r9a9d04b84f4345fca87fb14d26f09d497b08aae8 -r6c60d0d0300828750c76f2e397d4e7ccaa84bbb2 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 9a9d04b84f4345fca87fb14d26f09d497b08aae8) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6c60d0d0300828750c76f2e397d4e7ccaa84bbb2) @@ -110,7 +110,7 @@ data[ msgSize++ ] = MESSAGE_SYNC_BYTE; // set sequence # and ACK bit -#ifdef ACK_IMPLEMENTED +#ifndef ACK_NOT_IMPLEMENTED // thread protect next sequence # access & increment _disable_IRQ(); msg.hdr.seqNo = nextSeqNo; @@ -144,7 +144,7 @@ data[ msgSize++ ] = 0; } -#ifdef ACK_IMPLEMENTED +#ifndef ACK_NOT_IMPLEMENTED // if ACK required, add to pending ACK list if ( TRUE == ackReq ) { @@ -161,7 +161,7 @@ return result; } -#ifdef ACK_IMPLEMENTED +#ifndef ACK_NOT_IMPLEMENTED /************************************************************************* * @brief sendACKMsg * The sendACKMsg function constructs and queues for transmit an ACK message \n @@ -180,11 +180,13 @@ // create a message record blankMessage( &msg ); // send ACK back with same seq. #, but w/o ACK bit - msg.hdr.seqNo = ( message->hdr.seqNo < 0 ? message->hdr.seqNo * -1 : message->hdr.seqNo ); + msg.hdr.seqNo = message->hdr.seqNo * -1; // ACK messages always have this ID msg.hdr.msgID = MSG_ID_ACK; + // ACK messages always have no payload + msg.hdr.payloadLen = 0; - // serialize the message (w/ sync, CRC, and appropriate CAN padding) + // serialize and queue the message for transmit on broadcast channel result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_BROADCAST, ACK_NOT_REQUIRED ); return result;