]> rtime.felk.cvut.cz Git - arc.git/blobdiff - diagnostic/Dem/Dem.c
Merge with 3ecb6845e742978827406b7da6f77dc350e6b55b
[arc.git] / diagnostic / Dem / Dem.c
index 61f35e255d94f39fd6c56bf990fdb6657e3e34d1..df05bae088284651d90a42b9e4eb415ca57bdf4a 100644 (file)
@@ -54,8 +54,8 @@
 //#include "SchM_Dem.h"\r
 #include "MemMap.h"\r
 #include "Cpu.h"\r
-#include "DEM_Types.h"\r
-#include "DEM_Lcfg.h"\r
+#include "Dem_Types.h"\r
+#include "Dem_Lcfg.h"\r
 \r
 #define USE_DEBUG_PRINTF\r
 #include "debug.h"\r
 /*\r
  * Local types\r
  */\r
+#if !defined(USE_DCM)\r
+typedef uint8 Dcm_NegativeResponseCodeType;\r
+#define DCM_E_POSITIVERESPONSE ((Dcm_NegativeResponseCodeType)0x00)\r
+#endif\r
 \r
 // DtcFilterType\r
 typedef struct {\r
@@ -572,7 +576,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
                        }\r
                }\r
                faultCounterAfterDebounce = eventStatusRecPtr->faultDetectionCounter;\r
-               \r
+\r
                eventStatusRecPtr->errorStatusChanged = FALSE;\r
 \r
                if (eventStatus == DEM_EVENT_STATUS_FAILED) {\r
@@ -769,7 +773,7 @@ static void bubbleSort(FreezeFrameRecType *freezeFrameBuf, uint16 length)
                                //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
@@ -780,9 +784,9 @@ static void bubbleSort(FreezeFrameRecType *freezeFrameBuf, uint16 length)
  * 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
@@ -796,7 +800,7 @@ static boolean retrieveEventStatusBit(FreezeFrameRecType *freezeFrameBuf,
                        if(freezeFrameFound == TRUE){\r
                                *freezeFrame = &freezeFrameBuf[i];\r
                        }\r
-               }               \r
+               }\r
        }\r
 \r
        return freezeFrameFound;\r
