Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a -re8511af1e4e9d91cfd3378471869fb0246110870 --- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) +++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision e8511af1e4e9d91cfd3378471869fb0246110870) @@ -38,18 +38,18 @@ if ( mailBox < NUM_OF_SW_UPDATE_MBOXES ) { + _disable_IRQ(); U32 currentFrameCount = SWUpdateBuffer[ mailBox ].SWUpdateFrameCount; - if ( currentFrameCount <= MAX_NUM_OF_CAN_BYTES ) + if ( ( currentFrameCount * CAN_MESSAGE_PAYLOAD_SIZE ) <= MAX_NUM_OF_CAN_BYTES ) { - _disable_IRQ(); U32 currentBufferIndex = currentFrameCount * len; memcpy( SWUpdateBuffer[ mailBox ].SWUpdateBuffer + currentBufferIndex, data, len ); SWUpdateBuffer[ mailBox ].SWUpdateFrameCount += 1; status = TRUE; - _enable_IRQ(); } + _enable_IRQ(); } return status; @@ -84,10 +84,12 @@ void clearCommBuffer( SW_UPDATE_CAN_MAIL_BOX_T mailBox ) { + _disable_IRQ(); if ( mailBox < NUM_OF_SW_UPDATE_MBOXES ) { memset( &SWUpdateBuffer[ mailBox ], 0x0, sizeof( SW_UPDATE_BUFFER_T ) ); } + _enable_IRQ(); }