/** @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
\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
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
}\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
\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
}\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
}\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
}\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
}\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
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
}\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
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
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
\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
}\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
/** @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
}\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
}\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
}\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
}\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
}\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
}\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
}\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
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
*/\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
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
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
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
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
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
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
*/\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
*/\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
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
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