}\r
}\r
faultCounterAfterDebounce = eventStatusRecPtr->faultDetectionCounter;\r
-- \r
++\r
eventStatusRecPtr->errorStatusChanged = FALSE;\r
\r
if (eventStatus == DEM_EVENT_STATUS_FAILED) {\r
//exchange buffer data\r
memcpy(&temp,&freezeFrameBuf[i],sizeof(FreezeFrameRecType));\r
memcpy(&freezeFrameBuf[i],&freezeFrameBuf[j],sizeof(FreezeFrameRecType));\r
-- memcpy(&freezeFrameBuf[j],&temp,sizeof(FreezeFrameRecType)); \r
++ memcpy(&freezeFrameBuf[j],&temp,sizeof(FreezeFrameRecType));\r
}\r
}\r
}\r
* Procedure: retrieveEventStatusBit\r
* Description: retrieve Event Status Bit\r
*/\r
--static boolean retrieveEventStatusBit(FreezeFrameRecType *freezeFrameBuf, \r
-- uint16 length , \r
-- Dem_EventStatusExtendedType nBit, \r
++static boolean retrieveEventStatusBit(FreezeFrameRecType *freezeFrameBuf,\r
++ uint16 length ,\r
++ Dem_EventStatusExtendedType nBit,\r
FreezeFrameRecType **freezeFrame)\r
{\r
boolean freezeFrameFound = FALSE;\r
if(freezeFrameFound == TRUE){\r
*freezeFrame = &freezeFrameBuf[i];\r
}\r
-- } \r
++ }\r
}\r
\r
return freezeFrameFound;\r
static boolean lookupFreezeFrameForDisplacementPreInit(FreezeFrameRecType **freezeFrame)\r
{\r
boolean freezeFrameFound = FALSE;\r
-- \r
++\r
/* Bubble sort:rearrange priMemFreezeFrameBuffer from little to big */\r
bubbleSort(preInitFreezeFrameBuffer, DEM_MAX_NUMBER_FF_DATA_PRE_INIT);\r
\r
if(freezeFrameFound == FALSE){\r
freezeFrameFound = retrieveEventStatusBit(preInitFreezeFrameBuffer, DEM_MAX_NUMBER_FF_DATA_PRE_INIT, DEM_TEST_FAILED, freezeFrame);\r
}\r
-- \r
++\r
/* if all confirmed,lookup the oldest active dtc */\r
if(freezeFrameFound == FALSE){\r
*freezeFrame = &preInitFreezeFrameBuffer[0];\r
freezeFrameFound = TRUE;\r
-- } \r
++ }\r
\r
return freezeFrameFound;\r
}\r
static boolean lookupFreezeFrameForDisplacement(FreezeFrameRecType **freezeFrame)\r
{\r
boolean freezeFrameFound = FALSE;\r
-- \r
++\r
bubbleSort(priMemFreezeFrameBuffer, DEM_MAX_NUMBER_FF_DATA_PRI_MEM);\r
\r
/* Find out the oldest not confirmed dtc */\r
}\r
\r
/* If all confirmed,lookup the oldest active dtc */\r
-- if(freezeFrameFound == FALSE){ \r
++ if(freezeFrameFound == FALSE){\r
*freezeFrame = &priMemFreezeFrameBuffer[0];\r
-- freezeFrameFound = TRUE; \r
++ freezeFrameFound = TRUE;\r
}\r
\r
return freezeFrameFound;\r
uint32 i = 0;\r
uint32 j = 0;\r
uint32 k = 0;\r
-- \r
++\r
/* Bubble sort:rearrange priMemFreezeFrameBuffer from little to big */\r
for(i=0;i<DEM_MAX_NUMBER_FF_DATA_PRI_MEM;i++){\r
if(priMemFreezeFrameBuffer[i].eventId != DEM_EVENT_ID_NULL){\r
//exchange buffer data\r
memcpy(&temp,&priMemFreezeFrameBuffer[i],sizeof(FreezeFrameRecType));\r
memcpy(&priMemFreezeFrameBuffer[i],&priMemFreezeFrameBuffer[j],sizeof(FreezeFrameRecType));\r
-- memcpy(&priMemFreezeFrameBuffer[j],&temp,sizeof(FreezeFrameRecType)); \r
++ memcpy(&priMemFreezeFrameBuffer[j],&temp,sizeof(FreezeFrameRecType));\r
}\r
\r
}\r
-- \r
++\r
}\r
priMemFreezeFrameBuffer[i].timeStamp = k++;\r
}\r
-- \r
++\r
}\r
/* update the current timeStamp */\r
*timeStamp = k;\r
* Procedure: getFreezeFrameData\r
* Description: get FF data according configuration \r
*/\r
--static void getFreezeFrameData(const Dem_EventParameterType *eventParam, \r
++static void getFreezeFrameData(const Dem_EventParameterType *eventParam,\r
FreezeFrameRecType *freezeFrame,\r
Dem_EventStatusType eventStatus,\r
EventStatusRecType *eventStatusRec)\r
else{\r
DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GET_FREEZEFRAME_ID, DEM_E_FF_TOO_BIG);\r
break;\r
-- } \r
++ }\r
}\r
else{\r
//TODO:RTE should provide the port\r
DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GET_FREEZEFRAME_ID, DEM_DSP_DID_USE_PORT_IS_TRUE);\r
}\r
-- } \r
++ }\r
}\r
\r
}\r
if(FF_TimeStamp > DEM_MAX_TIMESTAMP_FOR_REARRANGEMENT){\r
rearrangeFreezeFrameTimeStamp(&FF_TimeStamp);\r
}\r
-- \r
++\r
freezeFrame->timeStamp = FF_TimeStamp;\r
\r
FF_TimeStamp++;\r
freezeFrame->eventId = DEM_EVENT_ID_NULL;\r
freezeFrame->dataSize = storeIndex;\r
freezeFrame->checksum = 0;\r
-- } \r
++ }\r
}\r
\r
\r
if (eventIdFreePositionFound) {\r
memcpy(&preInitFreezeFrameBuffer[i-1], freezeFrame, sizeof(FreezeFrameRecType));\r
}\r
-- else { \r
++ else {\r
/* do displacement */\r
if(lookupFreezeFrameForDisplacementPreInit(&freezeFrameLocal)){\r
memcpy(freezeFrameLocal, freezeFrame, sizeof(FreezeFrameRecType));\r
preInitFreezeFrameBuffer[i].occurrence += EventBuffer->occurrence;\r
}\r
}\r
-- \r
++\r
}\r
/*\r
* Procedure: initCurrentFreezeFrameTimeStamp\r
\r
/* Find out the biggest timestamp in the last power on */\r
for (i = 0; i<DEM_MAX_NUMBER_FF_DATA_PRI_MEM; i++){\r
-- if((priMemFreezeFrameBuffer[i].eventId != DEM_EVENT_ID_NULL) && \r
++ if((priMemFreezeFrameBuffer[i].eventId != DEM_EVENT_ID_NULL) &&\r
(priMemFreezeFrameBuffer[i].timeStamp > temp)){\r
temp = priMemFreezeFrameBuffer[i].timeStamp;\r
}\r
preInitFreezeFrameBuffer[i].timeStamp += temp;\r
}\r
}\r
-- *timeStampPtr += temp; \r
++ *timeStampPtr += temp;\r
Irq_Restore(state);\r
}\r
\r
}\r
else{\r
DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_STORE_FF_DATA_PRI_MEM_ID, DEM_E_PRI_MEM_FF_DATA_BUFF_FULL);\r
-- } \r
++ }\r
}\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
++ 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
++ return (dataSizeFound = FALSE);\r
}\r
}\r
else{\r
dataSizeLocal = (*freezeFrameClassPtr)->FFIdClassRef[i].PidOrDidSize;\r
}\r
-- \r
++\r
*dataSize += dataSizeLocal + DEM_DID_IDENTIFIER_SIZE_OF_BYTES;\r
}\r
\r
}\r
}\r
\r
-- \r
++\r
}\r
else {\r
// Operation cycle not started\r
else{\r
// do nothing\r
}\r
-- } \r
++ }\r
}\r
}\r
else {\r
{\r
uint16 i;\r
boolean agingRecFound = FALSE;\r
-- \r
++\r
for (i = 0; i < DEM_MAX_NUMBER_AGING_PRI_MEM && (!agingRecFound); i++) {\r
if(priMemAgingBuffer[i].eventId == eventId){\r
agingRecFound = TRUE;\r
}\r
}\r
\r
- //initialize the current timestamp and update the timestamp in pre init\r
- initCurrentFreezeFrameTimeStamp(&FF_TimeStamp);\r
+ \r
+\r
// Validate extended data records stored in primary memory\r
for (i = 0; i < DEM_MAX_NUMBER_EXT_DATA_PRI_MEM; i++) {\r
entryValid = checkEntryValid(priMemExtDataBuffer[i].eventId);\r
* Interface for basic software scheduler\r
*/\r
void Dem_MainFunction(void)/** @req DEM125 */\r
--{ \r
++{\r
if (FFIsModified) {\r
storeFreezeFrameDataPerMem(FreezeFrameBlockId);\r
}\r
resetEventStatusRec(eventParam);\r
storeFreezeFrameDataPerMem();\r
break;\r
-- \r
++\r
case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
-- \r
++\r
break;\r
-- \r
-- case DEM_DTC_ORIGIN_SECONDARY_MEMORY: \r
++\r
++ case DEM_DTC_ORIGIN_SECONDARY_MEMORY:\r
case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
// Not yet supported\r
returnCode = DEM_CLEAR_WRONG_DTCORIGIN;\r
* Procedure: Dem_GetFreezeFrameDataByDTC\r
* Reentrant: No\r
*/\r
--/** @req DEM236 */ \r
++/** @req DEM236 */\r
Dem_ReturnGetFreezeFrameDataByDTCType Dem_GetFreezeFrameDataByDTC(uint32 dtc,Dem_DTCKindType dtcKind,Dem_DTCOriginType dtcOrigin,uint8 recordNumber,uint8* destBuffer,uint8* bufSize)\r
{\r
Dem_ReturnGetFreezeFrameDataByDTCType returnCode = DEM_GET_FFDATABYDTC_WRONG_DTC;\r
}\r
*arraySize = didNum;\r
}\r
-- \r
++\r
}\r
else{\r
returnCode = DEM_GET_ID_WRONG_FF_TYPE;\r
else{\r
returnCode = DEM_GET_ID_WRONG_DTC;\r
}\r
-- \r
-- } \r
++\r
++ }\r
else{\r
DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETFREEZEFRAMEDATAIDENTIFIERBYDTC_ID, DEM_E_UNINIT);\r
}\r
* Reentrant: No\r
*/\r
/** @req DEM238 */\r
--Dem_ReturnGetSizeOfFreezeFrameType Dem_GetSizeOfFreezeFrame(uint32 dtc,Dem_DTCKindType dtcKind,Dem_DTCOriginType dtcOrigin,uint8 recordNumber,uint16* sizeOfFreezeFrame) \r
++Dem_ReturnGetSizeOfFreezeFrameType Dem_GetSizeOfFreezeFrame(uint32 dtc,Dem_DTCKindType dtcKind,Dem_DTCOriginType dtcOrigin,uint8 recordNumber,uint16* sizeOfFreezeFrame)\r
{\r
Dem_ReturnGetSizeOfFreezeFrameType returnCode = DEM_GET_SIZEOFFF_PENDING;\r
Dem_FreezeFrameClassType const *FFDataRecordClass = NULL;\r
EventStatusRecType *eventRec;\r
uint16 dataSize = 0;\r
uint16 i = 0;\r
-- \r
++\r
if (demState == DEM_INITIALIZED) {\r
if (lookupDtcEvent(dtc, &eventRec)) {\r
if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\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
++ returnCode = DEM_GET_SIZEOFFF_OK;\r
++ }\r
}\r
}\r
else{\r
else{\r
returnCode = DEM_GET_SIZEOFFF_WRONG_DTC;\r
}\r
-- \r
-- } \r
++\r
++ }\r
else{\r
DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETFREEZEFRAMEDATAIDENTIFIERBYDTC_ID, DEM_E_UNINIT);\r
returnCode = DEM_GET_SIZEOFFF_PENDING;\r