]> rtime.felk.cvut.cz Git - arc.git/commitdiff
Solved ticket refs #107
authorpete <devnull@localhost>
Tue, 24 Aug 2010 07:11:57 +0000 (09:11 +0200)
committerpete <devnull@localhost>
Tue, 24 Aug 2010 07:11:57 +0000 (09:11 +0200)
diagnostic/Dem/Dem.c
include/Dcm.h
include/Dem.h

index 1525859e90862aa9146a3ed05b9fb38b70f4afe8..ca77fd052a46d839537cf8115bc2e75d54cc8a87 100644 (file)
 /** @req DEM113 */ /** @req DEM174 */\r
 /** @req DEM286 */\r
 /** @req DEM267 */\r
+/** @req DEM364 */\r
+/** @req DEM114 */\r
+/** @req DEM124 */\r
+/** @req DEM370 */\r
+\r
 \r
 \r
 #include <string.h>\r
 #include "Dem.h"\r
-#include "Det.h"\r
 //#include "Fim.h"\r
 //#include "Nvm.h"\r
 //#include "SchM_Dem.h"\r
 #define DEBOUNCE_FDC_TEST_FAILED  127\r
 #define DEBOUNCE_FDC_TEST_PASSED -128\r
 \r
+#if  ( DEM_DEV_ERROR_DETECT == STD_ON )\r
+#include "Det.h"\r
+/** @req DEM117 */\r
+#define VALIDATE(_exp,_api,_err ) \\r
+        if( !(_exp) ) { \\r
+          Det_ReportError(MODULE_ID_DEM, 0, _api, _err); \\r
+          return E_NOT_OK; \\r
+        }\r
+\r
+#define VALIDATE_RV(_exp,_api,_err,_rv ) \\r
+        if( !(_exp) ) { \\r
+          Det_ReportError(MODULE_ID_DEM, 0, _api, _err); \\r
+          return _rv; \\r
+        }\r
+\r
+#define VALIDATE_NO_RV(_exp,_api,_err ) \\r
+  if( !(_exp) ) { \\r
+          Det_ReportError(MODULE_ID_DEM, 0, _api, _err); \\r
+          return; \\r
+        }\r
+#define DET_REPORTERROR(_x,_y,_z,_q) Det_ReportError(_x, _y, _z, _q)\r
+\r
+#else\r
+#define VALIDATE(_exp,_api,_err )\r
+#define VALIDATE_RV(_exp,_api,_err,_rv )\r
+#define VALIDATE_NO_RV(_exp,_api,_err )\r
+#define DET_REPORTERROR(_x,_y,_z,_q)\r
+#endif\r
+\r
+\r
 /*\r
  * Local types\r
  */\r
@@ -334,9 +368,7 @@ static Dem_EventStatusType preDebounceNone(Dem_EventStatusType reportedStatus, E
 \r
        default:\r
                // TODO: What to do with PREFAIL and PREPASSED on no debouncing?\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_PREDEBOUNCE_NONE_ID, DEM_E_PARAM_DATA); /** @req DEM117 */\r
-#endif\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_PREDEBOUNCE_NONE_ID, DEM_E_PARAM_DATA);\r
                break;\r
        }\r
 \r
@@ -391,9 +423,7 @@ static Dem_EventStatusType preDebounceCounterBased(Dem_EventStatusType reportedS
                break;\r
 \r
        default:\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_PREDEBOUNCE_COUNTER_BASED_ID, DEM_E_PARAM_DATA); /** @req DEM117 */\r
-#endif\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_PREDEBOUNCE_COUNTER_BASED_ID, DEM_E_PARAM_DATA);\r
                break;\r
 \r
        }\r
@@ -444,9 +474,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
                }\r
                else {\r
                        // Error: Event status buffer full\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_UPDATE_EVENT_STATUS_ID, DEM_E_EVENT_STATUS_BUFF_FULL); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_UPDATE_EVENT_STATUS_ID, DEM_E_EVENT_STATUS_BUFF_FULL);\r
                }\r
        }\r
 \r
@@ -464,9 +492,7 @@ static void updateEventStatusRec(const Dem_EventParameterType *eventParam, Dem_E
 \r
                default:\r
                        // Don't know how to handle this.\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_UPDATE_EVENT_STATUS_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_UPDATE_EVENT_STATUS_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                        break;\r
                }\r
 \r
@@ -542,9 +568,7 @@ static void mergeEventStatusRec(EventRecType *eventRec)
                }\r
                else {\r
                        // Error: Event status buffer full\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_MERGE_EVENT_STATUS_ID, DEM_E_EVENT_STATUS_BUFF_FULL); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_MERGE_EVENT_STATUS_ID, DEM_E_EVENT_STATUS_BUFF_FULL);\r
                }\r
        }\r
 \r
@@ -710,9 +734,7 @@ static void getExtendedData(const Dem_EventParameterType *eventParam, ExtDataRec
                        }\r
                        else {\r
                                // Error: Size of extended data record is bigger than reserved space.\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                               Det_ReportError(MODULE_ID_DEM, 0, DEM_GET_EXTENDED_DATA_ID, DEM_E_EXT_DATA_TOO_BIG); /** @req DEM117 */\r
-#endif\r
+                               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GET_EXTENDED_DATA_ID, DEM_E_EXT_DATA_TOO_BIG);\r
                                break;  // Break the loop\r
                        }\r
                }\r
@@ -758,9 +780,7 @@ static void storeExtendedDataPreInit(const Dem_EventParameterType *eventParam, E
                }\r
                else {\r
                        // Error: Pre init extended data buffer full\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_STORE_EXT_DATA_PRE_INIT_ID, DEM_E_PRE_INIT_EXT_DATA_BUFF_FULL); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_STORE_EXT_DATA_PRE_INIT_ID, DEM_E_PRE_INIT_EXT_DATA_BUFF_FULL);\r
                }\r
        }\r
 \r
@@ -798,9 +818,7 @@ static void storeEventPriMem(const Dem_EventParameterType *eventParam, EventStat
                }\r
                else {\r
                        // Error: Pri mem event buffer full\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_STORE_EVENT_PRI_MEM_ID, DEM_E_PRI_MEM_EVENT_BUFF_FULL); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_STORE_EVENT_PRI_MEM_ID, DEM_E_PRI_MEM_EVENT_BUFF_FULL);\r
                }\r
        }\r
 \r
