/* * TaskBG.c * * Created on: Jul 31, 2024 * Author: fw */ #include "CommBuffers.h" #include "NVDataMgmt.h" 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 ); status = handleUpdatingFlash( dataToWriteToFlash ); _enable_IRQ(); ackNackStatus = ( TRUE == status ? ACK : NACK ); sendAckNackStatusFromFirmware( ackNackStatus, SW_UPDATE_TD_UPDATE ); clearSWUpdateBuffer( SW_UPDATE_TD_UPDATE ); } } }