/*********************************************************************************************************************
*
* Description:     DataM module private configuration implementation
* FileName:        FBL_DataMPrvCfg.c
* Company:         ETAS GmbH (www.etas.com)
* Generated        28/12/2018 at 11:22
*
**********************************************************************************************************************
*
* COPYRIGHT RESERVED, Copyright ETAS GmbH 2018. All rights reserved, also regarding any disposal,
* exploitation, reproduction, editing, distribution, as well as in the event of applications
* for industrial property rights.
*
**********************************************************************************************************************
* History:
**********************************************************************************************************************
* Author        Date            Comment
**********************************************************************************************************************
BGA1YOK         25/10/2017      First Version    
**********************************************************************************************************************/


/*********************************************************************************************************************
* Includes
*********************************************************************************************************************/
#include "FBL_DataMPrvCfg.h"
#include "FBL_DataMPrv.h"
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_OFF
#endif
#include "Std_Types.h"
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_ON
#endif
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_OFF
#endif
#include "NvM.h"
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_ON
#endif

/*********************************************************************************************************************
* Local Defines
*********************************************************************************************************************/

/*********************************************************************************************************************
* Local Macros
*********************************************************************************************************************/

/*********************************************************************************************************************
* Local Types
*********************************************************************************************************************/

/*********************************************************************************************************************
* Local Variables
*********************************************************************************************************************/

/*********************************************************************************************************************
* Local Functions Prototypes
*********************************************************************************************************************/

/*********************************************************************************************************************
* Exported Variables Implementation
*********************************************************************************************************************/
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 26] */
uint8 Fbl_DataM_RamMirrorNV_ReprogrammingRequestFlagBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ReprogrammingRequestFlag];
uint8 Fbl_DataM_RamMirrorNV_ApplicationValidFlagBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationValidFlag];
uint8 Fbl_DataM_RamMirrorNV_PSNGBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_PSNG_Block];
uint8 Fbl_DataM_RamMirrorNV_ProgramConditionsBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ProgramConditions];
uint8 Fbl_DataM_RamMirrorNV_SecretKey[NVM_CFG_NV_BLOCK_LENGTH_NvM_SecretKey];
uint8 Fbl_DataM_RamMirrorNV_SecretKeyUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_Nvm_SecretKeyUpdateCounter];
uint8 Fbl_DataM_RamMirrorNV_ApplicationUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdateCounter];
uint8 Fbl_DataM_RamMirrorNV_CalibrationUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdateCounter];
uint8 Fbl_DataM_RamMirrorNV_HardwarePartNumberBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwarePartNumber];
uint8 Fbl_DataM_RamMirrorNV_HardwareSerialNumberBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareSerialNumber];
uint8 Fbl_DataM_RamMirrorNV_CompnentIDBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CompnentID];
uint8 Fbl_DataM_RamMirrorNV_HardwareIDBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareID];
uint8 Fbl_DataM_RamMirrorNV_ApplicationUpdaterFingerprintBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdaterFingerprint];
uint8 Fbl_DataM_RamMirrorNV_CalibrationUpdaterFingerprintBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdaterFingerprint];
uint8 Fbl_DataM_RamMirrorNV_ApplicationUpdateTimestampBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdateTimestamp];
uint8 Fbl_DataM_RamMirrorNV_CalibrationUpdateTimestampBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdateTimestamp];
uint8 Fbl_DataM_RamMirrorNV_HardwareManufacturingDateBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareManufacturingDate];
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 27] */
const uint8 Fbl_DataM_RomDataNV_ReprogrammingRequestFlagBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ReprogrammingRequestFlag] = {0U,0U,0U,0U};
const uint8 Fbl_DataM_RomDataNV_ApplicationValidFlagBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationValidFlag] = {0U,0U,0U,0U};
const uint8 Fbl_DataM_RomDataNV_PSNGBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_PSNG_Block] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_ProgramConditionsBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ProgramConditions] = {0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                              0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                              0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                              0U, 0u, 0U, 0U, 0U, 0U, 0u};
const uint8 Fbl_DataM_RomDataNV_SecretKeyBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_SecretKey] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU,0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_SecretKeyUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_Nvm_SecretKeyUpdateCounter] = {0U,0U,0U,0U};
const uint8 Fbl_DataM_RomDataNV_ApplicationUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdateCounter] = {0U,0U,0U,0U};
const uint8 Fbl_DataM_RomDataNV_CalibrationUpdateCounterBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdateCounter] = {0U,0U,0U,0U};
const uint8 Fbl_DataM_RomDataNV_HardwarePartNumberBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwarePartNumber] = {0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U};
const uint8 Fbl_DataM_RomDataNV_HardwareSerialNumberBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareSerialNumber]  = {0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U, \
                                                                                                                 0U, 0u, 0U, 0U, 0U, 0U, 0u, 0U};
