}\r
\r
/* Find out the corresponding FF class */\r
- for(i = 0;(i<DEM_MAX_NR_OF_CLASSES_IN_FREEZEFRAME_DATA) && (eventParam->FreezeFrameClassRef[i] != NULL);i++){\r
- if(eventParam->FreezeFrameClassRef[i]->FFStorageCondition == prefailedOrFailed){\r
- FreezeFrameLocal = eventParam->FreezeFrameClassRef[i];\r
- break;\r
+ if( eventParam->FreezeFrameClassRef != NULL ) {\r
+ for(i = 0;(i<DEM_MAX_NR_OF_CLASSES_IN_FREEZEFRAME_DATA) && (eventParam->FreezeFrameClassRef[i] != NULL);i++){\r
+ if(eventParam->FreezeFrameClassRef[i]->FFStorageCondition == prefailedOrFailed){\r
+ FreezeFrameLocal = eventParam->FreezeFrameClassRef[i];\r
+ break;\r
+ }\r
}\r
}\r
+\r
/* get the dids */\r
if(FreezeFrameLocal != NULL){\r
if(FreezeFrameLocal->FFIdClassRef != NULL){\r
- for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FreezeFrameLocal->FFIdClassRef[i].Arc_EOL)); i++) {\r
- if(FreezeFrameLocal->FFIdClassRef[i].PidOrDidUsePort == FALSE){\r
- if(FreezeFrameLocal->FFIdClassRef[i].DidReadDataLengthFnc != NULL){\r
- callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i].DidReadDataLengthFnc(&recordSize);\r
+ for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FreezeFrameLocal->FFIdClassRef[i]->Arc_EOL)); i++) {\r
+ if(FreezeFrameLocal->FFIdClassRef[i]->PidOrDidUsePort == FALSE){\r
+ if(FreezeFrameLocal->FFIdClassRef[i]->DidReadDataLengthFnc != NULL){\r
+ callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i]->DidReadDataLengthFnc(&recordSize);\r
if(callbackReturnCode != E_OK){\r
//if fail to read data length,discard the storage of FF\r
freezeFrame->eventId = DEM_EVENT_ID_NULL;\r
}\r
/* if no readDidDataLengthFunction, then try the PidOrDidSize. */\r
else{\r
- recordSize = FreezeFrameLocal->FFIdClassRef[i].PidOrDidSize;\r
+ recordSize = FreezeFrameLocal->FFIdClassRef[i]->PidOrDidSize;\r
}\r
/* read out the did data */\r
if ((storeIndex + recordSize + DEM_DID_IDENTIFIER_SIZE_OF_BYTES) <= DEM_MAX_SIZE_FF_DATA) {\r
/* store DID */\r
- freezeFrame->data[storeIndex] = (FreezeFrameLocal->FFIdClassRef[i].DidIdentifier>> 8) & 0xFFu;\r
+ freezeFrame->data[storeIndex] = (FreezeFrameLocal->FFIdClassRef[i]->DidIdentifier>> 8) & 0xFFu;\r
storeIndex++;\r
- freezeFrame->data[storeIndex] = FreezeFrameLocal->FFIdClassRef[i].DidIdentifier & 0xFFu;\r
+ freezeFrame->data[storeIndex] = FreezeFrameLocal->FFIdClassRef[i]->DidIdentifier & 0xFFu;\r
storeIndex++;\r
/* store data */\r
- if(FreezeFrameLocal->FFIdClassRef[i].DidConditionCheckReadFnc != NULL){\r
- callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i].DidConditionCheckReadFnc(&errorCode);\r
+ if(FreezeFrameLocal->FFIdClassRef[i]->DidConditionCheckReadFnc != NULL){\r
+ callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i]->DidConditionCheckReadFnc(&errorCode);\r
if ((callbackReturnCode == E_OK) && (errorCode == DCM_E_POSITIVERESPONSE)) {\r
- if(FreezeFrameLocal->FFIdClassRef[i].DidReadFnc!= NULL){\r
- callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i].DidReadFnc(&freezeFrame->data[storeIndex]);\r
+ if(FreezeFrameLocal->FFIdClassRef[i]->DidReadFnc!= NULL){\r
+ callbackReturnCode = FreezeFrameLocal->FFIdClassRef[i]->DidReadFnc(&freezeFrame->data[storeIndex]);\r
if (callbackReturnCode != E_OK) {\r
memset(&freezeFrame->data[storeIndex], DEM_FREEZEFRAME_DEFAULT_VALUE, recordSize);\r
}\r
Std_ReturnType copyNvmMirror(const NvM_BlockIdType BlockId, uint8 *dstPtr, const uint8 *srcPtr, uint8 len)\r
{\r
\r
-#if (DEM_USE_NVM == STD_ON)\r
+#if (DEM_USE_NVM == STD_ON && DEM_UNIT_TEST == STD_OFF)\r
Std_ReturnType blockReadStatus = E_NOT_OK;\r
NvM_RequestResultType requestResult;\r
\r
*/\r
Std_ReturnType writeNvmMirror(const NvM_BlockIdType BlockId, uint8 *dstPtr, const uint8 *srcPtr, uint8 len)\r
{\r
-#if (DEM_USE_NVM == STD_ON)\r
+#if (DEM_USE_NVM == STD_ON && DEM_UNIT_TEST == STD_OFF)\r
Std_ReturnType blockWriteStatus = E_NOT_OK;\r
NvM_RequestResultType requestResult;\r
\r
\r
for(uint16 i = 0; i < DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++){\r
if(memcmp(&priMemFreezeFrameBuffer[i], FreezeFrameMirrorBuffer[i], sizeof(FreezeFrameRecType))){\r
- if( E_NOT_OK == writeNvmMirror(FreezeFrameBlockId[i], (uint8 *)FreezeFrameMirrorBuffer[i], (const uint8 *)&priMemFreezeFrameBuffer[i], sizeof(FreezeFrameRecType)) ) {\r
+ if( E_OK == writeNvmMirror(FreezeFrameBlockId[i], (uint8 *)FreezeFrameMirrorBuffer[i], (const uint8 *)&priMemFreezeFrameBuffer[i], sizeof(FreezeFrameRecType)) ) {\r
+ FFIsModified = FALSE;\r
+ }\r
+ else\r
+ {\r
FFIsModified = TRUE;\r
}\r
}\r
uint16 i;\r
\r
if (*freezeFrameClassPtr != NULL) {\r
- for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && ((*freezeFrameClassPtr)->FFIdClassRef[i].Arc_EOL != TRUE); i++) {\r
- if((*freezeFrameClassPtr)->FFIdClassRef[i].DidReadDataLengthFnc != NULL){\r
- callbackReturnCode = (*freezeFrameClassPtr)->FFIdClassRef[i].DidReadDataLengthFnc(&dataSizeLocal);\r
+ for (i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && ((*freezeFrameClassPtr)->FFIdClassRef[i]->Arc_EOL != TRUE); i++) {\r
+ if((*freezeFrameClassPtr)->FFIdClassRef[i]->DidReadDataLengthFnc != NULL){\r
+ callbackReturnCode = (*freezeFrameClassPtr)->FFIdClassRef[i]->DidReadDataLengthFnc(&dataSizeLocal);\r
if(callbackReturnCode != E_OK){\r
return (dataSizeFound = FALSE);\r
}\r
}\r
else{\r
- dataSizeLocal = (*freezeFrameClassPtr)->FFIdClassRef[i].PidOrDidSize;\r
+ dataSizeLocal = (*freezeFrameClassPtr)->FFIdClassRef[i]->PidOrDidSize;\r
}\r
\r
*dataSize += dataSizeLocal + DEM_DID_IDENTIFIER_SIZE_OF_BYTES;\r
if (checkDtcOrigin(dtcOrigin, eventRec->eventParamRef)) {\r
if (lookupFreezeFrameDataRecNumParam(recordNumber, eventRec->eventParamRef, &FFDataRecordClass)) {\r
if(FFDataRecordClass->FFIdClassRef != NULL){\r
- for(i=0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FFDataRecordClass->FFIdClassRef[i].Arc_EOL)); i++){\r
- dataId[didNum] = &FFDataRecordClass->FFIdClassRef[i].DidIdentifier;/** @req DEM073 */\r
+ for(i=0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FFDataRecordClass->FFIdClassRef[i]->Arc_EOL)); i++){\r
+ dataId[didNum] = &FFDataRecordClass->FFIdClassRef[i]->DidIdentifier;/** @req DEM073 */\r
didNum++;\r
returnCode = DEM_GET_ID_OK;\r
\r
if (lookupFreezeFrameDataRecNumParam(recordNumber, eventRec->eventParamRef, &FFDataRecordClass)) {\r
if(FFDataRecordClass->FFIdClassRef != NULL){\r
/* Note - there is a function called lookupFreezeFrameDataSize that can be used here */\r
- for(i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FFDataRecordClass->FFIdClassRef[i].Arc_EOL)); i++){\r
+ for(i = 0; (i < DEM_MAX_NR_OF_RECORDS_IN_FREEZEFRAME_DATA) && (!(FFDataRecordClass->FFIdClassRef[i]->Arc_EOL)); i++){\r
/* read out the did size */\r
- if(FFDataRecordClass->FFIdClassRef[i].DidReadDataLengthFnc != NULL){\r
- callbackReturnCode = FFDataRecordClass->FFIdClassRef[i].DidReadDataLengthFnc(&dataSize);\r
+ if(FFDataRecordClass->FFIdClassRef[i]->DidReadDataLengthFnc != NULL){\r
+ callbackReturnCode = FFDataRecordClass->FFIdClassRef[i]->DidReadDataLengthFnc(&dataSize);\r
if(callbackReturnCode != E_OK){\r
return (returnCode = DEM_GET_SIZEOFFF_PENDING);\r
}\r
}\r
else{\r
- dataSize = FFDataRecordClass->FFIdClassRef[i].PidOrDidSize;\r
+ dataSize = FFDataRecordClass->FFIdClassRef[i]->PidOrDidSize;\r
}\r
*sizeOfFreezeFrame += dataSize+DEM_DID_IDENTIFIER_SIZE_OF_BYTES;/** @req DEM074 */\r
returnCode = DEM_GET_SIZEOFFF_OK;\r
\r
}\r
\r
-#define DEM_UNIT_TEST\r
-#ifdef DEM_UNIT_TEST\r
+#if (DEM_UNIT_TEST == STD_ON)\r
void getFFDataPreInit(FreezeFrameRecType **buf)\r
{\r
*buf = &preInitFreezeFrameBuffer[0];\r