Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r8c56613f3786e5605c61824fd75af59702dae648 -r31ff64b09f6d1a81361e8493f0cbb6109e580059 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 8c56613f3786e5605c61824fd75af59702dae648) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 31ff64b09f6d1a81361e8493f0cbb6109e580059) @@ -886,17 +886,13 @@ { if ( ( TRUE == pendingAckList[ i ].used ) && ( pendingAckList[ i ].seqNo == seqNo ) ) { - if ( ( ( getU32OverrideValue( &pendingACKOverride ) == PENDING_ACK_LIST_OVERRIDE_UI_CHANNEL ) && ( pendingAckList[ i ].channel == COMM_BUFFER_OUT_CAN_HD_2_UI ) ) || - ( ( getU32OverrideValue( &pendingACKOverride ) == PENDING_ACK_LIST_OVERRIDE_DG_CHANNEL ) && ( pendingAckList[ i ].channel == COMM_BUFFER_OUT_CAN_HD_2_DG ) ) ) + result = TRUE; + // Remove message pending ACK from list + if ( ( ( getU32OverrideValue( &pendingACKOverride ) != PENDING_ACK_LIST_OVERRIDE_UI_CHANNEL ) || ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_UI ) ) && + ( ( getU32OverrideValue( &pendingACKOverride ) != PENDING_ACK_LIST_OVERRIDE_DG_CHANNEL ) || ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_DG ) ) ) { - pendingAckList[ i ].used = TRUE; - result = FALSE; + pendingAckList[ i ].used = FALSE; } - else // Remove message pending ACK from list - { - pendingAckList[ i ].used = FALSE; - result = TRUE; - } break; } } @@ -920,7 +916,7 @@ // Find expired messages pending ACK for ( i = 0; i < PENDING_ACK_LIST_SIZE; i++ ) { // Pending ACK expired? - if ( ( TRUE == pendingAckList[ i ].used ) && ( ( TRUE == didTimeout( pendingAckList[ i ].timeStamp, MSG_NOT_ACKED_TIMEOUT_MS ) ) ) ) + if ( ( TRUE == pendingAckList[ i ].used ) && ( TRUE == didTimeout( pendingAckList[ i ].timeStamp, MSG_NOT_ACKED_TIMEOUT_MS ) ) ) { // If retries left, reset and resend pending message if ( pendingAckList[ i ].retries > 0 ) { // Re-queue message for transmit @@ -935,7 +931,8 @@ memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); - if ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_DG ) + if ( ( pendingAckList[ i ].channel != COMM_BUFFER_OUT_CAN_HD_2_DG ) || + ( ( getU32OverrideValue( &pendingACKOverride ) == PENDING_ACK_LIST_OVERRIDE_UI_CHANNEL ) && ( pendingAckList[ i ].channel == COMM_BUFFER_OUT_CAN_HD_2_UI ) ) ) { SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_CAN_MESSAGE_NOT_ACKED_BY_UI, (U32)msgID ); }