Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -40,7 +40,6 @@ U32 transitionToStandbyMode( void ) { initStandbyMode(); - clearCommBuffersForNextUpdate(); return 0; } Index: firmware/App/Services/CommBuffers.c =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Services/CommBuffers.c (.../CommBuffers.c) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -59,7 +59,7 @@ { BOOL status = FALSE; - if ( ( mailBox <= NUM_OF_SW_UPDATE_MBOXES ) && ( len <= MAX_NUM_OF_CAN_BYTES ) ) + if ( ( mailBox < NUM_OF_SW_UPDATE_MBOXES ) && ( len <= MAX_NUM_OF_CAN_BYTES ) ) { _disable_IRQ(); memcpy( data, SWUpdateBuffer[ mailBox ].SWUpdateBuffer, len ); Index: firmware/App/Services/Download.c =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/Download.c (.../Download.c) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Services/Download.c (.../Download.c) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -77,21 +77,16 @@ SWUpdateCommandState = UPDATE_CMD_IDLE; } -void clearCommBuffersForNextUpdate( void ) -{ - clearCommBuffer( SW_UPDATE_COMMAD ); - clearCommBuffer( thisStackMailBox ); -} - // ********** private functions ********** static void processIncomingCmdMessage( SW_UPDATE_CAN_MAIL_BOX_T mailBox ) { SW_UPDATE_CMD_STATUS_T SWUpdateCmdStatus; - BOOL status = getCommBuffer( mailBox, (U08*)&SWUpdateCmdStatus, sizeof( SW_UPDATE_CMD_STATUS_T ) ); + S32 numOfBytes = getNumberOfBytesInBuffer( mailBox ); + BOOL status = getCommBuffer( mailBox, (U08*)&SWUpdateCmdStatus, sizeof( SW_UPDATE_CMD_STATUS_T ) ); - if ( ( TRUE == status ) && ( getNumberOfBytesInBuffer( mailBox ) >= CAN_MESSAGE_PAYLOAD_SIZE ) ) + if ( ( TRUE == status ) && ( numOfBytes >= CAN_MESSAGE_PAYLOAD_SIZE ) ) { SW_UPDATE_RESP_STATUS_T resp; @@ -120,12 +115,8 @@ } prepareResponseMessage( msgID, ackStatus, &resp ); - status = sendAckNackStatusFromFirmware( mailBox, (U08*)&resp ); - - if ( TRUE == status ) - { - clearCommBuffer( mailBox ); - } + status = sendAckNackStatusFromFirmware( (U08*)&resp ); + clearCommBuffer( mailBox ); } } @@ -177,12 +168,8 @@ } prepareResponseMessage( SWUpdateRCVStatus.msgID, ackStatus, &resp ); - status = sendAckNackStatusFromFirmware( mailBox, (U08*)&resp ); // TODO do we have to retry if send failed? - - if ( TRUE == status ) - { - clearCommBuffer( mailBox ); - } + status = sendAckNackStatusFromFirmware( (U08*)&resp ); // TODO do we have to retry if send failed? + clearCommBuffer( mailBox ); } clearSWUpdateBuffer(); Index: firmware/App/Services/Download.h =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/Download.h (.../Download.h) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Services/Download.h (.../Download.h) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -18,6 +18,4 @@ void clearSWUpdateCommandState( void ); -void clearCommBuffersForNextUpdate( void ); - #endif Index: firmware/App/Services/FPGA.h =================================================================== diff -u -rba60692a9ecaf59cb5cb8490f4276917f43bcd01 -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision ba60692a9ecaf59cb5cb8490f4276917f43bcd01) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -19,4 +19,6 @@ BOOL hasUpdateBeenRequested( void ); BOOL isFPGAIDValid( void ); +void signalFPGAToPrepareForUpdate( void ); + #endif Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -52,7 +52,7 @@ } } -BOOL sendAckNackStatusFromFirmware( SW_UPDATE_CAN_MAIL_BOX_T mailBox, U08* data ) +BOOL sendAckNackStatusFromFirmware( U08* data ) { BOOL status = FALSE; Index: firmware/App/Services/SystemComm.h =================================================================== diff -u -r893caf9f58a08a2bd31068806e09603041d64add -r9e2779d825ea7e7b3445fa365f7bc2206fc0613a --- firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision 893caf9f58a08a2bd31068806e09603041d64add) +++ firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision 9e2779d825ea7e7b3445fa365f7bc2206fc0613a) @@ -14,6 +14,6 @@ void handleCANMsgInterrupt( SW_UPDATE_CAN_MAIL_BOX_T mailBox ); -BOOL sendAckNackStatusFromFirmware( SW_UPDATE_CAN_MAIL_BOX_T mailBox, U08* data ); +BOOL sendAckNackStatusFromFirmware( U08* data ); #endif