@@ -850,9 +868,7 @@ static void storeEventEvtMem(const Dem_EventParameterType *eventParam, EventStat
                case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
                case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
                        // Not yet supported\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                        break;\r
                default:\r
                        break;\r
@@ -886,9 +902,7 @@ static void storeExtendedDataPriMem(const Dem_EventParameterType *eventParam, Ex
                }\r
                else {\r
                        // Error: Pri mem extended data buffer full\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_STORE_EXT_DATA_PRI_MEM_ID, DEM_E_PRI_MEM_EXT_DATA_BUFF_FULL); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_STORE_EXT_DATA_PRI_MEM_ID, DEM_E_PRI_MEM_EXT_DATA_BUFF_FULL);\r
                }\r
        }\r
 \r
@@ -937,9 +951,7 @@ static void storeExtendedDataEvtMem(const Dem_EventParameterType *eventParam, Ex
                case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
                case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
                        // Not yet supported\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                        break;\r
 \r
                default:\r
@@ -1032,9 +1044,7 @@ static void storeFreezeFrameDataEvtMem(const Dem_EventParameterType *eventParam,
                case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
                case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
                        // Not yet supported\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GLOBAL_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                        break;\r
                default:\r
                        break;\r
@@ -1287,15 +1297,11 @@ static Std_ReturnType getFaultDetectionCounter(Dem_EventIdType eventId, sint8 *c
 \r
                        case DEM_PRE_DEBOUNCE_FREQUENCY_BASED:\r
                        case DEM_PRE_DEBOUNCE_TIME_BASED:\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
+                               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
                                break;\r
 \r
                        default:\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_PARAM_DATA); /** @req DEM117 */\r
-#endif\r
+                               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_PARAM_DATA);\r
                                break;\r
                        }\r
                }\r
@@ -1342,17 +1348,13 @@ static Std_ReturnType setOperationCycleState(Dem_OperationCycleIdType operationC
                        }\r
                        break;\r
                default:\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_PARAM_DATA); /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_PARAM_DATA);\r
                        returnCode = E_NOT_OK;\r
                        break;\r
                }\r
        }\r
        else {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_PARAM_DATA); /** @req DEM117 */\r
-#endif\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_PARAM_DATA);\r
                returnCode = E_NOT_OK;\r
                }\r
 \r
@@ -1390,14 +1392,9 @@ void Dem_PreInit(void)
        /** @req DEM180 */\r
        int i, j;\r
 \r