const uint8 Fbl_DataM_RomDataNV_CompnentIDBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CompnentID] = {0xFFU,0xFFU};
const uint8 Fbl_DataM_RomDataNV_HardwareIDBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareID] = {0U};
const uint8 Fbl_DataM_RomDataNV_ApplicationUpdaterFingerprintBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdaterFingerprint] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU,0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_CalibrationUpdaterFingerprintBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdaterFingerprint] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU,0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_ApplicationUpdateTimestampBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_ApplicationUpdateTimestamp] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU,0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_CalibrationUpdateTimestampBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_CalibrationUpdateTimestamp] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU,0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU};
const uint8 Fbl_DataM_RomDataNV_HardwareManufacturingDateBlock[NVM_CFG_NV_BLOCK_LENGTH_NvM_HardwareManufacturingDate] = {0xFFU, 0xFFu, 0xFFU, 0xFFU, 0xFFU, 0xFFU, 0xFFu, 0xFFU};
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 28] */
const Fbl_DataM_BlockDescriptorType Fbl_DataM_NvmBlockInfo[FBL_DATAM_NUM_NVM_BLOCKS] =
{
  {Fbl_DataM_RamMirrorNV_ReprogrammingRequestFlagBlock, FBL_DATAM_NVM_BLOCK_NV_REPROGRAMMINGREQUESTFLAG_SIZE, FBL_DATAM_NVM_BLOCK_NV_REPROGRAMMINGREQUESTFLAG_ID},
  {Fbl_DataM_RamMirrorNV_ApplicationValidFlagBlock, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONVALIDFLAG_SIZE, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONVALIDFLAG_ID},
  {Fbl_DataM_RamMirrorNV_PSNGBlock, FBL_DATAM_NVM_BLOCK_NV_FREERUNNINGCNTR_SIZE, FBL_DATAM_NVM_BLOCK_NV_FREERUNNINGCNTR_ID},
  {Fbl_DataM_RamMirrorNV_ProgramConditionsBlock, FBL_DATAM_NVM_BLOCK_NV_PROGRAMCONDITION_SIZE, FBL_DATAM_NVM_BLOCK_NV_PROGRAMCONDITION_ID},
  {Fbl_DataM_RamMirrorNV_SecretKey, FBL_DATAM_NVM_BLOCK_NV_SECRETKEY_SIZE, FBL_DATAM_NVM_BLOCK_NV_SECRETKEY_ID},
  {Fbl_DataM_RamMirrorNV_SecretKeyUpdateCounterBlock, FBL_DATAM_NVM_BLOCK_NV_SECRETKEYUPDATECOUNTER_SIZE, FBL_DATAM_NVM_BLOCK_NV_SECRETKEYUPDATECOUNTER_ID},
  {Fbl_DataM_RamMirrorNV_ApplicationUpdateCounterBlock, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATECOUNTER_SIZE, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATECOUNTER_ID},
  {Fbl_DataM_RamMirrorNV_CalibrationUpdateCounterBlock, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATECOUNTER_SIZE, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATECOUNTER_ID},
  {Fbl_DataM_RamMirrorNV_HardwarePartNumberBlock, FBL_DATAM_NVM_BLOCK_NV_HARDWAREPARTNUMBER_SIZE, FBL_DATAM_NVM_BLOCK_NV_HARDWAREPARTNUMBER_ID},
  {Fbl_DataM_RamMirrorNV_HardwareSerialNumberBlock, FBL_DATAM_NVM_BLOCK_NV_HARDWARESERIALNUMBER_SIZE, FBL_DATAM_NVM_BLOCK_NV_HARDWARESERIALNUMBER_ID},
  {Fbl_DataM_RamMirrorNV_CompnentIDBlock, FBL_DATAM_NVM_BLOCK_NV_COMPONENTID_SIZE, FBL_DATAM_NVM_BLOCK_NV_COMPONENTID_ID},
  {Fbl_DataM_RamMirrorNV_HardwareIDBlock, FBL_DATAM_NVM_BLOCK_NV_HARDWAREID_SIZE, FBL_DATAM_NVM_BLOCK_NV_HARDWAREID_ID},
  {Fbl_DataM_RamMirrorNV_ApplicationUpdaterFingerprintBlock, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATERFINGERPRINT_SIZE, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATERFINGERPRINT_ID},
  {Fbl_DataM_RamMirrorNV_CalibrationUpdaterFingerprintBlock, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATERFINGERPRINT_SIZE, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATERFINGERPRINT_ID},
  {Fbl_DataM_RamMirrorNV_ApplicationUpdateTimestampBlock, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATETIMESTAMP_SIZE, FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATETIMESTAMP_ID},
  {Fbl_DataM_RamMirrorNV_CalibrationUpdateTimestampBlock, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATETIMESTAMP_SIZE, FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATETIMESTAMP_ID},
  {Fbl_DataM_RamMirrorNV_HardwareManufacturingDateBlock, FBL_DATAM_NVM_BLOCK_NV_HARDWAREMANUFACTURINGDATE_SIZE, FBL_DATAM_NVM_BLOCK_NV_HARDWAREMANUFACTURINGDATE_ID}
};

