+/* -------------------------------- Arctic Core ------------------------------\r
+ * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
+ *\r
+ * Copyright (C) 2009 ArcCore AB <contact@arccore.com>\r
+ *\r
+ * This source code is free software; you can redistribute it and/or modify it\r
+ * under the terms of the GNU General Public License version 2 as published by the\r
+ * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License\r
+ * for more details.\r
+ * -------------------------------- Arctic Core ------------------------------*/\r
+\r
+/*\r
+ * EXAMPLE\r
+ * Just a simple example that uses the NvM API's.\r
+ *\r
+ */\r
+\r
+\r
+\r
/* ----------------------------[includes]------------------------------------*/\r
#include "Std_Types.h"\r
#include "Os.h"\r
\r
/* ----------------------------[private define]------------------------------*/\r
\r
+/* STD_ON - Block_2_Native will be written. Block_2_Native will only\r
+ * be called once.\r
+ * STD_OFF - Block_2_Native's will be called at every startup since no\r
+ * data is ever written to the block\r
+ */\r
+#define WRITE_BLOCK_2 STD_OFF\r
+\r
/* ----------------------------[private macro]-------------------------------*/\r
+\r
+#define PATTERN_FILL(_block,_st_val) patternFill(_block,sizeof(_block),_st_val)\r
+#define PATTERN_VERIFY(_block,_st_val) patternVerify(_block,sizeof(_block),_st_val)\r
+\r
+#define BUSY_WAIT(_block,_var) \\r
+ do { \\r
+ NvM_GetErrorStatus(_block, &_var); \\r
+ } while( _var != NVM_REQ_OK );\r
+\r
+\r
/* ----------------------------[private typedef]-----------------------------*/\r
/* ----------------------------[private function prototypes]-----------------*/\r
/* ----------------------------[private variables]---------------------------*/\r
uint8 TEST_RamBlock_Dataset_1[2];\r
uint8 TEST_tmpRam[100];\r
\r
-\r
+uint8 Block_2_RamBlock[10];\r
\r
/* ----------------------------[private functions]---------------------------*/\r
\r
static void nvmApplication(void);\r
\r
-/* ----------------------------[public functions]----------------------------*/\r
-\r
-\r
-Std_ReturnType TEST_SingleBlockFunctionCallbackBlock3(uint8 ServiceId, NvM_RequestResultType JobResult)\r
-{\r
- return E_OK;\r
-}\r
-\r
-void TEST_MultiBlockFunctionCallback(uint8 ServiceId, NvM_RequestResultType JobResult)\r
-{\r
-}\r
-\r
-\r
-#define PATTERN_FILL(_block) patternFill(_block,sizeof(_block))\r
-#define PATTERN_VERIFY(_block) patternVerify(_block,sizeof(_block))\r
-\r
-void patternFill( uint8 *bPtr, uint32 numBytes )\r
+/**\r
+ * Fill memory with a increasing number starting with startVal\r
+ *\r
+ * @param bPtr\r
+ * @param numBytes\r
+ * @param startVal\r
+ */\r
+static void patternFill( uint8 *bPtr, uint32 numBytes, uint8 startVal )\r
{\r
int i;\r
for(i=0;i< numBytes; i++) {\r
- bPtr[i] = i;\r
+ bPtr[i] = startVal++;\r
}\r
}\r
\r
-\r
-int patternVerify( uint8 *bPtr, uint32 numBytes )\r
+/**\r
+ * Verify a pattern filled by patternFill.\r
+ *\r
+ * @param bPtr\r
+ * @param numBytes\r
+ * @param startVal\r
+ * @return\r
+ */\r
+static int patternVerify( uint8 *bPtr, uint32 numBytes, uint8 startVal )\r
{\r
int i;\r
- for(i=0;i< numBytes; i++) {\r
- if( bPtr[i] != i ) {\r
+ for(i=0;i< numBytes; i++, startVal++) {\r
+ if( bPtr[i] != startVal ) {\r
return 1;\r
}\r
}\r
return 0;\r
}\r
\r
-void TEST_MultiBlockCallback( void ) {\r
+\r
+/* ----------------------------[public functions]----------------------------*/\r
+\r
+void MultiBlock_Callback(uint8 ServiceId, NvM_RequestResultType JobResult) {\r
\r
}\r
\r
+/*\r
+ * Block_1_DataSet\r
+ */\r
+\r
+void Block_Dataset_SingleCallback( void ) {\r
+}\r
+\r
+/*\r
+ * Block_2_Native\r
+ */\r
+\r
+void Block_2_InitCallback( void ) {\r
+ PATTERN_FILL(Block_2_RamBlock,10);\r
+}\r
+\r
+\r
+/*\r
+ * The application task\r
+ */\r
TASK(Application) {\r
for(;;) {\r
nvmApplication();\r
}\r
}\r
\r
-\r
-\r
-/* NvM_ReadAll()\r
+/**\r
*\r
- * Read all blocks just to see that everything is as it should.\r
- * */\r
+ */\r
static void nvmApplication(void) {\r
NvM_RequestResultType errorStatus;\r
Std_ReturnType rv;\r
int currBlock;\r
+ static int counter = 0;\r
\r
- /* All reads should be OK */\r
-// feeReadStatus.blockNumber = ALL_BLOCKS;\r
-// feeReadStatus.rv = E_OK;\r
+ /* Verify that a block read during NvM_ReadAll() is there */\r
+ rv = PATTERN_VERIFY(Block_2_RamBlock,10);\r
+ assert(rv == 0);\r
\r
-// NvM_ReadAll();\r
-// TEST_ASSERT( WaitToComplete( 0 , 30 ) == NVM_REQ_OK );\r
+ currBlock = NVM_Block_1_Dataset_HANDLE;\r
\r
- currBlock = NVM_block_1_dataset_HANDLE;\r
-\r
- PATTERN_FILL(TEST_RamBlock_Dataset_0);\r
+ /*\r
+ * Write some pattern to Dataset 0\r
+ */\r
+ PATTERN_FILL(TEST_RamBlock_Dataset_0,0);\r
NvM_WriteBlock(currBlock,TEST_RamBlock_Dataset_0);\r
-// TEST_ASSERT( 0 == PATTERN_VERIFY(TEST_RamBlock_Dataset_0));\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
\r
- do {\r
- NvM_GetErrorStatus(currBlock, &errorStatus);\r
- } while( errorStatus != NVM_REQ_OK );\r
+ memset(TEST_RamBlock_Dataset_0,0,sizeof(TEST_RamBlock_Dataset_0));\r
+ NvM_ReadBlock(currBlock,TEST_RamBlock_Dataset_0);\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
+\r
+ rv = PATTERN_VERIFY(TEST_RamBlock_Dataset_0,0);\r
+ assert(rv == 0);\r
+\r
+ /*\r
+ * Write some pattern to Dataset 1\r
+ */\r
+ rv = NvM_SetDataIndex(currBlock,1);\r
+ assert( rv == E_OK );\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
+\r
+ PATTERN_FILL(TEST_RamBlock_Dataset_0,5);\r
+ NvM_WriteBlock(currBlock,TEST_RamBlock_Dataset_0);\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
\r
memset(TEST_RamBlock_Dataset_0,0,sizeof(TEST_RamBlock_Dataset_0));\r
NvM_ReadBlock(currBlock,TEST_RamBlock_Dataset_0);\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
+\r
+ rv = PATTERN_VERIFY(TEST_RamBlock_Dataset_0,5);\r
+ assert(rv == 0);\r
+\r
+\r
+ /*\r
+ * Back to Dataset 0 and check data.\r
+ */\r
+ NvM_SetDataIndex(currBlock,0);\r
+ assert( rv == E_OK );\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
+\r
+ NvM_ReadBlock(currBlock,TEST_RamBlock_Dataset_0);\r
+ BUSY_WAIT(currBlock,&errorStatus);\r
+\r
+ rv = PATTERN_VERIFY(TEST_RamBlock_Dataset_0,0);\r
+ assert(rv == 0);\r
+\r
+\r
+#if (WRITE_BLOCK_2 == STD_ON)\r
+\r
+ currBlock = NVM_Block_2_Native_HANDLE;\r
+\r
+ rv = NvM_WriteBlock(currBlock,NULL);\r
+ assert( rv == E_OK );\r
\r
do {\r
NvM_GetErrorStatus(currBlock, &errorStatus);\r
} while( errorStatus != NVM_REQ_OK );\r
\r
-// TEST_ASSERT( 0 == PATTERN_VERIFY(TEST_RamBlock_Dataset_0));\r
-}\r
-\r
-\r
-void Task_Application(void) {\r
+#endif\r
\r
}\r
\r
.ImmediateData = FALSE,\r
.NumberOfWriteCycles = 0\r
}, \r
+ {\r
+ .BlockNumber = 4, \r
+ .BlockSize = 14,\r
+ .ImmediateData = FALSE,\r
+ .NumberOfWriteCycles = 0\r
+ }, \r
{\r
.BlockNumber = 3, \r
.BlockSize = 22,\r
#define FEE_INDEX 0\r
#define FEE_VIRTUAL_PAGE_SIZE 16\r
\r
-#define FEE_NUM_OF_BLOCKS 2\r
+#define FEE_NUM_OF_BLOCKS 3\r
#define FEE_MAX_NUM_SETS 2 // 2^NvmDatasetSelectionBits \r
#endif /*FEE_CFG_H_*/\r
\r
#include "NvM.h"\r
\r
+/* Ram block for Block_2_Native */\r
+extern uint8 Block_2_RamBlock[];\r
+/* InitBlockCallbackFunction block for Block_2_Native */\r
+extern Std_ReturnType Block_2_InitCallback(void);\r
\r
// Single block callbacks\r
+extern Std_ReturnType Block_Dataset_SingleCallback(uint8 ServiceId, NvM_RequestResultType JobResult);
\r
\r
// Multi block callback\r
-extern void TEST_MultiBlockCallback(uint8 ServiceId, NvM_RequestResultType JobResult);\r
+extern void MultiBlock_Callback(uint8 ServiceId, NvM_RequestResultType JobResult);\r
\r
#ifdef CFG_NVM_USE_SERVICE_COMPONENT\r
-Std_ReturnType block_1_dataset_JobFinished(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
- return Rte_Call_block_1_dataset_NvMNotifyJobFinished_JobFinished(ServiceId, JobResult);\r
+Std_ReturnType Block_1_Dataset_JobFinished(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
+ return Rte_Call_Block_1_Dataset_NvMNotifyJobFinished_JobFinished(ServiceId, JobResult);\r
+}\r
+Std_ReturnType Block_2_Native_JobFinished(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
+ return Rte_Call_Block_2_Native_NvMNotifyJobFinished_JobFinished(ServiceId, JobResult);\r
}\r
\r
-Std_ReturnType block_1_dataset_InitBlock(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
- return Rte_Call_block_1_dataset_NvMNotifyInitBlock_InitBlock(ServiceId, JobResult);\r
+Std_ReturnType Block_1_Dataset_InitBlock(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
+ return Rte_Call_Block_1_Dataset_NvMNotifyInitBlock_InitBlock(ServiceId, JobResult);\r
+}\r
+Std_ReturnType Block_2_Native_InitBlock(UInt8 ServiceId, NvM_RequestResultType JobResult) {\r
+ return Rte_Call_Block_2_Native_NvMNotifyInitBlock_InitBlock(ServiceId, JobResult);\r
}\r
\r
-const blockNotifyJobFinishedFunc_t blockNotifyJobFinished[1] = {\r
- block_1_dataset_JobFinished,\r
+const blockNotifyJobFinishedFunc_t blockNotifyJobFinished[2] = {\r
+ Block_1_Dataset_JobFinished,\r
+ Block_2_Native_JobFinished,\r
};\r
\r
-const blockNotifyInitBlockFunc_t blockNotifyInitBlock[1] = {\r
- block_1_dataset_InitBlock,\r
+const blockNotifyInitBlockFunc_t blockNotifyInitBlock[2] = {\r
+ Block_1_Dataset_InitBlock,\r
+ Block_2_Native_InitBlock,\r
};\r
#endif\r
\r
.BlockWriteProt = STD_OFF,\r
.WriteBlockOnce = STD_OFF, /* Value is not configurable */\r
.SelectBlockForReadall = STD_OFF,\r
- .SingleBlockCallback = NULL,\r
+ .SingleBlockCallback = Block_Dataset_SingleCallback,\r
.NvBlockLength = 20,\r
.RamBlockDataAddress = NULL,\r
.NvBlockNum = 2,\r
.RomBlockDataAdress = NULL,\r
.InitBlockCallback = NULL,\r
},\r
+ {\r
+ .NvramBlockIdentifier = 3,\r
+ .BlockManagementType = NVM_BLOCK_NATIVE,\r
+ .BlockWriteProt = STD_OFF,\r
+ .WriteBlockOnce = STD_OFF, /* Value is not configurable */\r
+ .SelectBlockForReadall = STD_ON,\r
+ .SingleBlockCallback = NULL,\r
+ .NvBlockLength = 10,\r
+ .RamBlockDataAddress = Block_2_RamBlock,\r
+ .NvBlockNum = 1,\r
+ .NvramDeviceId = 1, /* Value is not configurable */ \r
+ .NvBlockBaseNumber = 4,\r
+ .BlockUseCrc = true,\r
+ .CalcRamBlockCrc = false,\r
+ .BlockJobPriority = 0, /* Value is not configurable */\r
+ .ResistantToChangesSw = FALSE, /* Value is not configurable */\r
+ .BlockCRCType = NVM_CRC32,\r
+ .RomBlockNum = 0,\r
+ .RomBlockDataAdress = NULL,\r
+ .InitBlockCallback = Block_2_InitCallback,\r
+ },\r
};\r
\r
const NvM_ConfigType NvM_Config = {\r
.Common = {\r
- .MultiBlockCallback = TEST_MultiBlockCallback,\r
+ .MultiBlockCallback = MultiBlock_Callback,\r
},\r
.BlockDescriptor = BlockDescriptorList, \r
};\r
#define NVM_SIZE_IMMEDIATE_JOB_QUEUE 0 // 1..255\r
#define NVM_SIZE_STANDARD_JOB_QUEUE 4 // 1..255\r
\r
-#define NVM_block_1_dataset_HANDLE 2\r
+#define NVM_Block_1_Dataset_HANDLE 2\r
+#define NVM_Block_2_Native_HANDLE 3\r
\r
#define NVM_MAX_BLOCK_LENGTH 20\r
\r
-#define NVM_NUM_OF_NVRAM_BLOCKS 2\r
+#define NVM_NUM_OF_NVRAM_BLOCKS 3\r
\r
#ifdef CFG_NVM_USE_SERVICE_COMPONENT\r
typedef Std_ReturnType (*blockNotifyJobFinishedFunc_t)(UInt8, NvM_RequestResultType);\r
<DEFINITION-REF DEST="MODULE-DEF">/ArcCore/NvM</DEFINITION-REF>\r
<CONTAINERS>\r
<CONTAINER UUID="f2439634-d30c-4441-b20c-0352011f425e">\r
- <SHORT-NAME>block_1_dataset</SHORT-NAME>\r
+ <SHORT-NAME>Block_1_Dataset</SHORT-NAME>\r
<ADMIN-DATA>\r
<SDGS>\r
<SDG GID="Arccore::IdentifiableOptions" />\r
</BOOLEAN-VALUE>\r
<FUNCTION-NAME-VALUE>\r
<DEFINITION-REF DEST="FUNCTION-NAME-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmSingleBlockCallback</DEFINITION-REF>\r
- <VALUE />\r
+ <VALUE>Block_Dataset_SingleCallback</VALUE>\r
</FUNCTION-NAME-VALUE>\r
<BOOLEAN-VALUE>\r
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmWriteBlockOnce</DEFINITION-REF>\r
<REFERENCE-VALUES>\r
<REFERENCE-VALUE>\r
<DEFINITION-REF DEST="SYMBOLIC-NAME-REFERENCE-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmTargetBlockReference/NvmFeeRef/NvmNameOfFeeBlock</DEFINITION-REF>\r
- <VALUE-REF DEST="CONTAINER">/nvm_05_fls_mpc5516it/Fee/Fee_Block_1</VALUE-REF>\r
+ <VALUE-REF DEST="CONTAINER">/nvm_05_fls_mpc5516it/Fee/Fee_Block_Dataset_0</VALUE-REF>\r
</REFERENCE-VALUE>\r
</REFERENCE-VALUES>\r
</CONTAINER>\r
</INTEGER-VALUE>\r
<FUNCTION-NAME-VALUE>\r
<DEFINITION-REF DEST="FUNCTION-NAME-DEF">/ArcCore/NvM/NvmCommon/NvmMultiBlockCallback</DEFINITION-REF>\r
- <VALUE>TEST_MultiBlockCallback</VALUE>\r
+ <VALUE>MultiBlock_Callback</VALUE>\r
</FUNCTION-NAME-VALUE>\r
<BOOLEAN-VALUE>\r
<DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmCommon/NvmPollingMode</DEFINITION-REF>\r
</BOOLEAN-VALUE>\r
</PARAMETER-VALUES>\r
</CONTAINER>\r
+ <CONTAINER UUID="1348e625-fe60-402e-9e16-52113eb7dfd8">\r
+ <SHORT-NAME>Block_2_Native</SHORT-NAME>\r
+ <ADMIN-DATA>\r
+ <SDGS>\r
+ <SDG GID="Arccore::IdentifiableOptions" />\r
+ </SDGS>\r
+ </ADMIN-DATA>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/NvM/NvmBlockDescriptor</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockCRCType</DEFINITION-REF>\r
+ <VALUE>NVM_CRC32</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockJobPriority</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ <ENUMERATION-VALUE>\r
+ <DEFINITION-REF DEST="ENUMERATION-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockManagementType</DEFINITION-REF>\r
+ <VALUE>NVM_BLOCK_NATIVE</VALUE>\r
+ </ENUMERATION-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockUseCrc</DEFINITION-REF>\r
+ <VALUE>true</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockWriteProt</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmCalcRamBlockCrc</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <FUNCTION-NAME-VALUE>\r
+ <DEFINITION-REF DEST="FUNCTION-NAME-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmInitBlockCallback</DEFINITION-REF>\r
+ <VALUE>Block_2_InitCallback</VALUE>\r
+ </FUNCTION-NAME-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmNvBlockBaseNumber</DEFINITION-REF>\r
+ <VALUE>4</VALUE>\r
+ </INTEGER-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmNvBlockLength</DEFINITION-REF>\r
+ <VALUE>10</VALUE>\r
+ </INTEGER-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmNvBlockNum</DEFINITION-REF>\r
+ <VALUE>1</VALUE>\r
+ </INTEGER-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmNvramBlockIdentifier</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="DERIVED-INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmNvramDeviceId</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ <STRING-VALUE>\r
+ <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmRamBlockDataAddress</DEFINITION-REF>\r
+ <VALUE>Block_2_RamBlock</VALUE>\r
+ </STRING-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmResistantToChangedSw</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <STRING-VALUE>\r
+ <DEFINITION-REF DEST="STRING-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmRomBlockDataAddress</DEFINITION-REF>\r
+ <VALUE />\r
+ </STRING-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmRomBlockNum</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmSelectBlockForReadall</DEFINITION-REF>\r
+ <VALUE>true</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <FUNCTION-NAME-VALUE>\r
+ <DEFINITION-REF DEST="FUNCTION-NAME-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmSingleBlockCallback</DEFINITION-REF>\r
+ <VALUE />\r
+ </FUNCTION-NAME-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmWriteBlockOnce</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmBlockCbkUsePort</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ </PARAMETER-VALUES>\r
+ <SUB-CONTAINERS>\r
+ <CONTAINER UUID="f577c043-d9aa-410f-8fda-71baab64104c">\r
+ <SHORT-NAME>NvmFeeRef</SHORT-NAME>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmTargetBlockReference/NvmFeeRef</DEFINITION-REF>\r
+ <REFERENCE-VALUES>\r
+ <REFERENCE-VALUE>\r
+ <DEFINITION-REF DEST="SYMBOLIC-NAME-REFERENCE-PARAM-DEF">/ArcCore/NvM/NvmBlockDescriptor/NvmTargetBlockReference/NvmFeeRef/NvmNameOfFeeBlock</DEFINITION-REF>\r
+ <VALUE-REF DEST="CONTAINER">/nvm_05_fls_mpc5516it/Fee/Fee_Block_Native</VALUE-REF>\r
+ </REFERENCE-VALUE>\r
+ </REFERENCE-VALUES>\r
+ </CONTAINER>\r
+ </SUB-CONTAINERS>\r
+ </CONTAINER>\r
</CONTAINERS>\r
</MODULE-CONFIGURATION>\r
<MODULE-CONFIGURATION UUID="6b94ef7e-3c42-48fa-bcd0-a71f3681b630">\r
<DEFINITION-REF DEST="MODULE-DEF">/ArcCore/Fee</DEFINITION-REF>\r
<CONTAINERS>\r
<CONTAINER UUID="787e69b8-436e-428e-8667-b932e28154f4">\r
- <SHORT-NAME>Fee_Block_1</SHORT-NAME>\r
+ <SHORT-NAME>Fee_Block_Dataset_0</SHORT-NAME>\r
<ADMIN-DATA>\r
<SDGS>\r
<SDG GID="Arccore::IdentifiableOptions" />\r
</PARAMETER-VALUES>\r
</CONTAINER>\r
<CONTAINER UUID="04933477-a39d-4b35-acf1-c6743d73d075">\r
- <SHORT-NAME>Fee_Block_2</SHORT-NAME>\r
+ <SHORT-NAME>Fee_Block_Native</SHORT-NAME>\r
+ <ADMIN-DATA>\r
+ <SDGS>\r
+ <SDG GID="Arccore::IdentifiableOptions" />\r
+ </SDGS>\r
+ </ADMIN-DATA>\r
+ <DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF">/ArcCore/Fee/FeeBlockConfiguration</DEFINITION-REF>\r
+ <PARAMETER-VALUES>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Fee/FeeBlockConfiguration/FeeBlockNumber</DEFINITION-REF>\r
+ <VALUE>4</VALUE>\r
+ </INTEGER-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Fee/FeeBlockConfiguration/FeeBlockSize</DEFINITION-REF>\r
+ <VALUE>14</VALUE>\r
+ </INTEGER-VALUE>\r
+ <BOOLEAN-VALUE>\r
+ <DEFINITION-REF DEST="BOOLEAN-PARAM-DEF">/ArcCore/Fee/FeeBlockConfiguration/FeeImmediateData</DEFINITION-REF>\r
+ <VALUE>false</VALUE>\r
+ </BOOLEAN-VALUE>\r
+ <INTEGER-VALUE>\r
+ <DEFINITION-REF DEST="INTEGER-PARAM-DEF">/ArcCore/Fee/FeeBlockConfiguration/FeeNumberOfWriteCycles</DEFINITION-REF>\r
+ <VALUE>0</VALUE>\r
+ </INTEGER-VALUE>\r
+ </PARAMETER-VALUES>\r
+ </CONTAINER>\r
+ <CONTAINER UUID="23cefe56-b33f-456e-ab3f-ea4d133b7e85">\r
+ <SHORT-NAME>Fee_Block_Dataset_1</SHORT-NAME>\r
<ADMIN-DATA>\r
<SDGS>\r
<SDG GID="Arccore::IdentifiableOptions" />\r