@@ -812,7 +816,7 @@ static boolean retrieveEventStatusBit(FreezeFrameRecType *freezeFrameBuf,
 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
@@ -823,12 +827,12 @@ static boolean lookupFreezeFrameForDisplacementPreInit(FreezeFrameRecType **free
        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
@@ -842,7 +846,7 @@ static boolean lookupFreezeFrameForDisplacementPreInit(FreezeFrameRecType **free
 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
@@ -854,9 +858,9 @@ static boolean lookupFreezeFrameForDisplacement(FreezeFrameRecType **freezeFrame
        }\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
@@ -871,7 +875,7 @@ static void rearrangeFreezeFrameTimeStamp(uint32 *timeStamp)
        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
@@ -881,15 +885,15 @@ static void rearrangeFreezeFrameTimeStamp(uint32 *timeStamp)
                                                //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
@@ -899,7 +903,7 @@ static void rearrangeFreezeFrameTimeStamp(uint32 *timeStamp)
  * 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
@@ -996,13 +1000,13 @@ static void getFreezeFrameData(const Dem_EventParameterType *eventParam,
                                        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
@@ -1022,7 +1026,7 @@ static void getFreezeFrameData(const Dem_EventParameterType *eventParam,
                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
@@ -1035,7 +1039,7 @@ static void getFreezeFrameData(const Dem_EventParameterType *eventParam,
                freezeFrame->eventId = DEM_EVENT_ID_NULL;\r
                freezeFrame->dataSize = storeIndex;\r
                freezeFrame->checksum = 0;\r
-       }       \r
+       }\r
 }\r
 \r
 \r
@@ -1073,7 +1077,7 @@ static void storeFreezeFrameDataPreInit(const Dem_EventParameterType *eventParam
                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
@@ -1101,7 +1105,7 @@ static void updateFreezeFrameOccurrencePreInit(const EventRecType *EventBuffer)
                        preInitFreezeFrameBuffer[i].occurrence += EventBuffer->occurrence;\r
                }\r
        }\r
-       \r
+\r
 }\r
 /*\r
  * Procedure:  initCurrentFreezeFrameTimeStamp\r
@@ -1117,7 +1121,7 @@ static void initCurrentFreezeFrameTimeStamp(uint32 *timeStampPtr)
 \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
@@ -1128,7 +1132,7 @@ static void initCurrentFreezeFrameTimeStamp(uint32 *timeStampPtr)
                        preInitFreezeFrameBuffer[i].timeStamp += temp;\r
                }\r
        }\r
-       *timeStampPtr += temp;  \r
+       *timeStampPtr += temp;\r
        Irq_Restore(state);\r
 }\r
 \r
@@ -1591,7 +1595,7 @@ static void storeFreezeFrameDataPriMem(const Dem_EventParameterType *eventParam,
                        }\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
@@ -1703,17 +1707,17 @@ static boolean lookupFreezeFrameDataSize(uint8 recordNumber, Dem_FreezeFrameClas
        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
@@ -1778,7 +1782,7 @@ static void handlePreInitEvent(Dem_EventIdType eventId, Dem_EventStatusType even
                                        }\r
                                }\r
 \r
-                               \r
+\r
                        }\r
                        else {\r
                                // Operation cycle not started\r
@@ -1837,7 +1841,7 @@ static Std_ReturnType handleEvent(Dem_EventIdType eventId, Dem_EventStatusType e
                                                else{\r
                                                        // do nothing\r
                                                }\r
-                                       }                                       \r
+                                       }\r
                                }\r
                        }\r
                        else {\r
@@ -2046,7 +2050,7 @@ static boolean lookupAgingRecPriMem(Dem_EventIdType eventId, const HealingRecTyp
 {\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
@@ -2371,6 +2375,7 @@ void Dem_Init(void)
                }\r
 \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
@@ -2464,7 +2469,7 @@ void Dem_Shutdown(void)
  * Interface for basic software scheduler\r
  */\r
 void Dem_MainFunction(void)/** @req DEM125 */\r
-{      \r
+{\r
        if (FFIsModified) {\r
                storeFreezeFrameDataPerMem(FreezeFrameBlockId);\r
        }\r
@@ -2927,12 +2932,12 @@ Dem_ReturnClearDTCType Dem_ClearDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTC
                                                                                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
@@ -3128,7 +3133,7 @@ Dem_ReturnGetSizeOfExtendedDataRecordByDTCType Dem_GetSizeOfExtendedDataRecordBy
  * 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
@@ -3237,7 +3242,7 @@ Dem_GetFreezeFameDataIdentifierByDTCType Dem_GetFreezeFrameDataIdentifierByDTC(u
                                                        }\r
                                                        *arraySize = didNum;\r
                                                }\r
-                                               \r
+\r
                                        }\r
                                        else{\r
                                                returnCode = DEM_GET_ID_WRONG_FF_TYPE;\r
@@ -3254,8 +3259,8 @@ Dem_GetFreezeFameDataIdentifierByDTCType Dem_GetFreezeFrameDataIdentifierByDTC(u
                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
@@ -3269,7 +3274,7 @@ Dem_GetFreezeFameDataIdentifierByDTCType Dem_GetFreezeFrameDataIdentifierByDTC(u
  * 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
@@ -3277,7 +3282,7 @@ Dem_ReturnGetSizeOfFreezeFrameType Dem_GetSizeOfFreezeFrame(uint32  dtc,Dem_DTCK
        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
@@ -3296,8 +3301,8 @@ Dem_ReturnGetSizeOfFreezeFrameType Dem_GetSizeOfFreezeFrame(uint32  dtc,Dem_DTCK
                                                                        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
@@ -3315,8 +3320,8 @@ Dem_ReturnGetSizeOfFreezeFrameType Dem_GetSizeOfFreezeFrame(uint32  dtc,Dem_DTCK
                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
@@ -3365,3 +3370,6 @@ void getPriMemAgingBufPtr(HealingRecType **buf)
 /***********************************\r
  * OBD-specific Interfaces (8.3.6) *\r
  ***********************************/\r
+\r
+\r
+\r