/*********************************************************************************************************************
* Exported Functions Implementation
*********************************************************************************************************************/
/* Check if nvm block has been persisted*/
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 63] */
boolean Fbl_DataM_NvmBlockNV_ReprogrammingRequestFlagIsPersisted (void)
{
  /* PRQA S 4304 EOF */ /* <Deviation: rule_10.5_4304_boolean */
  boolean RetVal = (boolean)FALSE;
  if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[0])
  {
    RetVal = (boolean)TRUE;
  }
  return RetVal;
}
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 63] */
boolean Fbl_DataM_NvmBlockNV_ApplicationValidFlagIsPersisted (void)
{
  boolean RetVal = (boolean)FALSE;
  if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[1])
  {
    RetVal = (boolean)TRUE;
  }
  return RetVal;
}

/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 63] */
boolean Fbl_DataM_NvmBlockNV_FreeRunningCntrIsPersisted (void)
{
  boolean RetVal = (boolean)FALSE;
  if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[2])
  {
    RetVal = (boolean)TRUE;
  }
  return RetVal;
}
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 63] */
boolean Fbl_DataM_NvmBlockNV_ProgramConditionsIsPersisted (void)
{
  boolean RetVal = (boolean)FALSE;
  if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[3])
  {
    RetVal = (boolean)TRUE;
  }
  return RetVal;
}

boolean Fbl_DataM_NvmBlockNV_SecretKeyIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[4])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_SecretKeyUpdateCounterIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[5])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_ApplicationUpdateCounterIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[6])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_CalibrationUpdateCounterIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[7])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_HardwarePartNumberIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[8])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_HardwareSerialNumberIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[9])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_CompnentIDIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[10])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_HardwareIDIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[11])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_ApplicationUpdaterFingerprintIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[12])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_CalibrationUpdaterFingerprintIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[13])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_ApplicationUpdateTimestampIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[14])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_CalibrationUpdateTimestampIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[15])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
boolean Fbl_DataM_NvmBlockNV_HardwareManufacturingDateIsPersisted (void){
    boolean RetVal = (boolean)FALSE;
    if (FBL_DATAM_BLOCK_STATUS_SAVED == Fbl_DataM_BlockStatus[16])
    {
      RetVal = (boolean)TRUE;
    }
    return RetVal;
  }
/* [$Satisfies $RTA_FBL_PBL_DD_BL_DATAM 56] */
void Fbl_DataM_WriteAllBlocks(void)
{
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_OFF 3200
#endif
/* MISRA DEVIATION: Don't save return value because there is nothing we can do with it anyway. Calling WriteAll is harmless if these calls failed. */
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_REPROGRAMMINGREQUESTFLAG_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_APPLICATIONVALIDFLAG_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_FREERUNNINGCNTR_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_PROGRAMCONDITION_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_SECRETKEY_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_SECRETKEYUPDATECOUNTER_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATECOUNTER_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATECOUNTER_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_HARDWAREPARTNUMBER_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_HARDWARESERIALNUMBER_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_COMPONENTID_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_HARDWAREID_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATERFINGERPRINT_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATERFINGERPRINT_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_APPLICATIONUPDATETIMESTAMP_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_CALIBRATIONUPDATETIMESTAMP_ID, (boolean)TRUE);
  (void)NvM_SetRamBlockStatus(FBL_DATAM_NVM_BLOCK_NV_HARDWAREMANUFACTURINGDATE_ID, (boolean)TRUE);
#ifdef __PQRA_QAC__
#pragma PRQA_MESSAGES_ON
#endif
  NvM_WriteAll();
}
