Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r07a5add2dff254f7be3699e4efac2b99d3554847 -r3e525c0567dd0b7d2153b751169d0ae17648e117 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 07a5add2dff254f7be3699e4efac2b99d3554847) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 3e525c0567dd0b7d2153b751169d0ae17648e117) @@ -186,6 +186,7 @@ SW_FAULT_ID_PRES_OCCL_INVALID_STATE, SW_FAULT_ID_PRES_OCCL_INVALID_PRES_SENSOR, SW_FAULT_ID_PRES_OCCL_INVALID_OCCL_SENSOR, + SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL, // 50 NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; 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 ) { Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r05b4d416b6bd5e7af4347f112a20f9f81a257064 -r3e525c0567dd0b7d2153b751169d0ae17648e117 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 05b4d416b6bd5e7af4347f112a20f9f81a257064) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3e525c0567dd0b7d2153b751169d0ae17648e117) @@ -99,7 +99,8 @@ *************************************************************************/ static U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ) { - BOOL result; + BOOL result = 0; + BOOL error = FALSE; U32 msgSize = 0; U32 sizeMod, sizePad; U32 i; @@ -153,13 +154,17 @@ { if ( FALSE == addMsgToPendingACKList( &msg, buffer, data, msgSize ) ) { - // TODO - ??? + error = TRUE; + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL ) } } #endif - // add serialized message data to appropriate out-going comm buffer - result = addToCommBuffer( buffer, data, msgSize ); + if ( FALSE == error ) + { + // add serialized message data to appropriate out-going comm buffer + result = addToCommBuffer( buffer, data, msgSize ); + } return result; } @@ -466,7 +471,7 @@ // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_PRESSURE_OCCLUSION_DATA; - msg.hdr.payloadLen = sizeof( PERISTALTIC_PUMP_STATUS_PAYLOAD_T ); + msg.hdr.payloadLen = sizeof( PRESSURE_OCCLUSION_DATA_T ); payload.arterialPressure = artPres; payload.venousPressure = venPres;