Index: firmware/App/Tasks/TaskBG.c =================================================================== diff -u -rda12d1065b9bc93d30500255d8b986f00d1bdd69 -r9af6fc3e5afc442a877bd5e23ecfa6872a3ad5a4 --- firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision da12d1065b9bc93d30500255d8b986f00d1bdd69) +++ firmware/App/Tasks/TaskBG.c (.../TaskBG.c) (revision 9af6fc3e5afc442a877bd5e23ecfa6872a3ad5a4) @@ -8,29 +8,33 @@ #include "CommBuffers.h" #include "NVDataMgmt.h" -static SW_UPDATE_BUFFER_STATUS_T bufferStatus; - void taskBackground( void ) { #ifndef _VECTORCAST_ // Cannot have infinite loop in unit test tool while ( 1 ) #endif { + SW_UPDATE_BUFFER_STATUS_T bufferStatus; + getSWUpdateBufferStatus( &bufferStatus ); if ( ( TRUE == bufferStatus.isSWUpdateBufferReady ) && ( UPDATE_FIRMWARE == bufferStatus.dest ) ) { _disable_IRQ(); U08 dataToWriteToFlash[ SW_UPDATE_FLASH_BUFFER_SIZE ]; + ACK_NACK_STATUS_T ackNackStatus; + BOOL status = FALSE; + getSWUpdateBuffer( dataToWriteToFlash ); - handleUpdatingFlash( dataToWriteToFlash ); + status = handleUpdatingFlash( dataToWriteToFlash ); _enable_IRQ(); - sendAckNackStatusFromFirmware( ACK, FALSE ); - clearSWUpdateBuffer( FALSE ); + ackNackStatus = ( TRUE == status ? ACK : NACK ); + sendAckNackStatusFromFirmware( ackNackStatus, SW_UPDATE_TD_UPDATE ); + clearSWUpdateBuffer( SW_UPDATE_TD_UPDATE ); } } }