Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r05b4d416b6bd5e7af4347f112a20f9f81a257064 -r3e525c0567dd0b7d2153b751169d0ae17648e117 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 05b4d416b6bd5e7af4347f112a20f9f81a257064) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 3e525c0567dd0b7d2153b751169d0ae17648e117) @@ -49,7 +49,7 @@ #define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) #define MSG_NOT_ACKED_TIMEOUT_MS ( MS_PER_SECOND * 1 ) -#define MSG_NOT_ACKED_MAX_RETRIES 5 +#define MSG_NOT_ACKED_MAX_RETRIES 3 #define PENDING_ACK_LIST_SIZE 25 #pragma pack(push,1) @@ -788,15 +788,25 @@ if ( message.crc == crc8( (U08*)(&message), sizeof(MESSAGE_HEADER_T) + message.msg.hdr.payloadLen ) ) { #ifndef ACK_NOT_IMPLEMENTED - // if ACK, + // if ACK, mark pending message ACK'd if ( MSG_ID_ACK == message.msg.hdr.msgID ) { matchACKtoPendingACKList( message.msg.hdr.seqNo ); } else #endif { - processReceivedMessage( &message.msg ); +#ifndef ACK_NOT_IMPLEMENTED + // if received message requires ACK, queue one up + if ( message.msg.hdr.seqNo < 0 ) + { + sendACKMsg( &message.msg ); + } + else +#endif + { // otherwise, process the received message + processReceivedMessage( &message.msg ); + } } } else // CRC failed @@ -988,14 +998,6 @@ { U16 msgID = message->hdr.msgID; -#ifndef ACK_NOT_IMPLEMENTED - // if received message requires ACK, queue one up - if ( message->hdr.seqNo < 0 ) - { - sendACKMsg( message ); - } -#endif - // handle any messages from other sub-systems switch ( msgID ) {