-       if (DEM_Config.ConfigSet == NULL) {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_PREINIT_ID, DEM_E_CONFIG_PTR_INVALID); /** @req DEM117 */\r
-#endif\r
-               return;\r
-       } else {\r
-               configSet = DEM_Config.ConfigSet;\r
-       }\r
+       VALIDATE_NO_RV(DEM_Config.ConfigSet != NULL, DEM_PREINIT_ID, DEM_E_CONFIG_PTR_INVALID);\r
+\r
+       configSet = DEM_Config.ConfigSet;\r
 \r
        // Initializion of operation cycle states.\r
        for (i = 0; i < DEM_OPERATION_CYCLE_ID_ENDMARK; i++) {\r
@@ -1573,10 +1570,8 @@ Std_ReturnType Dem_SetEventStatus(Dem_EventIdType eventId, Dem_EventStatusType e
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_SETEVENTSTATUS_ID, DEM_E_UNINIT); /** @req DEM124.SetEventStatus */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.SetEventStatus */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_SETEVENTSTATUS_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1597,10 +1592,8 @@ Std_ReturnType Dem_ResetEventStatus(Dem_EventIdType eventId) /** @req DEM331 */
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_RESETEVENTSTATUS_ID, DEM_E_UNINIT); /** @req DEM124.ResetEventStatus */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.ResetEventStatus */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_RESETEVENTSTATUS_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1621,10 +1614,8 @@ Std_ReturnType Dem_GetEventStatus(Dem_EventIdType eventId, Dem_EventStatusExtend
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETEVENTSTATUS_ID, DEM_E_UNINIT); /** @req DEM124.GetEventStatus */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.GetEventStatus */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETEVENTSTATUS_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1645,10 +1636,8 @@ Std_ReturnType Dem_GetEventFailed(Dem_EventIdType eventId, boolean *eventFailed)
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETEVENTFAILED_ID, DEM_E_UNINIT); /** @req DEM124.GetEventFailed */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.GetEventFailed */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETEVENTFAILED_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1669,10 +1658,8 @@ Std_ReturnType Dem_GetEventTested(Dem_EventIdType eventId, boolean *eventTested)
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETEVENTTESTED_ID, DEM_E_UNINIT); /** @req DEM124.GetEventTested */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.GetEventTested */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETEVENTTESTED_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1693,10 +1680,8 @@ Std_ReturnType Dem_GetFaultDetectionCounter(Dem_EventIdType eventId, sint8 *coun
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_UNINIT); /** @req DEM124.GetFaultDetectionCounter */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.GetFaultDetectionCounter */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETFAULTDETECTIONCOUNTER_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1718,10 +1703,8 @@ Std_ReturnType Dem_SetOperationCycleState(Dem_OperationCycleIdType operationCycl
        }\r
        else\r
        {\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-               Det_ReportError(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_UNINIT); /** @req DEM124.SetOperationCycleState */ /** @req DEM117 */\r
-#endif\r
-               returnCode = E_NOT_OK; /** @req DEM370.SetOperationCycleState */\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_SETOPERATIONCYCLESTATE_ID, DEM_E_UNINIT);\r
+               returnCode = E_NOT_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -1737,18 +1720,26 @@ Std_ReturnType Dem_GetDTCOfEvent(Dem_EventIdType eventId, Dem_DTCKindType dtcKin
        Std_ReturnType returnCode = E_NO_DTC_AVAILABLE;\r
        const Dem_EventParameterType *eventParam;\r
 \r
-       lookupEventIdParameter(eventId, &eventParam);\r
+       if (demState == DEM_INITIALIZED) // No action is taken if the module is not started\r
+       {\r
+               lookupEventIdParameter(eventId, &eventParam);\r
 \r
-       if (eventParam != NULL) {\r
-               if (checkDtcKind(dtcKind, eventParam)) {\r
-                       if (eventParam->DTCClassRef != NULL) {\r
-                               *dtcOfEvent = eventParam->DTCClassRef->DTC; /** @req DEM269 */\r
-                               returnCode = E_OK;\r
+               if (eventParam != NULL) {\r
+                       if (checkDtcKind(dtcKind, eventParam)) {\r
+                               if (eventParam->DTCClassRef != NULL) {\r
+                                       *dtcOfEvent = eventParam->DTCClassRef->DTC; /** @req DEM269 */\r
+                                       returnCode = E_OK;\r
+                               }\r
                        }\r
                }\r
+               else {\r
+                       // Event Id not found\r
+                       returnCode = E_NOT_OK;\r
+               }\r
        }\r
-       else {\r
-               // Event Id not found\r
+       else\r
+       {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETDTCOFEVENT_ID, DEM_UNINITIALIZED);\r
                returnCode = E_NOT_OK;\r
        }\r
 \r
@@ -1766,7 +1757,6 @@ Std_ReturnType Dem_GetDTCOfEvent(Dem_EventIdType eventId, Dem_DTCKindType dtcKin
  */\r
 void Dem_ReportErrorStatus( Dem_EventIdType eventId, Dem_EventStatusType eventStatus ) /** @req DEM107 */\r
 {\r
-\r
        switch (demState) {\r
                case DEM_PREINITIALIZED:\r
                        // Update status and check if is to be stored\r
@@ -1782,9 +1772,8 @@ void Dem_ReportErrorStatus( Dem_EventIdType eventId, Dem_EventStatusType eventSt
                case DEM_UNINITIALIZED:\r
                default:\r
                        // Uninitialized can not do anything\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_REPORTERRORSTATUS_ID, DEM_E_UNINIT); /** @req DEM124.ReportErrorStatus */ /** @req DEM364 */ /** @req DEM117 */\r
-#endif\r
+                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_REPORTERRORSTATUS_ID, DEM_E_UNINIT);\r
+\r
                        break;\r
 \r
        } // switch (demState)\r
@@ -1823,35 +1812,37 @@ Dem_ReturnSetDTCFilterType Dem_SetDTCFilter(uint8 dtcStatusMask,
                Dem_DTCOriginType dtcOrigin,\r
                Dem_FilterWithSeverityType filterWithSeverity,\r
                Dem_DTCSeverityType dtcSeverityMask,\r
-               Dem_FilterForFDCType filterForFaultDetectionCounter) {\r
-\r
-       Dem_ReturnSetDTCFilterType returnCode = DEM_WRONG_FILTER;\r
+               Dem_FilterForFDCType filterForFaultDetectionCounter)\r
+{\r
+       Dem_ReturnSetDTCFilterType returnCode = DEM_FILTER_ACCEPTED;\r
 \r
-       // Check dtcKind parameter\r
-       if ((dtcKind == DEM_DTC_KIND_ALL_DTCS) || (dtcKind ==  DEM_DTC_KIND_EMISSION_REL_DTCS)) {\r
+       if (demState == DEM_INITIALIZED) {\r
+               // Check dtcKind parameter\r
+               VALIDATE_RV((dtcKind == DEM_DTC_KIND_ALL_DTCS) || (dtcKind == DEM_DTC_KIND_EMISSION_REL_DTCS), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
 \r
                // Check dtcOrigin parameter\r
-               if ((dtcOrigin == DEM_DTC_ORIGIN_SECONDARY_MEMORY) || (dtcOrigin == DEM_DTC_ORIGIN_PRIMARY_MEMORY)\r
-                       || (dtcOrigin == DEM_DTC_ORIGIN_PERMANENT_MEMORY) || (dtcOrigin == DEM_DTC_ORIGIN_MIRROR_MEMORY)) {\r
-\r
-                       // Check filterWithSeverity and dtcSeverityMask parameter\r
-                       if ((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_NO)\r
-                               || ((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_YES) && !(dtcSeverityMask & ~(DEM_SEVERITY_MAINTENANCE_ONLY | DEM_SEVERITY_CHECK_AT_NEXT_FALT | DEM_SEVERITY_CHECK_IMMEDIATELY)))){\r
-\r
-                               // Check filterForFaultDetectionCounter parameter\r
-                               if ((filterForFaultDetectionCounter == DEM_FILTER_FOR_FDC_YES) || (filterForFaultDetectionCounter ==  DEM_FILTER_FOR_FDC_NO)) {\r
-                                       // Yes all parameters correct, set the new filters.  /** @req DEM057 */\r
-                                       dtcFilter.dtcStatusMask = dtcStatusMask;\r
-                                       dtcFilter.dtcKind = dtcKind;\r
-                                       dtcFilter.dtcOrigin = dtcOrigin;\r
-                                       dtcFilter.filterWithSeverity = filterWithSeverity;\r
-                                       dtcFilter.dtcSeverityMask = dtcSeverityMask;\r
-                                       dtcFilter.filterForFaultDetectionCounter = filterForFaultDetectionCounter;\r
-                                       dtcFilter.faultIndex = DEM_MAX_NUMBER_EVENT;\r
-                                       returnCode = DEM_FILTER_ACCEPTED;\r
-                               }\r
-                       }\r
-               }\r
+               VALIDATE_RV((dtcOrigin == DEM_DTC_ORIGIN_SECONDARY_MEMORY) || (dtcOrigin == DEM_DTC_ORIGIN_PRIMARY_MEMORY)\r
+                                       || (dtcOrigin == DEM_DTC_ORIGIN_PERMANENT_MEMORY) || (dtcOrigin == DEM_DTC_ORIGIN_MIRROR_MEMORY), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
+\r
+               // Check filterWithSeverity and dtcSeverityMask parameter\r
+               VALIDATE_RV(((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_NO)\r
+                                       || ((filterWithSeverity == DEM_FILTER_WITH_SEVERITY_YES)\r
+                                               && !(dtcSeverityMask & ~(DEM_SEVERITY_MAINTENANCE_ONLY | DEM_SEVERITY_CHECK_AT_NEXT_FALT | DEM_SEVERITY_CHECK_IMMEDIATELY)))), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
+\r
+               // Check filterForFaultDetectionCounter parameter\r
+               VALIDATE_RV((filterForFaultDetectionCounter == DEM_FILTER_FOR_FDC_YES) || (filterForFaultDetectionCounter ==  DEM_FILTER_FOR_FDC_NO), DEM_SETDTCFILTER_ID, DEM_E_PARAM_DATA, DEM_WRONG_FILTER);\r
+\r
+               // Yes all parameters correct, set the new filters.  /** @req DEM057 */\r
+               dtcFilter.dtcStatusMask = dtcStatusMask;\r
+               dtcFilter.dtcKind = dtcKind;\r
+               dtcFilter.dtcOrigin = dtcOrigin;\r
+               dtcFilter.filterWithSeverity = filterWithSeverity;\r
+               dtcFilter.dtcSeverityMask = dtcSeverityMask;\r
+               dtcFilter.filterForFaultDetectionCounter = filterForFaultDetectionCounter;\r
+               dtcFilter.faultIndex = DEM_MAX_NUMBER_EVENT;\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_SETDTCFILTER_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_WRONG_FILTER;\r
        }\r
 \r
        return returnCode;\r
@@ -1866,22 +1857,27 @@ Dem_ReturnGetStatusOfDTCType Dem_GetStatusOfDTC(uint32 dtc, Dem_DTCKindType dtcK
        Dem_ReturnGetStatusOfDTCType returnCode = DEM_STATUS_FAILED;\r
        EventStatusRecType *eventRec;\r
 \r
-       if (lookupDtcEvent(dtc, &eventRec)) {\r
-               if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
-                       if (checkDtcOrigin(dtcOrigin,eventRec->eventParamRef)) {\r
-                               *status = eventRec->eventStatusExtended; /** @req DEM059 */\r
-                               returnCode = DEM_STATUS_OK;\r
+       if (demState == DEM_INITIALIZED) {\r
+               if (lookupDtcEvent(dtc, &eventRec)) {\r
+                       if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
+                               if (checkDtcOrigin(dtcOrigin,eventRec->eventParamRef)) {\r
+                                       *status = eventRec->eventStatusExtended; /** @req DEM059 */\r
+                                       returnCode = DEM_STATUS_OK;\r
+                               }\r
+                               else {\r
+                                       returnCode = DEM_STATUS_WRONG_DTCORIGIN; /** @req DEM171 */\r
+                               }\r
                        }\r
                        else {\r
-                               returnCode = DEM_STATUS_WRONG_DTCORIGIN; /** @req DEM171 */\r
+                               returnCode = DEM_STATUS_WRONG_DTCKIND;\r
                        }\r
                }\r
                else {\r
-                       returnCode = DEM_STATUS_WRONG_DTCKIND;\r
+                       returnCode = DEM_STATUS_WRONG_DTC; /** @req DEM172 */\r
                }\r
-       }\r
-       else {\r
-               returnCode = DEM_STATUS_WRONG_DTC; /** @req DEM172 */\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETSTATUSOFDTC_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_STATUS_FAILED;\r
        }\r
 \r
        return returnCode;\r
@@ -1895,24 +1891,30 @@ Dem_ReturnGetStatusOfDTCType Dem_GetStatusOfDTC(uint32 dtc, Dem_DTCKindType dtcK
 Dem_ReturnGetNumberOfFilteredDTCType Dem_GetNumberOfFilteredDtc(uint16 *numberOfFilteredDTC) {\r
        uint16 i;\r
        uint16 numberOfFaults = 0;\r
+       Dem_ReturnGetNumberOfFilteredDTCType returnCode = DEM_NUMBER_OK;\r
 \r
-       //Dem_DisableEventStatusUpdate();\r
+       if (demState == DEM_INITIALIZED) {\r
+               //Dem_DisableEventStatusUpdate();\r
 \r
-       for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
-               if (eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) {\r
-                       if (matchEventWithDtcFilter(&eventStatusBuffer[i])) {\r
-                               if (eventStatusBuffer[i].eventParamRef->DTCClassRef != NULL) {\r
-                                       numberOfFaults++;\r
+               for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
+                       if (eventStatusBuffer[i].eventId != DEM_EVENT_ID_NULL) {\r
+                               if (matchEventWithDtcFilter(&eventStatusBuffer[i])) {\r
+                                       if (eventStatusBuffer[i].eventParamRef->DTCClassRef != NULL) {\r
+                                               numberOfFaults++;\r
+                                       }\r
                                }\r
                        }\r
                }\r
-       }\r
 \r
-       //Dem_EnableEventStatusUpdate();\r
+               //Dem_EnableEventStatusUpdate();\r
 \r
-       *numberOfFilteredDTC = numberOfFaults; /** @req DEM061 */\r
+               *numberOfFilteredDTC = numberOfFaults; /** @req DEM061 */\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETNUMBEROFFILTEREDDTC_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_NUMBER_FAILED;\r
+       }\r
 \r
-       return DEM_NUMBER_OK;\r
+       return returnCode;\r
 }\r
 \r
 \r
@@ -1925,22 +1927,27 @@ Dem_ReturnGetNextFilteredDTCType Dem_GetNextFilteredDTC(uint32 *dtc, Dem_EventSt
        Dem_ReturnGetNextFilteredDTCType returnCode = DEM_FILTERED_OK;\r
        boolean dtcFound = FALSE;\r
 \r
-       // TODO: This job should be done in an more advanced way according to Dem217\r
-       while (!dtcFound && (dtcFilter.faultIndex != 0)) {\r
-               dtcFilter.faultIndex--;\r
-               if (eventStatusBuffer[dtcFilter.faultIndex].eventId != DEM_EVENT_ID_NULL) {\r
-                       if (matchEventWithDtcFilter(&eventStatusBuffer[dtcFilter.faultIndex])) {\r
-                               if (eventStatusBuffer[dtcFilter.faultIndex].eventParamRef->DTCClassRef != NULL) {\r
-                                       *dtc = eventStatusBuffer[dtcFilter.faultIndex].eventParamRef->DTCClassRef->DTC; /** @req DEM216 */\r
-                                       *dtcStatus = eventStatusBuffer[dtcFilter.faultIndex].eventStatusExtended;\r
-                                       dtcFound = TRUE;\r
+       if (demState == DEM_INITIALIZED) {\r
+               // TODO: This job should be done in an more advanced way according to Dem217\r
+               while (!dtcFound && (dtcFilter.faultIndex != 0)) {\r
+                       dtcFilter.faultIndex--;\r
+                       if (eventStatusBuffer[dtcFilter.faultIndex].eventId != DEM_EVENT_ID_NULL) {\r
+                               if (matchEventWithDtcFilter(&eventStatusBuffer[dtcFilter.faultIndex])) {\r
+                                       if (eventStatusBuffer[dtcFilter.faultIndex].eventParamRef->DTCClassRef != NULL) {\r
+                                               *dtc = eventStatusBuffer[dtcFilter.faultIndex].eventParamRef->DTCClassRef->DTC; /** @req DEM216 */\r
+                                               *dtcStatus = eventStatusBuffer[dtcFilter.faultIndex].eventStatusExtended;\r
+                                               dtcFound = TRUE;\r
+                                       }\r
                                }\r
                        }\r
                }\r
-       }\r
 \r
-       if (!dtcFound) {\r
-               dtcFilter.faultIndex = DEM_MAX_NUMBER_EVENT;\r
+               if (!dtcFound) {\r
+                       dtcFilter.faultIndex = DEM_MAX_NUMBER_EVENT;\r
+                       returnCode = DEM_FILTERED_NO_MATCHING_DTC;\r
+               }\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETNEXTFILTEREDDTC_ID, DEM_E_UNINIT);\r
                returnCode = DEM_FILTERED_NO_MATCHING_DTC;\r
        }\r
 \r
@@ -1969,53 +1976,54 @@ Dem_ReturnClearDTCType Dem_ClearDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTC
        const Dem_EventParameterType *eventParam;\r
        uint16 i, j;\r
 \r
-       // Loop through the event buffer\r
-       for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
-               eventId = eventStatusBuffer[i].eventId;\r
-               if (eventId != DEM_EVENT_ID_NULL) {\r
-                       eventParam = eventStatusBuffer[i].eventParamRef;\r
-                       if (eventParam != NULL) {\r
-                               if (DEM_CLEAR_ALL_EVENTS | (eventParam->DTCClassRef != NULL)) {\r
-                                       if (checkDtcKind(dtcKind, eventParam)) {\r
-                                               if (checkDtcGroup(dtc, eventParam)) {\r
-                                                       for (j = 0; (j < DEM_MAX_NR_OF_EVENT_DESTINATION) && (eventParam->EventClass->EventDestination[j] != dtcOrigin); j++);\r
-                                                       if (j < DEM_MAX_NR_OF_EVENT_DESTINATION) {\r
-                                                               // Yes! All conditions met.\r
-                                                               switch (dtcOrigin)\r
-                                                               {\r
-                                                               case DEM_DTC_ORIGIN_PRIMARY_MEMORY:\r
-                                                                       /** @req DEM077 */\r
-                                                                       deleteEventPriMem(eventParam);\r
-                                                                       deleteFreezeFrameDataPriMem(eventParam);\r
-                                                                       deleteExtendedDataPriMem(eventParam);\r
-                                                                       deleteEventStatusRec(eventParam);               // TODO: Shall this be done or just resetting the status?\r
-                                                                       break;\r
-\r
-                                                               case DEM_DTC_ORIGIN_SECONDARY_MEMORY:\r
-                                                               case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
-                                                               case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
-                                                                       // Not yet supported\r
-                                                                       returnCode = DEM_CLEAR_WRONG_DTCORIGIN;\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                                                                       Det_ReportError(MODULE_ID_DEM, 0, DEM_CLEARDTC_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
-                                                                       break;\r
-                                                               default:\r
-                                                                       returnCode = DEM_CLEAR_WRONG_DTCORIGIN;\r
-                                                                       break;\r
+       if (demState == DEM_INITIALIZED) {\r
+               // Loop through the event buffer\r
+               for (i = 0; i < DEM_MAX_NUMBER_EVENT; i++) {\r
+                       eventId = eventStatusBuffer[i].eventId;\r
+                       if (eventId != DEM_EVENT_ID_NULL) {\r
+                               eventParam = eventStatusBuffer[i].eventParamRef;\r
+                               if (eventParam != NULL) {\r
+                                       if (DEM_CLEAR_ALL_EVENTS | (eventParam->DTCClassRef != NULL)) {\r
+                                               if (checkDtcKind(dtcKind, eventParam)) {\r
+                                                       if (checkDtcGroup(dtc, eventParam)) {\r
+                                                               for (j = 0; (j < DEM_MAX_NR_OF_EVENT_DESTINATION) && (eventParam->EventClass->EventDestination[j] != dtcOrigin); j++);\r
+                                                               if (j < DEM_MAX_NR_OF_EVENT_DESTINATION) {\r
+                                                                       // Yes! All conditions met.\r
+                                                                       switch (dtcOrigin)\r
+                                                                       {\r
+                                                                       case DEM_DTC_ORIGIN_PRIMARY_MEMORY:\r
+                                                                               /** @req DEM077 */\r
+                                                                               deleteEventPriMem(eventParam);\r
+                                                                               deleteFreezeFrameDataPriMem(eventParam);\r
+                                                                               deleteExtendedDataPriMem(eventParam);\r
+                                                                               deleteEventStatusRec(eventParam);               // TODO: Shall this be done or just resetting the status?\r
+                                                                               break;\r
+\r
+                                                                       case DEM_DTC_ORIGIN_SECONDARY_MEMORY:\r
+                                                                       case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
+                                                                       case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
+                                                                               // Not yet supported\r
+                                                                               returnCode = DEM_CLEAR_WRONG_DTCORIGIN;\r
+                                                                               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_CLEARDTC_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
+                                                                               break;\r
+                                                                       default:\r
+                                                                               returnCode = DEM_CLEAR_WRONG_DTCORIGIN;\r
+                                                                               break;\r
+                                                                       }\r
                                                                }\r
                                                        }\r
                                                }\r
                                        }\r
                                }\r
-                       }\r
-                       else {\r
-                               // Fatal error, no event parameters found for the stored event!\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                       Det_ReportError(MODULE_ID_DEM, 0, DEM_CLEARDTC_ID, DEM_E_UNEXPECTED_EXECUTION); /** @req DEM117 */\r
-#endif\r
+                               else {\r
+                                       // Fatal error, no event parameters found for the stored event!\r
+                                       DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_CLEARDTC_ID, DEM_E_UNEXPECTED_EXECUTION);\r
+                               }\r
                        }\r
                }\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_CLEARDTC_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_CLEAR_FAILED;\r
        }\r
 \r
        return returnCode;\r
@@ -2028,22 +2036,26 @@ Dem_ReturnClearDTCType Dem_ClearDTC(uint32 dtc, Dem_DTCKindType dtcKind, Dem_DTC
  */\r
 Dem_ReturnControlDTCStorageType Dem_DisableDTCStorage(Dem_DTCGroupType dtcGroup, Dem_DTCKindType dtcKind) /** @req DEM035 */\r
 {\r
-       Dem_ReturnControlDTCStorageType returnCode = DEM_CONTROL_DTC_STORAGE_N_OK;\r
-\r
-       // Check dtcGroup parameter\r
-       if (dtcGroup == DEM_DTC_GROUP_ALL_DTCS) {\r
-               // Check dtcKind parameter\r
-               if ((dtcKind == DEM_DTC_KIND_ALL_DTCS) || (dtcKind ==  DEM_DTC_KIND_EMISSION_REL_DTCS)) {\r
-                       /** @req DEM079 */\r
-                       disableDtcStorage.dtcGroup = dtcGroup;\r
-                       disableDtcStorage.dtcKind = dtcKind;\r
-                       disableDtcStorage.storageDisabled = TRUE;\r
-\r
-                       returnCode = DEM_CONTROL_DTC_STORAGE_OK;\r
+       Dem_ReturnControlDTCStorageType returnCode = DEM_CONTROL_DTC_STORAGE_OK;\r
+\r
+       if (demState == DEM_INITIALIZED) {\r
+               // Check dtcGroup parameter\r
+               if (dtcGroup == DEM_DTC_GROUP_ALL_DTCS) {\r
+                       // Check dtcKind parameter\r
+                       if ((dtcKind == DEM_DTC_KIND_ALL_DTCS) || (dtcKind ==  DEM_DTC_KIND_EMISSION_REL_DTCS)) {\r
+                               /** @req DEM079 */\r
+                               disableDtcStorage.dtcGroup = dtcGroup;\r
+                               disableDtcStorage.dtcKind = dtcKind;\r
+                               disableDtcStorage.storageDisabled = TRUE;\r
+                       } else {\r
+                               returnCode = DEM_CONTROL_DTC_STORAGE_N_OK;\r
+                       }\r
+               } else {\r
+                       returnCode = DEM_CONTROL_DTC_WRONG_DTCGROUP;\r
                }\r
-       }\r
-       else {\r
-               returnCode = DEM_CONTROL_DTC_WRONG_DTCGROUP;\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_DISABLEDTCSTORAGE_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_CONTROL_DTC_STORAGE_N_OK;\r
        }\r
 \r
        return returnCode;\r
@@ -2056,10 +2068,17 @@ Dem_ReturnControlDTCStorageType Dem_DisableDTCStorage(Dem_DTCGroupType dtcGroup,
  */\r
 Dem_ReturnControlDTCStorageType Dem_EnableDTCStorage(Dem_DTCGroupType dtcGroup, Dem_DTCKindType dtcKind)\r
 {\r
-       // TODO: Behavior is not defined if group or kind do not match active settings, therefore the filter is just switched off.\r
-       disableDtcStorage.storageDisabled = FALSE; /** @req DEM080 */\r
+       Dem_ReturnControlDTCStorageType returnCode = DEM_CONTROL_DTC_STORAGE_OK;\r
 \r
-       return DEM_CONTROL_DTC_STORAGE_OK;\r
+       if (demState == DEM_INITIALIZED) {\r
+               // TODO: Behavior is not defined if group or kind do not match active settings, therefore the filter is just switched off.\r
+               disableDtcStorage.storageDisabled = FALSE; /** @req DEM080 */\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_ENABLEDTCSTORAGE_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_CONTROL_DTC_STORAGE_N_OK;\r
+       }\r
+\r
+       return returnCode;\r
 }\r
 \r
 /*\r
@@ -2074,56 +2093,59 @@ Dem_ReturnGetExtendedDataRecordByDTCType Dem_GetExtendedDataRecordByDTC(uint32 d
        ExtDataRecType *extData;\r
        uint8 posInExtData = 0;\r
 \r
-       if (lookupDtcEvent(dtc, &eventRec)) {\r
-               if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
-                       if (checkDtcOrigin(dtcOrigin, eventRec->eventParamRef)) {\r
-                               if (lookupExtendedDataRecNumParam(extendedDataNumber, eventRec->eventParamRef, &extendedDataRecordClass, &posInExtData)) {\r
-                                       if (*bufSize >= extendedDataRecordClass->DataSize) {\r
-                                               switch (dtcOrigin)\r
-                                               {\r
-                                               case DEM_DTC_ORIGIN_PRIMARY_MEMORY:\r
-                                                       if (lookupExtendedDataPriMem(eventRec->eventId, &extData)) {\r
-                                                               // Yes all conditions met, copy the extended data record to destination buffer.\r
-                                                               memcpy(destBuffer, &extData->data[posInExtData], extendedDataRecordClass->DataSize); /** @req DEM075 */\r
-                                                               *bufSize = extendedDataRecordClass->DataSize;\r
-                                                               returnCode = DEM_RECORD_OK;\r
-                                                       }\r
-                                                       else {\r
-                                                               // The record number is legal but no record was found for the DTC\r
-                                                               *bufSize = 0;\r
-                                                               returnCode = DEM_RECORD_OK;\r
+       if (demState == DEM_INITIALIZED) {\r
+               if (lookupDtcEvent(dtc, &eventRec)) {\r
+                       if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
+                               if (checkDtcOrigin(dtcOrigin, eventRec->eventParamRef)) {\r
+                                       if (lookupExtendedDataRecNumParam(extendedDataNumber, eventRec->eventParamRef, &extendedDataRecordClass, &posInExtData)) {\r
+                                               if (*bufSize >= extendedDataRecordClass->DataSize) {\r
+                                                       switch (dtcOrigin)\r
+                                                       {\r
+                                                       case DEM_DTC_ORIGIN_PRIMARY_MEMORY:\r
+                                                               if (lookupExtendedDataPriMem(eventRec->eventId, &extData)) {\r
+                                                                       // Yes all conditions met, copy the extended data record to destination buffer.\r
+                                                                       memcpy(destBuffer, &extData->data[posInExtData], extendedDataRecordClass->DataSize); /** @req DEM075 */\r
+                                                                       *bufSize = extendedDataRecordClass->DataSize;\r
+                                                                       returnCode = DEM_RECORD_OK;\r
+                                                               }\r
+                                                               else {\r
+                                                                       // The record number is legal but no record was found for the DTC\r
+                                                                       *bufSize = 0;\r
+                                                                       returnCode = DEM_RECORD_OK;\r
+                                                               }\r
+                                                               break;\r
+\r
+                                                       case DEM_DTC_ORIGIN_SECONDARY_MEMORY:\r
+                                                       case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
+                                                       case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
+                                                               // Not yet supported\r
+                                                               returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
+                                                               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETEXTENDEDDATARECORDBYDTC_ID, DEM_E_NOT_IMPLEMENTED_YET);\r
+                                                               break;\r
+                                                       default:\r
+                                                               returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
+                                                               break;\r
                                                        }\r
-                                                       break;\r
-\r
-                                               case DEM_DTC_ORIGIN_SECONDARY_MEMORY:\r
-                                               case DEM_DTC_ORIGIN_PERMANENT_MEMORY:\r
-                                               case DEM_DTC_ORIGIN_MIRROR_MEMORY:\r
-                                                       // Not yet supported\r
-                                                       returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
-#if (DEM_DEV_ERROR_DETECT == STD_ON)\r
-                                                       Det_ReportError(MODULE_ID_DEM, 0, DEM_GETEXTENDEDDATARECORDBYDTC_ID, DEM_E_NOT_IMPLEMENTED_YET); /** @req DEM117 */\r
-#endif\r
-                                                       break;\r
-                                               default:\r
-                                                       returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
-                                                       break;\r
+                                               }\r
+                                               else {\r
+                                                       returnCode = DEM_RECORD_BUFFERSIZE;\r
                                                }\r
                                        }\r
                                        else {\r
-                                               returnCode = DEM_RECORD_BUFFERSIZE;\r
+                                               returnCode = DEM_RECORD_NUMBER;\r
                                        }\r
                                }\r
                                else {\r
-                                       returnCode = DEM_RECORD_NUMBER;\r
+                                       returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
                                }\r
                        }\r
                        else {\r
-                               returnCode = DEM_RECORD_WRONG_DTCORIGIN;\r
+                               returnCode = DEM_RECORD_DTCKIND;\r
                        }\r
                }\r
-               else {\r
-                       returnCode = DEM_RECORD_DTCKIND;\r
-               }\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETEXTENDEDDATARECORDBYDTC_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_RECORD_WRONG_DTC;\r
        }\r
 \r
        return returnCode;\r
@@ -2141,24 +2163,29 @@ Dem_ReturnGetSizeOfExtendedDataRecordByDTCType Dem_GetSizeOfExtendedDataRecordBy
        Dem_ExtendedDataRecordClassType const *extendedDataRecordClass = NULL;\r
        uint8 posInExtData;\r
 \r
-       if (lookupDtcEvent(dtc, &eventRec)) {\r
-               if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
-                       if (checkDtcOrigin(dtcOrigin, eventRec->eventParamRef)) {\r
-                               if (lookupExtendedDataRecNumParam(extendedDataNumber, eventRec->eventParamRef, &extendedDataRecordClass, &posInExtData)) {\r
-                                       *sizeOfExtendedDataRecord = extendedDataRecordClass->DataSize; /** @req DEM076 */\r
-                                       returnCode = DEM_GET_SIZEOFEDRBYDTC_OK;\r
+       if (demState == DEM_INITIALIZED) {\r
+               if (lookupDtcEvent(dtc, &eventRec)) {\r
+                       if (checkDtcKind(dtcKind, eventRec->eventParamRef)) {\r
+                               if (checkDtcOrigin(dtcOrigin, eventRec->eventParamRef)) {\r
+                                       if (lookupExtendedDataRecNumParam(extendedDataNumber, eventRec->eventParamRef, &extendedDataRecordClass, &posInExtData)) {\r
+                                               *sizeOfExtendedDataRecord = extendedDataRecordClass->DataSize; /** @req DEM076 */\r
+                                               returnCode = DEM_GET_SIZEOFEDRBYDTC_OK;\r
+                                       }\r
+                                       else {\r
+                                               returnCode = DEM_GET_SIZEOFEDRBYDTC_W_RNUM;\r
+                                       }\r
                                }\r
                                else {\r
-                                       returnCode = DEM_GET_SIZEOFEDRBYDTC_W_RNUM;\r
+                                       returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTCOR;\r
                                }\r
                        }\r
                        else {\r
-                               returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTCOR;\r
+                               returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTCKI;\r
                        }\r
                }\r
-               else {\r
-                       returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTCKI;\r
-               }\r
+       } else {\r
+               DET_REPORTERROR(MODULE_ID_DEM, 0, DEM_GETSIZEOFEXTENDEDDATARECORDBYDTC_ID, DEM_E_UNINIT);\r
+               returnCode = DEM_GET_SIZEOFEDRBYDTC_W_DTC;\r
        }\r
 \r
        return returnCode;\r
index 31aff56f702050ab03e50741f467f6c59b964607..af96a592e4391c80ab2d8aaf7875599236b048eb 100644 (file)
@@ -49,7 +49,7 @@
 #define DCM_E_PARAM                                                    0x06\r
 \r
 // Other error codes reported by this module\r
-#define DCM_E_CONFIG_INVALID                           0x41\r
+#define DCM_E_CONFIG_INVALID                           0x40\r
 #define DCM_E_NOT_SUPPORTED                                    0xfe\r
 #define DCM_E_NOT_IMPLEMENTED_YET                      0xff\r
 \r
index 0478482f50f4db80796647e313253413614e60eb..2c02c2aee4c8eb543542d9fcc370fa662cf31c0c 100644 (file)
@@ -45,7 +45,6 @@
 \r
 #if (DEM_DEV_ERROR_DETECT == STD_ON)\r
 // Error codes reported by this module defined by AUTOSAR /** @req DEM116 */ /** @req DEM173 */\r
-#define DEM_E_CONFIG_PTR_INVALID                       0x01\r
 #define DEM_E_PARAM_CONFIG                                     0x10\r
 #define DEM_E_PARAM_ADDRESS                                    0x11\r
 #define DEM_E_PARAM_DATA                                       0x12\r
 #define DEM_E_NODATAAVAILABLE                          0x30\r
 \r
 // Other error codes reported by this module\r
-#define DEM_E_EVENT_STATUS_BUFF_FULL           0x40\r
-#define DEM_E_EXT_DATA_TOO_BIG                         0x41\r
-#define DEM_E_PRE_INIT_EXT_DATA_BUFF_FULL      0x42\r
-#define DEM_E_PRI_MEM_EVENT_BUFF_FULL          0x43\r
-#define DEM_E_PRI_MEM_EXT_DATA_BUFF_FULL       0x44\r
+#define DEM_E_CONFIG_PTR_INVALID                       0x40\r
+#define DEM_E_EVENT_STATUS_BUFF_FULL           0x41\r
+#define DEM_E_EXT_DATA_TOO_BIG                         0x42\r
+#define DEM_E_PRE_INIT_EXT_DATA_BUFF_FULL      0x43\r
+#define DEM_E_PRI_MEM_EVENT_BUFF_FULL          0x44\r
+#define DEM_E_PRI_MEM_EXT_DATA_BUFF_FULL       0x45\r
 \r
 #define DEM_E_UNEXPECTED_EXECUTION                     0xfe\r
 #define DEM_E_NOT_IMPLEMENTED_YET                      0xff\r
 \r
 // Service ID in this module\r
-#define DEM_PREINIT_ID                                         0x01\r
-#define DEM_INIT_ID                                                    0x02\r
-#define DEM_SETEVENTSTATUS_ID                          0x04\r
-#define DEM_RESETEVENTSTATUS_ID                                0x05\r
-#define DEM_SETOPERATIONCYCLESTATE_ID          0x08\r
-#define DEM_GETEVENTSTATUS_ID                          0x0A\r
-#define DEM_GETEVENTFAILED_ID                          0x0B\r
-#define DEM_GETEVENTTESTED_ID                          0x0C\r
-#define DEM_REPORTERRORSTATUS_ID                       0x0F\r
-#define DEM_GETEXTENDEDDATARECORDBYDTC_ID      0x20\r
-#define DEM_CLEARDTC_ID                                                0x22\r
-#define DEM_GETFAULTDETECTIONCOUNTER_ID        0x3E\r
-\r
-#define DEM_UPDATE_EVENT_STATUS_ID                     0x80\r
-#define DEM_MERGE_EVENT_STATUS_ID                      0x81\r
-#define DEM_GET_EXTENDED_DATA_ID                       0x82\r
-#define DEM_STORE_EXT_DATA_PRE_INIT_ID         0x83\r
-#define DEM_STORE_EVENT_PRI_MEM_ID                     0x84\r
-#define DEM_STORE_EXT_DATA_PRI_MEM_ID          0x85\r
-#define DEM_PREDEBOUNCE_NONE_ID                                0x86\r
-#define DEM_PREDEBOUNCE_COUNTER_BASED_ID       0x87\r
-#define DEM_GLOBAL_ID                                          0xff\r
+#define DEM_PREINIT_ID                                                 0x01\r
+#define DEM_INIT_ID                                                            0x02\r
+#define DEM_SHUTDOWN_ID                                                        0x03\r
+#define DEM_SETEVENTSTATUS_ID                                  0x04\r
+#define DEM_RESETEVENTSTATUS_ID                                        0x05\r
+#define DEM_SETOPERATIONCYCLESTATE_ID                  0x08\r
+#define DEM_GETEVENTSTATUS_ID                                  0x0A\r
+#define DEM_GETEVENTFAILED_ID                                  0x0B\r
+#define DEM_GETEVENTTESTED_ID                                  0x0C\r
+#define DEM_GETDTCOFEVENT_ID                                   0x0D\r
+#define DEM_REPORTERRORSTATUS_ID                               0x0F\r
+#define DEM_SETDTCFILTER_ID                                            0x13\r
+#define DEM_GETSTATUSOFDTC_ID                                  0x15\r
+#define DEM_GETDTCSTATUSAVAILABILITYMASK_ID            0x16\r
+#define DEM_GETNUMBEROFFILTEREDDTC_ID                  0x17\r
+#define DEM_GETNEXTFILTEREDDTC_ID                              0x18\r
+#define DEM_GETEXTENDEDDATARECORDBYDTC_ID              0x20\r
+#define DEM_GETSIZEOFEXTENDEDDATARECORDBYDTC_ID        0x21\r
+#define DEM_CLEARDTC_ID                                                        0x22\r
+#define DEM_DISABLEDTCSTORAGE_ID                               0x24\r
+#define DEM_ENABLEDTCSTORAGE_ID                                        0x25\r
+#define DEM_GETTRANSLATIONTYPE_ID                              0x3c\r
+#define DEM_GETFAULTDETECTIONCOUNTER_ID                0x3E\r
+#define DEM_MAINFUNCTION_ID                                            0x55\r
+\r
+#define DEM_UPDATE_EVENT_STATUS_ID                             0x80\r
+#define DEM_MERGE_EVENT_STATUS_ID                              0x81\r
+#define DEM_GET_EXTENDED_DATA_ID                               0x82\r
+#define DEM_STORE_EXT_DATA_PRE_INIT_ID                 0x83\r
+#define DEM_STORE_EVENT_PRI_MEM_ID                             0x84\r
+#define DEM_STORE_EXT_DATA_PRI_MEM_ID                  0x85\r
+#define DEM_PREDEBOUNCE_NONE_ID                                        0x86\r
+#define DEM_PREDEBOUNCE_COUNTER_BASED_ID               0x87\r
+#define DEM_GLOBAL_ID                                                  0xff\r
 \r
 #endif\r
 \r