admPtr->ErrorStatus = NVM_REQ_PENDING;\r
return E_OK;\r
}\r
+\r
+\r
+Std_ReturnType NvM_GetDataIndex( NvM_BlockIdType blockId, uint8 *dataIndexPtr ) {\r
+#if ( NVM_DEV_ERROR_DETECT == STD_ON )\r
+ const NvM_BlockDescriptorType * bPtr = &NvM_Config.BlockDescriptor[blockId-1];\r
+ AdministrativeBlockType * admPtr = &AdminBlock[blockId-1];\r
+#endif\r
+ Nvm_QueueType qEntry;\r
+ int rv;\r
+\r
+ NVM_ASSERT( blockId >= 2 ); /* No support for lower numbers, yet */\r
+\r
+ VALIDATE_RV(nvmState != NVM_UNINITIALIZED, NVM_GET_DATA_INDEX_ID, NVM_E_NOT_INITIALIZED, E_NOT_OK);\r
+ VALIDATE_RV(blockId < NVM_NUM_OF_NVRAM_BLOCKS+1, NVM_GET_DATA_INDEX_ID, NVM_E_PARAM_BLOCK_ID, E_NOT_OK);\r
+ VALIDATE_RV(bPtr->BlockManagementType != NVM_BLOCK_NATIVE , NVM_GET_DATA_INDEX_ID, NVM_E_PARAM_BLOCK_TYPE , E_NOT_OK);\r
+ VALIDATE_RV( (dataIndexPtr != NULL) , NVM_GET_DATA_INDEX_ID, NVM_E_PARAM_DATA ,E_NOT_OK);\r
+ VALIDATE_RV( (admPtr->ErrorStatus != NVM_REQ_PENDING), NVM_GET_DATA_INDEX_ID, NVM_E_BLOCK_PENDING , E_NOT_OK);\r
+\r
+ qEntry.blockId = blockId;\r
+ qEntry.op = NVM_GETDATAINDEX;\r
+ qEntry.blockId = blockId;\r
+ qEntry.dataPtr = dataIndexPtr;\r
+ rv = CirqBuffPush(&nvmQueue,&qEntry);\r
+ NVM_ASSERT(rv == 0 );\r
+\r
+ /* req 3.1.5/NVM185 */\r
+ admPtr->ErrorStatus = NVM_REQ_PENDING;\r
+ return E_OK;\r
+}\r
//#endif\r
\r
const NvM_BlockDescriptorType * nvmBlock;\r
admBlock->ErrorStatus = NVM_REQ_OK;\r
break;\r
case NVM_GETDATAINDEX:\r
- NVM_ASSERT(0);\r
+ *qEntry.dataPtr = admBlock->DataIndex;\r
nvmState = NVM_IDLE;\r
nvmSubState = 0;\r
admBlock->ErrorStatus = NVM_REQ_OK;\r