AUTOSAR SWS DiagnosticEventManager
AUTOSAR SWS DiagnosticEventManager
AUTOSAR SWS DiagnosticEventManager
AUTOSAR CP R20-11
• New APIs
Dem_GetEventFreezeFrameDataEx
and Dem_GetEventExtendedData
RecordEx with buffersize as
parameter and corrected return value
defintions.
AUTOSAR • Providing OBD FreezFrame for UDS
2015-07-31 4.2.2 Release service 0x19 0x05
Management • ISO 14229-1:2013[2] NRC handling
for service 0x14
• Refined service interfaces for
DataElements
• minor corrections / clarifications /
editorial changes; For details please
refer to the ChangeDocumentation
• Support of ISO 27145 (WWH-OBD /
AUTOSAR Euro VI)[3]
2014-10-31 4.2.1 Release • Update to support ISO
Management 14229-1:2013[1]
• Introduction of event dependencies
• Refined DTC/Event suppression
Disclaimer
This work (specification and/or software implementation) and the material contained in
it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and the
companies that have contributed to it shall not be liable for any use of the work.
The material contained in this work is protected by copyright and other types of intel-
lectual property rights. The commercial exploitation of the material contained in this
work requires a license to such intellectual property rights.
This work may be utilized or reproduced without any modification, in any form or by
any means, for informational purposes only. For any other purpose, no part of the work
may be utilized or reproduced, in any form or by any means, without permission in
writing from the publisher.
The work has been developed for automotive applications only. It has neither been
developed, nor tested for non-automotive applications.
The word AUTOSAR and the AUTOSAR logo are registered trademarks.
Table of Contents
1 Introduction and functional overview 20
7 Functional specification 44
7.1 Startup behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.2 Monitor re-initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
7.3 Diagnostic event definition . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.3.1 Event priority . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.2 Event occurrence . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.3 Event kind . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.4 Event destination . . . . . . . . . . . . . . . . . . . . . . . . 51
7.3.5 Diagnostic monitor definition . . . . . . . . . . . . . . . . . . 51
7.3.6 Event dependencies . . . . . . . . . . . . . . . . . . . . . . . 52
7.3.7 Component availability . . . . . . . . . . . . . . . . . . . . . 54
7.4 Diagnostic trouble code definition . . . . . . . . . . . . . . . . . . . . . 54
7.4.1 DTC kind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4.2 DTC format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4.3 DTC groups . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.4.4 DTC severity . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4.5 Functional unit . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4.6 DTC significance . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4.7 Suppress DTC output . . . . . . . . . . . . . . . . . . . . . . 60
7.4.8 Availability of events (visibility and computation) . . . . . . . 62
7.5 Monitored Component Definition . . . . . . . . . . . . . . . . . . . . . 65
7.5.1 Definition of components and dependencies . . . . . . . . . 66
7.6 Operation cycle management . . . . . . . . . . . . . . . . . . . . . . . 67
2.1 Acronyms
Acronym Description
Activation Mode 1 Absence of malfunction - The MIL shall blink for one flash.
"on-demand-MI" - The MIL shall show blink for two flashes if the
Activation Mode 2 OBD system would command an on-demand-MI according to the
discriminatory display strategy.
"short-MI" - The MIL shall blink for three flashes if the OBD sys-
Activation Mode 3 tem would command a short-MI according to the discriminatory
display strategy.
"continuous-MI" - The MIL shall remain continuously ON
Activation Mode 4 ("continuous-MI") if the OBD system would command a
continuous-MI according to the discriminatory display strategy.
Unlearning/deleting of a no longer failed event/DTC after a de-
Aging
fined number of operation cycles from event memory.
The "Aging Counter" or "Aging Cycle Counter" or "DTC Aging
Counter" specifies the counter which is used to perform Aging.
Aging Counter
It counts the number of operation cycles until an event/DTC is
removed from event memory.
Number of engine hours during which a Class B1 malfunction has
Class B1 counter
been Confirmed and TestFailed.
Normal DTC, but referenced by multiple events reported by sev-
Combined DTC eral monitors (e.g. ECU Defect, consisting of different HW de-
fects).
Continuous-MI counter Hours run by the engine while a continuous MI is commanded.
Cumulative Continuous-MI Number of engine hours during which MI has been continuously
counter commanded to be on during its lifetime.
Debounce counter Internal counter for counter-based debouncing algorithm(s).
A monitored component is a part of the system, which is checked
DemComponent / Monitored
for proper operation by one or several monitorings. (see chapter
Component
7.5)
Some data values (e.g. the occurrence counter) are calculated
Dem-internal data value
by the Dem module itself internally.
The denominator of a specific monitor m (Denominatorm) is a
Denominator counter indicating the number of vehicle driving events, taking
into account conditions specific to that specific monitor.
Dependent / Secondary (or dep. / sec. ) ECUs are always related
Dependent / Secondary ECUs
to a Master or a Primary ECU.
Directed acyclic graph Dependency graph without circular dependencies.
Replacing the the most insignificant event memory entry by
Displacement a more significant event memory entry which needs to be
stored.
Acronym Description
Uniquely identifies an set of DTCs. A DTC group is mapped into
the range of valid DTCs. By providing a group of DTCs it is ex-
DTC group pressed that a certain operation is requested on all DTCs of that
group. The DTC group definition is provided by ISO 14229-1[2]
and OEM/supplier specific.
DtcGroupAllDtcs Grouping of all configured DTCS (representation is 0xFFFFFF).
Event combination is a method to merge several events to one
specific combined DTC. It is used to adapt different monitor re-
Event combination
sults to one significant fault, which is clearly evaluable in a service
station.
Debouncing is a specific mechanism (e.g. counter-based) to
evaluate, if the diagnostic event gets qualified. This works on
Event debouncing
top of potential signal debouncing and can be done within the
SW-C or inside the Dem.
A diagnostic event is confirmed in case of repeated detection of
qualified events over cycles or time evaluated by means of fault
Event confirmation
confirmation counters. Therefore, also the UDS status bit 3 (Con-
firmedDTC) is set.
An event memory (e.g. Primary memory) consists of several
Event memory
event memory entries.
The event memory entry is a single storage container for an event
Event memory entry and its event related data. The event memory entry is dynami-
cally assigned to specific events.
The event memory overflow indication indicates, if this specific
Event memory overflow indica-
event memory is full and the next event occurs to be stored in
tion
this event memory.
A diagnostic event is qualified in case of a passed or a failed
Event qualification result is set (Dem-internal or reported from another BSW module
or SW-C).
Event related data is additional data, e.g. sensor values or time
stamp/mileage, which is stored with an event in an event mem-
Event related data
ory. ISO defines two types of event related data: freeze frames
(snapshot records) and extended data.
Event status byte Status byte as defined in ISO 14229-1 [1], based on event level.
An extended data record is a record to store specific information
Extended data record
assigned to a fault.
The Failure counter represents the Trip Counter according to
ISO14229-1 [2]. The Trip Counter counts the number of oper-
Failure counter ation cycles (driving cycles) where a malfunction occurred. If the
counter reaches the threshold (e.g., 2 driving cycles) the con-
firmed bit changes from 0 to 1.
Fault Detection Counter sint8 value as used in ISO and FDC-APIs.
Freeze frame is defined as a record of data (DIDs/PIDs). Freeze
Freeze frame
frames are the same as SnapShotRecords in ISO-14229-1[2].
The general denominator is a counter indicating the number of
General Denominator times a vehicle has been operated, taking into account general
conditions.
Switching off the warning indicator including the handling of re-
Healing ported passed results over a period of time / several operation
cycles
The in-use performance ratio (IUPR) of a specific monitor m of
In-Use performance ratio
the OBD system is: IUPRm = Numeratorm / Denominatorm
Acronym Description
As a primary ECU a Master ECU stores “it’s own” and “reported
errors” of related dep. / sec ECUs in it’s event memory. Beside
Master ECU
this a Master has to fulfill special Master tasks as MIL Master or
provision of “general nominator” information.
A diagnostic monitor is a routine entity determining the proper
Monitor functionality of a component. Alternatively the term “diagnostic
function” can be used.
The numerator of a specific monitor m (Numeratorm) is a counter
indicating the number of times a vehicle has been operated such
Numerator
that all monitoring conditions necessary for that specific monitor
to detect a malfunction have been encountered.
The Dem has called NvM_SetRamBlockStatus() to set the ac-
NvM is marked for NvM_WriteAll
cording NvM Block to be written by NvM_WriteAll()
An ‘operation cycle’ is the base of the event qualifying and also
Operating cycle Dem scheduling (e.g. ignition key off-on cycles, driving cycles,
etc.)
On-Board Diagnostics, or OBD is a generic term referring to a
vehicle’s self-diagnostic and reporting capability. OBD systems
OBD
give the vehicle owner or a repair technician access to state of
health information for various vehicle sub-systems.
"In a vehicle there can be 3 different types of OBD ECUs:
• Master ECU (one per vehicle)
OBD ECUs • Primary ECUprimary ECUs (several per vehicle)
• Dependent / Secondary ECUs (several per vehicle)
Acronym Description
pendingDTC bit of the UDS status byte. Indicates whether or
UDS status bit 2 not a diagnostic test has reported a testFailed result at any time
during the current or last completed operation cycle.
confirmedDTC bit of the UDS status byte. Indicates whether a
UDS status bit 3 malfunction was detected enough times to warrant that the DTC
is desired to be stored in long-term memory.
testNotCompletedSinceLastClear bit of the UDS status byte. In-
UDS status bit 4 dicates whether a DTC test has ever run and completed since
the last time a call was made to ClearDiagnosticInformation.
testFailedSinceLastClear bit of the UDS status byte. Indicates
UDS status bit 5 whether a DTC test has completed with a failed result since the
last time a call was made to ClearDiagnosticInformation.
testNotCompletedThisOperationCycle bit of the UDS status byte.
UDS status bit 6 Indicates whether a DTC test has ever run and completed during
the current operation cycle.
warningIndicatorRequested bit of the UDS status byte. Report
UDS status bit 7 the status of any warning indicators associated with a particular
DTC.
UDS status byte Status byte as defined in ISO 14229-1 [1], based on DTC level.
2.2 Abbreviations
Abbreviation Description
API Application Programming Interface
BSW Basic Software
CDD Complex Device Driver
CRC Cyclic Redundancy Check
Dcm Diagnostic Communication Manager
Dem Diagnostic Event Manager
Det Default Error Tracer
DID Data Identifier
DTC Diagnostic Trouble Code
DTR Diagnostic Test Result
DYC OBD Term: Driving Cycle (OBD Term)
ECU Electronic Control Unit
EcuM Electronic Control Unit Manager
FDC Fault Detection Counter
Fim Function Inhibition Manager
FMI Failure Mode Indicator (SAE J1939)
FTB Failure Type Byte
HW Hardware
ID Identification/Identifier
ISO International Standardization Organization
IUMPR In Use Monitoring Performance Ratio (OBD Term)
J1939Dcm SAEJ1939 Diagnostic Communication Manager
MIL Malfunction Indicator Light (SAE J1979) or Lamp (SAE J1939)
NVRAM Non volatile RAM
OBD On-Board-Diagnostics
Abbreviation Description
OC Occurrence Count (SAE J1939)
OEM Original Equipment Manufacturer (Automotive Manufacturer)
OS Operating System
PID Parameter Identification (SAE J1587 or SAE J1979)
PTO Power Take Off
RAM Random Access Memory
ROM Read-only Memory
RTE Runtime Environment
SPN Suspect Parameter Number (SAE J1939)
SSCP synchronous server call point
SW Software
SW-C Software Component
UDS Unified Diagnostic Services
VOBD Vehicle On-Board-Diagnostic
WUC OBD Term: Warm up cycle (OBD Term)
WIR Warning Indicator Request
WWH-OBD World Wide Harmonized On-Board-Diagnostic
3 Related documentation
References
[1] Unified diagnostic services (UDS) – Part 1: Specification and requirements (Re-
lease 2006-12)
http://www.iso.org
[2] Unified diagnostic services (UDS) – Part 1: Specification and requirements (Re-
lease 2013-03)
http://www.iso.org
[3] Road vehicles – Implementation of World-Wide Harmonized On-Board Diagnos-
tics (WWH-OBD) communication requirements – Part 1: General information and
use case definition
http://www.iso.org
[4] Glossary
AUTOSAR_TR_Glossary
[5] Specification of NVRAM Manager
AUTOSAR_SWS_NVRAMManager
[6] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral
[7] Specification of a Diagnostic Communication Manager for SAE J1939
AUTOSAR_SWS_SAEJ1939DiagnosticCommunicationManager
[8] Requirements on Function Inhibition Manager
AUTOSAR_SRS_FunctionInhibitionManager
[9] Specification of Diagnostic Communication Manager
AUTOSAR_SWS_DiagnosticCommunicationManager
[10] Requirements on Diagnostics
AUTOSAR_RS_Diagnostics
[11] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
[12] Road vehicles – Communication between vehicle and external equipment for
emission-related diagnostic – Part 5: Emission-related diagnostic services.
http://www.iso.org
[13] SAE J2012-DA Digital
[14] SAE J1939-73 Application Layer – Diagnostics
4.1 Limitations
Timing constrains have to be considered for the whole ECU. If there are explicit needs
for faster responses from the Dem than the Dem basic cycle time, special measures
have to be implemented, that are not specified in this AUTOSAR document. This is
especially the case in ECUs with many events.
Callbacks for Event and DTCStatusChange are not deterministic in rare cases, where-
fore it shall not be used for safety-relevant use-cases. Consider the general statement
in ISO-14229-1[2] that it is not recommended to link the DTC status with failsafe strate-
gies.
The handling of infrastructure errors reported by the RTE during Dem <=> SW-C in-
teractions is missing from the SWS and might have to be taken into account by imple-
menters if they need it.
The Dem is able to support additional event memories (permanent memory, mirror
memory and used defined memory), but the specific event memory processing is
not defined in detail.
Some details on the interaction between Dem and specific emission-related SW-C are
not specified in this specification, since they are dependent on the SW-C implementa-
tion. The following functionality is not defined:
• Malfunction Indicator Lamp (MIL)-activation (MIL handler interaction to Dem, MIL-
bulb check, readiness blinking, blinking in case of catalyst damaging misfire, etc.)
• misfire fault handling (debouncing over all cylinders, filtering single / multiple mis-
fire faults)
• support of similar conditions for the specific healing of misfire and fuel system
faults
Note: For OBD2, it is required that misfire and fuel system fault shall only be healed
(yielding leaving Service $07) under the similar conditions as they have been detected.
The "similarity" is derived from a "window" spanned by ranges on engine speed, engine
load and temperature conditions being present at the time of fault detection.
For the handling of similar conditions it is assumed that the SW-C modules of misfire
detection / fuelsystem diagnostics carry out the necessary computations themselves.
That is, it is not globally solved within the Dem.
However, based on specific interface requirements of the respective misfire detection
/ fuelsystem diagnostics this may result in an extension of the Dem. Any further im-
plementations on that need to be defined for a particular engine control unit project
depending on the diagnostics and the Dem implementation.
The DTCStoredDataRecordNumber (absolute freeze frame record addressing func-
tionality) is limited to 0x00 (OBD freeze frame, refer to subsubsection 7.11.2.4).
The structure of a specific extended data record identified by its record number is
unique per ECU.
The Dcm may lock the event memory update (refer to [SWS_Dem_00270]) while
processing the “read diagnostic data” service, due to architectural design.
This specification covers a subset of SAE J1939 related diagnostic requirements (see
Table 1: Supported DMx messages in [7, SWS J1939 Dcm]). The SPN Conversion
Method is limited to Version 4 (CM = 0).
AUTOSAR only supports user defined memories with IDs from 0x10 to 0xFF as pro-
posed to ISO 14229:1[2] by AUTOSAR.
Indicators are DemEventMemorySet local only. The Dem does not support configura-
tions where indicators are used on more than one DemEventMemorySet.
AUTOSAR
Software
BSW
Filter Services
Monitor
(optional)
Dcm
NVRAM
FiM Dem Manager
J1939Dcm
Dlt
Basic Software
• The Function Inhibition Manager (FiM) (refer to [8, SWS FiM]) stands for the
evaluation and assignment of events to the required actions for Software Compo-
nents (e.g. inhibition of specific “Monitors”). The Dem informs and updates the
Function Inhibition Manager (FiM) upon changes of the monitor status in order to
stop or release function entities according to assigned dependencies.
• The Diagnostic Communication Manager (Dcm) (refer to [9, SWS Dcm]) is in
charge of the UDS and SAE J1979 communication path and execution of diag-
nostic service resulting in the processing of diagnostic requests from an external
tester or onboard test system. It forwards requests coming from an external di-
agnostic scan tool and is further responsible for assembly of response messages
(DTC, status information, etc.) which will be transferred to the external diagnostic
scan tool afterwards.
For details refer to the chapter 5.1.6 “Code File Structure” in SWS_BSWGeneral
[6] (sub chapters “Link time configuration source” and “Post-build time configuration
source”).
The symbolic names (refer to TPS_ECUC_02108) are generated for configuration con-
tainers containing an identifier parameter, like event Id symbols, operation cycles, indi-
cators, enable/storage conditions, etc.
Note, that also SW-C event Ids are published especially for complex device drivers,
which may access on the status of specific SW-C events. SW-Cs use different ports to
distinguish between different events.
6 Requirements traceability
The following table references the requirements specified in [10] as well as [11] and
links to the fulfillment of these.
Requirement Description Satisfied by
[Non volatile storage No description [SWS_Dem_01320]
of pre-stored data]
[RS_Diag_04002] The Diagnostic event (fault) [SWS_Dem_00126]
management shall be
established as Basic SW
Module
[RS_Diag_04005] Manage Security Access [SWS_Dem_00999]
level handling
[RS_Diag_04006] Manage session handling [SWS_Dem_00999]
[RS_Diag_04007] Provide a diagnostic [SWS_Dem_00999]
service handling for the
applications involved in
diagnostic functionality
[RS_Diag_04015] Timing handling according [SWS_Dem_00999]
to ISO14229-2
[RS_Diag_04016] Support ”Busy handling” by [SWS_Dem_00999]
sending a negative
response 0x78
[RS_Diag_04019] Provide confirmation after [SWS_Dem_00999]
transmit diagnostic
responses to the
application
[RS_Diag_04020] Suppress responses to [SWS_Dem_00999]
diagnostic tool requests
[RS_Diag_04021] Handling of different [SWS_Dem_00999]
diagnostic sessions in
parallel
[RS_Diag_04024] Access and handle specific [SWS_Dem_00479] [SWS_Dem_01194]
data elements and data
element groups if
requested by an external
scan tool
[RS_Diag_04031] Notify the Function [SWS_Dem_00029] [SWS_Dem_01189]
Inhibition Manager (FIM) [SWS_Dem_01325] [SWS_Dem_01326]
upon changes of the event
status in order to process
them according to the SW
components dependencies
[RS_Diag_04032] Different diagnostic [SWS_Dem_00999]
addresses shall be
supported by multiple
(physical) channels
7 Functional specification
The Diagnostic Event Manager (Dem) handles and stores the events detected by di-
agnostic monitors in both Software Components (SW-Cs) and Basic software (BSW)
modules. The stored event information is available via an interface to other BSW mod-
ules or SW-Cs.
DemGeneral contains the global part of the configuration and DemConfigSet contains
the multiple configuration part.
Note: The Dem module does not evaluate the return value (e.g. if other than E_OK) of
this callback function.
Note: The configuration container DemCallbackInitMForE is used to specify the
related port or c-callback per event.
[SWS_Dem_00679] dA call to Dem_RestartOperationCycle shall re-initialize the
diagnostic monitors of all related events by calling their respective callbacks Init-
MonitorForEvent with parameter InitMonitorReason set to DEM_INIT_MONI-
TOR_RESTART.c(RS_Diag_04117)
[SWS_Dem_00680] dThe Dem_ClearDTC API shall trigger the callback function
InitMonitorForEvent of the related event(s) in case of clearing the event(s). The
InitMonitorReason parameter shall be set to DEM_INIT_MONITOR_CLEAR.c(RS_-
Diag_04117)
[SWS_Dem_00681] dThe API Dem_SetEnableCondition shall trigger the callback
function InitMonitorForEvent of the related event(s) in case an enable condition
of the event(s) is changed to fulfilled and thus all enable conditions of the event(s) are
fulfilled. The InitMonitorReason parameter shall be set to DEM_INIT_MONITOR_-
REENABLED.c(RS_Diag_04125)
[SWS_Dem_00682] dThe API Dem_EnableDTCSetting shall trigger the callback
function InitMonitorForEvent of the related event(s) in case ControlDTCSetting
of the event(s) is re-enabled. The InitMonitorReason parameter shall be set to
DEM_INIT_MONITOR_REENABLED.c(RS_Diag_04125)
[SWS_Dem_01113] dThe API Dem_SetStorageCondition shall trigger the call-
back function InitMonitorForEvent of the related event(s) in case a storage con-
dition of the event(s) is changed to fulfilled and thus all storage conditions of the
event(s) are fulfilled. Furthermore the callback shall only be called, if the event did
report FAILED or PASSED while the storage condition was disabled. The Init-
MonitorReason parameter shall be set to DEM_INIT_MONITOR_REENABLED.c(RS_-
Diag_04219)
The following figures show two examples:
The initialization of any function (which may relate to the monitor) can also be triggered
by the Dem.
Note: The Dem module does not evaluate the return value (e.g. if other than E_OK) of
this callback function.
Example: Adaptations may be initialized in case of clearing the Dem module (on ser-
vice 04/ISO 15031-5[12] request).
DemEventParameter:
+parameter DemEventId: EcucIntegerParamDef
EcucParamConfContainerDef
max = 65535
upperMultiplicity = 65535 min = 1
lowerMultiplicity = 1 symbolicNameValue = true
DemCallbackInitMForEFnc:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DEM_EVENT_KIND_SWC:
+literal
EcucEnumerationLiteralDef
DemEventKind:
+parameter EcucEnumerationParamDef
+literal DEM_EVENT_KIND_BSW:
upperMultiplicity = 1 EcucEnumerationLiteralDef
lowerMultiplicity = 1
DemCallbackEventUdsStatusChangedFnc:
EcucFunctionNameDef
DemCallbackEventUdsStatusChanged:+parameter lowerMultiplicity = 0
+subContainer EcucParamConfContainerDef upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = * A
DemCallbackClearEventAllowedFnc:
EcucFunctionNameDef
+parameter lowerMultiplicity = 0
DemCallbackClearEventAllowed:
EcucParamConfContainerDef upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
DemClearEventAllowedBehavior:
EcucEnumerationParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = DEM_NO_STATUS_BYTE_CHANGE
+literal
DemEventAvailable:
+parameter EcucBooleanParamDef
DEM_NO_STATUS_BYTE_CHANGE:
upperMultiplicity = 1 EcucEnumerationLiteralDef
lowerMultiplicity = 1 +literal
DEM_ONLY_THIS_CYCLE_AND_READINESS:
EcucEnumerationLiteralDef
DemOperationCycleRef:
+reference EcucReferenceDef
+destination DemOperationCycle:
EcucParamConfContainerDef
upperMultiplicity = 256
lowerMultiplicity = 1
DemEventConfirmationThreshold:
EcucIntegerParamDef
+parameter min = 1
max = 255
defaultValue = 1
lowerMultiplicity = 1
upperMultiplicity = 1
DemEventAssociatedIdentification:
EcucIntegerParamDef
+parameter
min = 0
max = 65535
DemEventAvailableInVariant: lowerMultiplicity = 0
EcucBooleanParamDef upperMultiplicity = 1
+parameter
defaultValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
DemEnableConditionGroupRef: DemEnableConditionGroup:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
DemEventParameter: DemDebounceAlgorithmClass:
EcucParamConfContainerDef +subContainer EcucChoiceContainerDef
upperMultiplicity = 65535 lowerMultiplicity = 1
lowerMultiplicity = 1 DemEventConfirmationThresholdCounterAdaptable:
upperMultiplicity = 1 EcucBooleanParamDef
+parameter
defaultValue = false
+parameter lowerMultiplicity = 0
DemFFPrestorageSupported:
upperMultiplicity = 1
EcucBooleanParamDef
DemStorageConditionGroupRef: DemStorageConditionGroup:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
DemIndicatorAttribute: DemIndicator:
+destination
EcucParamConfContainerDef +reference DemIndicatorRef: EcucParamConfContainerDef
EcucReferenceDef
+subContainer upperMultiplicity = 255 upperMultiplicity = 255
lowerMultiplicity = 0 lowerMultiplicity = 0
+parameter DemIndicatorBehaviour:
EcucEnumerationParamDef
DemCallbackEventDataChanged: DemCallbackEventDataChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 0 upperMultiplicity = 1
+reference DemOBDGroupingAssociativeEventsRef:
EcucReferenceDef DemFFPrestorageInNvm: EcucBooleanParamDef
+literal
DemReportBehavior: REPORT_BEFORE_INIT: EcucEnumerationLiteralDef
EcucEnumerationParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 0
defaultValue = REPORT_BEFORE_INIT +literal REPORT_AFTER_INIT: EcucEnumerationLiteralDef
DemEventRecoverableInSameOperationCycle:
EcucBooleanParamDef
+parameter
defaultValue = true DemCausalityDelayTime: EcucFloatParamDef
lowerMultiplicity = 0
upperMultiplicity = 1 min = 0
+parameter max = 2.5
lowerMultiplicity = 0
DemComponentPriority: EcucIntegerParamDef upperMultiplicity = 1
defaultValue = 0
+parameter min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
[SWS_Dem_00011] dThe Dem module shall provide an occurrence counter per event
memory entry.c(RS_Diag_04067)
[SWS_Dem_00523] dThe Dem module shall initialize the occurrence counter with the
value one if the related event is entered in the respective event memory.c(RS_Diag_-
04067)
[SWS_Dem_00524] dIf the configuration parameter DemOccurrenceCounterPro-
cessing is set to DEM_PROCESS_OCCCTR_TF (refer to DemPrimaryMemory or De-
mUserDefinedMemory), the Dem module shall increment the occurrence counter by
one, triggered by each UDS status bit 0 (TestFailed) transition from 0 to 1, if the
related event is already stored in the event memory.c(RS_Diag_04067)
[SWS_Dem_00580] dIf the configuration parameter DemOccurrenceCounterPro-
cessing is set to DEM_PROCESS_OCCCTR_CDTC (refer to DemPrimaryMemory or
DemUserDefinedMemory), the Dem module shall increment the occurrence counter
by one, triggered by each UDS status bit 0 transition from 0 to 1, if the related
event is already stored in the event memory and the UDS status bit 3 is equal
to 1 (refer to chapter 0).c(RS_Diag_04105)
[SWS_Dem_00625] dThe Dem module shall not increment the event-specific oc-
currence counter anymore, if it has reached its maximum value (255, refer to
[SWS_Dem_00471]).c(RS_Diag_04125)
Runnable Entity
(p)
(t) triggered (e . g. on operation invoked event )
R 1 ( p)
R 2 ( t)
R3 (t)
Diagnostic Monitor
R 4 ( p)
R6 ( p )
R 5 (t )
SW-C
... ... ...
If the monitor debounces on its own, the reporting API is called only after a qualified
result (passed or failed) is available. A report is necessary at least if the result changes.
However, usually it is computationally more efficient for the monitor to always call the
Dem and should therefore be preferred. Hence, it is implementation specific for the
Dem to deal with reports of unchanged results.
If the monitor uses the Dem-internal debouncing mechanism (refer to chapter 7.7.3),
the reporting API is called whenever the code with the functional check is executed.
The priority of events within the assigned DemComponent and furthermore the depen-
dency relation between the DemComponents is used for filtering the storage of error
reports to the failure memory.
[SWS_Dem_01126] dWhenever an event reports FAILED, it shall be considered as
CONSECUTIVE FAULT, if any other event with higher priority at the same DemCompo-
nent already is FAILED.c()
[SWS_Dem_01127] dWhenever an event reports FAILED, it shall be considered as
CONSECUTIVE FAULT, if any parent DemComponent is FAILED.c()
[SWS_Dem_01128] dThe Dem shall allow to ignore the priority of events of a Dem-
ComponentIgnoresPriority). In this case, the event shall only be considered as
CONSECUTIVE FAULT if any parent component is FAILED (other events FAILED sta-
tus at the same component shall be ignored).]c()
[SWS_Dem_01129] dIf a reported failure is not considered as consecutive fault, it shall
be considered as CAUSAL FAULT. Causal faults shall be handled normally.c()
[SWS_Dem_01218] dIf a reported failure is not considered as consecutive fault
and it has configured a DemCausalityDelayTime, it shall be considered as
PRELIMINARY-CAUSAL FAULT. Starting from the point in time where the report of
the event occurs, until the DemCausalityDelayTime is elapsed, the event can be
reconsidered as being a consecutive fault. If another failure is reported during this time
which has higher priority at the same DemComponent or at any parent DemCompo-
nent, the event shall be reconsidered as consecutive fault. After the time is elapsed,
the failure will not be reconsidered.c()
[SWS_Dem_01130] dA failure which is considered as consecutive fault shall not be
stored to the failure memory. (The handling shall be analogous to storage condition
not fulfilled).c()
[SWS_Dem_01211] dA report of DEM_EVENT_STATUS_FDC_THRESHOLD_REACHED
(e.g. either via interface call or when reaching the configured threshold in debounce
algorithm) which is considered as consecutive report of a Failed event shall not be
stored to the failure memory. The handling shall be analogous to storage condition not
fulfilled.c()
Note: Other reports of DEM_EVENT_STATUS_FDC_THRESHOLD_REACHED shall not be
considered as causal.
[SWS_Dem_01131] dThe Dem shall provide the interface Dem_GetComponent-
Failed, which allows querying a DemComponents FAILED status.c()
[SWS_Dem_01132] dIf DemTriggerFiMReports (refer to DemGeneral) is enabled,
the Dem shall notify the FiM module [8] on each change of DemComponent failed status
by calling the function DemTriggerOnComponentStatus.c()
[SWS_Dem_01133] dIf the component status is changing and DemComponent-
FailedCallbackFnc is configured or DemComponentFailedCallbackUsePort
is set to TRUE, the Dem shall trigger the callback DemTriggerOnComponentSta-
tus.c()
[SWS_Dem_CONSTR_06157] dSetting DemComponentFailedCallbackUsePort
to TRUE is only allowed, if DemComponentFailedCallbackFnc is not configured.c
()
DemConfigSet:
EcucParamConfContainerDef
DemEventParameter:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
+reference
DemDTCRef:
+subContainer DemDtcValue: EcucIntegerParamDef
EcucReferenceDef
max = 16777214
DemDTC: +destination upperMultiplicity = 1
min = 1
EcucParamConfContainerDef lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 65535
lowerMultiplicity = 0 +parameter
+subContainer
DemDTCAttributes:
DemDTCAttributesRef: EcucReferenceDef EcucParamConfContainerDef
+destination
+reference
upperMultiplicity = 1 upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0
+subContainer
DemObdDTC:
DemObdDTCRef: EcucReferenceDef
+reference +destination EcucParamConfContainerDef
upperMultiplicity = 1
upperMultiplicity = 65535
lowerMultiplicity = 0
lowerMultiplicity = 0
+literal DEM_SEVERITY_NO_SEVERITY:
DemDTCSeverity: EcucEnumerationParamDef
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 0
+literal
defaultValue = DEM_SEVERITY_NO_SEVERITY DEM_SEVERITY_MAINTENANCE_ONLY:
EcucEnumerationLiteralDef
+parameter
+literal
DEM_SEVERITY_CHECK_AT_NEXT_HALT:
EcucEnumerationLiteralDef
+literal
DEM_SEVERITY_CHECK_IMMEDIATELY:
EcucEnumerationLiteralDef
DemDTCFunctionalUnit: EcucIntegerParamDef
+parameter max = 255
min = 0
upperMultiplicity = 1
lowerMultiplicity = 0 DEM_DTC_WWHOBD_CLASS_NOCLASS:
+literal EcucEnumerationLiteralDef
DemWWHOBDDTCClass: +literal
EcucEnumerationParamDef DEM_DTC_WWHOBD_CLASS_A:
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 0
+literal
DEM_DTC_WWHOBD_CLASS_B1:
+parameter EcucEnumerationLiteralDef
+literal
DEM_DTC_WWHOBD_CLASS_B2:
EcucEnumerationLiteralDef
+literal
DEM_DTC_WWHOBD_CLASS_C:
EcucEnumerationLiteralDef
+literal DURING_SHUTDOWN:
DemNvStorageStrategy: EcucEnumerationLiteralDef
+parameter EcucEnumerationParamDef
DemConfigSet: DemDTC:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
+subContainer +reference
DemDtcValue: EcucIntegerParamDef
+parameter min = 1
max = 65535
lowerMultiplicity = 0
upperMultiplicity = 1
DemConsiderPtoStatus: EcucBooleanParamDef
+parameter
DemEventOBDReadinessGroup:
EcucEnumerationParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
DemJ1939DTCValue: EcucIntegerParamDef
[SWS_Dem_00013] dThe Dem module shall support DTC formats for DemDTC accord-
ing to:
• ISO-14229-1[2]
• SAE J2012 OBD DTC (aka 2-byte DTC) [13]
• SAE J1939-73[14]
• ISO 11992-4[15]
• SAE J2012 WWH-OBD DTC (aka 3-byte DTC) [13]
c()
Note: The Dem expects the SPN and FMI values of the J1939DTC to be configured
according to the J1939 standard. The Dem will not do any encoding/transcoding. Refer
chapter 5.7.1.11 SPN Conversion Method in [15] for details.
[SWS_Dem_01180] dThe Dem shall report DTC values as a uint32 with byte 0 = Low-
Byte, byte 1 = MiddleByte, byte 2 = HighByte and byte 3 is unused. For WWH-OBD
DTC format there are only three bytes (HighByte, MiddleByte and LowByte) used. The
Dem services shall report these DTCs as a uint32 with byte 1 = LowByte, byte 2 =
HighByte, byte 0 is used as FTB (as of SAE J2012-DA) [13].c(RS_Diag_04113)
[SWS_Dem_CONSTR_06146] Dependency for DemDtcValue dThe OBD DTC
DemDtcValue shall only be present if DemOBDSupport is set to DEM_OBD_MASTER_-
ECU or DEM_OBD_PRIMARY_ECU.c()
[SWS_Dem_00269] dThe function Dem_GetDTCOfEvent shall get the DTC which is
mapped to EventId by the Dem configuration.c(RS_Diag_04201)
In addition to single DTC values, groups of DTCs can be configured (refer to Dem-
GroupOfDTC), as defined by ISO 14229-1 [2] - Annex D.1. Each DTC group has its
own DTC group value assigned (which must be unique to any other DTC and DTC
group value). When requesting operations on DTC groups (like ClearDTC and Dis-
able/Enable DTC), the DTCGroup is selected by the DTC value.
[SWS_Dem_01059] dThe DemGroupOfDTC shall represent the values of the DTC
Group boundaries.c() Note: A group with the global boundaries 0x000100 and 0xfffe00
does not need to be configured, as the group ALL is automatically defined.
[SWS_Dem_01061] dAll the DTCs in the range between the dtc-code of the requested
group and the next higher dtcgroup-code shall be treated as belonging to the group.c()
Note: DTC groups are relevant for the diagnostic service ClearDiagnosticInformation
(0x14, refer to Dem_ClearDTC).
[SWS_Dem_01337] dThe Dem shall support the predefined DTC group GroupO-
fAllDTCs (0xFFFFFF) within the parameter DTC of Dem_SelectDTC.c()
[SWS_Dem_01338] dThe Dem shall support the predefined DTC group emission re-
lated DTCs for WWH-OBD (0xFFFF33) within the parameter DTC of Dem_SelectDTC
if WWH-OBD is supported.c()
Note, the DTC group ’all DTCs’ will not be configured in DemGroupOfDTC, because it
has always to be provided by the Dem module
DemGroupOfDTC: DemGroupDTCs:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 0 min = 256
upperMultiplicity = 65535 max = 16776959
Taking into consideration that 0xFFFFFF is an unconfigurable value meaning “all DTCs
group”, each of the DTCs configured for a group “X” let’s say, shall have their ids in the
open interval (ID_of_group_X, ID_of_next_configured_group) e.g.:
The DTC severity is used to provide information regarding the importance of the spe-
cific events according to ISO-14229-1[2], Annex D.3 “DTC severity and class definition”.
The DemDTCSeverity is only available for UDS DTCs.
[SWS_Dem_01291] dIf the API Dem_GetSeverityOfDTC or Dem_GetNextFil-
teredDTCAndSeverity is called and for the selected DTC a severity value in
DemDTCSeverity is configured, the Dem shall set the value configured in DemDTC-
Severity as DTCSeverity.c(RS_Diag_04071)
[SWS_Dem_01292] dIf the API Dem_GetSeverityOfDTC or Dem_GetNextFil-
teredDTCAndSeverity is called and for the selected DTC no severity value in
DemDTCSeverity is configured, the Dem shall set DEM_SEVERITY_NO_SEVERITY
as DTCSeverity.c(RS_Diag_04071)
This chapter describes the dynamic suppression of events/ DTCs during runtime via
API call. A suppressed DTC behaves in a way that it is not visible for the tester but can
be processed continuously by the diagnostic monitor.
An exemplary use-case could be that the decision to hide a DTC in a certain market is
done by the SW-C at runtime.
The configuration parameter DemSuppressionSupport (refer to DemGeneral) con-
trols the availability of the DTC suppression functionality
[SWS_Dem_00915] dThe Dem shall suppress a DTC if all related events of this DTC are
not available.c(RS_Diag_04220)
For details see chapter 7.4.8.
If there is a one to one relationship between DTC and event, the DTC is suppressed if the
related event is not available. If the DTC is a combined DTC, the DTC is suppressed if
all combined events are not available.
Concerning output and query functions, suppressed DTCs are treated as if they are
not configured in the system.
[SWS_Dem_01100] Behavior of DTC query functions for suppressed DTCs dIn
case any of the following APIs is called
• Dem_GetStatusOfDTC
• Dem_GetSeverityOfDTC
• Dem_GetFunctionalUnitOfDTC
• Dem_ClearDTC
on a single selected DTC which is suppressed, the Dem shall return
DEM_WRONG_DTC.c(RS_Diag_04220)
[SWS_Dem_01101] dA suppressed DTC shall not be visible for the following Dcm
query-functions; therefore the following functions shall treat the DTC as if filter is not
matching:
• Dem_DcmGetDTCOfOBDFreezeFrame
• Dem_DcmReadDataOfOBDFreezeFrame
• Dem_DcmGetInfoTypeValue08
• Dem_DcmGetInfoTypeValue0B
• Dem_DcmReadDataOfPID01
• Dem_GetDTCByOccurrenceTime
• Dem_GetNextFilteredDTC
• Dem_GetNextFilteredDTCAndFDC
• Dem_GetNextFilteredDTCAndSeverity
• Dem_GetNextFilteredRecord
• Dem_J1939DcmFirstDTCwithLampStatus
• Dem_J1939DcmGetNextDTCwithLampStatus
• Dem_J1939DcmGetNextFreezeFrame
• Dem_J1939DcmSetDTCFilter
• Dem_J1939DcmGetNumberOfFilteredDTC
• Dem_J1939DcmGetNextFilteredDTC
• Dem_J1939DcmSetRatioFilter
• Dem_J1939DcmGetNextFilteredRatio
• Dem_J1939DcmReadDiagnosticReadiness1
• Dem_J1939DcmReadDiagnosticReadiness2
• Dem_J1939DcmReadDiagnosticReadiness3
• Dem_SelectFreezeFrameData
• Dem_SetDTCFilter
• Dem_SelectExtendedDataRecord
c(RS_Diag_04220)
Note: This means, the (external) reporting (e.g. DTC number, UDS status, DTC ex-
tended data records, DTC statistical data, IUMPR, ...) of the DTC is suppressed.
[SWS_Dem_01102] dDTC suppression shall not stop event processing of the corre-
sponding DTC.c(RS_Diag_04220)
Note: This means that e.g. event qualification, update of environmental data
and functional degradation is still processed within the Dem.
Note: If DTC/freeze frame should not be stored in the fault memory storage condi-
tions should be used in addition.
[SWS_Dem_01307] Functionality of Dem_GetDTCSuppression dIf Dem_GetDTC-
Suppression is called, the Dem shall return the DTC suppression status in the output
parameter SuppressionStatus. A value of TRUE means that the DTC was sup-
pressed by a call of Dem_SetDTCSuppression with SuppressionStatus = TRUE,
a value of FALSE means, that the DTC is currently not suppressed.c(RS_Diag_04220)
[SWS_Dem_01315] dIf Dem_SetDTCSuppression is called the Dem shall set the
suppression status of the selected DTC to value of the parameter Suppression-
Status.c(RS_Diag_04220)
Also there are various reasons, why a DTC is not processed and thus is not visible for
diagnostics, the suppression state itself is only changed by Dem_SetDTCSuppres-
sion. Dem_GetDTCSuppression only evaluates this suppression state.
This chapter describes a method to mark events as not available without removing
them from the actual configuration. An event which is not available is treated as if it
was not included in the Dem configuration.
An exemplary use-case could be that a control unit and its software support differ-
ent kind of hardware to be controlled. Hardware variants vary in certain parts being
available or not available. Still the same control unit and software shall be applied.
1. One calibration set is generated per hardware variant. The application engineers
set up a post-build configuration to make sure the software behaves correctly for
the hardware. For certain parts not included in a hardware variant, this means
that related Events need to be shut down, suppressed. These events shall be-
have completely neutral, never set their LastFailed, not cause limp-home modes,
not be visible to garage services.
=> ECUC parameter DemEventAvailableInVariant set to TRUE (enabled)
or FALSE (disabled)
2. One calibration covers multiple hardware variants. During production, or even
at run-time when hardware is changed (by the garage) some coding bits are
written to the control unit, or some network message is received, to change the
behaviour of the software in accordance with the changes in hardware. As in 1,
certain Events need to be suppressed.
=> ECUC parameter DemEventAvailableInVariant set to TRUE (enabled)
=> ECUC parameter DemEventAvailable defines the initial availability of an
event
=> Interface Dem_SetEventAvailable is used to change the availability de-
fined by DemEventAvailable during runtime
[SWS_Dem_01343] Enable/disable Events by configuration dThe configuration pa-
rameter DemEventAvailableInVariant shall be used as master to consider an
• Dem_GetDTCOfEvent
• Dem_GetFaultDetectionCounter
• Dem_GetEventFreezeFrameDataEx
• Dem_GetEventExtendedDataRecordEx
• Dem_ClearDTC
• Dem_DcmGetDTRData
• Dem_RepIUMPRFaultDetect
• Dem_RepIUMPRDenRelease
• Dem_SetWIRStatus
• Dem_SetEventFailedWithSyncFreezeFrame
c(RS_Diag_04126)
Note: The availability of an event may also impact the suppression of a DTC (see
[SWS_Dem_00915]).
[SWS_Dem_01109] dWhen the API Dem_SetEventAvailable is called with
AvailableStatus = FALSE, the Dem shall return E_NOT_OK if:
• for the event an event memory entry already exists, or
• any of the event status flags ’testFailed’, ’pending’, ’confirmed’ or ’warningIndica-
torRequested’ is set
c(RS_Diag_04126)
[SWS_Dem_01302] Asynchronous behavior of Dem_SetEventAvailable dThe Dem
shall process a call of the Dem_SetEventAvailable asynchronously. This means
that the final result is available at a later point in time.c(RS_Diag_04126)
A later point in time is meant to be implementation specific, it could be the next main
function and after Dem_SetEventAvailable has returned.
[SWS_Dem_01110] dIf Dem_SetEventAvailable is called with AvailableSta-
tus == ‘false’, the Dem shall set the UDS status shall be set to 0x00 for this event.c
(RS_Diag_04126)
Note: If the UDS status changes, the corresponding callbacks are called to properly
provide the information about a changed status to the users.
[SWS_Dem_01111] dIf Dem_SetEventAvailable is called with AvailableSta-
tus == ‘true’, the Dem shall set the UDS status shall be set to 0x50 for this event.c
(RS_Diag_04126)
Plaus
Signal2
Gradient
Range
Plaus
Gradient
Range
Gradient
Range
Gradient
Range
Signal3
Plaus Plaus Plaus
S3_Gradient
S3_Range
S3_Plaus
Figure 7.10: Event dependencies
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
DemOperationCycle: DemOperationCycleId:
EcucParamConfContainerDef EcucIntegerParamDef
+reference DemLeadingCycleRef:
EcucReferenceDef
+destination lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
+destination
+reference
DemEventParameter: DemOperationCycleRef:
EcucParamConfContainerDef EcucReferenceDef
+reference +destination
upperMultiplicity = 65535
lowerMultiplicity = 1
DemGeneralOBD: DemOBDPFCCycleRef:
EcucParamConfContainerDef +reference EcucReferenceDef +destination
upperMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
DemLeadingCycleRef: +reference
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1 +destination
requiresSymbolicNameValue = true
The counter Cycles since last failed is representing the number of operation cycles
since the DTC fault detection counter last reached its maximum value +127 (since
DTC information was last cleared). All operation cycles, including those during which
the test was not completed shall be included.
[SWS_Dem_00984] dIf the counter ‘Cycles since last failed’ is mapped to an ex-
tended data record (DemInternalDataElement set to DEM_CYCLES_SINCE_-
LAST_FAILED), it shall be available per ‘event related data’ record.c(RS_Diag_04190)
[SWS_Dem_00771] dIf internal debounce counter reach DemDebounceCoun-
terFailedThreshold (latest UDS status bit 0 changes from 0 to 1) and this
counter is not stored in event memory and there are available event memory en-
try, new entry shall be allocated and the counter shall be started and initialized to
zero.c()
[SWS_Dem_00772] dIf internal debounce counter reach DemDebounceCoun-
terFailedThreshold (latest UDS status bit 0 changes from 0 to 1) and this
counter is stored in event memory the counter shall initialized to zero.c(RS_Diag_-
04068)
[SWS_Dem_00773] dIn case the counter is available and started, it shall be incre-
mented at the end of the referenced operation cycle (refer to DemOperationCy-
cleRef).c(RS_Diag_04178)
[SWS_Dem_00774] dThe counter shall be implemented as one byte. If any count
operation occurs which would cause a counter to roll over past 0xFF then the count
value shall instead be maintained at 0xFF.c(RS_Diag_04068)
The counter Cycles since first failed is representing the number of operation cycles
since the DTC fault detection counter first reached its maximum value of +127 (since
DTC information was last cleared). All operation cycles, including those in which the
test has not been completed shall be included.
[SWS_Dem_00775] dIf the counter ‘Cycles since first failed’ is mapped to an ex-
tended data record (DemInternalDataElement set to DEM_CYCLES_SINCE_-
FIRST_FAILED), it shall be available per ‘event related data’ record.c(RS_Diag_-
04190)
[SWS_Dem_00776] dIf internal debounce counter reach DemDebounceCoun-
terFailedThreshold (latest UDS status bit 0 changes from 0 to 1) and this
counter is not stored in event memory and there are available event memory en-
try, new entry shall be allocated and the counter shall be started and initialized to
zero.c(RS_Diag_04125)
[SWS_Dem_00777] dIn case the counter is available and started, it shall be incre-
mented at the end of the referenced operation cycle (refer to DemOperationCy-
cleRef).c()
The counter Failed cycles is representing the number of operation cycles during which
the DTC fault detection counter reached its maximum value of +127 (since DTC infor-
mation was last cleared)
[SWS_Dem_00779] dIf the counter ‘Failed cycles’ is mapped to an extended data
record (DemInternalDataElement set to DEM_FAILED_CYCLES), it shall be avail-
able per ‘event related data’ record.c(RS_Diag_04068, RS_Diag_04189, RS_Diag_-
04190)
[SWS_Dem_00780] dIf internal debounce counter reach DemDebounceCoun-
terFailedThreshold (latest UDS status bit 0 changes from 0 to 1) and this
counter is not stored in event memory and there are available event memory en-
try, new entry shall be allocated and the counter shall be started and initialized to
zero.c(RS_Diag_04105)
[SWS_Dem_00781] dIn case the counter is available and started, it shall be incre-
mented at the end of the referenced operation cycle (refer to DemOperationCy-
cleRef) in case the UDS status bit 1 is set to 1.c(RS_Diag_04105)
[SWS_Dem_00782] dThe counter shall be implemented as one byte. If any count
operation occurs which would cause a counter to roll over past 0xFF then the count
value shall instead be maintained at 0xFF.c(RS_Diag_04124)
Event Memory
event counter
Example
st
1 entry 2nd entry ... nth entry
If there are limitations of the memory size, it is necessary to provide overflow indication
of the event memory and a displacement strategy (refer to chapter 7.7.2).
The ‘Event Status Management’ is the Dem’s ability to record and retain events, event
status and associated data.
[SWS_Dem_00330] dThe Dem module shall provide the capability to report the status
of an event allowing a diagnostic monitor to inform the Dem about the result of the
internal diagnostic test (refer to Dem_SetEventStatus).c(RS_Diag_04067)
[SWS_Dem_01333] dThe API Dem_SetEventStatusWithMonitorData shall have
the same functionality as Dem_SetEventStatus with the only difference that it pro-
vides further parameters with data to store in an event related data.c()
The monitors, which are located in the application, should call the function (Dem_-
SetEventStatus) to report an event status as soon as a new test result is available.
This will be done independently of the current state of the Dem module (refer to Figure
7.14).
[SWS_Dem_00331] dThe Dem module shall provide the capability to reset the failed
status of an event without reporting a passed result (refer to Dem_ResetEventSta-
tus).c(RS_Diag_04179)
Note: Dem_ResetEventStatus does not mean an event status report (like done by
Dem_SetEventStatus). After the call, the monitor status is not qualified or tested.
Monitors will use the function Dem_ResetEventStatus in order to deactivate limp
home and switch back to normal operation. At this point in time, the monitor has
typically not been OK-tested and therefore Dem_SetEventStatus with tested and
passed cannot be used.
[SWS_Dem_00187] Behavior of Dem_ResetEventStatus dThe function Dem_Re-
setEventStatus shall set the event status bit 0 (TestFailed) to 0 and reset the
Dem-internal debounce algorithm to initial values if configured. The Dem shall execute
this action asynchronously at a later point in time.c(RS_Diag_04067)
A later point in time means that the exact moment is implementation specific. This
could be the next main function and after Dem_ResetEventStatus has returned.
Also a possible call of the status change callback is triggered asynchronously.
Note: The function Dem_ResetEventStatus does not change the monitor status and
UDS status bit 6 and does not clear the pre-stored freeze frame.
[SWS_Dem_00638] dThe function Dem_ResetEventStatus shall return
E_NOT_OK, if the event was already tested this operation cycle (UDS status
bit 6 is set to 0).c(RS_Diag_04067)
[SWS_Dem_00051] dIf the API Dem_GetEventUdsStatus is called, the Dem shall
provide the current event status byte of a specific event.c(RS_Diag_04067)
Note: The function Dem_GetEventUdsStatus is provided to be used by SW-Cs or
other BSW modules (e.g. FiM) on event-level. The Dcm uses the function Dem_-
GetStatusOfDTC on DTC-level instead.
[SWS_Dem_00844] dThe Dem shall provide a function Dem_GetDebouncin-
gOfEvent () that reports the debounce status of an event. The outparameter ‘De-
bouncingState’ returns the debouncing incl. intermediate states. One particular OBD
specific bit shall support the DTR update trigger if test is complete and debouncing is
at its limit while the enable and storage conditions are met.c(RS_Diag_04068)
The Dem supports a configuration per event to forbid to reset the event in the same
operation cycle.
[SWS_Dem_01208] dIf the configuration parameter DemEventRecoverableIn-
SameOperationCycle is set to FALSE, a report of PASSED (directly via Dem_-
SetEventStatus or indirectly after Debouncing) will be ignored if the event status
byte has the “TestFailedThisOperationCycle” flag is set to 1.c(RS_Diag_04151)
Note: Debouncing is done independently from the value DemEventRecoverableIn-
SameOperationCycle. The FDC can reach -128 independently from the setting of
DemEventRecoverableInSameOperationCycle.
[SWS_Dem_00006] dThe Dem module shall by default implement the current set of
all UDS status bits according to the definition in ISO-14229-1[2] for each diagnostic
event.c(RS_Diag_04067)
Note: For this specification, the UDS status byte of ISO-14229-1[2] for events is
represented by the Dem data type Dem_UdsStatusByteType (defined in chapter
8.6.1.21). If particular UDS status bits do not need to be supported (refer also to
[SWS_Dem_00060]), such optimizations or limitations may be implemented vendor-
specific.
[SWS_Dem_01276] dIf the API Dem_GetEventUdsStatus is called, the event from
the parameter EventId exists and is available, the Dem shall copy the UDS status
byte into the out parameter UdsStatusByte and return E_OK.c(RS_Diag_04067)
For details see chapter 7.4.8.
[SWS_Dem_01277] dIf the API Dem_GetEventUdsStatus is called, the event from
the parameter EventId does not exists or is unavailable, the Dem shall return
E_NOT_OK.c(RS_Diag_04067)
For details see chapter 7.4.8.
Status bit processing is an essential part of the Dem functionality. SWCs or BSW mod-
ules frequently report monitor results via the API Dem_SetEventStatus. A call of
these functions will trigger the status bit processing of the Dem.
[SWS_Dem_01278] dThe Dem shall provide a monitor status per event to store current
monitor state information. The monitor status contains the information as defined in
Dem_MonitorStatusType.c(RS_Diag_04067)
[SWS_Dem_01279] dThe Dem shall perform the counter based event debouncing syn-
chronously within the context of the calling Dem_SetEventStatus function.c(RS_-
Diag_04068)
[SWS_Dem_01280] dUpon call of Dem_SetEventStatus and after debouncing, the
Dem shall process the monitor status in the same manner as the UDS status:
• Bit0 (TestFailed) according to [SWS_Dem_00386]
• Bit1 (TestNotCompleteThisOperationCycle) according to [SWS_Dem_00394].
The monitor status byte processing shall be done synchronously within the context of
the calling Dem_SetEventStatus function.c(RS_Diag_04067)
Dem_SetEventStatus()
Note: Refer to chapter 7.7.2 for a detailed description about the event memory man-
agement.
[SWS_Dem_01064] dThe mirror memory is not relevant for calculation of the UDS
status.c(RS_Diag_04131)
[SWS_Dem_01287] dIf the API Dem_GetMonitorStatus is called, the Dem shall
copy the current monitor status into the out parameter MonitorStatus and return E_OK.c
(RS_Diag_04067)
[SWS_Dem_01288] dIf the API Dem_GetMonitorStatus is called with an invalid
EventId the Dem shall return E_NOT_OK.c()
[SWS_Dem_01326] dThe monitor status shall be initialized within Dem_Init. Any call
to Dem_GetMonitorStatus shall return E_NOT_OK if the monitor status is uninitial-
ized.c(RS_Diag_04031)
This section describes the behavior of the individual status bits of the UDS status
byte (refer to ISO-14229-1[2], UDS status byte - bit transitions).
[SWS_Dem_00385] dAfter a clear command has been applied to a specific DTC the
Dem module shall set the UDS status byte to 0x50 (readiness bits 4 and 6 set to 1,
and all others are set to zero).c(RS_Diag_04067)
For details see chapter 7.7.2.2.
Note: The value of the UDS status byte after a clear command has been applied
represents the delivery status (initial state) of this byte as well.
[SWS_Dem_00386] dThe Dem module shall implement the status bit transitions for
UDS status bit 0.c(RS_Diag_04067)
For details see figure 7.16.
[SWS_Dem_00387] dThe Dem module shall support the configuration parameter
DemStatusBitStorageTestFailed (refer to DemGeneral) to determine whether
the information for UDS status bit 0 is stored volatile or non-volatile.c(RS_Diag_-
04067)
[SWS_Dem_00388] dIf the configuration parameter DemStatusBitStorageTest-
Failed is set to False, the Dem module shall not retain the information for UDS sta-
tus bit 0 over power cycles (volatile)c(RS_Diag_04067)
[SWS_Dem_CONSTR_6113] Configuration of the test failed status bit storage
dFor WWH-OBD ECU the DemStatusBitStorageTestFailed shall be set to True.c()
[SWS_Dem_00525] dIf the configuration parameter DemStatusBitStorageTest-
Failed is set to True, the Dem module shall retain the information for UDS status
bit 0 over power cycles (non-volatile).c(RS_Diag_04067)
Dem_SetEventStatus
Dem_SetEventStatus [EventStatus =
[EventStatus = DEM_EVENT_STATUS_FAILED]
DEM_EVENT_STATUS_PASSED] Dem_SetEventStatus[EventStatus = DEM_EVENT_STATUS_PASSED] OR
Dem_ResetEventStatus[(OperationCycleId == DemOperationCycleRef)] OR
Dem_ClearDTC
Dem_SetEventStatus[EventStatus = DEM_EVENT_STATUS_FAILED]
[SWS_Dem_00389] dThe Dem module shall implement the status bit transition for UDS
status bit 1.c(RS_Diag_04067)
For details see figure 7.17.
Note: The information for event status bit 1 (TestFailedThisOperationCycle) is non-
volatile, if the PendingDTC bit is used (refer to [SWS_Dem_00006]) or if the Dem mod-
ule supports operation cycles over power cycles (refer to DemOperationCycleSta-
tusStorage).
Dem_SetEventStatus Dem_SetEventStatus
[EventStatus = [EventStatus =
DEM_EVENT_STATUS_PASSED] DEM_EVENT_STATUS_{FAILED|PASSED}]
Dem_RestartOperationCycle [(OperationCycleId == DemOperationCycleRef)] OR
Dem_ClearDTC
Dem_SetEventStatus[EventStatus = DEM_EVENT_STATUS_FAILED]
[SWS_Dem_00390] dThe Dem module shall implement the status bit transition for UDS
status bit 2.c(RS_Diag_04067)
For details see figure 7.18.
[SWS_Dem_01183] dThe information for UDS status bit 2 needs to be stored
non-volatilec()
Dem_SetEventStatus
[EventStatus =
Dem_SetEventStatus DEM_EVENT_STATUS_FAILED]
[EventStatus = Dem_RestartOperationCycle[(OperationCycleId == DemOperationCycleRef) &&
DEM_EVENT_STATUS_PASSED] (TestFailedThisOperationCycle == 0) AND
(TestNotCompletedThisOperationCycle == 0)] OR
Dem_ClearDTC OR
{FaultRecordOverwritten}
Initial Bit 2 PendingDTC = PendingDTC =
state FALSE TRUE
Dem_SetEventStatus[EventSatus = DEM_EVENT_STATUS_FAILED]
[SWS_Dem_00391] dThe Dem module shall implement the status bit transition for UDS
status bit 3.c(RS_Diag_04067)
For details see figure 7.19.
Note: The information for event status bit 3 (ConfirmedDTC) is non-volatile (but it is
also calculable based on the respective event memory entry).
Dem_SetOperationCycleState
[(OperationCycleId == DemOperationCycleRef) &&
(testFailedThisOperationCycle == 1) &&
(failure counter+1 < DemEventConfirmationThreshold)]
/failure counter++
[SWS_Dem_00392] dThe Dem module shall implement the status bit transition for UDS
status bit 4.c(RS_Diag_04067)
For details see figure 7.20.
Note: The information for event status bit 4 (TestNotCompletedSinceLastClear) is non-
volatile.
Dem_SetEventStatus
[EventStatus =
DEM_EVENT_STATUS_{FAILED|PASSED}]
Dem_ClearDTC
Dem_SetEventStatus[EventStatus = DEM_EVENT_STATUS_{FAILED|PASSED}]
[SWS_Dem_00393] dThe Dem module shall implement the status bit transition for UDS
status bit 5.c(RS_Diag_04067)
For details see figure 7.21.
Note: The information for UDS status bit 5 (TestFailedSinceLastClear) is non-volatile.
Dem_SetEventStatus Dem_SetEventStatus
[EventStatus = [EventStatus =
DEM_EVENT_STATUS_PASSED] DEM_EVENT_STATUS_{FAILED|PASSED}]
{AgingCriteriaFulfilled} (optional) OR
{FaultRecordOverwritten} (optional) OR
Dem_ClearDTC
Dem_SetEventStatus[EventStatus = DEM_EVENT_STATUS_FAILED]
Dem_SetEventStatus
[EventStatus =
DEM_EVENT_STATUS_{FAILED|PASSED}]
Dem_RestartOperationCycle[(OperationCycleId == DemOperationCycleRef)] OR
Dem_ClearDTC
[SWS_Dem_00395] dThe Dem module shall implement the status bit transition for
UDS status bit 7 (WarningIndicatorRequested).c(RS_Diag_04067)
For details see figure 7.23.
Note: The information for UDS status bit 7 (WarningIndicatorRequested) may be
volatile (because it is calculated based on the assigned warning indicator states).
(Dem_ClearDTC OR
{WarningIndicatorOffCriteriaFulfilled} )
AND {warning indicator not requested on due to Latched failsafe for particular DTC}
WarningIndicator WarningIndicator
Initial Bit 7
Requested = Requested =
state
FALSE TRUE
If an event gets qualified as failed, it becomes active. If the event gets qualified as
passed, it becomes passive. This status can be derived from the event status byte.
As the UDS status bit 0 is configurable in persistent storage ability (refer to con-
figuration parameter DemStatusBitStorageTestFailed), also the meaning of ac-
tive/passive is influenced:
• If the TestFailed bit is stored non-volatile, “event active” equals to TestFailed = 1
and “event passive” equals to TestFailed = 0.
• If the TestFailed bit is only stored volatile, additionally the information, if the event
was already tested/reported this power cycle, is required. As long, as this infor-
mation is not present, the active/passive status is undefined.
Note: There are also ECUs, where all monitors run during startup phase. In this case,
it is also sufficient, to map the active/passive status directly to the TestFailed bit.
The Dem module can inform the monitor and/or other components about the status
change of the event or DTC.
Note: For asynchronous event processing, the Dem module will trigger the respective
notification functions twice per event/DTC qualification.
[SWS_Dem_00016] dThe Dem module shall trigger the event-specific callback-function
EventUdsStatusChanged on each UDS status change.c(RS_Diag_04067)
Note: The Dem module does not evaluate the return value (e.g. if other than E_OK) of
this callback function.
Note: The configuration container DemCallbackEventUdsStatusChanged (in De-
mEventParameter) is used to specify one or more ports/c-callbacks per event.
Note: The respective callback-functions for FiM are specified in chapter 7.10.
DemEventParameter:
EcucParamConfContainerDef DemCallbackEventUdsStatusChanged: DemCallbackEventUdsStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * A upperMultiplicity = 1
DemCallbackMonitorStatusChanged: DemCallbackMonitorStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * A upperMultiplicity = 1
[SWS_Dem_00284] dThe Dem module shall trigger the callback function configured in
DemCallbackDTCStatusChanged on every DemDTC status change.c(SRS_BSW_-
00457)
[SWS_Dem_00986] dThe Dem module shall trigger the callback function configured in
DemCallbackOBDDTCStatusChanged on every DemObdDTC status change.c(SRS_-
BSW_00457)
[SWS_Dem_00987] dThe Dem module shall trigger the callback function configured
in DemCallbackJ1939DTCStatusChanged on every J1939 DTC status change.c
(SRS_BSW_00457)
Note: The Dem module does not evaluate the return value (e.g. if other than E_OK) of
this callback function.
Note: The result of EventUdsStatusChanged may only be different to the result of
DTCStatusChanged in case of event combination (refer to chapter 7.7.5).
Note: The configuration containers DemCallbackDTCStatusChanged,DemCall-
backOBDDTCStatusChanged and DemCallbackJ1939DTCStatusChanged are
used to specify one or more ports/c-callbacks for the Dem module globally.ly.
DemGeneral: EcucParamConfContainerDef
DemCallbackDTCStatusChanged: DemCallbackDTCStatusChangedFnc:
upperMultiplicity = 1 +parameter EcucFunctionNameDef
EcucParamConfContainerDef
lowerMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
+subContainer
+subContainer
The event memory management defines as the process of adding, updating and
removing event memory entries in and out of the Dem module. The Dem mod-
ule determines if the event memory entry is new or currently exists in the event
memory.
Note: The requirements in this section do not determine the software implementation
but describe the behavior of the ECU towards requests from the test tool.
[SWS_Dem_01199] dThe Dem module shall support the configuration parameter Dem-
MemoryDestinationRef to define the destination memory/memories for individual
DTCs.c()
When using the Dem interfaces, Dem_DTCOriginType selects the destination memo-
ries by evaluating the possible DemMemoryDestinationRef.
Note: OBD relevant DTCs can be stored in primary or user defined event memory.
[SWS_Dem_01063] dThe user defined memory shall have the same behavior as the
primary memory(event retention, event prioritization, aging, displacement).c(RS_-
Diag_04131)
Note: The mirror memory may have a different behaviour which is project specific and
is not described in this document.
[not fulfilled]
Check enable conditions
[fulfilled]
[PREFAILED or PREPASSED]
Check for
[qualified as FAILED] event [qualified as PASSED]
qualification
TestFailed bit = 0,
TestFailed bit = 1,
TestNotCompleteThisOpCycle = 0;
TestFailedThisOpCycle = 1,
TestNotCompleteSince LastClear = 0,
TestNotCompleteThisOpCycle = 0;
TestNotCompleteSinceLastClear = 0, [not qualified]
TestFailedSinceLastClear = 1
Check validity
of storage
conditions
[fulfilled]
[not fulfilled]
Pending = 1
[Yes]
Confirmed Level
Confirmed = 1
Reached?
[No]
[No] [No]
ConfirmedDTC changed PendingDTC changed
from 0 to 1? from 0 to 1?
[Yes]
[Yes]
Event retention defines the ability of the Dem module to record and handle events
(DTCs), UDS status information and event related data (e.g. freeze frames, extended
data).
Check
Check if
event
event is
memory
already
[not stored] for free
stored
entry [memory full]
Process event
displacement
[stored]
Check
displacement
[old event memory entry removed] result
fullfilled not
fullfilled
There are several different strategies in the market when to allocate an event memory
entry. Therefore, the Dem module has the capability to configure the primary trigger
to allocate an event memory entry. Beside the primary trigger there might be sec-
ondary triggers (refer DemFreezeFrameRecordTrigger) mainly to update content
of event event memory (e.g. to have most recent update FreezeFrames).
[SWS_Dem_00783] dIf an event
1. gets qualified as failed (UDS status bit 0 changes from 0 to 1) and
2. the configuration parameter DemEventMemoryEntryStorageTrigger is set
to DEM_TRIGGER_ON_TEST_FAILED or DEM_TRIGGER_ON_FDC_THRESHOLD
(refer to DemPrimaryMemory or DemUserDefinedMemory) and
3. no event memory entry exist,
the Dem module shall try to allocate an event memory entry in its configured
event memory (refer to DemMemoryDestinationRef).c(RS_Diag_04105)
For details see figure 7.27.
The event memory entries of the Dem module can be cleared DTC-based via
various diagnostic services (e.g. service 0x14 ClearDiagnosticInformation or service
$04 Clear/Reset emission-related diagnostic information). Therefore, the Dem offers
separate APIs for different users:
• Dem_ClearDTC
c(RS_Diag_04150, RS_Diag_04214)
[SWS_Dem_00573] dIf DemTriggerMonitorInitBeforeClearOk is set to TRUE,
the Dem_ClearDTC shall not return E_OK until the events intialization is triggered (call-
back function InitMonitorForEvent is called). If DemTriggerMonitorInitBe-
foreClearOk is set to FALSE, DEM_CLEAR_OK is not considering Event initialization
(InitMonitorForEvent).c(RS_Diag_04194)
This functionality is intended for some special events, which must never be cleared
from event memory within specific states, like for example special operation modes
of the ECU (e.g. assembly-, transport-, or flash-mode) or Dcm sessions (which can be
determined, using API Dcm_GetSesCtrType).
It is configurable per event (refer to DemCallbackClearEventAllowed), whether a
SW-C / BSW module shall be requested about the event-deletion allowance from this
callback function. One callback (representing a specific condition) can be assigned
per event. If multiple conditions apply, they need to be summarized by one callback
individually.
[SWS_Dem_00515] dThe Dem module shall call the callback DemClearEventAl-
lowed for each event it is configured for, before clearing this event.c(RS_Diag_04194)
[SWS_Dem_00667] dIf the DTC is not configured to use event combination, the out-
parameter Allowed of the callback DemClearEventAllowed returns “false” and the
return value is equal to E_OK, the Dem shall not clear the respective event memory
entry and Dem-internal data values.c(RS_Diag_04194)
[SWS_Dem_01295] dIf the DTC is configured to use event combination, if only one
DemClearEventAllowed callback has the out-parameter Allowed set to FALSE and
returns E_OK, the Dem shall not clear the event status, respective event memory
entry and Dem-internal data values.c(RS_Diag_04194)
[SWS_Dem_00668] dIf the out-parameter ‘Allowed’ of the callback DemClearEven-
tAllowed returns “false” and the configuration parameter DemClearEventAl-
lowedBehavior is set to DEM_NO_STATUS_BYTE_CHANGE, the related UDS status
byte shall not be modified.c(RS_Diag_04194)
[SWS_Dem_00669] dIf the out-parameter Allowed of the callback DemClearEven-
tAllowed returns “false” and the configuration parameter DemClearEventAl-
lowedBehavior is set to DEM_ONLY_THIS_CYCLE_AND_READINESS, the related
UDS status bits 1 (TestFailedThisOperationCycle), 4 (TestNotCompletedSinceLast-
Clear), 5 (TestFailedSinceLastClear), and 6 (TestNotCompletedThisOperationCycle)
shall be reset.c(RS_Diag_04194)
[SWS_Dem_01332] dIn case an event is partially cleared according to
[SWS_Dem_00669], the dependent functionality shall be handled as if the event
is not cleared at all. This means the callback function InitMonitorForEvent will
not be called and the FDC will remain unchanged in this situation.c(RS_Diag_04194)
[SWS_Dem_00516] dIf the return value of the callback DemClearEventAllowed is
equal to E_NOT_OK, the return value shall not be changed and event-deletion is al-
lowed.c(RS_Diag_04194)
The Dem supports events that are not assigned to any event memory. This is the
case, if the optional parameter DemDTCRef is not configured in DemEventParame-
ter. Events are cleared, when the event memory assigned to them is cleared. In
case there is no assigned event memory, these events would never be cleared. For
[SWS_Dem_00397] dThe Dem module shall indicate for each event memory if the
event memory is full and there was an attempt to store an additional event in this
event memory.c(RS_Diag_04093)
This overflow indication can be used to trigger further internal behavior of the Dem
module (e.g. displacement strategy). Furthermore, it can be used for additional fault
analysis in workshops.
[SWS_Dem_00398] dThe Dem module shall provide the API Dem_GetEventMemo-
ryOverflow to provide access to the event memory overflow indication status of
the respective event memory.c(RS_Diag_04093)
Note: This API can be used for vendor-specific Diagnostic Services or other vendor-
specific handling, and is provided to SW-Cs, as well as complex device drivers.
[SWS_Dem_00651] dThe Dem module shall provide the API Dem_GetNumberO-
fEventMemoryEntries to return the number of event memory entries currently
stored in the event memory.c(RS_Diag_04109)
Note: For the reported number all events are considered independently of the fault
confirmation.
[SWS_Dem_00399] dThe event memory overflow indication of the respective event
memory shall be reset, if all DTCs of this memory are deleted by Dem_ClearDTC.c
(RS_Diag_04093)
Note: In case of aging and deleting single DTCs, the overflow indication of the event
memory is not reset to keep this status information until the ECU receives an explicit
clear command of this specific event memory. The ECU itself should not change this
status information during normal operation (because it is used in workshops).
Event displacement means, that the most insignificant, already existing event mem-
ory entry is replaced by a new event memory entry, which needs to be stored.
During displacement, the most insignificant entry gets lost.
[SWS_Dem_00400] dIf the event retention want to allocate a new event memory
entry and there is no free event memory entry available, the Dem module shall
check according [SWS_Dem_00406] for allocated event memory entries to be
displaced by the new event memory entry.c(RS_Diag_04118)
Note: If the event memory size is configured to cover all possible events, no displace-
ment will occur.
[SWS_Dem_00401] dThe Dem module provides the configuration parameter De-
mEventDisplacementStrategy (refer to DemPrimaryMemory or DemUserDe-
finedMemory) defining whether the existing event memory entry can be dis-
placed or not.c(RS_Diag_04118)
[SWS_Dem_00402] dIf event displacement is disabled (DemEventDisplace-
mentStrategy in DemPrimaryMemory or DemUserDefinedMemory selects DEM_-
DISPLACEMENT_NONE), the Dem module shall not displace existing event memory
entries if the event memory is full.c(RS_Diag_04118)
[SWS_Dem_00406] dIf event displacement is enabled (DemEventDisplace-
mentStrategy selects DEM_DISPLACEMENT_FULL in DemPrimaryMemory or De-
mUserDefinedMemory or DEM_DISPLACEMENT_PRIO_OCC), the Dem module shall
perform the following sequence by combination of the different displacement criteria:
1. Priority (refer [SWS_Dem_00403])
2. Active/Passive status (configurable, only for DEM_DISPLACEMENT_FULL in Dem-
PrimaryMemory or DemUserDefinedMemory) (refer [SWS_Dem_00404])
3. Occurrence (refer [SWS_Dem_00405])
c(RS_Diag_04118)
For details see figure 7.28.
Note: Priority needs to have Fuel system/Misfire over the rest (US/EU5) and Class A
before B1,B2, C (Euro VI).
[SWS_Dem_00403] dIf displacement strategy is DEM_DISPLACEMENT_FULL or
DEM_DISPLACEMENT_PRIO_OCC (refer to DemPrimaryMemory or DemUserDe-
finedMemory), the Dem module shall displace lower prioritized events by higher pri-
oritized events.c(RS_Diag_04118)
[SWS_Dem_00404] dIf displacement strategy is DEM_DISPLACEMENT_FULL(refer to
DemPrimaryMemory or DemUserDefinedMemory), the Dem module shall displace
passive events preferably.c(RS_Diag_04118)
For details see chapter 7.7.1.4.
[SWS_Dem_00405] dIf displacement strategy is DEM_DISPLACEMENT_FULL or
DEM_DISPLACEMENT_PRIO_OCC (refer to DemPrimaryMemory or DemUserDe-
finedMemory), the Dem module shall displace older stored events in the
Priority of reported
event > priority of
Yes found entries?
(
12
3
'.1''
0 ** (45
NO
! "#"
$
%&
'()**+ %&
,- ./
Yes
Yes
Priority of reported No
Passive memory No
/.(
event > priority of
entries found?
)0
found entries?
No
Yes
[SWS_Dem_00692] dIf an event is reported and an event memory entry with the
same priority exists and the existing event is not tested in this operation cycle
(TestNotCompletedThisOperationCycle bit == 1), the Dem shall displace the existing
event with the reported event.c(RS_Diag_04118, RS_Diag_04071)
[SWS_Dem_00693] dIf an event is reported and an event memory entry with the
same priority exists and the existing event is tested in this operation cycle (Test-
NotCompletedThisOperationCycle bit == 0), the Dem shall discard the reported event.c
(RS_Diag_04178)
[SWS_Dem_00695] dIf the configuration parameter DemOBDEventDisplacement is
set to TRUE all emission related events with the following conditions shall not be con-
sidered during the displacement mechanism and shall not displaced from error mem-
ory:
Eventold is emission related
AND
(Eventold triggers MIL indicator
OR (Eventold holds legislative Freeze Frame AND has equal or higher priority)
OR Pending-DTC==1)c(RS_Diag_04195)
[SWS_Dem_00696] dIf the configuration parameter DemOBDEventDisplacement
is set to FALSE the Dem module shall process the displacement without the OBD-
behavior.c(RS_Diag_04195)
For details see figure 7.28.
[SWS_Dem_00408] dIf the event memory entry for displacement was identified,
the Dem module shall remove this event memory entry from the event memory.c
(RS_Diag_04118)
Note: This removed event memory entry should now used for the pending storage
trigger.
[SWS_Dem_00409] dIf an event memory entry was removed during displace-
ment, the Dem module shall reset the UDS status bit 2 and UDS status bit
3 to 0 if the configuration parameter DemResetConfirmedBitOnOverflow (refer to
DemGeneral) is set to true.c(RS_Diag_04067, RS_Diag_04118)
[SWS_Dem_01186] dIf an event memory entry was removed during displace-
ment, the UDS status bit 5 shall be reset to 0 in case of DemStatus-
BitHandlingTestFailedSinceLastClear is set to DEM_STATUS_BIT_AG-
ING_AND_DISPLACEMENT and DemResetConfirmedBitOnOverflow is set to
true.c(RS_Diag_04067, RS_Diag_04118)
[SWS_Dem_00410] dThe Dem module shall report DTCs in the chronological order of
the event storage (refer to API Dem_GetNextFilteredDTC), if:
• the DTCStatus parameter has the“pending DTC” or “confirmed DTC” bit or both
bits set
• all other bits of the DTCStatus parameter are set to false
• DemResetConfirmedBitOnOverflow is set to true
c(RS_Diag_04195)
Note: The chronological order is for reporting purposes only and does not imply explicit
memory structure, which is implementation specific.
Note: The reporting order may vary with the customer specific attributes used by the al-
gorithm for sorting the DTC records in case of not confirmed or pending. If the chrono-
logical order is required for further UDS status mask parameters, additional resources
may be necessary.
[SWS_Dem_00787] dIf an ‘stored event’ gets re-qualified as failed (UDS status bit
0 changes from 0 to 1) and a respective event memory entry exists, the Dem mod-
ule shall update the chronological order of the event storage by setting the particular
event as most recent event memory entry.c(RS_Diag_04195)
[SWS_Dem_00411] dIf the Dem module is requested to report in chronological order,
the most recent event memory entry shall be reported at first.c(RS_Diag_04195)
[SWS_Dem_00412] dIf a new event get stored in the event memory, the Dem shall
update the chronological order by setting the new event as most recent event mem-
ory entry.c(RS_Diag_04195, RS_Diag_04195)
Note: If there are multiple event memory entries stored at the same point in time
the chronological reporting order of these elements is undefined. It depends on the
implementation which of these entries is reported or displaced first..
In general, an ECU may implement several types of debouncing improving signal qual-
ity. This section describes methods, how the Dem module shall implement basic algo-
rithms used for fault maturation (diagnostic event debouncing).
If the Dem module is configured to implement the debounce algorithm for a specific
event, one of the following debounce algorithms are to be performed Dem-internally.
Otherwise, the respective monitor implemented in a SW-C or BSW will report the sta-
tus of a certain event, after diagnostic event debouncing has been completed. For
interaction between the Dem and SW-C or BSW please refer to the API InitMonitor-
ForEvent (refer to chapter 7.2).
If there are any requirements to get the passed or failed status within a certain amount
of time, the diagnostic monitor is responsible.
lowerMultiplicity = 1
upperMultiplicity = 1
+choice
DemDebounceCounterBased:
EcucParamConfContainerDef DemDebounceCounterBasedClassRef: DemDebounceCounterBasedClass:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1 upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0
[SWS_Dem_00415] dThe Dem module shall calculate the fault detection counter (-
128 ... +127 according to UDS) based on the value and range of the internal debounce
counter to map the internal counter values linearly to the external values.c()
[SWS_Dem_00416] dThe Dem module shall provide the configuration parameter
DemDebounceCounterFailedThreshold used to define the event-specific limit in-
dicating the failed status (active).c(RS_Diag_04068)
[SWS_Dem_00417] dThe Dem module shall provide the configuration parameter
DemDebounceCounterPassedThreshold used to define the event-specific limit in-
dicating the passed status (passive).c(RS_Diag_04068)
[SWS_Dem_00418] dThe Dem module shall increment the internal debounce
counter with its configured step-size (refer to DemDebounceCounterIncre-
mentStepSize), when the monitor reports DEM_EVENT_STATUS_PREFAILED.c
(RS_Diag_04068)
FAILED
jump up jump up
PREFAILED
Reports
PREPASSED
jump down don't jump jump down
PASSED
FDC max
Failed
step up
Fault
0
Detection
Counter jump down value
step down
jump up value
Passed
FDC min
Failed
Event
status
Passed
Note: In figure 7.30, the value of Fault Detection Counter maps linearly to the internal
debounce counter value.
The action DEM_DEBOUNCE_STATUS_FREEZE of the API Dem_ResetEventDe-
bounceStatus is not relevant for counter-base debouncing. The action DEM_DE-
BOUNCE_STATUS_RESET of the Dem_ResetEventDebounceStatus is covered by
[SWS_Dem_00684].
The DemDebounceBehavior DEM_DEBOUNCE_STATUS_FREEZE is covered in chap-
ter 7.7.6. The DemDebounceBehavior DEM_DEBOUNCE_RESET is covered by
[SWS_Dem_00654] and [SWS_Dem_00677]. This is shown in figure 7.31.
DemDebounceBehavior = FREEZE
FAILED /
PASSED
PREFAILED /
PREPASSED
Reports
DemDebounceBehavior = RESET
FAILED /
PASSED
PREFAILED /
PREPASSED
Reports
DemDebounceAlgorithmClass:
EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+choice
DemDebounceTimeBase:
DemDebounceTimeBaseClass:
EcucParamConfContainerDef
DemDebounceTimeBaseRef: EcucParamConfContainerDef
upperMultiplicity = 1 +reference EcucReferenceDef +destination
upperMultiplicity = 65535
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 1
[SWS_Dem_00427] dThe Dem module shall calculate the fault detection counter (-
128 ... +127 according to UDS) based on the value and range of the internal debounce
timer, to map the internal timer values linearly to the external values.c(RS_Diag_04068)
For details see figure 7.33.
[SWS_Dem_00428] dThe Dem module shall start the internal debounce timer to qual-
ify the reported event as failed when the monitor reports DEM_EVENT_STATUS_PRE-
FAILED.c(RS_Diag_04068)
[SWS_Dem_00429] dIf the internal debounce timer of a specific event was already
triggered as pre-failed or the event is qualified as failed, and the monitor reports con-
secutively DEM_EVENT_STATUS_PREFAILED again, the Dem module shall not restart
the internal debounce timer.c(RS_Diag_04068)
Note: The Dem module provides the configuration parameter DemDebounceTime-
FailedThreshold used to define the event-specific delay indicating the failed status
(active).
[SWS_Dem_00431] dIf the monitor reports DEM_EVENT_STATUS_FAILED, the Dem
module shall set the internal debounce timer value to its configured threshold being the
failed criteria (refer to DemDebounceTimeFailedThreshold).c(RS_Diag_04067,
RS_Diag_04068)
[SWS_Dem_00432] dThe Dem module shall start the internal debounce timer to qual-
ify the reported event as passed when the monitor reports DEM_EVENT_STATUS_-
PREPASSED.c(RS_Diag_04068)
[SWS_Dem_00433] dIf the internal debounce timer of a specific event was already trig-
gered as pre-passed or the event is qualified as passed, and the monitor reports con-
secutively DEM_EVENT_STATUS_PREPASSED again, the Dem module shall not restart
the internal debounce timer.c(RS_Diag_04068)
[SWS_Dem_00434] dThe Dem module shall provide the configuration parameter
DemDebounceTimePassedThreshold used to define the event-specific delay indi-
cating the passed status (not active).c(RS_Diag_04068)
FAILED
PREFAILED
Reports
PREPASSED
PASSED
Fault
0
Detection
Counter
Passed
FDC min (-128)
t failed t passed t failed t failed t failed
t passed
Failed
Event
status
Passed
DemDebounceBehavior = FREEZE
FAILED /
PASSED
PREFAILED /
PREPASSED
Reports
DemDebounceBehavior = RESET
FAILED /
PASSED
PREFAILED /
PREPASSED
Reports
+parameter
DemCallbackGetFDCFnc:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
The maximum value the DTC Fault Detection Counter has reached during current op-
eration cycle.
[SWS_Dem_00788] dIf the maximum FDC during current operation cycle is
mapped to an extended data record (DemInternalDataElement set to
DEM_MAX_FDC_DURING_CURRENT_CYCLE), it shall be available for all events ref-
erencing a UDS DTC.c(RS_Diag_04125)
[SWS_Dem_00789] dIf the UDS DTC of [ [SWS_Dem_00788]] is referenced by multiple
events or an combined DTC, the event with the highest maximum FDC value shall be
used to report.c(RS_Diag_04125)
[SWS_Dem_00790] dThe maximum FDC during current operation cycle shall be reset
to zero with each restart operation cycle (refer to DemOperationCycleRef).c(RS_-
Diag_04125)
[SWS_Dem_00791] dThe maximum FDC during current operation cycle shall be up-
date if the current fault detection counter value is greater than the current value of the
maximum FDC during current operation cycle.c(RS_Diag_04125)
The maximum value the DTC Fault Detection Counter has reached since the last time
DTC information was cleared.
[SWS_Dem_00792] dIf the maximum FDC since last clear is mapped to an ex-
tended data record (DemInternalDataElement set to DEM_MAX_FDC_SINCE_-
LAST_CLEAR), it shall be available for all events referencing a UDS DTC.c(RS_Diag_-
04125)
[SWS_Dem_00793] dIf the UDS DTC of [SWS_Dem_00792] is referenced by multiple
events or an combined DTC, the event with the highest maximum FDC value shall be
used to report.c(RS_Diag_04125)
[SWS_Dem_00794] dThe maximum FDC since last clear shall be reset to zero with
each clear DTC command affecting this particular event.c(RS_Diag_04125)
[SWS_Dem_00795] dThe maximum FDC since last clear shall be update if the current
fault detection counter value is greater than the current value of the maximum FDC
since last clear.c(RS_Diag_04125)
After reporting, a fault and entering the pending status, the fault confirmation process
begins within the Dem (refer to Figure 7.26 General diagnostic event storage process-
ing).
This fault confirmation process results in the confirmed state. For that purpose, re-
spective counter thresholds and counter types are specified.
[SWS_Dem_00528] dThe Dem module shall provide the configuration parameter De-
mEventConfirmationThreshold per event defining the maximum number of tested
and failed cycles, before the event becomes “confirmed”, i.e. enters the confirmed
state.c()
[SWS_Dem_00529] dThe configuration parameter DemOperationCycleRef (refer
to DemEventParameter) shall be used for calculating the trip counter according
ISO14229-1[2].c(RS_Diag_04067)
For details see figure 7.19.
The healing confirmation process (described in chapter 7.7.8) handles reported OK /
passed results, which yields in the deactivation of a specific warning indicator. For that
purpose, respective counter thresholds and counter types are specified.
Note: If the fault confirmation of an event is disabled, its UDS status bit 3 is set
during the qualification to failed (according to [SWS_Dem_00391]).
[SWS_Dem_01242] dThe Dem shall support calls of Dem_SetEventConfirmation-
ThresholdCounter after Dem_PreInit.c(RS_Diag_04161)
[SWS_Dem_01243] dA call of the API
Dem_SetEventConfirmationThresholdCounter shall set a new failure confir-
mation threshold.c(RS_Diag_04161)
Note: A new failure confirmation threshold value will overwrite the default value given
by DemEventConfirmationThreshold).
[SWS_Dem_01244] dIf Dem_SetEventConfirmationThresholdCounter is
called and the corresponding event is already stored in event memory and the new
failure threshold is less or equal to the current failure counter, then the event will get
confirmed. This implies, that the event related data will also be updated according
their defined triggers.c(RS_Diag_04161)
[SWS_Dem_01245] dIf Dem_SetEventConfirmationThresholdCounter is
called and the corresponding event is already stored in event memory and already
confirmed, the event memory entry and confirmation status will remain, even if
the new threshold is greater than the failure counter. Also after new error status
reports, the confirmation status will remain.c(RS_Diag_04161)
[SWS_Dem_01246] dA DemIndicatorAttribute with a configured DemMILIndi-
catorRef, shall use the DemEventConfirmationThreshold instead of the De-
mIndicatorFailureCycleCounterThreshold to calculate the indicator On Cri-
teria (WarningIndicatorOnCriteriaFulfilled).c(RS_Diag_04161)
Event combination defines the ability of the Dem module to merge several events to
one DTC. It is used to adapt different monitor results to one significant fault, which is
clearly evaluable in a service station. The essential part of implementing a combined
DTC is the calculation of its status information. The combined DTC status byte results
from a bitwise logical operation of all associated events.
[SWS_Dem_00536] dThe following event combination types are supported:
1. Combination on storage: configuration parameter DemEventCombination-
Support is set to DEM_EVCOMB_ONSTORAGE. The combined DTC is stored and
updated in a single event memory entry.
2. Combination on retrieval: configuration parameter DemEventCombination-
Support is set to DEM_EVCOMB_ONRETRIEVAL. Each event is stored in a sepa-
rate event memory location.
3. Disabled: configuration parameter DemEventCombinationSupport is set to
DEM_EVCOMB_DISABLED and event combination is not used
c()
[SWS_Dem_00024] dIn case DemEventCombinationSupport is set to DEM_-
EVCOMB_ONRETRIEVAL or DEM_EVCOMB_ONSTORAGE, the combination of multiple
events to a DTC is defined by referencing from each event to the same DTC.c()
Note: For OBD it is also possible to assign multiple time the same DTC number via
DemObdDTCRef. But as a difference to UDS and J1939 DTCs the OBD DTCs are
reported multiple times to the Dcm.
Based on the configuration of the event related data the Dem module allows two dif-
ferent types of event combination (assign event related data to the combine even-
t/DTC or to the sub-events).
Note: The primary use-case of event combination is to map more than one event
(represented by an EventId) to only one DTC number. If combination “on storage” is
used, the Dem module uses only one event memory entry and its related data
for all events combined to the DTC. If combination on retrieval is used, each event is
stored in a separate event memory location with its own set of event related data.
The Dem module handles the combined DTC in consideration of its related event
memory entries.
Table 7.1 shows an example of a Dem configuration table including combined DTCs.
Several events are mapped to the same DTC. The combination on storage is repre-
sented by the DTC[1]. The DTC[2] shows an example of the combination on retrieval.
The freeze frame data is stored individual for each event.
Unique Monitor UDS status Assigned Freeze ....
EventId status DTC frame
Event[1] S1 S1|S2|S3 DTC[1] FF[28]
Event[2] S2 S1|S2|S3 DTC[1] FF[28]
Event[3] S3 S1|S2|S3 DTC[1] FF[28]
Event[4] S4 S4|S5|S6 DTC[2] FF[74]
Event[5] S5 S4|S5|S6 DTC[2] FF[77]
Event[6] S6 S4|S5|S6 DTC[2] FF[75]
Event[7] S7 S7 DTC[3] FF[89]
Event[8] S8 S8 DTC[4] FF[67]
.... .... .... .... .... ....
[SWS_Dem_00441] dThe Dem module shall implement the status bit calculations for
the UDS status byte according to Table 7.2.c()
The following section describes the behavior of the Dem module in case the combina-
tion on storage is configured.
[SWS_Dem_00163] dIf the Dem module is requested to support combination on stor-
age, the DTC status bit transitions of the combined DTC (refer [SWS_Dem_00441])
shall be used as trigger source for the allocation of the event memory entry, as
well as the collection or update of its related data (freeze frames or extended data
records).c()
[SWS_Dem_00442] dIf a combined DTC (combination on storage) is aged, the
Dem module shall remove this event memory entry and reset the status
bytes of all sub-events according to [SWS_Dem_00823], [SWS_Dem_00824] and
[SWS_Dem_00498].c(RS_Diag_04133)
[SWS_Dem_00443] dIf a combined DTC (combination on storage) is displaced, the
Dem module shall remove this event memory entry and reset the status bytes of
In certain cases, the event retention depends on parameters, which are available on
operation system level. These parameters are combined to groups and define a certain
number of checks (e.g. correct voltage range) before the event report is accepted or the
event gets qualified. The checks are done by software components. The Dem module
provides the ability to consider the reported result (a specific condition is fulfilled or
not) during the event handling. There are two different types of conditions: enable
conditions and storage conditions.
The strategy how to use the conditions (e.g. suppression of subsequent faults) and
especially the assigning matrix of conditions to the events depends on the OEM.
The enable conditions are defined as a set of parameters, which are assigned to a
specific condition. As long as this condition is not fulfilled, the event reports (refer
to Dem_SetEventStatus) are not valid and therefore will not be accepted. It has
no impact on Dem_ResetEventDebounceStatus, Dem_ResetEventStatus and
Dem_ClearDTC. A similar functionality is used for the function inhibition. In contrast to
the mutual exclusion matrix of the FiM, which is based on events, the enable conditions
are based on system parameters (e.g. ignition status, local voltage).
The storage conditions are defined as a set of parameters, which are assigned to a
specific condition. As long as this condition is not fulfilled, the Dem module does not
store the event to the event memory.
+destination
+destination
DemEnableCondition: DemEnableConditionId:
EcucParamConfContainerDef EcucIntegerParamDef
DemEnableConditionStatus:
+parameter EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
DemStorageConditionStatus:
+subContainer +parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemStorageConditionReplacementEventRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
DemStorageConditionRef:
EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 255
+reference
DemStorageConditionGroup:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
+destination
DemStorageConditionGroupRef:
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+reference
DemEventParameter:
EcucParamConfContainerDef +destination
upperMultiplicity = 65535
lowerMultiplicity = 1
For each storage condition a replacement event may be defined (see DemStorage-
ConditionReplacementEventRef). This replacement event will be used as a re-
placement failure info.
[SWS_Dem_01086] dIf an event is reported as FAILED and a storage condition ref-
erencing this event by DemStorageConditionReplacementEventRef exists and
the storage condition is FALSE, the replacement event shall be set to FAILED.c(RS_-
Diag_04137)
Note: As long as the storage condition is not fulfilled and no event assigned to the
storage condition reports FAILED, the replacement event shall not be set.
Note: The replacement event has an EventStatus (Dem_UdsStatusByteType) as
every other event.
Note: The status/behavior of the filtered event (filtered by the storage condition) is not
affected by the replacement event. The failure which is filtered by the storage condition
behaves identical in case of having a replacement event or in case of NOT having a
replacement event configured for the storage condition.
[SWS_Dem_01089] dThe replacement event shall be reset (status PASSED), when
the storage condition is fulfilled (on enabling the storage condition).c(RS_Diag_04137)
[SWS_Dem_CONSTR_06167] dthe replacement event:
• shall not be mapped to a storage condition (DemStorageConditionGroupRef)
• shall not be configured to use debouncing (DemDebounceAlgorithmClass)
• shall not have an InitMForE callback/ clearEventAllowed (DemCallbackInitM-
ForE/DemCallbackClearEventAllowed)
• shall not be configured for enableConditions (DemEnableConditionGroupRef)
• shall be configured as DEM_EVENT_KIND_BSW
c(RS_Diag_04137)
‘Event related data’ are additional data, e.g. sensor values or time stamp/mileage,
which are stored in case of an event. ISO-14229-1[2] defines two different types of
event related data: snapshot data (freeze frames) and extended data. The number or
sets of stored event related data are strongly OEM / failure specific and are therefore
configurable. This data is provided by SW-C or other BSW modules.
[SWS_Dem_00796] dEach event memory entry shall support the capability to
store the configured ‘Event related data’ (freeze frame data (DTCSnapshot) or DTCEx-
tendedData).c()
For details see chapter 7.7.7.4.
Note: The presence of a Confirmed UDS status does not necessarily mean that ‘event
related data’ is available as well.
The Dem module is not in charge of validity of event related data. Time consistency of
event related data is depending on data source and storage time.
The Dem module provides a configuration table to combine event related data (freeze
frames & extended data) with a specific DTC number, etc. (refer to chapter 7.7.7.4).
Note: This does not define a specific implementation (e.g. look-up table, matrix, etc.).
Furthermore it relates to the link between the configured data. An event is character-
ized by its event Id, DTC value, configured freeze frames and extended data records,
etc.
[SWS_Dem_00039] dThe Dem module shall support event-specific freeze frame stor-
age.c()
In general, there are two options for freeze frame configuration: (1) Non-emission re-
lated freeze frames are configured specific to one particular event. The freeze frame
records can be addressed by using relative numbers (calculated or configured), so
the record numbers are unique to an event (not globally). (2) Emission related freeze
frames are configured globally for a particular ECU (OBD legislation requires one sin-
gle freeze frame class only). The freeze frame record can be addressed per event by
using the value 0x00.
[SWS_Dem_00040] dThe Dem module shall support the storage of one or several
DIDs per freeze frame record assigned by configuration (refer to DemFreezeFrame-
Class).c()
Note: A freeze frame is represented as a list of DIDs (refer to DemDidClass ) or PIDs
(refer to DemPidClass).
Note: Due to implementation reasons, the Dem usually needs to reserve memory for
the maximum freeze frame size multiplied by the number of freeze frames.
[SWS_Dem_00337] dIf DemTypeOfFreezeFrameRecordNumeration is set to
DEM_FF_RECNUM_CALCULATED (refer to DemPrimaryMemory or DemUserDe-
finedMemory), the Dem shall store DemMaxNumberFreezeFrameRecords number
of freeze frames for this DTC.c(RS_Diag_04127)
[SWS_Dem_CONSTR_06166] dIf DemTypeOfFreezeFrameRecordNumeration is
set to DEM_FF_RECNUM_CALCULATED, parameter DemFreezeFrameRecordTrig-
ger shall be set to DEM_TRIGGER_ON_TEST_FAILED.c(RS_Diag_04127)
[SWS_Dem_00581] dIf the Dem module uses calculated record numbers, the Dem
module shall numerate the event-specific freeze frame records consecutively starting
by 1, based on their chronological order.c(RS_Diag_04127)
[SWS_Dem_00582] dIf DemTypeOfFreezeFrameRecordNumeration is set to
DEM_FF_RECNUM_CONFIGURED (refer to DemPrimaryMemory or DemUserDe-
finedMemory), the Dem shall store per event memory entry all configured freeze
frame records for this DTC.c()
[SWS_Dem_00797] dIf the FreezeFrame uses dedicated, configured record numbers
(refer to DemFreezeFrameRecNumClassRef) and an event memory entry exists,
the Dem module shall capture the FreezeFrame on the configured trigger (refer to Dem-
FreezeFrameRecordTrigger) and store it to the event memory entry.c(RS_-
Diag_04127)
In case, the storage trigger was not able to allocate an event memory entry (due to
event retention) there might meanwhile the possibility (due to aging) to have suitable
memory entries Therefore the FreezeFrame trigger should try again to allocate an
event memory entry.
The pre-storage of freeze frames can be used for events with highly volatile freeze
frame data. With the first indication of the appearance of a specific event, even if the
event is not yet de-bounced or qualified, the freeze frame data is captured (e.g. be-
cause of rapid changing of event related data during running failure monitoring phase).
The pre-stored freeze frame functionality is used by monitors.
[SWS_Dem_00002] dThe Dem module shall provide the configuration parameter
DemFFPrestorageSupported (refer to DemEventParameter) to enable or disable
pre-storage handling of freeze frames per event.c(RS_Diag_04127)
Note: If DemMaxNumberPrestoredFF is set to 0, DemFFPrestorageSupported
can not be enabled for any DTC.
[SWS_Dem_00334] dIf any event is configured to use pre-storage of freeze frames
(refer to DemFFPrestorageSupported), the Dem module shall provide the API
Dem_PrestoreFreezeFrame and Dem_ClearPrestoredFreezeFrame. Other-
wise they are not provided.c(RS_Diag_04127)
Some events detect a failure in one operation cycle of the control unit, but only de-
termine the conditions to allow storage of the failure in the next operation cycle. The
freeze-frame of such events shows the values from the old operation cycle. For this
purpose, the Dem supports non-volatile storage of pre-stored freeze-frame data. To
avoid excessive storage, the storage can be enabled/disabled per event individually
through the configuration DemFFPrestorageInNvm.
[SWS_Dem_01320] dIf DemFFPrestorageInNvm is set to TRUE, the Dem shall
store pre-stored freeze-frame data for this event on in Nvm.c(Non volatile storage of
pre-stored data)
[SWS_Dem_01321] Point in time to store pre-stored data in non-volatile memory
dIf the Dem is configured to store pre-stored freezeframe data in non-volatile memory
according to [SWS_Dem_01320], the Dem shall store the data once and latest during
Dem_Shutdown.c()
[SWS_Dem_01322] Point in time to retrieve pre-stored data from non-volatile
memory dIf the Dem is configured to store pre-stored freezeframe data in non-volatile
memory according to [SWS_Dem_01320], the Dem shall restore the pre-stored data
before Dem_Init has returned.c()
[SWS_Dem_01323] Consistency of non-volatile stored pre-stored data dIf the Dem
is restoring pre-stored data according to [SWS_Dem_01322], the Dem shall only re-
store this data if it is consistent to the current configuration. If after reprogramming or
calibration, the data layout has changed, the Dem shall skip the pre-stored data.c()
[SWS_Dem_00050] dThe Dem module shall provide the API Dem_ClearPre-
storedFreezeFrame to release the pre-stored freeze frame for the specific event.c
()
[SWS_Dem_00465] dIf an event gets qualified as passed (UDS status bit 0
changes from 1 to 0) the Dem module shall release the pre-stored freeze frame for
the specific event.c()
[SWS_Dem_00810] dIf no event memory entry exists, the Dem module shall
first try to allocate an event memory entry as described in [SWS_Dem_00783],
[SWS_Dem_00784], [SWS_Dem_00785] and [SWS_Dem_00786]. Afterwards re-
quirement [SWS_Dem_00809] applies.c(RS_Diag_04127)
[SWS_Dem_00811] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_FDC_THRESHOLD, the ExtendedDataRecord shall be captured (as al-
lowed by [SWS_Dem_00810]) each time the configured FDC threshold (refer to Dem-
CounterBasedFdcThresholdStorageValue or DemTimeBasedFdcThreshold-
StorageValue) is reached (by a positive increment), but at most once per operation
cycle.c(RS_Diag_04127)
[SWS_Dem_01069] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_FDC_THRESHOLD and the event reports DEM_EVENT_STATUS_FDC_-
THRESHOLD_REACHED (monitor-internal debounced event), the ExtendedDataRecord
shall be captured (refer [SWS_Dem_00810]), but at most once per operation cycle.c
(RS_Diag_04127)
[SWS_Dem_00812] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_TEST_FAILED, the ExtendedDataRecord shall be captured (as allowed
by [SWS_Dem_00810]) each time the UDS status bit 0 is set (changing from 0
to 1).c(RS_Diag_04127)
[SWS_Dem_00813] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_PENDING, the ExtendedDataRecord shall be captured (as allowed by
[SWS_Dem_00810]) each time the UDS status bit 2 is set (changing from 0 to
1).c(RS_Diag_04127)
[SWS_Dem_00814] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_CONFIRMED, the ExtendedDataRecord shall be captured (as allowed
by [SWS_Dem_00810]) each time the UDS status bit 3 is set (changing from 0
to 1).c(RS_Diag_04127)
[SWS_Dem_01070] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_PASSED, the ExtendedDataRecord shall be captured with the change
of Testfailed UDS status bit 0 is reset (changing from 1 to 0). If no entry exists,
on passed report no new entry shall be created.c(RS_Diag_04127)
[SWS_Dem_01071] dIf the DemExtendedDataRecordTrigger is set to DEM_-
TRIGGER_ON_MIRROR, the ExtendedDataRecord shall be captured with the transfer
of the memory entry to the mirror memory.c(RS_Diag_04127)
[SWS_Dem_CONSTR_6101] dDemExtendedDataRecordTrigger needs to be
configured. DemExtendedDataRecordTrigger shall always be configured, except
for internal data elements like occurrence counters.c()
[SWS_Dem_00815] dIf the configuration parameter DemExtendedDataRecordUp-
date is set to DEM_UPDATE_RECORD_NO, the ExtendedDataRecord shall be stored
only if the ExtendedDataRecord is currently not stored in this event memory en-
try.c(RS_Diag_04127)
This section describes the configuration of event related data and the access of event
related data from the SW-Cs/BSW modules.
Note: The configuration model follows a flexible configuration process, but does not
imply any explicit implementation.
The event related data of diagnostic events contain none or one set of extended data
records (refer to DemExtendedDataClass), and none or one set of freeze frame
records (refer to DemFreezeFrameClass) with its calculated or configured record
numbers. Therefore a class-concept is used (refer to Figure 37).
An extended data record, a DID, or a PID can contain one ore more data elements
(refer to DemDataElementClass).
Note: Asynchronous DIDs, as well as DIDs with a variable length are not supported by
the Dem module, and shall therefore not be connected to the Dem.
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemExtendedDataClassRef: DemFreezeFrameClassRef:
EcucReferenceDef EcucReferenceDef
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
DemExtendedDataClass: DemFreezeFrameClass:
EcucParamConfContainerDef EcucParamConfContainerDef
+reference +reference
+subContainer
+destination +reference
DemDataElementClass:
EcucChoiceContainerDef DemDidDataElementClassRef:
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 65535 lowerMultiplicity = 1
+destination upperMultiplicity = 255
requiresIndex = true
DemInternalDataElementClass: EcucParamConfContainerDef
+choice
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0
DemExternalSRDataElementClass: EcucParamConfContainerDef
+choice
upperMultiplicity = 1
lowerMultiplicity = 0
DemPidDataElementClassRef: EcucReferenceDef
+destination
lowerMultiplicity = 1
upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
+parameter DemInternalDataElement:
EcucEnumerationParamDef
DemExternalCSDataElementClass: DemDataElementArraySize:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = 1 min = 1
lowerMultiplicity = 0 max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
DemDataElementDataType:
+parameter EcucEnumerationParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
+choice DemDataElementUsePort:
+parameter EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
DemDataElementReadFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemDataElementProvideMonitorData:
EcucBooleanParamDef
+parameter
defaultValue = false
lowerMultiplicity = 1
upperMultiplicity = 1
DemExternalSRDataElementClass: DemDataElementArraySize:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = 1 max = 4294967295
lowerMultiplicity = 0 min = 1
lowerMultiplicity = 0
+choice upperMultiplicity = 1
DemSRDataElementClass:
+subContainer EcucChoiceContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
The Dem module shall notify other SW-Cs / BSW modules about updates of the event
related data in the event memory (refer to chapter 8.4.3.8).
An update of the event related data occurs every time, a new event memory entry
is done or an existing is updated.
Note: The Dem does not evaluate the return value (e.g. if other than E_OK) of this
callback function.
Note: The configuration container DemCallbackEventDataChanged (in DemEvent-
Parameter) is used to specify the related port or c-callback per event.
[SWS_Dem_00475] dIf ’event related data’ (extended data or freeze frame data) of an
event memory entry is added or updated AND notifications on data changes are
configured via DemCallbackEventDataChanged, the Dem shall trigger these con-
figured event-specific notifications as well as the general notification GeneralCall-
backEventDataChanged.c(RS_Diag_04155)
Note: In case of:
• deletion
• displacement (refer to chapter 7.7.2.4)
• aging (refer to chapter 7.7.8)
the Dem doesn’t trigger the datachanged-callbacks.
[SWS_Dem_01062] dThe functions Dem_GetEventExtendedDataRecordEx and
Dem_GetEventFreezeFrameDataEx shall consider only primary and user defined
memory.c()
Note: The origin of the Event can be derived from the EventId (DemMemoryDestina-
tionRef).
[SWS_Dem_00479] dThe function Dem_GetEventFreezeFrameDataEx shall report
the data of the DID (defined by parameter DataId) in the requested freeze frame record
(defined by parameter RecordNumber, except RecordNumber equal 0xFF) of the re-
quested diagnostic event (EventId). If the RecordNumber is equal to 0xFF and parame-
ter DemTypeOfFreezeFrameRecordNumeration is set to DEM_FF_RECNUM_CAL-
CULATED (refer to DemPrimaryMemory or DemUserDefinedMemory) the most re-
cent record shall be used, otherwise E_NOT_OK shall be returned.c(RS_Diag_04024)
[SWS_Dem_01194] dThe function Dem_GetEventFreezeFrameDataEx shall return
the WWH-OBD freeze frame when called with RecordNumber 0x00. If WWH-OBD is
The Dem module provides the ability to remove a specific event from the event mem-
ory, if its fault conditions are not fulfilled for a certain period of time (operation cycles).
This process is called as "aging" or "unlearning".
[FALSE]
WarningIndicatorOn-
CriteriaFulfilled?
[TRUE]
[HealingCounter==0]
WarningIndicatorOff-
CriteriaFulfilled!
try to allocate an
event memory entry
[TRUE]
[DemAgingCycleCounterThreshold reached]
Delete event
memory entry,
CDTC=0
Note: Aging is independent of the UDS status bit 3 and therefore independent
of the fault confirmation (refer to chapter 7.7.4).
[SWS_Dem_01054] dUpon event aging counter reach threshold DemAgingCy-
cleCounterThresholdForTFSLC, the UDS status bit 5 (TestFailedSinceLast-
Clear) shall be set to 0 if DemStatusBitHandlingTestFailedSinceLastClear
is set to DEM_STATUS_BIT_AGING_AND_DISPLACEMENT.
In case parameter DemAgingCycleCounterThresholdForTFSLC is not config-
ured, TestFailedSinceLastClear will not be aged.c(RS_Diag_04133)
[SWS_Dem_01075] dUpon event aging, the Dem shall remove the event related Snap-
shot data (Freeze frame) and extended data records from the event memory.c
()
[SWS_Dem_01185] dIn case there is no memory location available or occupied by an
individual event, the UDS status bit TestFailedSinceLastClear of this event will not be
aged.c(RS_Diag_04133)
[SWS_Dem_00494] dThe Dem module shall provide the configuration parameter
DemAgingCycleRef (refer to DemDTCAttributes) defining the event-specific op-
eration/aging cycle, whose status change triggers the processing (counting further) of
the aging counter value.c()
Note: Refer to chapter 7.6 for the handling of the operation cycle.
[SWS_Dem_00490] dIf the configuration parameter DemAgingRequiresTestedCy-
cle is set to False, the Dem module shall process (count further) the aging counter
value, if the respective aging cycle ends/restarts.c(RS_Diag_04133)
Note: The aging counter in [SWS_Dem_00490] is processed also if no new test
result is available in the respective aging cycle.
[SWS_Dem_00826] dIf the configuration parameter DemAgingRequiresTestedCy-
cle is set to True, the Dem module shall process (count further) the aging cycle counter
value, if the respective aging cycle ends/restarts and the UDS status bit 6 is set
to zero.c(RS_Diag_04178)
[SWS_Dem_01214] dIf the configuration parameter DemAgingRequiresNot-
FailedCycle is set to true, the aging counter shall only be processed in an oper-
ation cycle without a test failed report.c(RS_Diag_04133)
[SWS_Dem_01215] dIf the configuration parameter DemAgingRequiresNot-
FailedCycle is set to false, the aging counter behavior shall not be influenced.c
(RS_Diag_04133)
The Dem module provides the ability to activate and deactivate indicators per event
stored in the event memory. The process of deactivation is defined as healing of a
diagnostic event (refer to Figure 7.41).
[SWS_Dem_01056] dThe Dem shall process healing only on passed events using
the current operation cycle DemOperationCycleRef.c()
The detailed configuration of the warning indicator handling within the Dem is shown
in Figure 10.15.
DemGeneral: +subContainer
EcucParamConfContainerDef DemOperationCycle:
EcucParamConfContainerDef
upperMultiplicity = 1 DemMILIndicatorRef: EcucReferenceDef
lowerMultiplicity = 1 upperMultiplicity = 256
upperMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 0
+destination
DemIndicator: EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
+destination
DemEventParameter:
EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
+subContainer
DemIndicatorAttribute:
EcucParamConfContainerDef DemIndicatorRef: EcucReferenceDef
+reference
upperMultiplicity = 255
lowerMultiplicity = 0
DemIndicatorFailureCycleCounterThreshold:
EcucIntegerParamDef
+parameter
max = 255
min = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DemIndicatorHealingCycleCounterThreshold:
EcucIntegerParamDef
+parameter
max = 255
min = 0
lowerMultiplicity = 1
upperMultiplicity = 1
+literal
DemIndicatorBehaviour: DEM_INDICATOR_CONTINUOUS:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_BLINK_CONT:
EcucEnumerationLiteralDef
+parameter +literal
DEM_INDICATOR_BLINKING:
EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_SLOW_FLASH:
EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_FAST_FLASH:
EcucEnumerationLiteralDef
The Dem module supports event specific counters to activate and deactivate indicators.
These counters are calculated based on the configured failure and healing cycles (e.g.
to turn on the MIL upon fault confirmation, and turn off the MIL after subsequent healing
over three OBD-driving cycles).
Note: During the integration process of the Dem module, different indicators and be-
haviors (e.g. indicator lamps, text messages or icons) can be assigned to an event.
[SWS_Dem_00566] dIf more than one indicator is configured for a specific event, the
Dem module shall use a logical OR operation of all combined warning indicators as-
signed to this event to calculate the UDS status bit 7 (WarningIndicator).c(RS_Diag_-
04067)
[SWS_Dem_00501] dThe condition WarningIndicatorOnCriteriaFulfilled shall be ful-
filled if at least one respective event indicator failure counter has reached its De-
mIndicatorFailureCycleCounterThreshold of tested and failed DemOpera-
tionCycles.c()
[SWS_Dem_00503] dIf an indicator is configured (via DemIndicatorAttribute)
the Dem module shall set at the end of an operation cycle the UDS status bit 7
(WarningIndicatorRequested)to 0, if the following conditions are fulfilled:
• at least one DemIndicatorHealingCycleCounterThreshold is unequal to
0
• all respective events indicator healing counters have reached their DemIndica-
torHealingCycleCounterThreshold of tested and passed healing DemOp-
erationCycles (equals WarningIndicatorOffCriteriaFulfilled)
• WIRbit is not enabled by calling the API Dem_SetWIRStatus
c()
[SWS_Dem_01233] dIf an indicator is configured (via DemIndicatorAttribute) the
Dem module shall set when the Event is reported/qualified to PASSED the UDS status
bit 7 (WarningIndicatorRequested)to 0, if the following conditions are fulfilled:
• all DemIndicatorHealingCycleCounterThreshold are equal to 0
• WIRbit is not enabled by calling the API Dem_SetWIRStatus
c()
In some cases (e.g. controlling a failsafe reaction in application) the WIR-bit of a cor-
responding event in Dem shall be set/reset by an especial “failsafe SW-C”.
The failsafe SW-C has to ensure a proper status of the WIR-bit (e.g. regarding to ISO-
14229-1[2] or manufacture specific requirements). Therefore, the failsafe SW-C can
use existing Dem mechanism to get the information about status changes of events in
Dem (e.g. Callback EventUdsStatusChanged).
The failsafe SW-C shall report the required WIR-status to Dem (via
Dem_SetWIRStatus and has to ensure that the current WIR-status of an event
(in Dem) fits to the current failsafe-status in application:
• failsafe running: WIR-bit shall be set to "1"
[SWS_Dem_00546] dFor OBD-relevant ECUs, the Dem module shall provide the con-
figuration parameter DemMILIndicatorRef to indicate that the configured indicator
controls the MIL activation and deactivation.c(RS_Diag_04110)
[SWS_Dem_00567] dIf an indicator is configured for controlling the MIL of an OBD-
relevant ECU, the Dem module shall use the configured event failure cycle counter of
this event (refer to 0 Fault confirmation) to define the maximum number of tested and
failed cycles, before the stored event activates the respective indicator.c()
Note: For OBD systems, the activation of the Malfunction Indicator Lamp (MIL) is linked
with the entry to confirmed state. Therefore the event specific fault confirmation counter
(refer to the configuration parameter DemEventConfirmationThreshold and De-
mOperationCycleRef) has to be consistent with the indicator failure cycle counter.
Note: Leaving Pending state and the deactivation of the MIL is controlled by the con-
figuration of the indicator healing cycle counter.
[SWS_Dem_00701] dIf the MIL is deactivated and the event is confirmed the MIL shall
be reactivated according to [SWS_Dem_00567] i.e. again according to the indicator
failure cycle counter is reaching it’s threshold.c()
[SWS_Dem_00535] dIn case of OBD-relevant events the indicator cycles shall be
based on cycles defined by OBD legislation.c()
[SWS_Dem_CONSTR_06165] Dependency for DemMILIndicatorRef dDem-
MILIndicatorRef shall only be present if DemOBDSupport is set to DEM_OBD_-
MASTER_ECU or DEM_OBD_PRIMARY_ECU.c()
API Port
Buffer
Dem_Init()
Dem_MainFunction()
Event Memory
Dem
The following table will give an overview about which OBD functionality must be sup-
ported in a Master ECU, Primary ECU or Dependent / Secondary ECU:
The following OBD requierments are only valid for Master and Primary ECUs. If neces-
sary the OBD requierments differenciate between Master and Primary Requierment.
Master and Primary ECUs should have the same interface to the SWComponents. To
build a sufficant and lean Master ECU there is no compulsion to use this interfaces.
Some details on the interaction between Dem and specific SW-C might remain open,
since they are dependent on the Dem and SW-C implementation. The following func-
tionality is not defined:
• Malfunction Indicator Lamp (MIL)-activation (interface Dem to MIL handler, MIL-
bulb check, readiness blinking, blinking in case of catalyst damaging misfire,
Continuous-MI, Short-MI, On-demand MI,...)
• Misfire fault handling (common debouncing, filtering single / multiple misfire
faults).
However, this Dem SWS does not prescribe implementation details on how OBD com-
pliance can be achieved within the Dem module, e.g. concerning state handling. Fur-
thermore, the Dem SWS does not prescribe implementation details on the diagnostic
algorithms of the SW-C necessary to achieve OBD compliance (how to detect a fault,
when to trigger incrementation of IUMPR-numerator...).
In the following chapters, OBD relevant functionality and interfaces are described. It is
important to note, that independent of standard Autosar mechanisms (e.g. communica-
tion via RTE), response codes and timing constraints need to fulfill OBD requirements
(refer to [12] and [17]).
[SWS_Dem_01248] dThe configuration parameter DemOBDEventMemorySetRef
shall be used to reference to the one and only DemEventMemorySet that contains
OBD relevant information. All OBD operations of the Dem shall be only executed on this
DemEventMemorySet.c()
[SWS_Dem_00584] dWhile applying standard mechanisms (like Std_ReturnType), the
Dem module shall only return values ensuring OBD compliant behavior with regard to
permitted response codes and timing constraints.c()
Calulation and provision of General Information Data:
The Master ECU shall calculate and provide the following General Information Data via
the Bussystem to the Primary ECUs:
• OBD Driving cycle information (DYC)
• General Nominator / Rate-based monitoring - driving cycle (RBM cycle)
• Warm up cycle (WUC)
• Ignition cycle
• Qualified OBD Driving cycle
• Permanent fault code - driving cycle (PFC cycle)
OBD Driving cycle information (DYC)
The Master ECU will provide the driving cycle information (DYC) via the Busystem. The
driving cycle information (DYC) shall not be computed internally in the Primary ECUs.
General Nominator / Rate-based monitoring - driving cycle (RBM cycle)
Included in the IUMPR-Cycle Flag
Warm up cycle (WUC)
The warm up cycle (WUC) is a legally prescribed cycle and is computed by the Mas-
ter ECU. The Master ECU will provide the warm-up cycle information (WUC) via the
Busystem.
Ignition cycle
An ignition cycle describes the cycle between the “Terminal 15 on“ status and “Terminal
15 off“, including the shut down/after-run phase of the electronic control unit if the
engine start condition was met for at least 2 seconds after “Terminal 15 on“. The
Master ECU will provide the Ignition cycle information via the Busystem.
Qualified OBD Driving cycle
The Qualified OBD Driving cycle is a legally prescribed cycle and has the following
definition: For combustion engines (no hybrid): A driving cycle starts with “ignition on“
and ends with the next time “ignition on“ if the engine has reached the first engine start
conditions for at least 2 seconds (+/-a sec.) in between. Engine stops which are not
caused by the driver or ECU don’t end the driving cycle.
For hybrids and engines with shutoff strategies, the driving cycle is defined as the time
between “ignition on“ and the next time “ignition on“ after the driving cycle is qualified.
If a driving cycle is qualified every “ignition off > ignition on - EVENT“ results in the
beginning of a new driving cycle. This new driving shall be qualified. A driving cycle
is qualified when the engine speed has exceeded the minimum speed for engine start
conditions for at least 2 seconds (+/-a sec.) or condition ready for driving for at least 2
seconds (+/-a sec.)
Permanent fault code - driving cycle (PFC cycle)
(refer to chapter 7.9.5.8)
Note: Calibration Identification (CAL-ID) and Calibration Verification Number
(CVN)
The Calulation of the Calibration Identification (CAL-ID) and Calibration Verification
Number (CVN) is not a BSW Task and will not handled within the Dem.
[SWS_Dem_00293] dFor the following PIDs the data layout shall be compliant to SAE
J1979DA [18].
• PID $01 monitor status since DTCs cleared (4 byte)
• PID $021 DTC that caused required freeze frame storage (2 byte)
• PID $1C OBD requirements to which vehicle or engine is certified (1 byte)
• PID $21 distance traveled while MIL is activated (2 byte)
• PID $30 number of warm-ups (WUC) since DTCs cleared (1 byte)
• PID $31 distance traveled since DTCs cleared (2 byte)
• PID $41 monitor status this driving cycle (4 byte)
• PID $4D engine run time while MIL is activated (2 byte)
• PID $4E engine run time since DTCs cleared (2 byte)
• PID $91 ECU OBD System Information (5 byte)
c()
Note: PID $90 and $93 are calculated in the application of the VOBD. Primary ECUs
only provides interfaces to retrieve the related data.
1
PID $02 is only required for service $02 and therefore no interface (like
Dem_DcmReadDataOfPID02) is necessary. Instead the API Dem_DcmGetDTCOfOBDFreezeFrame is
used (refer to[SWS_Dem_00623])
[SWS_Dem_00703] d The Dem of the Master ECU shall calculate information for PID
$31 / $4D / $4E vehicle wide.c()
A Primary ECU is not allowed to calculate information for PID $31 / $4D / $4E.
Note: Therefore a Software component of the Master ECU will use API
Dem_DcmReadDataOfPID<NN> (where NN is 31 / 4D / 4E) to read out the informa-
tion and will provide information about mileage / time for PID $31 / $4D / $4E to the
Primary ECU via the bussystem.
On receiving the information for PID $31 / $4D / $4E in a software component in the
Primary ECU via the bussystem, the software component will set the PID $31 / $4D
/ $4E in calling the API Dem_SetDataOfPID<NN> (where NN is 31 / 4D / 4E) of the
Dem of the Primary ECU.
[SWS_Dem_00704] dOnly the Master ECU is allowed to report information for PID
$31 / $4D / $4E to the scan tool.c()
Primary ECUs are not allowed report informations for PID $31 / $4D / $4E to the scan
tool.
On receiving the information for PID $21 in a software component in the Primary ECU
via the bussystem, the software component will set the PID $21 in calling the API
Dem_SetDataOfPID21 of the Dem of the Primary ECU.
[SWS_Dem_00346] dThe Dem module shall use PID $0D to calculate PID $21 and
PID $31.c()
For details see chapter 7.11.7.
[SWS_Dem_00304] dA Dem delivery shall provide function call interfaces to the Dcm
and the respective ServiceNeeds to declare to the Dcm that these PIDs are supported.c
()
[SWS_Dem_00347] dIf PID $1E (auxiliary input status) is supported the PTO (Power
Take Off) related event status handling shall implemented inside the Dem module (refer
to [19]).c()
[SWS_Dem_00377] dThe Dem module shall provide the interface Dem_SetPtoSta-
tus allowing a SWC implementing the PTO functionality to notify the Dem module if
PTO is active or inactive (refer to section 8).c()
[SWS_Dem_00378] dThe Dem module shall support the configuration parameter
DemConsiderPtoStatus indicating that a certain event is affected by the Dem PTO
handling.c()
The Dem module provides the configuration switch DemPTOSupport to enable or dis-
able the usage of PID $1E.
A special configuration is applied for the computation of PID $01 and $41:
[SWS_Dem_00349] dThe Dem module shall support the configuration parameter De-
mEventOBDReadinessGroup for OBD systems, to assign individual events to one
specific readiness group.c()
According to SAEJ1979 [17], the group AirCondition Component shall not be supported
anymore. However, it is still included in ISO 15031-5 [12]. The groups distinguish
between spark ignition engines (spark) and compression ignition engines (compr.).
However, it is necessary to configure per event, to which readiness group the monitor
contributes (if at all).
PID $21 is either reported only by the OBD Master ECU, or a synchronized valued by
all OBD ECUs (centralized PID handling).
If the configuration switch DemOBDCentralizedPID21Handling is enabled:
A Software component of the OBD Master ECU could retrieve the current PID $21
value via the interface GetDataOfPID21 from Dem module with the goal to distribute
the value to all other Primary ECUs in the vehicle.
A Software component of the OBD Primary ECU receiving the information for PID $21
could forward this information to the Dem module via the interface SetDataOfPID21
to synchronize the value with the OBD Master ECU.
[SWS_Dem_01095] dOn invocation of Dem_SetDataOfPID21 the internal PID $21
value shall be updated.c()
Note: AUTOSAR defines that OBD Primary ECUs do not calculate the PID $21 value
by its own.
[SWS_Dem_01096] dAn OBD Master ECU shall calculate the PID $21 value by its
own (considering [SWS_Dem_00346]).c()
[SWS_Dem_01097] dOn invocation of Dem_GetDataOfPID21 the internal calculated
PID $21 value shall be returned.c()
Note: AUTOSAR defines that OBD Primary ECUs do not calculate the PID $21 value
by its own.
[SWS_Dem_01098] dOn invocation of Dem_DcmReadDataOfPID21 the Dem shall re-
turn the current value of PID $21.c()
[SWS_Dem_01099] dIf Dem_DcmReadDataOfPID21 is called before Dem_Set-
DataOfPID21, the Dem shall return 0xFFFF as PID $21 value.c()
[SWS_Dem_00354] dThe Dem module shall compute for PID $01 the readiness status
(if all events of a DemEventOBDReadinessGroup are reported as OK tested since
last clear, or the event has caused MIL on). Suppressed Events shall be ignored for
this computation.c()
For details see chapter 7.4.8.
Note: DemEventOBDReadinessGroup has a regulation background and special
computations based on ModelYear (MY) and Market.
[SWS_Dem_CONSTR_06147] Dependency for DemEventOBDReadinessGroup d
DemEventOBDReadinessGroup shall only be present if DemOBDSupport is set to
DEM_OBD_MASTER_ECU.c()
[SWS_Dem_00355] dThe Dem module shall compute for PID $41 the readiness group
complete for current driving cycle (if all events of a group are tested in the current
driving cycle). OBD Events Suppression shall be ignored for this computation.c()
For details see chapter 7.4.8.
Note: For calculation of the group readiness, the Dem module considers all events
assigned to the specific readiness group.
[SWS_Dem_00356] dThe Dem module shall compute the readiness group disabled (if
the disabled status is reported by the monitor for any event of a group). OBD Events
Suppression shall be ignored for this computation.c()
For details see chapter 7.4.8.
[SWS_Dem_00348] dThe Dem module shall provide the disabling of events (refer to
Dem_SetEventDisabled). OBD Events Suppression shall be ignored for this com-
putation.c()
For details see chapter 7.4.8.
[SWS_Dem_00294] dIn order to allow a monitor to report that the event cannot be
computed in the driving cycle (aborted e.g. due to physical reasons), the Dem shall
provide the API Dem_SetEventDisabled.c()
Note: For the computation of PID $41, the monitor has to report its event as disabled,
if the test cannot be carried out anymore until the end of this driving cycle.
Note: SetEventDisabled does report an Event as “uncompletable“ during the current
driving cycle. It does not turn the Event into a Events Suppression according to chapter
7.4.8
[DiagnosticMonitor]
à SetEventDisabled()
[DiagnosticMonitor]
RTE -> SetEventStatus()
Dem_DcmReadDataOfPID01()
Dem Dcm
Dem_DcmReadDataOfPID41()
Figure 7.44: Dem calculates PID$01 and PID$41 data based on specific port operations
The In-Use-Monitor Performance Ratio (IUMPR) indicates how often the OBD system
monitors particular components, compared to the amount of the vehicle operation. It is
defined as the number of times a fault could have been found (=numerator), divided by
the number of times the vehicle operation conditions have been fulfilled (=denominator)
as defined in the respective OBD regulations.
The IUMPR will be calculated within the ECU using the following formula: In-Use-
Monitor Performance Ratio = NUMERATOR / DENOMINATOR
[SWS_Dem_00709] dRatios which refer to a Suppressed Event shall not be com-
puted.c()
[SWS_Dem_00710] dThe numerator shall be calculated in the ECU (Master and Pri-
mary).c()
[SWS_Dem_00711] dThe Dem of the Master ECU shall calulate the IUMPR-Cycle
Flag.c()
[SWS_Dem_00966] dThe Dem shall provide an API Dem_GetIUMPRDenCondition
to give a software component the possibility to get the General Denominator status
information.c()
The Master ECU (software component) will provide the IUMPR-Cycle Flag (included in
the General Denominator signal) via the bus system.
[SWS_Dem_00712] dIn master and optionally primary OBD ECUs, the Dem shall incre-
ment ECU global internal general denominator depending on the denominator
DEM_IUMPR_GENERAL_OBDCOND, if available. Depending on the system definition the
global general denominator (and therefore the DEM_IUMPR_GENERAL_OBDCOND) may
not be needed in some or even all primary ECUs. In such cases the DEM_IUMPR_-
GENERAL_OBDCOND is never set, and the general denominator is stuck at 0 (and
reporting of the InfoType $08 / $0B is disabled in the Dcm).c()
[SWS_Dem_01236] dThe Dem shall increment monitor internal denominators depend-
ing on the DEM_IUMPR_GENERAL_INDIVIDUAL_DENOMINATOR, and additional con-
ditions if configured in DemIUMPRDenGroup a maximum of once per driving cycle, and
shall consider monitor specific conditions only for the cycle the Release operation was
called in.c()
[SWS_Dem_00714] dThe Dem shall provide an API Dem_SetIUMPRDenCondition
to get informed about the IUMPR-Cycle Flag status by a software component.c()
Note: A Timeout of the IUMPR-Cycle Flag / General Denominator signal of the Master
will lead to an event memory entry in the COM Stack (timeout of signal) in the
Primary ECU.
Further details concerning In-Use-Monitor Performance Ratio (IUMPR) can be found
in regulation documentation.
Differencation InfoType $08 / InfoType $0B
The IUMPR-data collected need to be provided upon a service $09 request. For gaso-
line engines, the Info Type $08 is used and for diesel engines the Info Type $0B is used
(refer to [12] and [17]).
[SWS_Dem_00298] dIn order to support the data requests in service $09 as de-
scribed above, the Dem shall provide the API Dem_DcmGetInfoTypeValue08 or
Dem_DcmGetInfoTypeValue0B to the Dcm.c()
If the monitor is “symmetric“, i.e. upon completion of the test a fault could have been
found, even if there is currently no fault in the system, then the numerator can be
incremented just by observing the TESTED-status of the assigned event.
[SWS_Dem_00359] dOnly for monitors being configured with the option “observer“,
the Dem module shall increment the numerator of the corresponding monitor, if the
assigned event gets tested/qualified (as passed or failed).c()
If the diagnostic is asymmetric and it takes more efforts to detect a malfunction than
to detect an OK status, the monitor needs to call an API in order to report that a
malfunction could have been found, because this may require some simulation within
the monitor and can therefore not be purely derived from the TESTED status.
[SWS_Dem_00360] dFor OBD relevant systems the Dem module shall provide the API
Dem_RepIUMPRFaultDetect.c()
[SWS_Dem_00296] dThe Dem module shall provide the API Dem_RepIUMPRFault-
Detect for the asymmetric monitor to report that a malfunction could have been
found.c()
Note: This service shall be used by the monitor to report that a fault could have been
found even if there is currently no fault at all according to the IUMPR regulations that
all conditions are met for the detection of a malfunction.
[SWS_Dem_01188] dThe Dem shall increment the ratio-individual IUMPR-numerator
at maximum of one time per OBD driving cycle.c()
[SWS_Dem_00361] dThe Dem module shall provide the configuration parameter
DemRatioKind, to indicate per RatioId if the numerator is calculated based on the
TESTED-status or the API call.c()
Additional denominator conditions:
For some particular monitors (e.g. for secondary air system, comprehensive compo-
nents), there are additional conditions defined on the denominator: Their denominator
will only be incremented if certain temperature or activity conditions are met. Then, the
monitor needs unlock (Release) the denominator when the additional conditions are
met in a driving cycle.
In case of a fault being detected that prevents further computations of these additional
denominator conditions, the numerator is required to be frozen as well. For that reason
it is necessary to assign particular denominator conditions if applicable. Upon the
report of an inhibited computation of a particular denominator condition, the affected
ratio are set to frozen,
For this handling of commonly used denominator conditions within the Dem, further
interfaces and configuration items are introduced.
[SWS_Dem_00715] dThe Dem module shall provide configuration parameter DemI-
UMPRDenGroup to offer several conditions to be applied to the denominator per Ra-
tioId.c()
[SWS_Dem_00362] dThe Dem module shall provide the APIs for releasing (refer to
Dem_RepIUMPRDenRelease) the denominator under special conditions if the DemI-
UMPRDenGroup is configured as DEM_IUMPR_DEN_PHYS_API.c()
[SWS_Dem_00308] dThe Dem shall provide the API Dem_RepIUMPRDenRelease to
IUMPRrelevant SW-C, to control the denominator specific to the respective RatioId.c()
Note: This service shall be used by the monitor to report, that a denominator of a
specific monitor (represented by FID and EventId) is released for physical reasons.
In systems with multiple ECUs being OBD relevant and even IUMPR relevant, the
status information on the additional denominator conditions needs to be communicated
to synchronize the behavior of the counters. For that reason, an additional interface is
introduced to read out and to report the status of the individual denominator conditions.
[SWS_Dem_00716] dThe Dem shall provide the API Dem_GetIUMPRDenCondition
to read out the status of a particular condition.c()
[SWS_Dem_00717] dThe Dem shall provide the API Dem_SetIUMPRDenCondition
to set the status of a particular condition (mainly in depending ECUs).c()
Note: To comuincate the received general denominator status, the Primary ECU should
make use existing API as offered for SWCs.
Legislation requires that IUMPR tracking shall be stopped for a specific monitor, if it is
inhibited by another service $07 visible fault.
[SWS_Dem_01392] dThe IUMPR ratio shall be blocked whenever any of the Events
linked (via FunctionInhibitionConfiguration or through SummaryEvents) to one of the
FIDs referenced by DemFunctionIdRef is in state PENDING, or any other event
causal to this event (according to component dependency structure) is in state PEND-
ING (see DemComponentClassRef referenced by DemDiagnosticEventRef).c()
[SWS_Dem_00299] dAs long as an event has Pending status, the Dem module shall
stop increasing the numerator and denominator.c()
Based on the related FID (FiM access) and RatioId, the Dem module can determine
which numerator and denominator has to be stopped.
[IUMPRNumerator]
à RepIUMPRFaultDetect()
No API !
RTE Observe event status
Dem_DcmGetInfoTypeValue08()
Dcm
Dem
Figure 7.45: Dem calculates IUMPR data based on specific interface operations
Together with the Dcm, this Dem SWS provides standardized AUTOSAR interfaces to
support the OBD services $01 - $0A defined in SAE J1979 [17]. With these services,
Autosar OBD functionality shall be capable of meeting all light duty OBD regulations
worldwide (California OBDII, EOBD, Japan OBD, and all others.)
[SWS_Dem_CONSTR_06148] Dependency on container DemRation dThe con-
tainer DemRatio shall only be available if DemOBDSupport is set to DEM_OBD_MAS-
TER_ECU.c()
With Service $01, the current value of any PID (except PID $02) can be read. For each
PID calculated by the Dem, a dedicated API function Dem_DcmReadDataOfPID<NN>
as described in chapter 7.9.2 is provided.
In order to retrieve relevant data a fault entry, the Dem needs access to current data,
addressed via PIDs. For that purpose, a Client (=Dcm/Dem)/Server (=SW-C) interface
is assigned based on configuration items.
[SWS_Dem_00291] dThe Dem module shall support only the legislative freeze frame
(record number 0). This will be a single list of PIDs assigned to this freeze frame (refer
to DemPidClass).c()
This means a request by a generic scan tool for record number one and above will be
ignored.
Upon the entry of a fault in the memory, the values of these PIDs/DIDs are requested
through the RTE via a client server interface.
[CSDataServices_<...>]
RTE à ReadData()
Dem Dcm
Figure 7.46: Dem and Dcm module requests PID data elements of SW-C via ReadData
operation
[SWS_Dem_00596] dThe Dem module shall provide access on PID data elements of
the most important freeze frame being selected for the output of service $02 (OBD
freeze frame of the event which caused MIL on) to the Dcm module (refer to Dem_-
DcmReadDataOfOBDFreezeFrame).c()
Note: The Dem processes and stores only the raw data for service $02. Any PID
header-information and fill bytes are added by the Dcm. The Dcm configuration defines
the individual PID layout, which also defines an order of the contained data elements.
Each data element references to its linked element in the Dem configuration (refer to
Figure 47).
The individual data elements of a PID are selected via an index by the Dcm.
[SWS_Dem_00597] dThe index values (refer to API parameter DataElementIndexOf-
PID) of Dem_DcmReadDataOfOBDFreezeFrame shall be assigned zerobased and
consecutive. Their order shall be derived from the position of the data elements (refer
to DcmDspPidDataPos, of the referencing DcmDspPidData containers) in the Dcm’s
PID layout.c()
Note: This index is not configured explicitly (to be able to avoid resource overhead for
e.g. mapping tables in the implementation).
DataElementIndexOfPID
DataElementIndexOfPID
(implicit index)
(implicit index)
Dem PID configuration Dcm PID configuration
DemPidClass DcmDspPid (PID layout)
DcmDspPidData/
DemPidDataElement/ DcmDspPidData/ DcmDspPidData/ DcmDspPidDataPos
ShortName DcmDspPidDataDemRef ShortName (Example)
Figure 7.47: PID layout configuration within Dcm (master) and Dem
The diagnostic service provides the OBD DTCs where the UDS status bit 3 is
currently set. Therefore the interfaces described in chapter 8.3.4.1 will be used by
Dcm.
TestFailedSinceLastClear) of primary and all user defined event memories (if con-
figured) in Master, Primary and Dependent / Secondary ECUs.c()
With Service $06, an external test tool can request an emissionrelated ECU to return
the supported OBDMIDs (“OBD Monitor Identifier”) and / or the standardized diagnostic
test results associated with the OBDMID.
The OBD related standards (refer to ISO 15031-5 [12] and SAE J1979 [17]) reserve
certain OBDMIDs for the special purpose of obtaining the list of supported OBDMIDs
within the vehicle. These OBDMIDs are called “availability OBDMIDs” and are num-
bered with $00, $20, $40, $60, $80, $A0, $C0 and $E0.
In contrast to earlier Autosar releases, the Dem additionally provides interfaces to re-
port latest test results handled per particular identifier (DTR “Diagnostic Test Result“)
introduced for that purpose.
Within the Service $06, the response (apart from the support information) consists of a
data triple with test result, lower and upper limit representing the latest result of a con-
ducted and qualified monitoring check. In order to refer to a particular component and
a particular certified test, the response also contains the OBDMID and the TID (“Test
Identifier“). For the external representation of the data, a socalled UnitandScalingID
(UaSID) is passed along with the response onto the tester. From OBD regulation point
of view it is required to have consistent data in Service$06 and Service$07. And in this
scenario, a test has failed if the test result is either less than the lower limit or higher
than the upper limit. Along with this violation of the thresholds, a corresponding Event
has to be reported and vice versa. Note that this consistency is valid strictly only upon
first detection of the malfunction, since a healing from Service$07 takes one entire cy-
cle without a failure detected while the Service$06 contents simply represent the latest
test result.
In order to support this consistency requirement, the Dem provides a specific interface
to report the results per DTR whereas an Event is associated to a DTR on configuration
level to refer to.
Note that the Event serves as master and within its status additional effects such as
enable / storage conditions are encountered. Given a specific DTR update type (by
configuration), the UDS status (Tested, Failed, debounce status etc.) decides whether
a DTR result being reported is further processed or suppressed/ignored.
The Dem offers a service of conversion for the SWC to support a report of test re-
sults and thresholds within the ECU-internal resolution. The conversion onto the tar-
get format (standardized by [17, 19]: uint16, formula according to UaSID) including
a correction in case of rounding effects is done within the Dem. For that reason the
configuration includes a conversion formula similar to the one used by the RTE to de-
scribe physical data (but simpler) where only a linear mapping is supported. Note that
the conversion does not respect the UaSId. The service Need for the DTR provides a
reference to a physical unit (see SWC Template chapter “Physical Units“) and a linear
conversion (see SWC Template chapter “Computation Methods“) of CompuRational-
Coeffs with a maximum of two numerator coefficients and one denominator coefficient,
as well as the desired UaSId During the configuration process, this information is pro-
cessed into a single linear conversion, which is then stored inside the ECUC of the
Dem.
By this central data handling, the aspect of data consistency for Service$07 / $06 is
supported as well as reset in case of fault clear.
[SWS_Dem_00751] dThe Dem shall provide data structures and functionality to re-
ceive, store and report Service$06 test results persistently.c()
[SWS_Dem_00752] dThe DemDtrId is assigned by the Dem during the BSW configu-
ration step.c(RS_Diag_04129)
Note: The Dem refers to a BSW configuration DemDtr which associates
• a DemDtrId to an EventId
• an indication whether the Monitor will provide data for the minimum limit, maxi-
mum limit, or both
• OBDMID
• TID
• UaSID
• DemDtrUpdateKind
• Coefficients for linear conversion analogous to the SW-C Description (chapter
5.5.)
[SWS_Dem_00753] dFor ensuring data consistency, an EventId can only be refer-
enced by at maximum one DTR.c()
[SWS_Dem_00754] dThe Dem shall use the DemDtrUpdateKind for the evaluation
and processing of reported DTR-values:
• DEM_DTR_UPDATE_ALWAYS: State of the event is not considered (default, and
used if DemDtrEventRef is not configured).
• DEM_DTR_UPDATE_STEADY: Only when the events pre-debouncing within Dem
is “stuck“ at the FAIL or PASS limit, and the latest result matches the debouncing
direction.
c()
[SWS_Dem_00755] dThe Dem shall only support a linear mapping, i.e. only support
values for the coefficients b, c, and f.c()
Note: ASAM formula coefficients: (ax2 + bx + c) / (dx2 2 + ex + f) supporting on b, c and
f.
0x40, 0x60, 0x80, 0xA0, 0xC0 or 0xE0, the Dem shall report the Det development error
DEM_E_INVALID_OBDMID.c()
[SWS_Dem_00761] dUpon request by the Dcm, the Dem shall repond with the number
of TIDs per requested OBDMID using the API Dem_DcmGetNumTIDsOfOBDMID. This
value can be used by the Dcm to iteratively request for the DTR data per OBDMID /
TID-index whereas the TID-index loops from 0 to number-of-TIDs minus one.c()
[SWS_Dem_00762] dUpon request by the Dcm, the Dem shall respond with the data
available for a particular OBDMID / TIDindex per requested OBDMID using the API
Dem_DcmGetDTRData. This value can be used by the Dcm to iteratively request for
the DTR data per OBDMID / TIDindex starting from 0 to numberofTIDs minus one.c()
[SWS_Dem_00763] dThe Dem shall reset the DTR data using the reference to the Event
per DTR, whenever the Event is affected by a fault clear command.c()
[SWS_Dem_00764] dIf no Event is assigned per DTR, the Dem shall reset the DTR
data upon a Service$04 clear command by the Dcm, i.e. a Dem_ClearDTC with:
DTC = DEM_DTC_GROUP_ALL_DTCS
DTCFormat = DEM_DTC_FORMAT_OBD
DTCOrigin = DEM_DTC_ORIGIN_PRIMARY_MEMORY
c()
[SWS_Dem_CONSTR_06149] Dependency on container DemDtr dThe container
DemDtr shall only be available if DemOBDSupport is set to DEM_OBD_MASTER_ECU
or DEM_OBD_PRIMARY_ECU.c()
A DTR can refer to an event via DemDtrEventRef. The referenced event can be
unavailable according to chapter chapter 7.4.8. In this case the Dem treats the DTR as
not supported and will neither compute the DTR or report a result of it.
[SWS_Dem_01335] Setting DTR results for unavailable events dIf Dem_SetDTR is
called for an DTR that references via DemDtrEventRef an event that itself is config-
ured with DemEventAvailable to FALSE, the Dem shall return E_NOT_OK and not
compute the DTR.c(RS_Diag_04126)
[SWS_Dem_01336] Reporting DTRs for unavailable events dIf Dem_DcmGetDTR-
Data is called for an DTR that references via DemDtrEventRef an event that itself is
configured with DemEventAvailable to FALSE, the Dem shall return E_NOT_OK. In
this case all the out-parameters of Dem_DcmGetDTRData are undefined.c(RS_Diag_-
04126)
The diagnostic service provides the OBD DTCs where the DTC Status bit 2 (Pend-
ingDTC) is currently set. Therefore the interfaces described in chapter 8.3.4.1 will be
used by Dcm.
Note: A SWC on the MIL Master Ecu forwards the information "Minimum trip conditions
satisfied" (PFC cycle) via Bussystem to the primary ECUs.
Note: A software component in the Master ECU optionally polls the API Dem_GetCy-
cleQualified and send the information via the bussystem.
In a primary ECU the interface Dem_GetCycleQualified can be used to get in-
formed that the current OBD driving cycle has met the criteria for the PFC cycle by a
software component.
Typically, the “MIL Master functionality“ is located in the OBD master ECU. Only the
MIL master functionality is allowed to send the MIL request to the instrument cluster.
Therefore in primary ECUs the function Dem_GetIndicatorStatus can be used
to poll the MIL indicator status and send the information to the “MIL Master functional-
ity“ (e.g. located in the master ECU).
7.9.6 WWH-OBD
[SWS_Dem_01140] dThe Dem shall provide a class value per DTC (to characterize the
impact of a malfunction OBD system’s monitoring capability) according to ISO 14229-1
[1], Annex D.3 “DTCSeverityMask and DTC class information bit definitions” (refer to
Dem_GetSeverityOfDTC and Dem_GetNextFilteredDTCAndSeverity), only if
configured for at least one DTC.c()
[SWS_Dem_CONSTR_6109] dThe DTC class is only available for ISO 14229-1 [1]
DTCs. It is configurable per DTC optionally (refer to DemWWHOBDDTCClass).c()
[SWS_Dem_CONSTR_6110] dThe WWH-OBD DTC priority shall be according table
Table 7.4.c()
Note : ISO 27145-3 [21]defines the following DTC Classes utilizing the severity levels:
No Class, Class A, Class B1, Class B2 and Class C.
The Class B1 counter is representing the number of engine hours during which a
Class B1 has been Confirmed and TestFailed. The counter can be implemented as
global, i.e. one counter per ECU or local, i.e. one counter per B1 Event. The Dem
module supports only the global B1 counter.
[SWS_Dem_01154] dThe B1 counter shall increment for each 1 hour engine oper-
ating hour during which at least one Class B1 event is detected as Confirmed and
TestFailed.c()
[SWS_Dem_01155] dThe B1 counter shall latch its value when no Class B1 event is
no longer detected as Confirmed and TestFailed or after a ClearDTC request.c()
The B1 counter continue its incrementation if a Class B1 event is again detected as
Confirmed and TestFailed.
[SWS_Dem_01156] dThe B1 counter shall reset to zero after three consecutive oper-
ating sequences where no Class B1 event have been detected.c()
[SWS_Dem_01157] dIf B1 Counter exceeds 200 engine operating hours and no Class
B1 event have been detected the counter shall be set to 190.c()
[SWS_Dem_01158] dThe B1 counter shall be reported as a two byte value. If any
count operation occurs which would cause a counter to roll over past 0x00FF then the
count value shall instead be latched at 0x00FF.c()
[SWS_Dem_01159] dThe B1 counter shall be stored non-volatile.c()
[SWS_Dem_01160] dIf the B1 counter exceeds 200 engine operating hours the Ac-
tivation Mode 4 shall be active.c()
[SWS_Dem_01161] dIf at least one Class A event is Confirmed and TestFailed the
Activation Mode 4 shall be active.c()
The Freeze Frame shall provide the operating conditions of the vehicle at the time of
malfunction detection.
[SWS_Dem_01170] dThe legislative Freeze Frame 0x00 shall be stored on transition
of UDS status bit 2 from 0 to 1 (via DemFreezeFrameRecordTrigger set to
DEM_TRIGGER_ON_PENDING).c()
[SWS_Dem_01171] dThe update behavior if the Freeze Frame 0x00 is updated on
transition of UDS status bit 3 from 0 to 1, can be configured using DemFreeze-
FrameRecordUpdate.c()
[SWS_Dem_01172] dThe storage/reporting of freeze frame information associated
with a Class A malfunction shall take precedence over a Class B1 malfunction which
shall take precedence over a Class B2 malfunction and likewise for information asso-
ciated with a Class C malfunction.c()
[SWS_Dem_01173] dThe first malfunction detected shall take precedence over the
most recent malfunction unless the most recent malfunction is of a higher class.c()
[SWS_Dem_01174] dThe Freeze Frame 0x00 shall be erased if the event was removed
from fault memory due to aging.c()
[SWS_Dem_01175] dThe legislative freeze frame 0x00 is configured analogues to the
non-emission related freeze frames.c()
For details see chapter 7.7.7.1.
Extended Data Record 0x90 is not supported due to a single B1 counter only supported
in Dem.
7.9.6.8 Aging
This diagnostic service returns the OBD related DTCs that will match the given DTC
Status mask and DTC Severity mask.
[SWS_Dem_01177] dThe interface Dem_GetDTCSeverityAvailabilityMask
shall provide the DtcSeverityAvailabilityMask to the DCM.c()
Note: The DTCSeverityAvailabilityMask can be derived from the configured DTC sever-
ity and the WWH-OBD DTC class.
DM representation
SetFilter Parameter UDS Status filter further filter AllDTCs EmissionDTCs
criteria
DEM_J1939DTC_ACTIVE (ConfirmedDTC == 1 n/a DM01 DM12
AND TestFailed == 1) OR
MIL_ON
DEM_J1939DTC ConfirmedDTC == 1 AND n/a DM02 DM23
_PREVIOUSLY_ACTIVE TestFailed == 0 AND
MIL_OFF
DEM_J1939DTC_PENDING PendingDTC == 1 n/a DM27 DM06
DEM_J1939DTC_- n/a permanent n/a DM28
PERMANENT memory
entry
available
DEM_J1939DTC TestFailed == 1 n/a DM35 n/a
_CURRENTLY_ACTIVE
Table 7.6: Types of errors which can be detected by the Dem module
Each reading of DTC returns a composite lamp status of the following lamps:
a) Malfunction Indicator Lamp
b) Red Stop Lamp
c) Amber Warning Lamp
d) Protect Lamp
[SWS_Dem_00870] dThe composite “Protect Lamp” shall be set to “Lamp Off” in case
the Indicator referenced by DemProtectLampIndicatorRef has an IndicatorStatus
DEM_INDICATOR_OFF. All other IndicatorStatus states than DEM_INDICATOR_OFF
shall set the composite Protect Lamp to “Lamp On”.c(RS_Diag_04110)
[SWS_Dem_00871] dThe composite “Flash Protect Lamp” shall be set to “Unavailable
/ Do Not Flash” (0x03) in case the Indicator referenced by DemProtectLampIndi-
catorRef has an IndicatorStatus DEM_INDICATOR_OFF or DEM_INDICATOR_CON-
TINUOUS.c()
[SWS_Dem_00872] dThe composite “Flash Protect Lamp” shall be set to “Slow Flash”
(0x00) in case the Indicator referenced by DemProtectLampIndicatorRef has an
IndicatorStatus DEM_INDICATOR_SLOW_FLASH.c(RS_Diag_04110)
[SWS_Dem_00873] dThe composite “Flash Protect Lamp” shall be set to “Fast Flash”
(0x01) in case the Indicator referenced by DemProtectLampIndicatorRef has an
IndicatorStatus DEM_INDICATOR_FAST_FLASH.c(RS_Diag_04110)
7.10.3 DM31
The DM31 provides the applicable lamp(s) and their status for each individual DTC,
wherefore the DTC-specific lamp status needs to be returned by the function Dem_-
J1939DcmFirstDTCwithLampStatus.
[SWS_Dem_00880] dEach call to Dem_J1939DcmFirstDTCwithLampStatus shall
set the internal counter to the first event having a J1939DTC for this particular “ClientId”
assiged.c(RS_Diag_04113)
[SWS_Dem_00881] dEach call to Dem_J1939DcmGetNextDTCwithLampStatus
shall search within the event memory (set by the function Dem_-
J1939DcmFirstDTCwithLampStatus) for the next event having a J1939DTC
assigned. In case no more events are available that have a J1939DTC assigend, the
function return value shall be DEM_NO_SUCH_ELEMENT. The out parameter needs
not to be valid in this case.c(RS_Diag_04113)
[SWS_Dem_00882] dIn case Dem_J1939DcmGetNextDTCwithLampStatus has
found an event matching the filter criteria it shall return the J1939DTC specific status
of the lamps (refer to following sections for details), the corresponding J1939DTC (re-
fer DemDTCAttributes for details) and the corresponding occurrence counter. The
return value shall be E_OK. In case the search needs to be interrupted due to inter-
nal implementations or limitations, the return value can be set to DEM_PENDING.
The out parameter needs not to be valid in this case. The next call of Dem_-
J1939DcmGetNextDTCwithLampStatus should continue after the interrupted ele-
ment. In case the occurrence counter is above +126 (0x7F), the returned values shall
be set to +126 (0x7F).c(RS_Diag_04113)
[SWS_Dem_00889] dThe DTC-specific “Flash Red Stop Lamp” shall be set to “Slow
Flash” (0x00) in case the corresponding event has set “Lamp On” and the DemIndi-
catorBehaviour of the Indicator referenced by DemRedStopIndicatorRef is set to
DEM_INDICATOR_SLOW_FLASH.c(RS_Diag_04110)
[SWS_Dem_00890] dThe DTC-specific “Flash Red Stop Lamp” shall be set to “Fast
Flash” (0x01) in case the corresponding event has set “Lamp On” and the DemIndi-
catorBehaviour of the Indicator referenced by DemRedStopIndicatorRef is set to
DEM_INDICATOR_FAST_FLASH.c()
7.10.4 FreezeFrame
• Check if the buffer in the BufSize parameter is big enough to hold the (Expanded-
)FreezeFrame. If not, DEM_FILTERED_BUFFER_TOO_SMALL shall be re-
turned without any further actions. The out parameters need not to be valid in
this case.
• Copy the (Expanded-)FreezeFrame data into the buffer provided by the parameter
DestBuffer (in case of Expanded FreezeFrames without any SPN informations).
Unused bits shall be filled with “0”.
• Set the parameter J1939DTC to the corresponding J1939DTC value (refer
DemDTCAttributes for details) and the parameter OccurrenceCounter to the
corresponding occurrence counter value.
• Return with E_OK. In case the occurrence counter is above +126 (0x7F), the
returned value shall be set to +126 (0x7F).
c(RS_Diag_04111)
The Dem module needs to calculate internally the (Non-)Continuously Monitored Sys-
tems support and status for “Diagnostic Readiness 1” (DM05), “Diagnostic Readiness
2” (DM21), and “Diagnostic Readiness 3” (DM26).
[SWS_Dem_00908] dThe J1939 events shall use the configuration parameter De-
mEventOBDReadinessGroup (refer to DemObdDTC) to assign individual events to a
Continuously or Non-Continuously Monitored System.c(RS_Diag_04113)
Dem_J1939DcmReadDiagnosticReadiness1 reports the diagnostics information
that relates to diagnostic readiness according DM05.
[SWS_Dem_00909] dA call of Dem_J1939DcmReadDiagnosticReadiness1 shall
report a response message based on the J1939-73 [14] DM05 definition:
• “Active Trouble Codes” shall report the number of active DTCs identical to
the number of filtered DTCs by Dem_J1939DcmSetDTCFilter (Dem_Active,
DEM_DTC_KIND_ALL_DTCS).
• “Previously Active Diagnostic Trouble Codes” shall report the num-
ber of previously active DTCs identical to the number of filtered
DTCs by Dem_J1939DcmSetDTCFilter (Dem_PreviouslyActive,
DEM_DTC_KIND_ALL_DTCS).
• “OBD Compliance” shall be based on the configuration parameter DemOBDCom-
pliancy (in DemGeneralOBD). For nonOBD ECUs the value five (5) shall be re-
ported.
• The (Non-)Continuously Monitored Systems support and status shall be reported
according to SAE J1939-73 chapter 5.7.5.4 to 5.7.5.6. The calculation shall be
based on those events referencing the corresponding configuration parameter
For J1939 the In-Use-Monitor Performace Ratio (IUMPR) requires a reporting for each
supported Applicable System Monitor only.
[SWS_Dem_00912] dThe function Dem_J1939DcmSetRatioFilter shall reset an
internal counter to the first valid SPN with DemRatioId defined to be used for the subse-
quent calls of Dem_J1939DcmGetNextFilteredRatio. Furthermore, it shall return
the “Ignition Cycle Counter” according SAEJ193973 chapter 5.7.20.1, as well as “OBD
Monitoring Conditions Encountered” according SAEJ193973 chapter 5.7.20.2 (CARB
defines this as the general denominator).c(RS_Diag_04112)
[SWS_Dem_00913] dEach call of the function Dem_-
J1939DcmGetNextFilteredRatio shall skip to the next valid SPN within the
event memory with DemRatioId defined.
• The events referenced by this SPN via DemRatioId shall be used to calculate
the return values SPN (for “SPN of Applicable System Monitor”), Numerator (for
“Applicable System Monitor Numerator”), and Denominator (for “Applicable Sys-
tem Monitor Denominator”). The return value shall be E_OK.
• In case the calculation needs to be interrupted due to internal implemen-
tations or limitations, the return value can be set to DEM_PENDING. The
out parameter needs not to be valid in this case. The next call of Dem_-
J1939DcmGetNextFilteredRatio should continue after the interrupted ele-
ment.
• In case no more SPNs are available, the function return value shall be
DEM_NO_SUCH_ELEMENT. The out parameter needs not to be valid in this
case.
c(RS_Diag_04113)
From the viewpoint of the BSW “Cmodule” Dem, there are three kinds of dependencies
between the Service and the AUTOSAR Software Components above the RTE:
• The application accesses the API (implemented as Cfunctions) of the Dem (by
accessing the Dem Service Component).
• The application is optionally notified upon the outcome of requested asyn-
chronous activity (via direct/indirect RTE API by the Dem).
• An initialization function of the SWC is invoked by the Dem.
These dependencies must be described in terms of the AUTOSAR metamodel, which
will contribute to the SWC Description of the application component as well as to the
Service Component Description of the Dem Service.
The service component description of the Dem Service will define the ports below the
RTE. Each SWC, which uses the Dem Service, must contain respective ports in its own
SWC description, which will be typed by the same (or compatible) interfaces and must
be connected to the ports of the Dem, so that the RTE can be generated. Ids used in
these Dem-ports are abstracted with portdefined arguments.
[SWS_Dem_00512] dThe name of the Dem Service Component shall be “Dem”.c
(SRS_BSW_00300)
The callbacks to SWCs do not use the mechanism of the portdefined arguments. In-
stead, the Dem configuration mechanism must ensure that the callback is delivered to
the configured port and invokes the correct operation at this port using an RTE (direct
or indirect) API call. For example, the EventId must not be passed as the first argument
of the operation, because the monitors (and other SW-Cs) do not cope with EventIds
explicitly.
In contrast to that, there are some special SWCs, that need to handle event status/-
data changes uniformly. These SWCs are notified by the Dem, which provides then
also the EventId for the application, to be able, to request the respective data from the
Dem. Therefore, general interfaces are provided (refer to GeneralCallbackEven-
tUdsStatusChanged, GeneralDiagnosticInfo and CallbackEventUdsSta-
tusChanged), which shall only be used in the way, that the EventIds (given by the
Dem) shall not be interpreted by SWCs in any way, as well as the EventId values (used
by the SW-Cs to request the event-specific data) have always to be provided by the
Dem. Here only a handthrough mechanism is allowed to be used by SWCs for Even-
tIds.
In the current Autosar release, the RTE analyzes the complete calltree of triggered
runnables. Therefore, some limitations in the Dem API are introduced to avoid function
calls from BSW modules, which rely on callbacks to SWCs via RTE.
There are multiple clients that can request access to the fault memory. To allow parallel
access to the clients, the Dem uses the concept of a client ID. The client IDs are
configured in the container DemClient. Each client which requests access to the fault
memory of the Dem has an assigned unique client ID. Examples for these clients are:
• Parallel OBD and UDS communication, where each protocol is handled by an
own Dcm client
• Multiple Dcm instances in virtual ECUs, where Dcm instances are independent
from each other
• SWCs or complex device driver, as proxy in OBD systems for secondary ECUs
• Clearing DTC by different clients
The Dem supports the client id as parameter ‘ClientId’ in various APIs to:
• Access fault memory information
• Read event related data
The Dem provides a range of APIs controlling and accessing event memory and its
behavior or configuration and states. Many of those APIs follow a ‘select and request’
mechanism. Initially a client selects a DTC or a group of DTCs and then calls APIs
working on the active selection. A selection is client local and remains until a new
selection is made.
[SWS_Dem_01253] dIf the API Dem_SelectDTC is called, the Dem shall use the se-
lected DTC or group of DTC in the requested DTCOrigin and DTCFormat as target
for the following API calls:
• Dem_ClearDTC
• Dem_DisableDTCRecordUpdate
• Dem_GetDTCSelectionResultForClearDTC
• Dem_GetDTCSelectionResult
• Dem_GetFunctionalUnitOfDTC
• Dem_GetSeverityOfDTC
• Dem_GetStatusOfDTC
• Dem_SelectFreezeFrameData
• Dem_SelectExtendedDataRecord
• Dem_SetDTCSuppression
• Dem_GetDTCSuppression.
c()
[SWS_Dem_01306] Behavior if one client calling Dem_SelectDTC before the pre-
vious operation finished dIf Dem_SelectDTC is called by one client and the same
client is calling Dem_SelectDTC again and the Dem is currently still processing the
previous operation based on Dem_SelectDTC according to [SWS_Dem_01253], the
Dem shall return DEM_BUSY.c()
[SWS_Dem_01305] Behavior if one client starting a new operation while the pre-
vious one is still running dIn case any of the Dem_SelectDTC related APIs ac-
cording to [SWS_Dem_01253] is called by one client and the same client has already
started another Dem_SelectDTC related operation according to [SWS_Dem_01253]
and this different operation is not completed, the Dem shall return DEM_BUSY.c()
[SWS_Dem_01304] Life cycle of Dem_Select dependent operations dThe
Dem shall consider an operation based on Dem_SelectDTC according to
[SWS_Dem_01253] to be finished independently if the client has requested the E_OK
result from the Dem or not.c()
A client calling Dem_SelectDTC while another operation of the same client is still
running, would indicate that the client is no longer interested in the result of the running
operation. The result can be dropped and new select can be processed after Dem is
ready.
[SWS_Dem_01198] dFor addressing all DTCs, the Dem shall provide the symbol
DEM_DTC_GROUP_ALL_DTCS which is selecting all configured DTCs (representation
is 0xFFFFFF).c()
[SWS_Dem_01254] dThe API Dem_SelectDTC triggers the Dem internal DTC selec-
tion process on the event memory assigned to the ClientId. The result of the selection
shall be reflected in the return value of the API calls following the Dem_SelectDTC
call, see [SWS_Dem_01253].c()
Note:The behaviour of Dem_SelectDTC depending APIs with calling Dem_Select-
DTC is described in [SWS_Dem_01299].
Note: The Dem_SelectDTC selects internally a DTC or group of DTC. In case a client
is interested only in the result of the selection without a further action behind, the API
Dem_GetDTCSelectionResult can be used. One use case of this API is the NRC
handling for the UDS service 0x14 ClearDTC. The Dcm needs to perform further NRC
relevant verifications between selecting and deleting the DTC.
[SWS_Dem_01261] API Behaviour on undefined DTC or format dIf any of the APIs
requiring a Dem_SelectDTC according to [SWS_Dem_01253] is called while the se-
lection with Dem_SelectDTC is invalid, then the Dem shall return DEM_WRONG_DTC.
A selection is invalid in case the provided DTC does not specify a valid DTC or
GroupOfDTCs in the corresponding DTCFormat. The selection also is invalid, if Dem_-
SelectDTC was not called before.c(SRS_BSW_00369)
[SWS_Dem_01299] API behavior without selected DTC dIf any of the APIs
requiring a Dem_SelectDTC according to [SWS_Dem_01253] is called without
a prior call of Dem_SelectDTC for this client, the Dem shall report the Det
DEM_E_WRONG_CONDITION.c(SRS_BSW_00369)
[SWS_Dem_01262] API Behaviour on undefined DTCOrigin dIf any of the APIs re-
quiring a Dem_SelectDTC (see [SWS_Dem_01253]) is called on a not existing se-
lected DTCOrigin, the Dem shall return DEM_WRONG_DTCORIGIN on this API.c
().
[SWS_Dem_01256] dThe API Dem_GetDTCSelectionResult shall return E_OK, if
the selection of Dem_SelectDTC was successful and the DTC or group of DTC are
ready for further processing.c()
Note: The call of Dem_GetDTCSelectionResult after a Dem_SelectDTC is op-
tional. APIs depending on Dem_SelectDTC have the same behaviour with or without
a call of Dem_GetDTCSelectionResult.
[SWS_Dem_01257] dIf the API Dem_GetDTCSelectionResult is called and the
DTC or group of DTC from Dem_SelectDTC is invalid, the Dem shall return
DEM_WRONG_DTC.c()
[SWS_Dem_01258] dIf the API Dem_GetDTCSelectionResult is called and
the Origin provided to Dem_SelectDTC is invalid, the Dem shall return
DEM_WRONG_DTCORIGIN.c()
[SWS_Dem_01296] Definition of Dem_GetDTCSelectionResultForClearDTC
functionality dThe API Dem_GetDTCSelectionResultForClearDTC shall be-
have exactly as Dem_GetDTCSelectionResult with the only difference that,
DEM_WRONG_DTC is returned in case of a single DTC was selected and Dem-
ClearDTCLimitation is set to DEM_ONLY_CLEAR_ALL_DTCS for that client.c
()
The following chapter defines the APIs, which shall be used to access the number of
DTCs, and DTCs matching specific filter criteria and the associated status information.
[SWS_Dem_00231] dThe API Dem_GetTranslationType shall return the transla-
tion format of the DemEventMemorySet configured in DemTypeOfDTCSupported.c
(RS_Diag_04201)
• Dem_GetNextFilteredDTCAndFDC
• Dem_GetNextFilteredDTCAndSeverity.
The filter criteria attributes shall be used until the next call of Dem_SetDTCFilter or
Dem initialization.c(RS_Diag_04057)
Note: Calls to Dem_SetDTCFilter with different ClientID can be called in parallel
(see [SWS_Dem_01251]) without interfering each other. This way multiple clients can
access the fault memory data in parallel.
In figure 7.48 a situation is shown, where two clients (e.g. an Dcm for OBD and an
Dcm for UDS) are reading the number of filtered DTCs in parallel.
Client1 Client2 «Module»
:Dem
[SWS_Dem_01300] API behavior without set DTC filter dIf any of the APIs re-
quiring a Dem_SetDTCFilter according to [SWS_Dem_00057] is called without
a prior call of Dem_SetDTCFilter for this client, the Dem shall report the Det
DEM_E_WRONG_CONDITION.c(SRS_BSW_00369)
[SWS_Dem_01264] dIF Dem_SetDTCFilter is called with an invalid DTCOrigin,
the Dem shall return E_NOT_OK.c()
[SWS_Dem_01265] dIF Dem_SetDTCFilter is called with an invalid DTCFormat,
the Dem shall return E_NOT_OK.c()
[SWS_Dem_01266] dIn case of calling any subsequent function of Dem_SetDTC-
Filter (see [SWS_Dem_00057]) after the initial Dem_SetDTCFilter did not return
E_OK, the Dem shall shall return E_NOT_OK on this subsequent function call.c()
counter (FDC, refer to [SWS_Dem_00264]) matching the filter criteria defined by the
function call Dem_SetDTCFilter (refer to [SWS_Dem_00057]).c()
[SWS_Dem_00513] dIf the callback-function Dem_GetFaultDetectionCounter re-
turns other than E_OK or is not configured for a DTC filtered by Dem_GetNextFil-
teredDTCAndFDC, this FDC value shall be returned as 0.c()
The Dcm calls the function Dem_GetNextFilteredDTCAndFDC continuously until
the return value of the function is DEM_NO_SUCH_ELEMENT, to receive all DTCs
matching the filter criteria.
Note: Non-Dem-internal calculated fault detection counters are typically requested
from SWCs through the RTE. To indicate an equivalent calltree for these runnables,
a workaround is used: The Dcm main function specifies a trigger to the Dem inter-
face GeneralEvtInfo (operation GetFaultDetectionCounter), which triggers the respec-
tive runnable (refer to RunnableEntity Dem_GetFaultDetectionCounter).
[SWS_Dem_00287] dWith each call to the function Dem_GetNextFilteredDTCAn-
dSeverity the Dem module shall return the next DTC and its associated fault severity
matching the filter criteria defined by the function call Dem_SetDTCFilter (refer to
[SWS_Dem_00057]).c()
The Dcm calls the function Dem_GetNextFilteredDTCAndSeverity continuously
until the return value of the function is DEM_NO_SUCH_ELEMENT, to receive all DTCs
matching the filter criteria.
For information about the functions Dem_GetSeverityOfDTC and Dem_GetFunc-
tionalUnitOfDTC, refer to chapter 7.4.
[SWS_Dem_00595] dThe function Dem_SetFreezeFrameRecordFilter shall set
the static filter criteria attribute “all freeze frame records currently stored in the event
memory” to be used for the subsequent calls of Dem_GetNextFilteredRecord and
Dem_GetNumberOfFreezeFrameRecords. This filter always belongs to primary
memory.c()
[SWS_Dem_00650] dThe filter criteria attributes of Dem_SetFreezeFrameRecord-
Filter shall be used until the next call of Dem_SetFreezeFrameRecordFilter or
Dem initialization. Each call of Dem_SetFreezeFrameRecordFilter shall lead to a
reset of the sequence iterating over freezeframes.c(RS_Diag_04204)
[SWS_Dem_01312] dDem_GetNumberOfFreezeFrameRecords shall retrieve the
number of freeze frame records in primary memory that match the current filter.c(RS_-
Diag_04205)
[SWS_Dem_01313] API behavior without set DTC filter dIf any of the APIs re-
quiring a Dem_SetFreezeFrameRecordFilter is called without a prior call of
Dem_SetFreezeFrameRecordFilter for this client, the Dem shall report the Det
DEM_E_WRONG_CONDITION.c(SRS_BSW_00369)
This section defines the APIs, to get access to the event related data (refer to chapter
7.7.7.1 and chapter 7.7.7.3) stored with the DTCs in the event memory of the Dem
via diagnostics. Furthermore, access to WWH-OBD relevant PIDs stored in a freeze
frame is made available. Details concerning freeze frame handling can be found in
ISO-14229-1[2] and ISO 27145-3[21].
Example for the mapping of a PID to a DID: PID $04 –> DID 0xF404
Note: The data returned include the DTCSnapshotRecordNumberOfIdentifiers (Num
of DIDs) as defined by ISO-14229-1[2] for the response message to service 0x19 0x05.
[SWS_Dem_01268] dIf the API Dem_SelectFreezeFrameData is called, the Dem
shall use the DTC selected by Dem_SelectDTC and the RecordNumber as a target
for the following API calls:
• Dem_GetNextFreezeFrameData
• Dem_GetSizeOfFreezeFrameSelection
c()
[SWS_Dem_01269] dThe API Dem_SelectFreezeFrameData triggers the Dem in-
ternal Freeze Frame selection process on the event memory assigned to the ClientId.
The Dem shall provide the result of the selection process in the return value of the API
calls following the Dem_SelectFreezeFrameData call, see [SWS_Dem_01268].c()
[SWS_Dem_01270] dIf any of the APIs requiring a Dem_SelectFreezeFrameData
(see [SWS_Dem_01268]) are called without a prior call to Dem_SelectFreeze-
FrameData, the Dem shall report the Det error DET_E_WRONG_CONDITION.c
(SRS_BSW_00369)
RecordNum Num of DIDs 1st DID Data #1 ... Nth DID Data #N
Byte 0 Byte 1 Byte 2..3 Byte 4..j Byte j..k Byte k..(k+2) Byte (k+2)..n
Note: If the record number value 0xFF is requested, the Dem considers the size of all
stored freeze frame records according to [SWS_Dem_00074].
[SWS_Dem_01348] Select freeze frame data for single DTCs only dIn case
the function Dem_SelectFreezeFrameData is called and the DTC selected by
Dem_SelectDTC is not a single DTC but a group of DTC, the Dem shall return
DEM_WRONG_DTC.c(RS_Diag_04244)
[SWS_Dem_01349] Select extended data record for single DTCs only dIn case
the function Dem_SelectExtendedDataRecord is called and the DTC selected
by Dem_SelectDTC is not a single DTC but a group of DTC, the Dem shall return
DEM_WRONG_DTC.c(RS_Diag_04245)
[SWS_Dem_01272] dIf the API Dem_SelectExtendedDataRecord is called, the
Dem shall use the DTC selected by Dem_SelectDTC and the ExtendedDataNumber
as a target for the following API calls:
• Dem_GetNextExtendedDataRecord
• Dem_GetSizeOfExtendedDataRecordSelection
c()
[SWS_Dem_01273] dThe API Dem_SelectExtendedDataRecord triggers the Dem
internal extended data record selection process on the event memory assigned to
the ClientId. The Dem shall provide the result of the selection process in the re-
turn value of the API calls following the Dem_SelectExtendedDataRecord, see
[SWS_Dem_01272].c()
[SWS_Dem_01274] dIf any of the APIs requiring a Dem_SelectExtended-
DataRecord (see [SWS_Dem_01272]) are called without a prior call to Dem_Se-
lectExtendedDataRecord, the Dem shall report the Det error DEM_E_WRONG_-
CONDITION.c(SRS_BSW_00369)
[SWS_Dem_00075] dThe API Dem_GetNextExtendedDataRecord shall copy the
complete data of the requested extended data record by Dem_SelectExtended-
DataRecord API for the specified ClientId to the destination buffer (DestBuffer). The
function shall transmit these data as a complete record with the Buffer format. The
extended data record number is placed as the first byte in the copied data.c()
For Buffer format see figure 7.50.
ExtendedData
Data element #1 … Data element #n
RecordNumber
The Dem provides the functionality to clear DTCs to the Dcm and other diagnostic
clients. The general DTC clearing process is described in chapter 7.7.2.2.
Note: This is similar like the enable condition handling (refer to [SWS_Dem_00449]).
It has no impact on Dem_ResetEventDebounceStatus, Dem_ResetEventStatus
and Dem_ClearDTC. In case of Dem-internal debouncing the related fault detection
counter will be frozen or reset (refer to chapter Figure 7.31 and Figure 7.34).
Most of the APIs of the Dem/Dcm interface depend on NVRAM data. There-
fore, an asynchronous processing of these APIs is realized by using the additional
“DEM_PENDING” return value.
[SWS_Dem_00971] dIn case the TestFailed bit of an event within an primary event
memory changes and a J1939 DTC number is assigned to that event, the function
J1939Dcm_DemTriggerOnDTCStatus shall be called for each DemClient referencing
this DemEventMemorySetc(RS_Diag_04112)
Typically, the Dem module uses nonvolatile memory blocks (configurable in size by
the NVRAM Manager [5]) to achieve permanent storage of UDS status information,
event related data and required internal states (e.g. retrieve status at startup). Each
nonvolatile memory block used from the Dem, needs also to be configured (refer to
DemNvRamBlockId). The number, the type, and the content of the used nonvolatile
memory blocks are not prescribed. These shall be handled implementation specific.
The NvM usage can also be deactivated by configuration (refer to multiplicity of Dem-
NvRamBlockId), so that the Dem will work based on RAM only.
[SWS_Dem_00339] dThe Dem module shall verify the validity (which relates to block
states), integrity (which relates to CRC results), and for general NvM-reading errors of
its nonvolatile blocks (before using the respective data).c(RS_Diag_04107)
Usually this verification is done in the API Dem_Init by using NvM_GetErrorStatus for
these blocks, which are read by the ECU State Manager (refer to API NvM_ReadAll).
Note: For the non-volatile data of the Dem module, it is recommended to configure a
CRC in the NvM.
[SWS_Dem_00578] dIf the NVM module was not able to read some nonvolatile data
of the Dem module, the Dem module shall initialize all non-volatile data with their initial
values.c(SRS_Mem_08549)
Note: To avoid inconsistencies between readable blocks and erroneous blocks, all
nonvolatile data are initialized. The initialization is done to allow the fault detection
mechanism of the NvM module, to report the respective reading error(s) to the Dem
module (refer to Dem_SetEventStatus). These errors denote the defective NVRAM.
[SWS_Dem_00340] dAfter the API Dem_Init has finished, the Dem shall be fully
operational.c(SRS_BSW_00101)
[SWS_Dem_01237] dIf a DTC is reported as failed (UDS status testfailed flag changes
from 0->1) and gets newly stored to the event memory (no entry existed for this
DTC) and this DTC is configured with DemNvStorageStrategy = IMMEDIATE_-
AT_FIRST_OCCURRENCE, the Dem shall trigger the immediate storage to NvM.c(RS_-
Diag_04077)
[SWS_Dem_01238] dIf a DTC is configured with DemNvStorageStrategy = DUR-
ING_SHUTDOWN, any change of its data (DTC, UDS status, event memory entry) shall
only be stored to NvM during shutdown.c(RS_Diag_04077)
[SWS_Dem_00551] dIf immediate nonvolatile storage is enabled for a specific DTC,
the Dem module shall trigger the storage for new event memory entries and after
every change of the event related data (event memory entry was updated).c(RS_-
Diag_04077)
Note: For event memory entries, which are stored immediately, it is necessary to
ensure data consistency (e.g. with the UDS status byte) during Dem_Init.
Note: If the immediate nonvolatile storage is disabled, the event memory entry
and its event related data are stored persistently during the shutdown phase (refer to
[SWS_Dem_00102], [SWS_Dem_00341] and the note below).
Note: Write operations to NVRAM will perform in any case at ECU shutdown.
[SWS_Dem_00102] dThe API Dem_Shutdown shall finalize all pending operations in
the Dem module to prepare the internal states and data for transfer to the NVRAM. The
event memory shall be locked and not modified until the API Dem_Init is recalled.c
(SRS_BSW_00336)
[SWS_Dem_00341] dFor changed nonvolatile data, the Dem module shall trigger the
storage to NVRAM before or during Dem_Shutdown.c(SRS_BSW_00336)
Based on the Dem configuration and implementation, the copying process to NVRAM
of those Demrelated NvMblocks to be stored after Dem_Shutdown, is performed by
the API NvM_WriteAll called by the ECU State Manager.
If the ECU power supply is disconnected before the NvM has finished copying all data
to NVRAM, these data will be incomplete/inconsistent or not stored. At next startup, the
events of the last operating cycle could not be found anymore. Therefore, the NVRAM
Manager configuration provides mechanisms for data consistency, like redundant data
blocks.
[SWS_Dem_00164] dThe Dem module shall use the APIs NvM_WriteBlock and
NvM_ReadBlock of the NVRAM Manager, if there is the necessity to store and restore
data between Dem_Init and Dem_Shutdown.c(RS_Diag_04077)
Note: The NvM module realizes a retry mechanism for block reading and writing.
Therefore, the Dem module does not implement any retry mechanism for its nonvolatile
blocks.
[SWS_Dem_00579] dIf the NVM module was not able to write (some) nonvolatile data
of the Dem module, the Dem module shall ignore the reported negative return values
by the NvM.c(SRS_BSW_00171)
Note: If writing of nonvolatile Dem data fails, the Dem module is not able to perform
any adequate reaction.
One kind of information required by the Dem module are event related data (repre-
sented by freeze frames and extended data records, refer to chapter 7.7.7).
Note: For OBDrelevant ECUs, the Dem module could access (via the data element
interface) on the following data values:
• engine temperature engine speed
• vehicle speed (refer to [SWS_Dem_00346], PID $0D)
• distance information
• programming event
• ambient temperature
• ambient pressure
• accelerator pedal information
However, the list of data elements and their required size and resolution are
implementationspecific and will be configured in OBD and handled during integration
process. For example, the vehicle speed, accelerator pedal information, ambient tem-
perature, etc. are necessary to evaluate the cycle conditions of the IUMPR General
Denominator. Similar inputs are necessary for the PID computation (e.g. the engine
temperature for the computation of the WarmUp cycle or the WarmUp cycle condition
itself). These variables are typically accessed through the RTE.
OEM Supplier
DEXT
EcuC
DiagnosticDataIdentifier
DEM Service
-> DiagnosticDataElement DemAlternativeDataType.Dem
-> SwDataDefProps ApplicationDataType SWC
-> CompuMethodRef
CompuMethod
-> ASCII_10Byte SWC DEXT based
depends on
EcuCValues
DEM
Internal Configuration
EcuCValues
* The DEXT importer generates one SWC which contains all SwDataDefProps and the ECUC parameter
(DemAlternativeDataType.DemApplicationDataType) refers to the SWC. Within the SWBuild processing this reference to SWC is
taken and the required contents (CompuMethod / DataContraints / Units) are included into the Dem SWCD.
Work flow 2
This work flow is that while importing the DEXT [23] information beside the EcuC
values also a SWC fragment is generated. In this SWC fragment all needed
SwDataDefProps are directly copied from the DEXT [23] file. Inside the gener-
ated EcuC values the EcuC Parameter DemApplicationDataType refers to the
SWC fragment and enables the access to all SwDataDefProps (BaseTyoe, Com-
puMethod, DatConstr, etc.). In the process step of generating the corresponding
Service SWC all needed content will be included based on the reference from
DemApplicationDataType to the SWC fragment. In this work flow the existence
of the DEXT [23] file while the generation of the Service SWC is not required.
OEM Supplier
DEXT
EcuC
DiagnosticDataIdentifier
DEM Service
-> DiagnosticDataElement DemAlternativeDataType.Dem
-> SwDataDefProps ApplicationDataType SWC
-> CompuMethodRef
CompuMethod
-> ASCII_10Byte SWC DEXT based
depends on
EcuCValues
DEM
Internal Configuration
EcuCValues
* The DEXT importer generates one SWC which contains all SwDataDefProps and the ECUC parameter
(DemAlternativeDataType.DemApplicationDataType) refers to the SWC. Within the SWBuild processing this reference to SWC is
taken and the required contents (CompuMethod / DataContraints / Units) are included into the Dem SWCD.
[SWS_Dem_00173] d
Type of error Related error code Error value
API function called with a parameter value, which DEM_E_WRONG_CONFIGURATION 0x10
is not allowed by active configuration
API function called with a NULL pointer DEM_E_PARAM_POINTER 0x11
API function called with wrong parameter value DEM_E_PARAM_DATA 0x12
API function called with wrong length parameter DEM_E_PARAM_LENGTH 0x13
value
Dem initialisation failed (refer to SWS_ DEM_E_INIT_FAILED 0x14
BSW_00151)
API function called before the Dem module has DEM_E_UNINIT 0x20
been full initialized (refer to
[SWS_Dem_00124],[SWS_Dem_00364]) or after
the Dem module has been shut down (refer to
[SWS_Dem_00368])
Required conditions for the respective API call are DEM_E_WRONG_CONDITION 0x40
not fulfilled (e.g. an invalid status change was
initiated, or a filter was not set correctly, etc. - refer
to [SWS_Dem_00518]).
Dem_DcmGetAvailableOBDMIDs called with DEM_E_INVALID_OBDMID 0x50
invalid OBDMID.
c(SWS_BSW_00050, SWS_BSW_00212)
[SWS_Dem_00124] dIf DemDevErrorDetect is set to TRUE and any Dem API ex-
cluding :
• Dem_SetEventStatus
• Dem_ResetEventStatus
• Dem_SetEventAvailable
• Dem_ResetEventDebounceStatus
• Dem_GetVersionInfo
• Dem_MainFunction
• Dem_SetEventFailedWithSyncFreezeFrame
is called before Dem has been fully initialized, the Dem module shall set the error code
DEM_E_UNINIT.c(SRS_BSW_00406)
Note: If development error detection is disabled and the Dem is not fully initialized, the
behavior of the APIs is undefined.
[SWS_Dem_01324] d During Dem_Init the Dem initializes the monitor and component
states. After this point in time, the Dem shall return E_OK on the APIs Dem_GetMoni-
torStatus and Dem_GetComponentFailed.c()
[SWS_Dem_00364] dIf development error detection is enabled and any instance calls
Dem_SetEventStatus or Dem_ResetEventDebounceStatus before the Dem was
preinitialized, the Dem module shall set the error code DEM_E_UNINIT.c(SRS_BSW_-
00406)
Note: If development error detection is disabled and the Dem is not preinitialized, the
behavior of these APIs is undefined.
[SWS_Dem_00368] dIf development error detection is enabled and any instance calls
any Dem API, excluding Dem_SetEventStatus, Dem_ResetEventDebounceSta-
tus, Dem_GetVersionInfo and Dem_MainFunction, after Dem_Shutdown has
been called, the Dem module shall set the error code DEM_E_UNINIT until Dem_Init
is called again.c(SRS_BSW_00337)
Note: If development error detection is disabled and the Dem is shut down, the behavior
of these APIs is undefined.
[SWS_Dem_00518] dIf development error detection is enabled and a Dem function is
called with required preconditions not fulfilled, the Dem module shall set the error code
DEM_E_WRONG_CONDITION.c(RS_Diag_04057)
Note: For example, Dem_GetNextFilteredDTCAndFDC is called, after Dem_Set-
DTCFilter with FilterForFaultDetectionCounter = FALSE was called.
[SWS_Dem_91035] d
Type of error Related error code Error value
The UDS status corresponding to a changed DEM_E_UDS_STATUS_PROCESSING_FAILED 0x21
monitor status could not be processed.
No valid data for data element available by SW-C DEM_E_NODATAAVAILABLE 0x30
or BSW call
c()
8 API specification
The figures below show the interfaces between Dem and its surrounding SW-Cs and
BSW modules. The description of the interface shall give a simple overview of these
relations.
«module» «... «interface»
Dcm Dem Dem_Det_Optional «modu...
Det
«function»
«optional» ::Det_ReportError
«module» Det_ReportError(return, ModuleId, InstanceId, ApiId, ErrorId)
[BSW]
«interface»
«module» Dem_Fim_Optional
[SWC]
«function»
«optional» ::FiM_DemInit
FiM_DemInit()
::FiM_DemTriggerOnMonitorStatus
«interface» FiM_DemTriggerOnMonitorStatus(EventId)
SchM_Dem_Mandatory
«scheduled_function» «interface»
::Dem_MainFunction Fim_Dem_Mandatory «mandatory»
Dem_MainFunction()
«function» «modu...
::Dem_GetMonitorStatus FiM
Dem_GetMonitorStatus(return, EventID, MonitorStatus)
«optional»
«module» «module»
SchM EcuM «interface»
Dem_NvM_Optional
«function»
::NvM_SetRamBlockStatus
«optional» NvM_SetRamBlockStatus(return, BlockId, BlockChanged) «modu...
«optional»
::NvM_ReadBlock NvM
Figure 8.1: Overview of interfaces between the Dem and other BSW modules
«function»
::Dem_ClearDTC «use»
+ Dem_ClearDTC(Std_ReturnType, uint8)
::Dem_GetVersionInfo
+ Dem_GetVersionInfo(Std_VersionInfoType**)
«interface»
BSW/SWC_Dem_Use
«function»
::Dem_GetDTCOfEvent
+ Dem_GetDTCOfEvent(Std_ReturnType, Dem_EventIdType, Dem_DTCFormatType, uint32**)
::Dem_SetEventDisabled
+ Dem_SetEventDisabled(Std_ReturnType, Dem_EventIdType)
::Dem_GetEventExtendedDataRecordEx
«use»
+ Dem_GetEventExtendedDataRecordEx(Std_ReturnType, Dem_EventIdType, uint8, uint8**, uint16**): void
::Dem_GetEventFreezeFrameDataEx
+ Dem_GetEventFreezeFrameDataEx(Std_ReturnType, Dem_EventIdType, uint8, uint16, uint8**, uint16**): void
::Dem_GetEventMemoryOverflow
+ Dem_GetEventMemoryOverflow(Std_ReturnType, uint8, Dem_DTCOriginType, boolean**): void
::Dem_SetDTCSuppression
+ Dem_SetDTCSuppression(Std_ReturnType, uint8, boolean): void
::Dem_GetIndicatorStatus
+ Dem_GetIndicatorStatus(Std_ReturnType, uint8, Dem_IndicatorStatusType**)
::Dem_SetEnableCondition
+ Dem_SetEnableCondition(Std_ReturnType, uint8, boolean)
::Dem_SetStorageCondition
+ Dem_SetStorageCondition(Std_ReturnType, uint8, boolean): void
::Dem_RepIUMPRDenRelease
+ Dem_RepIUMPRDenRelease(Std_ReturnType, Dem_RatioIdType)
::Dem_ResetEventDebounceStatus
+ Dem_ResetEventDebounceStatus(Std_ReturnType, Dem_EventIdType, Dem_DebounceResetStatusType) «m...
::Dem_GetEventUdsStatus [SWC]
+ Dem_GetEventUdsStatus(Std_ReturnType, Dem_EventIdType, Dem_UdsStatusByteType**)
::Dem_SetPtoStatus
«use»
+ Dem_SetPtoStatus(Std_ReturnType, boolean)
::Dem_RepIUMPRFaultDetect
+ Dem_RepIUMPRFaultDetect(Std_ReturnType, Dem_RatioIdType)
«interface»
SWC_Dem_Use
«function»
::Dem_ResetEventStatus
+ Dem_ResetEventStatus(Std_ReturnType, Dem_EventIdType)
::Dem_PrestoreFreezeFrame «use»
+ Dem_PrestoreFreezeFrame(Std_ReturnType, Dem_EventIdType)
::Dem_RestartOperationCycle
+ Dem_RestartOperationCycle(Std_ReturnType, uint8)
::Dem_SetEventStatus
+ Dem_SetEventStatus(Std_ReturnType, Dem_EventIdType, Dem_EventStatusType)
::Dem_ClearPrestoredFreezeFrame
+ Dem_ClearPrestoredFreezeFrame(Std_ReturnType, Dem_EventIdType)
::Dem_GetFaultDetectionCounter
+ Dem_GetFaultDetectionCounter(Std_ReturnType, Dem_EventIdType, sint8**)
Figure 8.2: Overview of interfaces between the Dem and other BSW modules (in general)
«function»
::Dem_DcmReadDataOfPID01
+ Dem_DcmReadDataOfPID01(return, PID01value)
::Dem_DcmReadDataOfPID30
+ Dem_DcmReadDataOfPID30(return, PID30value)
::Dem_DcmReadDataOfPID21
+ Dem_DcmReadDataOfPID21(return, PID21value)
::Dem_DcmGetInfoTypeValue08
+ Dem_DcmGetInfoTypeValue08(return, OpStatus, Iumprdata08, Iumprdata08BufferSize)
«realize» ::Dem_DcmGetInfoTypeValue0B
«configurable»
+ Dem_DcmGetInfoTypeValue0B(return, OpStatus, Iumprdata0B, Iumprdata0BBufferSize)
::Dem_DcmReadDataOfPID4D
+ Dem_DcmReadDataOfPID4D(return, PID4Dvalue)
::Dem_DcmReadDataOfPID1C
+ Dem_DcmReadDataOfPID1C(return, PID1Cvalue)
::Dem_DcmReadDataOfPID41
+ Dem_DcmReadDataOfPID41(return, PID41value)
::Dem_DcmReadDataOfPID4E
+ Dem_DcmReadDataOfPID4E(return, PID4Evalue)
::Dem_DcmReadDataOfPID31
+ Dem_DcmReadDataOfPID31(return, PID31value)
«optional»
«interface»
Dcm_Dem_Optional
«function»
::Dem_SetFreezeFrameRecordFilter
+ Dem_SetFreezeFrameRecordFilter(return, ClientId, DTCFormat)
::Dem_ClearDTC
+ Dem_ClearDTC(return, ClientId)
::Dem_GetNextFilteredDTC
+ Dem_GetNextFilteredDTC(return, ClientId, DTC, DTCStatus)
::Dem_GetSeverityOfDTC
+ Dem_GetSeverityOfDTC(return, DTCSeverity, ClientId)
::Dem_GetNumberOfFilteredDTC
+ Dem_GetNumberOfFilteredDTC(return, ClientId, NumberOfFilteredDTC)
::Dem_SetDTCFilter
+ Dem_SetDTCFilter(return, ClientId, DTCStatusMask, DTCFormat, DTCOrigin, FilterWithSeverity, DTCSeverityMask, FilterForFaultDetectionCounter)
::Dem_GetTranslationType
+ Dem_GetTranslationType(return, ClientId)
::Dem_GetDTCStatusAvailabilityMask
+ Dem_GetDTCStatusAvailabilityMask(return, ClientId, DTCStatusMask, DTCOrigin)
::Dem_GetNextFilteredDTCAndFDC
+ Dem_GetNextFilteredDTCAndFDC(return, ClientId, DTC, DTCFaultDetectionCounter)
::Dem_GetStatusOfDTC
+ Dem_GetStatusOfDTC(return, ClientId, DTCStatus)
::Dem_GetSizeOfFreezeFrameSelection
+ Dem_GetSizeOfFreezeFrameSelection(return, ClientId, SizeOfFreezeFrame)
::Dem_DcmReadDataOfOBDFreezeFrame
+ Dem_DcmReadDataOfOBDFreezeFrame(return, PID, DataElementIndexOfPID, DestBuffer, BufSize)
::Dem_GetNextExtendedDataRecord
+ Dem_GetNextExtendedDataRecord(return, ClientId, DestBuffer, BufSize)
::Dem_GetDTCByOccurrenceTime
+ Dem_GetDTCByOccurrenceTime(return, ClientId, DTCRequest, DTC)
::Dem_GetNextFilteredRecord
+ Dem_GetNextFilteredRecord(return, ClientId, DTC, RecordNumber)
::Dem_DisableDTCSetting
+ Dem_DisableDTCSetting(return, ClientId)
::Dem_EnableDTCRecordUpdate
+ Dem_EnableDTCRecordUpdate(return, ClientId)
::Dem_GetNextFreezeFrameData
+ Dem_GetNextFreezeFrameData(return, ClientId, DestBuffer, BufSize)
::Dem_GetNextFilteredDTCAndSeverity
+ Dem_GetNextFilteredDTCAndSeverity(return, ClientId, DTC, DTCStatus, DTCSeverity, DTCFunctionalUnit)
::Dem_GetSizeOfExtendedDataRecordSelection
+ Dem_GetSizeOfExtendedDataRecordSelection(return, ClientId, SizeOfExtendedDataRecord)
::Dem_DisableDTCRecordUpdate
+ Dem_DisableDTCRecordUpdate(return, ClientId)
c(SRS_BSW_00301)
8.2.1.1 Dem_ComponentIdType
[SWS_Dem_01114] d
Name Dem_ComponentIdType
Kind Type
Derived from uint16
Range 1..65535 – Internal identifier of a monitored
component. Remark: 0 is not a
valid value
Description Identification of a DemComponent by assigned ComponentId. The ComponentId is automatically
assigned by the Dem.
Available via Dem.h
c()
8.2.1.2 Dem_ConfigType
[SWS_Dem_00924] d
Name Dem_ConfigType
Kind Structure
Elements implementation specific
Type –
Comment –
Description This type of the external data structure shall contain the post build initialization data for the Dem.
Available via Dem.h
c()
8.2.1.3 Dem_EventIdType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.8.
8.2.1.4 Dem_EventStatusType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.9.
8.2.1.5 Dem_DebouncingStateType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.5.
8.2.1.6 Dem_DebounceResetStatusType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.6.
8.2.1.7 Dem_UdsStatusByteType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.21.
8.2.1.8 Dem_IndicatorStatusType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.17.
8.2.1.9 Dem_MonitorDataType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.15.
8.2.1.10 Dem_MonitorStatusType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.16.
8.2.1.11 Dem_DTCKindType
[SWS_Dem_00932] d
Name Dem_DTCKindType
Kind Type
Derived from uint8
Range DEM_DTC_KIND_ALL_DTCS 0x01 Select all DTCs
DEM_DTC_KIND_EMISSION_ 0x02 Select OBD-relevant DTCs
REL_DTCS
Description This type is used to filter DTCs for their kind.
Available via Dem_J1939Dcm.h
c(RS_Diag_04129)
8.2.1.12 Dem_DTCFormatType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.10.
8.2.1.13 Dem_DTCOriginType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.4.
8.2.1.14 Dem_DTCRequestType
[SWS_Dem_00935] d
Name Dem_DTCRequestType
Kind Type
Derived from uint8
Range DEM_FIRST_FAILED_DTC 0x01 first failed DTC requested
DEM_MOST_RECENT_FAILED_ 0x02 most recent failed DTC requested
DTC
DEM_FIRST_DET_ 0x03 first detected confirmed DTC
CONFIRMED_DTC requested
DEM_MOST_REC_DET_ 0x04 most recently detected confirmed
CONFIRMED_DTC DTC requested
Description This type is used to request a DTC with specific attributes.
Available via Dem.h
c(RS_Diag_04195)
8.2.1.15 Dem_DTCTranslationFormatType
[SWS_Dem_00936] d
Name Dem_DTCTranslationFormatType
Kind Type
Derived from uint8
Range DEM_DTC_TRANSLATION_ 0x00 ISO15031-6 DTC format/SAE
ISO15031_6 J2012-DA_DTCFormat_00 DTC
format
DEM_DTC_TRANSLATION_ 0x01 ISO14229-1 DTC format
ISO14229_1
DEM_DTC_TRANSLATION_ 0x02 SAEJ1939-73 DTC format
SAEJ1939_73
DEM_DTC_TRANSLATION_ 0x03 ISO11992-4 DTC format
ISO11992_4
DEM_DTC_TRANSLATION_ 0x04 SAE_J2012-DA_DTCFormat_04
J2012DA_FORMAT_04 DTC format
Description DTC translation format as defined in ISO14229-1.
Available via Dem.h
c(RS_Diag_04067)
8.2.1.16 Dem_DTCSeverityType
[SWS_Dem_00937] d
Name Dem_DTCSeverityType
Kind Bitfield
Derived from uint8
Kind Name Mask Description
Elements
bit DEM_SEVERITY_NO_ 0x00 No severity information available
SEVERITY
bit DEM_SEVERITY_WWHOBD_ 0x01 No class information
CLASS_NO_CLASS
bit DEM_SEVERITY_WWHOBD_ 0x02 WWH-OBD Class A
CLASS_A
bit DEM_SEVERITY_WWHOBD_ 0x04 WWH-OBD Class B1
CLASS_B1
bit DEM_SEVERITY_WWHOBD_ 0x08 WWH-OBD Class B2
CLASS_B2
bit DEM_SEVERITY_WWHOBD_ 0x10 WWH-OBD Class C
CLASS_C
bit DEM_SEVERITY_ 0x20 maintenance required
MAINTENANCE_ONLY
bit DEM_SEVERITY_CHECK_AT_ 0x40 check at next halt
NEXT_HALT
bit DEM_SEVERITY_CHECK_ 0x80 Check immediately
IMMEDIATELY
Description Type definition of DTCSeverityMask / DTCSeverity byte containing the DTC severity and DTC class
information according to ISO 14229-1 Annex D.3. The upper 3 bits (bit 7-5) are used to represent
the DTC severity information. The lower 5 bits (bit 4-0) are used to represent the DTC class
information.
Available via Dem.h
c()
8.2.1.17 Dem_RatioIdType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.20.
8.2.1.18 Dem_DTRControlType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.7.
8.2.1.19 Dem_InitMonitorReasonType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.11.
8.2.1.20 Dem_IumprDenomCondIdType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.12.
8.2.1.21 Dem_IumprDenomCondStatusType
This data type is used in both, C-APIs and service interfaces. It’s definition is available
in chapter 8.6.1.13.
8.2.1.22 Dem_J1939DcmDTCStatusFilterType
[SWS_Dem_00945] d
Name Dem_J1939DcmDTCStatusFilterType
Kind Type
Derived from uint8
Range DEM_J1939DTC_ACTIVE 0 active DTCs
DEM_J1939DTC_PREVIOUSLY_ 1 previously active DTCs
ACTIVE
DEM_J1939DTC_PENDING 2 pending DTCs
DEM_J1939DTC_PERMANENT 3 permanent DTCs
DEM_J1939DTC_CURRENTLY_ 4 currently active DTC
ACTIVE
Description The type to distinguish which DTCs should be filtered.
Available via Dem.h
c(RS_Diag_04112)
8.2.1.23 Dem_J1939DcmSetClearFilterType
[SWS_Dem_00946] d
Name Dem_J1939DcmSetClearFilterType
Kind Type
Derived from uint8
Range DEM_J1939DTC_CLEAR_ 0 active DTCs
ACTIVE
DEM_J1939DTC_CLEAR_ 1 previously active DTCs
PREVIOUSLY_ACTIVE
DEM_J1939DTC_CLEAR_ 2 active and previously active DTCs
ACTIVE_AND_PREVIOUSLY_
ACTIVE
5
4
Description The type to distinguish which DTCs gets cleared
Available via Dem.h
c(RS_Diag_04112)
8.2.1.24 Dem_J1939DcmSetFreezeFrameFilterType
[SWS_Dem_00947] d
Name Dem_J1939DcmSetFreezeFrameFilterType
Kind Type
Derived from uint8
Range DEM_J1939DCM_ 0 FreezeFrame (DM04)
FREEZEFRAME
DEM_J1939DCM_EXPANDED_ 1 ExpandedFreezeFrame (DM25)
FREEZEFRAME
DEM_J1939DCM_SPNS_IN_ 2 SPNs in ExpandedFreezeFrame
EXPANDED_FREEZEFRAME (DM24)
Description The type to distinguish which DTCs gets cleared
Available via Dem.h
c()
8.2.1.25 Dem_J1939DcmLampStatusType
[SWS_Dem_00948] d
Name Dem_J1939DcmLampStatusType
Kind Structure
Elements LampStatus
Type uint8
Comment lamp status
FlashLampStatus
Type uint8
Comment flash lamp status
Description For details refer SAE J1939-73
Available via Dem.h
c(RS_Diag_04110)
8.2.1.26 Dem_J1939DcmDiagnosticReadiness1Type
[SWS_Dem_00949] d
Name Dem_J1939DcmDiagnosticReadiness1Type
Kind Structure
ActiveTroubleCodes
Elements Type uint8
Comment Number of active DTCs
PreviouslyActiveDiagnosticTroubleCodes
Type uint8
Comment Number of previously active DTCs
OBDCompliance
Type uint8
Comment OBD Compliance
ContinuouslyMonitoredSystemsSupport_Status
Type uint8
Comment Identifies the continuously monitored system support and status
NonContinuouslyMonitoredSystemsSupport5
Type uint8
Comment Identifies the non-continuously monitored systems support (byte5)
NonContinuouslyMonitoredSystemsSupport6
Type uint8
Comment Identifies the non-continuously monitored systems support (byte6)
NonContinuouslyMonitoredSystemsStatus7
Type uint8
Comment Identifies the non-continuously monitored systems status (byte7)
NonContinuouslyMonitoredSystemsStatus8
Type uint8
Comment Identifies the non-continuously monitored systems status (byte8)
Description This structure represents all data elemets of the DM05 message. The encoding shall be done
acording SAE J1939-73
Available via Dem.h
c(RS_Diag_04113)
8.2.1.27 Dem_J1939DcmDiagnosticReadiness2Type
[SWS_Dem_00950] d
Name Dem_J1939DcmDiagnosticReadiness2Type
Kind Structure
DistanceTraveledWhileMILisActivated
Elements
Type uint16
Comment The kilometers accumulated while the MIL is activated
DistanceSinceDTCsCleared
Type uint16
Comment Distance accumulated since emission related DTCs were cleared
MinutesRunbyEngineWhileMILisActivated
Type uint16
Comment Accumulated count (in minutes) while the MIL is activated (on)
TimeSinceDiagnosticTroubleCodesCleared
Type uint16
Comment Engine running time accumulated since emission related DTCs were
cleared
Description This structure represents all data elemets of the DM21 message. The encoding shall be done
acording SAE J1939-73
Available via Dem.h
c(RS_Diag_04113)
8.2.1.28 Dem_J1939DcmDiagnosticReadiness3Type
[SWS_Dem_00951] d
Name Dem_J1939DcmDiagnosticReadiness3Type
Kind Structure
TimeSinceEngineStart
Type uint16
Comment Time since key-on that the engine has been running.
NumberofWarmupsSinceDTCsCleared
Type uint8
Comment Number of OBD warm-up cycles since all DTCs were cleared
ContinuouslyMonitoredSystemsEnableCompletedStatus
Type uint8
Comment Identifies the continuously monitored system enable/completed
support and status.
NonContinuouslyMonitoredSystemsEnableStatus5
Type uint8
Comment Enable status of non-continuous monitors this monitoring cycle (byte5)
NonContinuouslyMonitoredSystemsEnableStatus6
Type uint8
5
4
Comment Enable status of non-continuous monitors this monitoring cycle (byte6)
NonContinuouslyMonitoredSystems7
Type uint8
Comment Completion status of non-continuous monitors this monitoring cycle
(byte7)
NonContinuouslyMonitoredSystems8
Type uint8
Comment Completion status of non-continuous monitors this monitoring cycle
(byte8)
Description This structure represents all data elemets of the DM26 message. The encoding shall be done
acording SAE J1939-73
Available via Dem.h
c(RS_Diag_04113)
8.3.1 Dem_GetVersionInfo
[SWS_Dem_00177] d
Service Name Dem_GetVersionInfo
Syntax void Dem_GetVersionInfo (
Std_VersionInfoType* versioninfo
)
c(SRS_BSW_00402, SRS_BSW_00407)
8.3.2.1 Dem_PreInit
[SWS_Dem_00179] d
Service Name Dem_PreInit
Syntax void Dem_PreInit (
void
)
c()
8.3.2.2 Dem_Init
[SWS_Dem_00181] d
Service Name Dem_Init
Syntax void Dem_Init (
const Dem_ConfigType* ConfigPtr
)
c(SRS_BSW_00101)
8.3.2.3 Dem_Shutdown
[SWS_Dem_00182] d
c(SRS_BSW_00336)
8.3.3.1 Dem_ClearDTC
[SWS_Dem_00665] d
Service Name Dem_ClearDTC
Syntax Std_ReturnType Dem_ClearDTC (
uint8 ClientId
)
4
4
DEM_PENDING: Clearing the DTCs is currently in progress. The
caller shall call this function again at a later moment.
DEM_BUSY: A different Dem_SelectDTC dependent operation
according to SWS_Dem_01253 of this client is currently in
progress.
Description Clears single DTCs, as well as groups of DTCs.
Available via Dem.h
c()
8.3.3.2 Dem_ClearPrestoredFreezeFrame
[SWS_Dem_00193] d
Service Name Dem_ClearPrestoredFreezeFrame
Syntax Std_ReturnType Dem_ClearPrestoredFreezeFrame (
Dem_EventIdType EventId
)
c()
8.3.3.3 Dem_GetComponentFailed
[SWS_Dem_01115] d
Service Name Dem_GetComponentFailed
5
4
Syntax Std_ReturnType Dem_GetComponentFailed (
Dem_ComponentIdType ComponentId,
boolean* ComponentFailed
)
c()
8.3.3.4 Dem_GetDTCSelectionResult
[SWS_Dem_91023] d
Service Name Dem_GetDTCSelectionResult
Syntax Std_ReturnType Dem_GetDTCSelectionResult (
uint8 ClientId
)
c()
8.3.3.5 Dem_GetDTCSelectionResultForClearDTC
[SWS_Dem_91020] d
Service Name Dem_GetDTCSelectionResultForClearDTC
Syntax Std_ReturnType Dem_GetDTCSelectionResultForClearDTC (
uint8 ClientId
)
c()
8.3.3.6 Dem_GetEventUdsStatus
[SWS_Dem_91008] d
Service Name Dem_GetEventUdsStatus
Syntax Std_ReturnType Dem_GetEventUdsStatus (
Dem_EventIdType EventId,
Dem_UdsStatusByteType* UDSStatusByte
)
4
Parameters (out) UDSStatusByte UDS DTC status byte of the requested event (refer to chapter
"Status bit support"). If the return value of the function call is E_
NOT_OK, this parameter does not contain valid data.
Return value Std_ReturnType E_OK: get of event status was successful
E_NOT_OK: get of event status failed
Description Gets the current UDS status byte assigned to the DTC for the event
Available via Dem.h
c(RS_Diag_04067)
8.3.3.7 Dem_GetMonitorStatus
[SWS_Dem_91007] d
Service Name Dem_GetMonitorStatus
Syntax Std_ReturnType Dem_GetMonitorStatus (
Dem_EventIdType EventID,
Dem_MonitorStatusType* MonitorStatus
)
c()
8.3.3.8 Dem_GetDebouncingOfEvent
[SWS_Dem_00730] d
Service Name Dem_GetDebouncingOfEvent
5
4
Syntax Std_ReturnType Dem_GetDebouncingOfEvent (
Dem_EventIdType EventId,
Dem_DebouncingStateType* DebouncingState
)
c(RS_Diag_04068)
8.3.3.9 Dem_GetDTCOfEvent
[SWS_Dem_00198] d
Service Name Dem_GetDTCOfEvent
Syntax Std_ReturnType Dem_GetDTCOfEvent (
Dem_EventIdType EventId,
Dem_DTCFormatType DTCFormat,
uint32* DTCOfEvent
)
4
Available via Dem.h
c(RS_Diag_04201)
8.3.3.10 Dem_GetDTCSuppression
[SWS_Dem_91025] d
Service Name Dem_GetDTCSuppression
Syntax Std_ReturnType Dem_GetDTCSuppression (
uint8 ClientId,
boolean* SuppressionStatus
)
c()
8.3.3.11 Dem_GetEventAvailable
[SWS_Dem_91040] d
Service Name Dem_GetEventAvailable
Syntax Std_ReturnType Dem_GetEventAvailable (
Dem_EventIdType EventId,
boolean* AvailableStatus
)
4
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) EventId Identification of an event by assigned EventId.
Parameters (inout) None
Parameters (out) AvailableStatus TRUE if the event is available. FALSE if the event is not available.
Return value Std_ReturnType E_OK : Event availability has been obtained.
E_NOT_OK : Event availability cannot be obtained.
Description Get the Event’s availability.
Available via Dem.h
c()
8.3.3.12 Dem_GetFaultDetectionCounter
[SWS_Dem_00203] d
Service Name Dem_GetFaultDetectionCounter
Syntax Std_ReturnType Dem_GetFaultDetectionCounter (
Dem_EventIdType EventId,
sint8* FaultDetectionCounter
)
c()
8.3.3.13 Dem_GetIndicatorStatus
[SWS_Dem_00205] d
c()
8.3.3.14 Dem_GetEventFreezeFrameDataEx
[SWS_Dem_01191] d
Service Name Dem_GetEventFreezeFrameDataEx
Syntax Std_ReturnType Dem_GetEventFreezeFrameDataEx (
Dem_EventIdType EventId,
uint8 RecordNumber,
uint16 DataId,
uint8* DestBuffer,
uint16* BufSize
)
4
Parameters (out) DestBuffer This parameter contains a byte pointer that points to the buffer, to
which the freeze frame data record shall be written to. The format
is raw hexadecimal values and contains no header-information.
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation could not be performed
DEM_NO_SUCH_ELEMENT: The requested event data is not
currently stored (but the request was valid) OR The requested
record number is not supported by the event OR The requested
DID is not supported by the freeze frame.
DEM_BUFFER_TOO_SMALL: The provided buffer size is too
small.
Description Gets the data of a freeze frame by event.
Available via Dem.h
c()
8.3.3.15 Dem_GetEventExtendedDataRecordEx
[SWS_Dem_01190] d
Service Name Dem_GetEventExtendedDataRecordEx
Syntax Std_ReturnType Dem_GetEventExtendedDataRecordEx (
Dem_EventIdType EventId,
uint8 RecordNumber,
uint8* DestBuffer,
uint16* BufSize
)
c(RS_Diag_04205)
8.3.3.16 Dem_GetEventMemoryOverflow
[SWS_Dem_00559] d
Service Name Dem_GetEventMemoryOverflow
Syntax Std_ReturnType Dem_GetEventMemoryOverflow (
uint8 ClientId,
Dem_DTCOriginType DTCOrigin,
boolean* OverflowIndication
)
c(RS_Diag_04093)
8.3.3.17 Dem_GetNumberOfEventMemoryEntries
[SWS_Dem_00652] d
Service Name Dem_GetNumberOfEventMemoryEntries
Syntax Std_ReturnType Dem_GetNumberOfEventMemoryEntries (
uint8 ClientId,
Dem_DTCOriginType DTCOrigin,
uint8* NumberOfEventMemoryEntries
)
4
Parameters (out) NumberOfEventMemory Number of entries currently stored in the requested event
Entries memory.
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation failed
Description Returns the number of entries currently stored in the requested event memory.
Available via Dem.h
c(RS_Diag_04109)
8.3.3.18 Dem_ResetEventDebounceStatus
[SWS_Dem_00683] d
Service Name Dem_ResetEventDebounceStatus
Syntax Std_ReturnType Dem_ResetEventDebounceStatus (
Dem_EventIdType EventId,
Dem_DebounceResetStatusType DebounceResetStatus
)
c(RS_Diag_04105)
8.3.3.19 Dem_ResetEventStatus
[SWS_Dem_00185] d
c()
8.3.3.20 Dem_RestartOperationCycle
[SWS_Dem_00194] d
Service Name Dem_RestartOperationCycle
Syntax Std_ReturnType Dem_RestartOperationCycle (
uint8 OperationCycleId
)
c()
8.3.3.21 Dem_PrestoreFreezeFrame
[SWS_Dem_00188] d
Service Name Dem_PrestoreFreezeFrame
Syntax Std_ReturnType Dem_PrestoreFreezeFrame (
Dem_EventIdType EventId
)
c()
8.3.3.22 Dem_SelectDTC
[SWS_Dem_91016] d
Service Name Dem_SelectDTC
Syntax Std_ReturnType Dem_SelectDTC (
uint8 ClientId,
uint32 DTC,
Dem_DTCFormatType DTCFormat,
Dem_DTCOriginType DTCOrigin
)
4
Return value Std_ReturnType E_OK: DTC successfully selected.
DEM_BUSY: Another Dem_SelectDTC or Dem_SelectDTC
dependent operation of this client is currently in progress.
Description Selects a DTC or DTC group as target for further operations.
Available via Dem.h
c()
8.3.3.23 Dem_SetComponentAvailable
[SWS_Dem_01117] d
Service Name Dem_SetComponentAvailable
Syntax Std_ReturnType Dem_SetComponentAvailable (
Dem_ComponentIdType ComponentId,
boolean AvailableStatus
)
c()
8.3.3.24 Dem_SetDTCSuppression
[SWS_Dem_01047] d
Service Name Dem_SetDTCSuppression
Syntax Std_ReturnType Dem_SetDTCSuppression (
uint8 ClientId,
boolean SuppressionStatus
)
4
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) ClientId Unique client id, assigned to the instance of the calling module.
SuppressionStatus This parameter specifies whether the respective DTC shall be
disabled (TRUE) or enabled (FALSE).
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: The status of the DTC is correctly provided in the
DTCStatus parameter.
E_NOT_OK: No DTC selected.
DEM_WRONG_DTC: Selected DTC value in selected format
does not exist.
DEM_WRONG_DTCORIGIN: Selected DTCOrigin does not exist.
DEM_PENDING: The requested value is calculated
asynchronously and currently not available. The caller can retry
later.
DEM_BUSY: DEM_BUSY: A different Dem_SelectDTC
dependent operation according to SWS_Dem_01253 of this client
is currently in progress.
Description Set the suppression status of a specific DTC.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemSuppression
Support)} == DEM_DTC_SUPPRESSION)
Available via Dem.h
c()
8.3.3.25 Dem_SetEnableCondition
[SWS_Dem_00201] d
Service Name Dem_SetEnableCondition
Syntax Std_ReturnType Dem_SetEnableCondition (
uint8 EnableConditionID,
boolean ConditionFulfilled
)
4
Description Sets an enable condition.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral/DemEnable
Condition)} != NULL)
Available via Dem.h
c(RS_Diag_04192)
8.3.3.26 Dem_SetEventAvailable
[SWS_Dem_01080] d
Service Name Dem_SetEventAvailable
Syntax Std_ReturnType Dem_SetEventAvailable (
Dem_EventIdType EventId,
boolean AvailableStatus
)
c(RS_Diag_04126)
8.3.3.27 Dem_SetEventConfirmationThresholdCounter
[SWS_Dem_91004] d
Service Name Dem_SetEventConfirmationThresholdCounter
Syntax Std_ReturnType Dem_SetEventConfirmationThresholdCounter (
Dem_EventIdType EventId,
uint8 FailureCycleCounterThreshold
)
4
Sync/Async Asynchronous
Reentrancy Reentrant for different EventIds. Non reentrant for the same EventId.
Parameters (in) EventId Identification of an event by assigned EventId.
FailureCycleCounter Failure cycle counter threshold of event to be set.
Threshold
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: Change of threshold was successful.
E_NOT_OK: Threshold cannot be changed as DemEvent
ConfirmationThresholdCounterAdaptable is set to FALSE for this
event.
Description Set the failure confirmation threshold of an event.
Available via Dem.h
c()
8.3.3.28 Dem_SetEventStatus
[SWS_Dem_00183] d
Service Name Dem_SetEventStatus
Syntax Std_ReturnType Dem_SetEventStatus (
Dem_EventIdType EventId,
Dem_EventStatusType EventStatus
)
c()
8.3.3.29 Dem_SetEventStatusWithMonitorData
[SWS_Dem_91037] d
c()
8.3.3.30 Dem_SetStorageCondition
[SWS_Dem_00556] d
Service Name Dem_SetStorageCondition
Syntax Std_ReturnType Dem_SetStorageCondition (
uint8 StorageConditionID,
boolean ConditionFulfilled
)
4
Description Sets a storage condition.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral/DemStorage
Condition)} != NULL)
Available via Dem.h
c(RS_Diag_04219)
8.3.3.31 Dem_SetWIRStatus
[SWS_Dem_00839] d
Service Name Dem_SetWIRStatus
Syntax Std_ReturnType Dem_SetWIRStatus (
Dem_EventIdType EventId,
boolean WIRStatus
)
c()
8.3.3.32 Dem_SetEventFailedWithSyncFreezeFrame
[SWS_Dem_91041]{DRAFT} d
c()
8.3.4.1.1 Dem_GetTranslationType
[SWS_Dem_00230] d
Service Name Dem_GetTranslationType
Syntax Dem_DTCTranslationFormatType Dem_GetTranslationType (
uint8 ClientId
)
c()
8.3.4.1.2 Dem_GetDTCStatusAvailabilityMask
[SWS_Dem_00213] d
Service Name Dem_GetDTCStatusAvailabilityMask
Syntax Std_ReturnType Dem_GetDTCStatusAvailabilityMask (
uint8 ClientId,
Dem_UdsStatusByteType* DTCStatusMask,
Dem_DTCOriginType DTCOrigin
)
c(RS_Diag_04067)
8.3.4.1.3 Dem_GetStatusOfDTC
[SWS_Dem_00212] d
Service Name Dem_GetStatusOfDTC
Syntax Std_ReturnType Dem_GetStatusOfDTC (
uint8 ClientId,
uint8* DTCStatus
)
4
Return value Std_ReturnType E_OK: The status of the DTC is correctly provided in the
DTCStatus parameter.
E_NOT_OK: No DTC selected
DEM_WRONG_DTC: Selected DTC value in selected format
does not exist
DEM_WRONG_DTCORIGIN: Selected DTCOrigin does not exist
DEM_PENDING: Retrieving the DTC status is currently in
progress. The caller shall call this function again at a later
moment.
DEM_NO_SUCH_ELEMENT - Selected DTC does not have an
assigned DTC status.
DEM_BUSY: A different Dem_SelectDTC dependent operation
according to SWS_Dem_01253 of this client is currently in
progress.
Description Gets the status of a DTC. For large configurations and DTC-calibration, the interface behavior
can be asynchronous (splitting the DTC-search into segments). The DTCs of OBD Events
Suppression shall be reported as Dem_WRONG_DTC.
Available via Dem.h
c(RS_Diag_04067)
8.3.4.1.4 Dem_GetSeverityOfDTC
[SWS_Dem_00232] d
Service Name Dem_GetSeverityOfDTC
Syntax Std_ReturnType Dem_GetSeverityOfDTC (
Dem_DTCSeverityType* DTCSeverity,
uint8 ClientId
)
c(RS_Diag_04071)
8.3.4.1.5 Dem_GetFunctionalUnitOfDTC
[SWS_Dem_00594] d
Service Name Dem_GetFunctionalUnitOfDTC
Syntax Std_ReturnType Dem_GetFunctionalUnitOfDTC (
uint8 ClientId,
uint8* DTCFunctionalUnit
)
c(RS_Diag_04156)
8.3.4.1.6 Dem_SetDTCFilter
[SWS_Dem_00208] d
Service Name Dem_SetDTCFilter
Syntax Std_ReturnType Dem_SetDTCFilter (
uint8 ClientId,
uint8 DTCStatusMask,
Dem_DTCFormatType DTCFormat,
Dem_DTCOriginType DTCOrigin,
boolean FilterWithSeverity,
Dem_DTCSeverityType DTCSeverityMask,
boolean FilterForFaultDetectionCounter
)
4
Parameters (in) ClientId Unique client id, assigned to the instance of the calling module.
DTCStatusMask Status-byte mask for DTC status-byte filtering
Values: 0x00: Autosar-specific value to deactivate the status-byte
filtering (different meaning than in ISO 14229-1) to report all
supported DTCs (used for service 0x19 subfunctions 0x0A/0x15)
0x01..0xFF: Status-byte mask according to ISO 14229-1
DTCStatusMask (handed over by Dcm from service request
directly) to filter for DTCs with at least one status bit set matching
this status-byte mask
DTCFormat Defines the output-format of the requested DTC values for the
sub-sequent API calls. If passed value does not fit to
Configuration, the DET error DEM_E_WRONG_
CONFIGURATION shall be reported, e.g. if DTCFormat "DEM_
DTC_FORMAT_OBD" is passed, but OBD is not supported per
configuration.
DTCOrigin If the Dem supports more than one event memory this parameter
is used to select the source memory the DTCs shall be read from.
If passed value does not fit to Configuration, the DET error DEM_
E_WRONG_CONFIGURATION shall be reported, e.g. if
DTCOrigin "DEM_DTC_ORIGIN_MIRROR_MEMORY" is
passed, but no mirror memory is configured.
FilterWithSeverity This flag defines whether severity information (ref. to parameter
below) shall be used for filtering. This is to allow for coexistence
of DTCs with and without severity information.
DTCSeverityMask Contains the DTCSeverityMask according to ISO14229-1.
FilterForFaultDetection This flag defines whether the fault detection counter information
Counter shall be used for filtering. This is to allow for coexistence of DTCs
with and without fault detection counter information. If fault
detection counter information is filter criteria, only those DTCs
with a fault detection counter value between 1 and 0x7E shall be
reported. Remark: If the event does not use the debouncing
inside Dem, then the Dem must request this information via Get
FaultDetectionCounter.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_NOT_OK: Indicates a wrong DTCOrigin or DTCFormat
Description Sets the DTC Filter.
The server shall perform a bit-wise logical AND-ing operation between the parameter
DTCStatusMask and the current UDS status in the server. In addition to the DTCStatus
AvailabilityMask, the server shall return all DTCs for which the result of the AND-ing operation
is non-zero [i.e. (statusOfDTC & DTCStatusMask) != 0]. The server shall process only the DTC
Status bits that it is supporting. OBD Events Suppression shall be ignored for this computation.
If no DTCs within the server match the masking criteria specified in the clients request, no DTC
or status information shall be provided following the DTCStatusAvailabilityMask byte in the
positive response message
(((statusOfDTC & DTCStatusMask) != 0) && ((severity & DTCSeverityMask) != 0)) == TRUE
Available via Dem.h
c(RS_Diag_04205)
8.3.4.1.7 Dem_GetNumberOfFilteredDTC
[SWS_Dem_00214] d
c()
8.3.4.1.8 Dem_GetNextFilteredDTC
[SWS_Dem_00215] d
Service Name Dem_GetNextFilteredDTC
Syntax Std_ReturnType Dem_GetNextFilteredDTC (
uint8 ClientId,
uint32* DTC,
uint8* DTCStatus
)
4
Return value Std_ReturnType E_OK: Returned next filtered element
E_NOT_OK: No DTC filter set
DEM_NO_SUCH_ELEMENT: No further element matching the
filter criteria found
DEM_PENDING: The requested operation is currently in
progress. The caller shall call this function again at a later
moment. Note that according to SWS_Dem_00653 this return
value is not always allowed.
Description Gets the next filtered DTC matching the filter criteria. For UDS services, the interface has an
asynchronous behavior, because a large number of DTCs has to be processed.
Available via Dem.h
c()
8.3.4.1.9 Dem_GetNextFilteredDTCAndFDC
[SWS_Dem_00227] d
Service Name Dem_GetNextFilteredDTCAndFDC
Syntax Std_ReturnType Dem_GetNextFilteredDTCAndFDC (
uint8 ClientId,
uint32* DTC,
sint8* DTCFaultDetectionCounter
)
c()
8.3.4.1.10 Dem_GetNextFilteredDTCAndSeverity
[SWS_Dem_00281] d
Service Name Dem_GetNextFilteredDTCAndSeverity
Syntax Std_ReturnType Dem_GetNextFilteredDTCAndSeverity (
uint8 ClientId,
uint32* DTC,
uint8* DTCStatus,
Dem_DTCSeverityType* DTCSeverity,
uint8* DTCFunctionalUnit
)
c()
8.3.4.1.11 Dem_SetFreezeFrameRecordFilter
[SWS_Dem_00209] d
c()
8.3.4.1.12 Dem_GetNextFilteredRecord
[SWS_Dem_00224] d
Service Name Dem_GetNextFilteredRecord
Syntax Std_ReturnType Dem_GetNextFilteredRecord (
uint8 ClientId,
uint32* DTC,
uint8* RecordNumber
)
4
Return value Std_ReturnType Status of the operation to retrieve a DTC and its associated
snapshot record number from the Dem.
E_OK: Returned next filtered element
DEM_NO_SUCH_ELEMENT: No further element (matching the
filter criteria) found
DEM_PENDING: The requested value is calculated
asynchronously and currently not available. The caller can retry
later. Only used by asynchronous interfaces.
Description Gets the next freeze frame record number and its associated DTC stored in the event memory.
The interface has an asynchronous behavior, because NvRAM access might be required.
Available via Dem.h
c()
8.3.4.1.13 Dem_GetDTCByOccurrenceTime
[SWS_Dem_00218] d
Service Name Dem_GetDTCByOccurrenceTime
Syntax Std_ReturnType Dem_GetDTCByOccurrenceTime (
uint8 ClientId,
Dem_DTCRequestType DTCRequest,
uint32* DTC
)
c()
8.3.4.2.1 Dem_DisableDTCRecordUpdate
[SWS_Dem_00233] d
c(RS_Diag_04192)
8.3.4.2.2 Dem_EnableDTCRecordUpdate
[SWS_Dem_00234] d
Service Name Dem_EnableDTCRecordUpdate
Syntax Std_ReturnType Dem_EnableDTCRecordUpdate (
uint8 ClientId
)
4
Available via Dem.h
c()
8.3.4.2.3 Dem_GetSizeOfExtendedDataRecordSelection
[SWS_Dem_00240] d
Service Name Dem_GetSizeOfExtendedDataRecordSelection
Syntax Std_ReturnType Dem_GetSizeOfExtendedDataRecordSelection (
uint8 ClientId,
uint32* SizeOfExtendedDataRecord
)
c()
8.3.4.2.4 Dem_GetSizeOfFreezeFrameSelection
[SWS_Dem_00238] d
Service Name Dem_GetSizeOfFreezeFrameSelection
Syntax Std_ReturnType Dem_GetSizeOfFreezeFrameSelection (
uint8 ClientId,
uint32* SizeOfFreezeFrame
)
5
4
Service ID [hex] 0x1f
Sync/Async Asynchronous
Reentrancy Reentrant for different ClientIds, non reentrant for the same ClientId.
Parameters (in) ClientId Unique client id, assigned to the instance of the calling module.
Parameters (inout) None
Parameters (out) SizeOfFreezeFrame Number of bytes in the requested freeze frame record.
Return value Std_ReturnType E_OK: Size returned successfully
E_NOT_OK : selection function is not called.
DEM_PENDING: The requested value is calculated
asynchronously and currently not available. The caller can retry
later.
DEM_WRONG_DTC: DTC value not existing
DEM_WRONG_DTCORIGIN: Wrong DTC origin
DEM_NO_SUCH_ELEMENT: Record number is not supported
by configuration and therefore invalid
Description Gets the size of freeze frame data by DTC selected by the call of Dem_SelectFreezeFrame
Data.
Available via Dem.h
c()
8.3.4.2.5 Dem_GetNextExtendedDataRecord
[SWS_Dem_00239] d
Service Name Dem_GetNextExtendedDataRecord
Syntax Std_ReturnType Dem_GetNextExtendedDataRecord (
uint8 ClientId,
uint8* DestBuffer,
uint16* BufSize
)
4
4
later.
DEM_WRONG_DTC: DTC value not existing
DEM_WRONG_DTCORIGIN: Wrong DTC origin
DEM_NO_SUCH_ELEMENT: Found no (further) element
matching the filter criteria
Description Gets extended data record for the DTC selected by Dem_SelectExtendedDataRecord. The
function stores the data in the provided DestBuffer.
Available via Dem.h
c()
8.3.4.2.6 Dem_GetNextFreezeFrameData
[SWS_Dem_00236] d
Service Name Dem_GetNextFreezeFrameData
Syntax Std_ReturnType Dem_GetNextFreezeFrameData (
uint8 ClientId,
uint8* DestBuffer,
uint16* BufSize
)
c()
8.3.4.2.7 Dem_SelectExtendedDataRecord
[SWS_Dem_91017] d
Service Name Dem_SelectExtendedDataRecord
Syntax Std_ReturnType Dem_SelectExtendedDataRecord (
uint8 ClientId,
uint8 ExtendedDataNumber
)
c()
8.3.4.2.8 Dem_SelectFreezeFrameData
[SWS_Dem_91015] d
Service Name Dem_SelectFreezeFrameData
Syntax Std_ReturnType Dem_SelectFreezeFrameData (
uint8 ClientId,
uint8 RecordNumber
)
4
RecordNumber Unique identifier for a snapshot record as defined in ISO
14229-1. The value 0xFF is a placeholder referencing all
snapshot records of the addressed DTC. The value 0x00
indicates the DTC-specific WWH-OBD snapshot record.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: Freeze frame data successfully selected.
DEM_WRONG_DTC: Selected DTC value in selected format
does not exist.
DEM_WRONG_DTCORIGIN: Selected DTCOrigin does not exist.
DEM_PENDING: Selecting the freeze frame is currently in
progress. The caller shall call this function again at a later
moment.
DEM_BUSY: A different Dem_SelectDTC dependent operation
according to SWS_Dem_01253 of this client is currently in
progress.
Description Sets the filter to be used by Dem_GetNextFreezeFrameData and Dem_GetSizeOfFreezeFrame
Selection.
Available via Dem.h
c()
8.3.4.2.9 Dem_GetNumberOfFreezeFrameRecords
[SWS_Dem_91191] d
Service Name Dem_GetNumberOfFreezeFrameRecords
Syntax Std_ReturnType Dem_GetNumberOfFreezeFrameRecords (
uint8 ClientId,
uint16* NumberOfFilteredRecords
)
c()
8.3.4.3.1 Dem_DisableDTCSetting
[SWS_Dem_00242] d
Service Name Dem_DisableDTCSetting
Syntax Std_ReturnType Dem_DisableDTCSetting (
uint8 ClientId
)
c(RS_Diag_04150)
8.3.4.3.2 Dem_EnableDTCSetting
[SWS_Dem_00243] d
Service Name Dem_EnableDTCSetting
Syntax Std_ReturnType Dem_EnableDTCSetting (
uint8 ClientId
)
8.3.5.1 Dem_DcmGetInfoTypeValue08
[SWS_Dem_00316] d
Service Name Dem_DcmGetInfoTypeValue08
Syntax Std_ReturnType Dem_DcmGetInfoTypeValue08 (
Dcm_OpStatusType OpStatus,
uint8* Iumprdata08,
uint8* Iumprdata08BufferSize
)
c()
8.3.5.2 Dem_DcmGetInfoTypeValue0B
[SWS_Dem_00317] d
Service Name Dem_DcmGetInfoTypeValue0B
Syntax Std_ReturnType Dem_DcmGetInfoTypeValue0B (
Dcm_OpStatusType OpStatus,
uint8* Iumprdata0B,
uint8* Iumprdata0BBufferSize
)
4
Parameters (inout) Iumprdata0BBufferSize The maximum number of data bytes that can be written to the
Iumprdata0B Buffer.
Parameters (out) Iumprdata0B Buffer containing the number of data elements (as defined in
ISO-15031-5) and contents of InfoType $0B. The buffer is
provided by the Dcm.
Return value Std_ReturnType Always E_OK is returned.
Description Service is used for requesting IUMPR data according to InfoType $0B. This interface is derived
from the prototype <Module>_GetInfotypeValueData() defined by the Dcm. Therefore Dcm_Op
StatusType and Std_ReturnType are contained. API is needed in OBD-relevant ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem_Dcm.h
c()
8.3.5.3 Dem_DcmReadDataOfPID01
[SWS_Dem_00318] d
Service Name Dem_DcmReadDataOfPID01
Syntax Std_ReturnType Dem_DcmReadDataOfPID01 (
uint8* PID01value
)
c()
8.3.5.4 Dem_DcmReadDataOfPID1C
[SWS_Dem_00325] d
c()
8.3.5.5 Dem_DcmReadDataOfPID21
[SWS_Dem_00319] d
Service Name Dem_DcmReadDataOfPID21
Syntax Std_ReturnType Dem_DcmReadDataOfPID21 (
uint8* PID21value
)
c()
8.3.5.6 Dem_DcmReadDataOfPID30
[SWS_Dem_00320] d
Service Name Dem_DcmReadDataOfPID30
Syntax Std_ReturnType Dem_DcmReadDataOfPID30 (
uint8* PID30value
)
c()
8.3.5.7 Dem_DcmReadDataOfPID31
[SWS_Dem_00321] d
Service Name Dem_DcmReadDataOfPID31
Syntax Std_ReturnType Dem_DcmReadDataOfPID31 (
uint8* PID31value
)
4
Description Service to report the value of PID $31 computed by the Dem. API is needed in OBD-relevant
ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
== DEM_OBD_MASTER_ECU)
Available via Dem_Dcm.h
c()
8.3.5.8 Dem_DcmReadDataOfPID41
[SWS_Dem_00322] d
Service Name Dem_DcmReadDataOfPID41
Syntax Std_ReturnType Dem_DcmReadDataOfPID41 (
uint8* PID41value
)
c()
8.3.5.9 Dem_DcmReadDataOfPID4D
[SWS_Dem_00323] d
Service Name Dem_DcmReadDataOfPID4D
Syntax Std_ReturnType Dem_DcmReadDataOfPID4D (
uint8* PID4Dvalue
)
5
4
Service ID [hex] 0x68
Sync/Async Synchronous
Reentrancy Non Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) PID4Dvalue Buffer containing the contents of PID $4D computed by the Dem.
The buffer is provided by the Dcm with the appropriate size, i.e.
during configuration, the Dcm identifies the required size from the
largest PID in order to configure a PIDBuffer.
Return value Std_ReturnType Always E_OK is returned, as E_NOT_OK will never appear.
Description Service to report the value of PID $4D computed by the Dem. API is needed in OBD-relevant
ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
== DEM_OBD_MASTER_ECU)
Available via Dem_Dcm.h
c()
8.3.5.10 Dem_DcmReadDataOfPID4E
[SWS_Dem_00324] d
Service Name Dem_DcmReadDataOfPID4E
Syntax Std_ReturnType Dem_DcmReadDataOfPID4E (
uint8* PID4Evalue
)
c()
8.3.5.11 Dem_DcmReadDataOfPID91
[SWS_Dem_01187] d
Service Name Dem_DcmReadDataOfPID91
Syntax Std_ReturnType Dem_DcmReadDataOfPID91 (
uint8* PID91value
)
c()
8.3.5.12 Dem_DcmReadDataOfOBDFreezeFrame
[SWS_Dem_00327] d
Service Name Dem_DcmReadDataOfOBDFreezeFrame
Syntax Std_ReturnType Dem_DcmReadDataOfOBDFreezeFrame (
uint8 PID,
uint8 DataElementIndexOfPID,
uint8* DestBuffer,
uint16* BufSize
)
4
Parameters (inout) DestBuffer This parameter contains a byte pointer that points to the buffer, to
which the data element of the PID shall be written to. The format
is raw hexadecimal values and contains no header-information.
BufSize When the function is called this parameter contains the maximum
number of data bytes that can be written to the buffer. The
function returns the actual number of written data bytes in this
parameter.
Parameters (out) None
Return value Std_ReturnType E_OK Freeze frame data was successfully reported
E_NOT_OK Freeze frame data was not successfully reported
Description Gets data element per PID and index of the most important freeze frame being selected for the
output of service $02. The function stores the data in the provided DestBuffer. API is needed in
OBD-relevant ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem_Dcm.h
c()
8.3.5.13 Dem_DcmGetDTCOfOBDFreezeFrame
[SWS_Dem_00624] d
Service Name Dem_DcmGetDTCOfOBDFreezeFrame
Syntax Std_ReturnType Dem_DcmGetDTCOfOBDFreezeFrame (
uint8 FrameNumber,
uint32* DTC,
Dem_DTCFormatType DTCFormat
)
c()
8.3.5.14 Dem_DcmGetAvailableOBDMIDs
[SWS_Dem_00766] d
Service Name Dem_DcmGetAvailableOBDMIDs
Syntax Std_ReturnType Dem_DcmGetAvailableOBDMIDs (
uint8 Obdmid,
uint32* Obdmidvalue
)
c()
8.3.5.15 Dem_DcmGetNumTIDsOfOBDMID
[SWS_Dem_00767] d
Service Name Dem_DcmGetNumTIDsOfOBDMID
Syntax Std_ReturnType Dem_DcmGetNumTIDsOfOBDMID (
uint8 Obdmid,
uint8* numberOfTIDs
)
4
Description Gets the number of TIDs per (functional) OBDMID. This can be used by the DCM to iteratively
request for OBD/TID result data within a loop from 0....numberOfTIDs-1 API is needed in
OBD-relevant ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem_Dcm.h
c()
8.3.5.16 Dem_DcmGetDTRData
[SWS_Dem_00768] d
Service Name Dem_DcmGetDTRData
Syntax Std_ReturnType Dem_DcmGetDTRData (
uint8 Obdmid,
uint8 TIDindex,
uint8* TIDvalue,
uint8* UaSID,
uint16* Testvalue,
uint16* Lowlimvalue,
uint16* Upplimvalue
)
c()
8.3.6.1.1 Dem_J1939DcmSetDTCFilter
[SWS_Dem_00970] d
Service Name Dem_J1939DcmSetDTCFilter
Syntax Std_ReturnType Dem_J1939DcmSetDTCFilter (
Dem_J1939DcmDTCStatusFilterType DTCStatusFilter,
Dem_DTCKindType DTCKind,
Dem_DTCOriginType DTCOrigin,
uint8 ClientId,
Dem_J1939DcmLampStatusType* LampStatus
)
c(RS_Diag_04112)
8.3.6.1.2 Dem_J1939DcmGetNumberOfFilteredDTC
[SWS_Dem_00972] d
c()
8.3.6.1.3 Dem_J1939DcmGetNextFilteredDTC
[SWS_Dem_00973] d
Service Name Dem_J1939DcmGetNextFilteredDTC
Syntax Std_ReturnType Dem_J1939DcmGetNextFilteredDTC (
uint32* J1939DTC,
uint8* OccurenceCounter,
uint8 ClientId
)
4
Description Gets the next filtered J1939 DTC.
Available via Dem_J1939Dcm.h
c()
8.3.6.1.4 Dem_J1939DcmFirstDTCwithLampStatus
[SWS_Dem_00974] d
Service Name Dem_J1939DcmFirstDTCwithLampStatus
Syntax void Dem_J1939DcmFirstDTCwithLampStatus (
uint8 ClientId
)
c(RS_Diag_04110)
8.3.6.1.5 Dem_J1939DcmGetNextDTCwithLampStatus
[SWS_Dem_00975] d
Service Name Dem_J1939DcmGetNextDTCwithLampStatus
Syntax Std_ReturnType Dem_J1939DcmGetNextDTCwithLampStatus (
Dem_J1939DcmLampStatusType* LampStatus,
uint32* J1939DTC,
uint8* OccurenceCounter,
uint8 ClientId
)
4
Parameters (out) LampStatus Receives the lamp status returned by this function. If the return
value of the function is other than DEM_FILTERED_OK this
parameter does not contain valid data.
J1939DTC Receives the J1939DTC value. If the return value of the function
is other than DEM_FILTERED_OK this parameter does not
contain valid data.
OccurenceCounter This parameter receives the corresponding occurrence counter. If
the return value of the function call is other than DEM_
FILTERED_OK this parameter does not contain valid data.
Return value Std_ReturnType E_OK: Operation successful
DEM_NO_SUCH_ELEMENT: The requested element is not
available
DEM_PENDING: Operation successful and result pending.
DEM_BUFFER_TOO_SMALL: The provided buffer is too small
Description Gets the next filtered J1939 DTC for DM31 including current LampStatus.
Available via Dem_J1939Dcm.h
c()
8.3.6.2.1 Dem_J1939DcmClearDTC
[SWS_Dem_00976] d
Service Name Dem_J1939DcmClearDTC
Syntax Std_ReturnType Dem_J1939DcmClearDTC (
Dem_J1939DcmSetClearFilterType DTCTypeFilter,
Dem_DTCOriginType DTCOrigin,
uint8 ClientId
)
4
4
again at a later moment.
DEM_CLEAR_MEMORY_ERROR: An error occurred during
erasing a memory location (e.g. if DemClearDTCBehavior is set
to DEM_CLRRESP_NON-VOLATILE_FINISH and erasing
of non-volatile-block failed).
DEM_PENDING: Clearing the DTCs is currently in progress. The
caller shall call this function again at a later moment.
Description Clears the status of all event(s) related to the specified DTC(s), as well as all associated event
memory entries for these event(s).
Available via Dem_J1939Dcm.h
c(RS_Diag_04112)
8.3.6.2.2 Dem_J1939DcmSetFreezeFrameFilter
[SWS_Dem_00977] d
Service Name Dem_J1939DcmSetFreezeFrameFilter
Syntax Std_ReturnType Dem_J1939DcmSetFreezeFrameFilter (
Dem_J1939DcmSetFreezeFrameFilterType FreezeFrameKind,
uint8 ClientId
)
c(RS_Diag_04112)
8.3.6.2.3 Dem_J1939DcmGetNextFreezeFrame
[SWS_Dem_00978] d
c(RS_Diag_04112)
8.3.6.2.4 Dem_J1939DcmGetNextSPNInFreezeFrame
[SWS_Dem_00979] d
Service Name Dem_J1939DcmGetNextSPNInFreezeFrame
Syntax Std_ReturnType Dem_J1939DcmGetNextSPNInFreezeFrame (
uint32* SPNSupported,
uint8* SPNDataLength,
uint8 ClientId
)
4
Parameters (inout) None
Parameters (out) SPNSupported This parameter contains the next SPN in the ExpandedFreeze
Frame
SPNDataLength This parameter contains the corresponding dataLength of the
SPN
Return value Std_ReturnType E_OK: Operation successful
DEM_NO_SUCH_ELEMENT: The requested element is not
available
DEM_PENDING: Operation successful and result pending.
DEM_BUFFER_TOO_SMALL: The provided buffer is too small
Description Gets next SPN.
Available via Dem_J1939Dcm.h
c(RS_Diag_04112)
8.3.6.3 Reporting
8.3.6.3.1 Dem_J1939DcmSetRatioFilter
[SWS_Dem_00980] d
Service Name Dem_J1939DcmSetRatioFilter
Syntax Std_ReturnType Dem_J1939DcmSetRatioFilter (
uint16* IgnitionCycleCounter,
uint16* OBDMonitoringConditionsEncountered,
uint8 ClientId
)
c()
8.3.6.3.2 Dem_J1939DcmGetNextFilteredRatio
[SWS_Dem_00981] d
c(RS_Diag_04112)
8.3.6.3.3 Dem_J1939DcmReadDiagnosticReadiness1
[SWS_Dem_00982] d
Service Name Dem_J1939DcmReadDiagnosticReadiness1
Syntax Std_ReturnType Dem_J1939DcmReadDiagnosticReadiness1 (
Dem_J1939DcmDiagnosticReadiness1Type* DataValue,
uint8 ClientId
)
4
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation failed
Description Service to report the value of Diagnostic Readiness 1 (DM05) computed by the Dem.
Available via Dem_J1939Dcm.h
c(RS_Diag_04113)
8.3.6.3.4 Dem_J1939DcmReadDiagnosticReadiness2
[SWS_Dem_00983] d
Service Name Dem_J1939DcmReadDiagnosticReadiness2
Syntax Std_ReturnType Dem_J1939DcmReadDiagnosticReadiness2 (
Dem_J1939DcmDiagnosticReadiness2Type* DataValue,
uint8 ClientId
)
c(RS_Diag_04113)
8.3.6.3.5 Dem_J1939DcmReadDiagnosticReadiness3
[SWS_Dem_00770] d
Service Name Dem_J1939DcmReadDiagnosticReadiness3
Syntax Std_ReturnType Dem_J1939DcmReadDiagnosticReadiness3 (
Dem_J1939DcmDiagnosticReadiness3Type* DataValue,
uint8 ClientId
)
4
Reentrancy Re-entrant for different ClientIDs, Non re-entrant for same ClientId.
Parameters (in) ClientId ClientId to address the J1939 event memory
Parameters (inout) None
Parameters (out) DataValue Buffer of 8 bytes containing the contents of Diagnostic Readiness
3 (DM26) computed by the Dem.
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation failed
Description Service to report the value of Diagnostic Readiness 3 (DM26) computed by the Dem.
Available via Dem_J1939Dcm.h
c(RS_Diag_04113)
8.3.7.1 Dem_SetEventDisabled
[SWS_Dem_00312] d
Service Name Dem_SetEventDisabled
Syntax Std_ReturnType Dem_SetEventDisabled (
Dem_EventIdType EventId
)
c()
8.3.7.2 Dem_RepIUMPRFaultDetect
[SWS_Dem_00313] d
c()
8.3.7.3 Dem_SetIUMPRDenCondition
[SWS_Dem_00733] d
Service Name Dem_SetIUMPRDenCondition
Syntax Std_ReturnType Dem_SetIUMPRDenCondition (
Dem_IumprDenomCondIdType ConditionId,
Dem_IumprDenomCondStatusType ConditionStatus
)
4
Available via Dem.h
c(RS_Diag_04192)
8.3.7.4 Dem_GetIUMPRDenCondition
[SWS_Dem_00734] d
Service Name Dem_GetIUMPRDenCondition
Syntax Std_ReturnType Dem_GetIUMPRDenCondition (
Dem_IumprDenomCondIdType ConditionId,
Dem_IumprDenomCondStatusType* ConditionStatus
)
c()
8.3.7.5 Dem_RepIUMPRDenRelease
[SWS_Dem_00315] d
Service Name Dem_RepIUMPRDenRelease
Syntax Std_ReturnType Dem_RepIUMPRDenRelease (
Dem_RatioIdType RatioID
)
4
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) RatioID Ratio Identifier reporting that specific denominator is released (for
physical reasons - e.g. temperature conditions or minimum
activity)
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK report of IUMPR denominator status was successfully
reported
E_NOK report of IUMPR denominator status was not
successfully reported
Description Service is used to release a denominator of a specific monitor. API is needed in OBD-relevant
ECUs only
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem.h
c()
8.3.7.6 Dem_SetPtoStatus
[SWS_Dem_00627] d
Service Name Dem_SetPtoStatus
Syntax Std_ReturnType Dem_SetPtoStatus (
boolean PtoStatus
)
c()
8.3.7.7 Dem_ReadDataOfPID01
[SWS_Dem_01167] d
c()
8.3.7.8 Dem_GetDataOfPID21
[SWS_Dem_01093] d
Service Name Dem_GetDataOfPID21
Syntax Std_ReturnType Dem_GetDataOfPID21 (
uint8* PID21value
)
c()
8.3.7.9 Dem_SetDataOfPID21
[SWS_Dem_00735] d
c()
8.3.7.10 Dem_SetDataOfPID31
[SWS_Dem_00736] d
Service Name Dem_SetDataOfPID31
Syntax Std_ReturnType Dem_SetDataOfPID31 (
const uint8* PID31value
)
c()
8.3.7.11 Dem_SetDataOfPID4D
[SWS_Dem_00737] d
Service Name Dem_SetDataOfPID4D
Syntax Std_ReturnType Dem_SetDataOfPID4D (
const uint8* PID4Dvalue
)
c()
8.3.7.12 Dem_SetDataOfPID4E
[SWS_Dem_00738] d
Service Name Dem_SetDataOfPID4E
Syntax Std_ReturnType Dem_SetDataOfPID4E (
const uint8* PID4Evalue
)
4
Description Service to set the value of PID $4E in the Dem by a software component. API is needed in
OBD-relevant ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem.h
c()
8.3.7.13 Dem_GetCycleQualified
[SWS_Dem_00740] d
Service Name Dem_GetCycleQualified
Syntax Std_ReturnType Dem_GetCycleQualified (
uint8 OperationCycleId,
boolean* isQualified
)
c()
8.3.7.14 Dem_SetCycleQualified
[SWS_Dem_91001] d
Service Name Dem_SetCycleQualified
Syntax Std_ReturnType Dem_SetCycleQualified (
uint8 OperationCycleId
)
4
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) OperationCycleId Identification of a configured DemOperationCycle
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType Always E_OK is returned.
Description Sets a dependent operation cycle as qualified, so it may be processed along with its leading
cycle.
Available via Dem.h
c()
8.3.7.15 Dem_GetDTCSeverityAvailabilityMask
[SWS_Dem_01168] d
Service Name Dem_GetDTCSeverityAvailabilityMask
Syntax Std_ReturnType Dem_GetDTCSeverityAvailabilityMask (
uint8 ClientId,
Dem_DTCSeverityType* DTCSeverityMask
)
c()
8.3.7.16 Dem_GetB1Counter
[SWS_Dem_01169] d
c()
8.3.7.17 Dem_SetDTR
[SWS_Dem_00765] d
Service Name Dem_SetDTR
Syntax Std_ReturnType Dem_SetDTR (
uint16 DTRId,
sint32 TestResult,
sint32 LowerLimit,
sint32 UpperLimit,
Dem_DTRControlType Ctrlval
)
4
Description Reports a DTR result with lower and upper limit. The internal eventstatus serves as master
whether the DTR values are forwarded or ignored, also taking the DTRUpdateKind into
account. The EventId that is related to the DTR is assigned per configuration (and derived from
ServiceNeeds). Processing takes enable/storage conditions into account. API is needed in
OBD-relevant ECUs only.
API Availability: This API will be available only if ({ecuc(Dem/DemGeneral.DemOBDSupport)}
!= DEM_OBD_NO_OBD_SUPPORT)
Available via Dem.h
c()
This chapter defines all interfaces, which are required to fulfill the core functionality of
the Dem module.
API function Description
[] d
API Function Header File Description
There are no mandatory interfaces.
c()
This chapter defines all interfaces, which are required to fulfill an optional functionality
of the Dem module.
[SWS_Dem_00255] d
API Function Header File Description
Dcm_DemTriggerOnDTCStatus Dcm_Dem.h Triggers on changes of the UDS status byte. Allows
to trigger on ROE Event for subservice On
DTCStatusChanged.
Det_ReportError Det.h Service to report development errors.
5
4
API Function Header File Description
FiM_DemInit FiM_Dem.h This service re-initializes the FIM.
FiM_DemTriggerOnComponentStatus FiM_Dem.h Triggers on changes of the component failed status.
FiM_DemTriggerOnMonitorStatus FiM_Dem.h This service is provided to be called by the Dem in
order to inform the Fim about monitor status
changes.
J1939Dcm_DemTriggerOnDTCStatus J1939Dcm_Dem.h Trigger for DM01 message that a UDS status
change has happened.
NvM_GetErrorStatus NvM.h Service to read the block dependent error/status
information.
NvM_ReadBlock NvM.h Service to copy the data of the NV block to its
corresponding RAM block.
NvM_SetRamBlockStatus NvM.h Service for setting the RAM block status of a
permanent RAM block or the status of the explicit
synchronization of a NVRAM block.
NvM_WriteBlock NvM.h Service to copy the data of the RAM block to its
corresponding NV block.
c(SRS_BSW_00171)
Note: Based on implementation strategy FiM_DemInit can be used (refer also to chap-
ter chapter 7.11.3).
Note: Based on implementation strategy either NvM_[Read|Write]Block or
NvM_SetRamBlockStatus can be omitted, or the NvM usage is deactivated by con-
figuration completely (refer also to chapter chapter 7.11.5).
In this chapter, all interfaces are listed where the target function could be configured.
The target function is usually a callback function. The names of this kind of interfaces
are not fixed because they are configurable.
«module» <Module>_DemGeneralTriggerOnEventUdsStatus
Dem <Module>_DemGeneralTriggerOnMonitorStatus
<Module>_DemTriggerOnDTCStatus
<Module>_DemTriggerOnEventData
<Module>_DemTriggerOnEventUdsStatus
<Module>_DemTriggerOnMonitorStatus
Dem_CallbackClearEventAllowed
Dem_CallbackGetFaultDetectionCounter
Dem_CallbackInitMonitorForEvent
Dem_CallbackReadDataElement
Dem_ComponentFailedCallbackFnc
«interface»
Dem_Configurable
::<Module>_DemTriggerOnDTCStatus
«configurable»
<Module>_DemTriggerOnDTCStatus(return, DTC, DTCStatusOld, DTCStatusNew)
::<Module>_DemGeneralTriggerOnMonitorStatus
<Module>_DemGeneralTriggerOnMonitorStatus(return, EventId)
::<Module>_DemTriggerOnEventUdsStatus
<Module>_DemTriggerOnEventUdsStatus(return, EventStatusByteOld, EventStatusByteNew)
::<Module>_DemTriggerOnMonitorStatus
<Module>_DemTriggerOnMonitorStatus(return)
::Dem_CallbackReadDataElement
<Module>_DemRead<DataElement>(Buffer, return, monitorData0)
::<Module>_DemTriggerOnEventData
<Module>_DemTriggerOnEventData(return, EventId)
::Dem_ComponentFailedCallbackFnc
<Module>_DemTriggerOnComponentStatus(return, ComponentId)
::Dem_CallbackClearEventAllowed
<Module>_DemClearEventAllowed<ForCondition>(return, Allowed)
::Dem_CallbackGetFaultDetectionCounter
<Module>_DemGetFaultDetectionCounter<ForEvent>(return, FaultDetectionCounter)
::<Module>_DemGeneralTriggerOnEventUdsStatus
<Module>_DemGeneralTriggerOnEventUdsStatus(return, EventId, EventStatusByteOld, EventStatusByteNew)
::Dem_CallbackInitMonitorForEvent
<Module>_DemInitMonitorFor<EventName>(return, InitMonitorReason)
«realize» «realize»
«module» «module»
[SWC] [BSW]
The callback interface from Dem to SW-Components is realized via RTE port inter-
faces. The following callback descriptions address the c-callbacks of other BSW mod-
ules.
8.4.3.1.1 InitMonitorForEvent
[SWS_Dem_00256] d
Service Name <Module>_DemInitMonitorFor<EventName>
Syntax Std_ReturnType <Module>_DemInitMonitorFor<EventName> (
Dem_InitMonitorReasonType InitMonitorReason
)
Sync/Async Synchronous
5
4
Reentrancy Reentrant
Parameters (in) InitMonitorReason Specific (re-)initialization reason evaluated from the monitor to
identify the initialization kind to be performed.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType Return value unused - only for compatibility with according RTE
operation.
Description Inits the diagnostic monitor of a specific event. There is one separate callback per event (if
configured), if no port interface is provided by the Dem.
Available via Dem_Externals.h
c(SRS_BSW_00310, SRS_BSW_00101)
8.4.3.1.2 DemTriggerOnComponentStatus
[SWS_Dem_01116] d
Service Name <Module>_DemTriggerOnComponentStatus
Syntax Std_ReturnType <Module>_DemTriggerOnComponentStatus (
Dem_ComponentIdType ComponentId
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) ComponentId Identification of a DemComponent.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType Return value unused - only for compatibility with according RTE
operation.
Description Triggers on changes of the DemComponent failed status.
Available via Dem_Externals.h
c()
8.4.3.2 ClearDtcNotification
[SWS_Dem_91002] d
Service Name <Module>_ClearDtcNotification
5
4
Syntax Std_ReturnType <Module>_ClearDtcNotification (
uint32 DTC,
Dem_DTCFormatType DTCFormat,
Dem_DTCOriginType DTCOrigin
)
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) DTC DTC or group of DTC that is cleared.
DTCFormat Format of the DTC value.
DTCOrigin Event memory which is selected by the current clear operation.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK is always returned
Description Called by the Dem when performing a clear DTC operation.
Available via Dem_Externals.h
c()
8.4.3.3 DemGeneralTriggerOnMonitorStatus
[SWS_Dem_91009] d
Service Name <Module>_DemGeneralTriggerOnMonitorStatus
Syntax Std_ReturnType <Module>_DemGeneralTriggerOnMonitorStatus (
Dem_EventIdType EventId
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) EventId Identification of an event by assigned EventId.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE
Description Triggers on changes of the monitor status. Called synchronously in context of event status
reporting.
Available via Dem_Externals.h
c()
8.4.3.4 DemGeneralTriggerOnEventUdsStatus
[SWS_Dem_00259] d
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) EventId Identification of an event by assigned EventId.
EventStatusByteOld UDS DTC status byte of event before change (refer to chapter
"Status bit support").
EventStatusByteNew UDS DTC status byte of event after change (refer to chapter
"Status bit support").
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE.
Description Triggers on changes of the UDS DTC status byte.
Available via Dem_Externals.h
c(RS_Diag_04148)
8.4.3.5 DemTriggerOnEventUdsStatus
[SWS_Dem_91006] d
Service Name <Module>_DemTriggerOnEventUdsStatus
Syntax Std_ReturnType <Module>_DemTriggerOnEventUdsStatus (
Dem_UdsStatusByteType EventStatusByteOld,
Dem_UdsStatusByteType EventStatusByteNew
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) EventStatusByteOld UDS DTC status byte of event before change (refer to chapter
"Status bit support").
EventStatusByteNew UDS DTC status byte of event after change (refer to chapter
"Status bit support").
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE
Description Triggers on changes of the UDS DTC status byte.
Available via Dem_Externals.h
c()
8.4.3.6 DemTriggerOnDTCStatus
[SWS_Dem_00260] d
Service Name <Module>_DemTriggerOnDTCStatus
Syntax Std_ReturnType <Module>_DemTriggerOnDTCStatus (
uint32 DTC,
Dem_UdsStatusByteType DTCStatusOld,
Dem_UdsStatusByteType DTCStatusNew
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) DTC Diagnostic Trouble Code in UDS format.
DTCStatusOld UDS status before change
DTCStatusNew UDS status after change
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE.
Description Triggers on changes of the UDS status byte.
Available via Dem_Externals.h
c()
8.4.3.7 DemTriggerOnMonitorStatus
[SWS_Dem_91010] d
Service Name <Module>_DemTriggerOnMonitorStatus
Syntax Std_ReturnType <Module>_DemTriggerOnMonitorStatus (
void
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE
Description Triggers on changes of the monitor status. Called synchronously in context of event status
reporting.
Available via Dem_Externals.h
c()
8.4.3.8 EventDataChanged
[SWS_Dem_00562] d
Service Name <Module>_DemTriggerOnEventData
Syntax Std_ReturnType <Module>_DemTriggerOnEventData (
Dem_EventIdType EventId
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) EventId Identification of an event by assigned EventId.
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this function always returns E_OK for compatibility
reasons with RTE.
Description Triggers on changes of the event related data in the event memory.
Available via Dem_Externals.h
c(RS_Diag_04160)
8.4.3.9 ClearEventAllowed
[SWS_Dem_00563] d
Service Name <Module>_DemClearEventAllowed<ForCondition>
Syntax Std_ReturnType <Module>_DemClearEventAllowed<ForCondition> (
boolean* Allowed
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) Allowed True - clearance of event is allowed False - clearance of event is
not allowed
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation failed
Description Triggers on DTC-deletion, which is not allowed if the out-parameter returns False. There is one
separate callback per condition, which can be assigned to one or several events, if no port
interface is provided by the Dem. Parameter "Allowed" will be unchanged in case E_NOT_OK
is returned.
Available via Dem_Externals.h
c()
8.4.3.10 ReadDataElement
[SWS_Dem_00564] d
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) monitorData0 MonitorData that was provided by Dem_SetEventStatusWith
MonitorData
Parameters (inout) None
Parameters (out) Buffer Buffer containing the value of the data element
Return value Std_ReturnType E_OK: Operation was successful
E_NOT_OK: Operation failed
Description Requests the current value of the data element. There is one separate callback per data
element, if no port interface is provided by the Dem.
Available via Dem_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
8.4.3.11 GetFaultDetectionCounter
[SWS_Dem_00263] d
Service Name <Module>_DemGetFaultDetectionCounter<ForEvent>
Syntax Std_ReturnType <Module>_DemGetFaultDetectionCounter<ForEvent> (
sint8* FaultDetectionCounter
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) FaultDetectionCounter This parameter receives the fault detection counter information of
the requested EventId. If the return value of the function call is
other than E_OK this parameter does not contain valid data.
-128dec...127dec PASSED...FAILED according to ISO 14229-1
Return value Std_ReturnType E_OK: request was successful
E_NOT_OK: request failed
Description Gets the current fault detection counter value. There is one c-callback per event using
monitor-internal debouncing, if no port interface is provided by the Dem.
Available via Dem_Externals.h
c()
8.4.3.12 Dem_CallbackEventSyncStorageProcessed
[SWS_Dem_91042]{DRAFT} d
Service Name Dem_CallbackEventSyncStorageProcessed (draft)
Syntax Std_ReturnType Dem_CallbackEventSyncStorageProcessed (
void
)
c()
8.5.1 Dem_MainFunction
[SWS_Dem_00266] d
Service Name Dem_MainFunction
Syntax void Dem_MainFunction (
void
)
c()
[SWS_Dem_00125] dThe function Dem_MainFunction shall process all not event
based Dem module internal functions.c(SRS_BSW_00373)
1 RunnableEntity MainFunction
2 symbol "Dem_MainFunction"
3 canbeInvokedConcurrently = FALSE
4 SSCP = port CBEventUdsStatusChanged_*,
CallbackEventUdsStatusChanged
5 SSCP = port GeneralCBStatusEvt,
GeneralCallbackEventUdsStatusChanged
6 SSCP = port CBStatusDTC_*, DTCStatusChanged
7 SSCP = port CBDataEvt_*, EventDataChanged
8 SSCP = port GeneralCBDataEvt, EventDataChanged
9 SSCP = port CBReadData_*, ReadData
8.6.1.1 Dem_DataType
[SWS_Dem_91026] d
Name Dem_DataType_{Data}
Kind Type
Derived from Basetype Variation
Dem_DataArrayType_{Data} {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== ([S|U]INT[8|16|32]|FLOAT)_N) || ((Dem/DemGeneral/
DemDataElementClass/DemExternalSRDataElementClass/
DemDataElementDataType) == ([S|U]INT[8|16|32]|FLOAT)_
N))}
Dem_DataPrimitiveType_{Data} {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== (BOOLEAN|[S|U]INT[8|16|32]|FLOAT) || ((Dem/Dem
General/DemDataElementClass/DemExternalSRData
ElementClass/DemDataElementDataType) ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT))))}
Description Data type definition for external data elements
Variation ((({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/Dem
DataElementClass/DemExternalCSDataElementClass)}) && ({ecuc(Dem/DemGeneral/DemData
ElementClass/DemExternalCSDataElementClass/DemDataElementUsePort)} == true)) ||
({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/DemData
ElementClass/DemExternalSRDataElementClass)}))
Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
Available via Rte_Dem_Type.h
c()
8.6.1.2 Dem_DataPrimitiveType
[SWS_Dem_91033] d
Name Dem_DataPrimitiveType_{Data}
Kind Type
Basetype Variation
Derived from
boolean {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== BOOLEAN) || ((Dem/DemGeneral/DemDataElement
Class/DemExternalSRDataElementClass/DemDataElement
DataType) == BOOLEAN)}
float32 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== FLOAT) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == FLOAT)}
sint16 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== SINT16) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == SINT16)}
sint32 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== SINT32) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == SINT32)}
sint8 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== SINT8) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == SINT8)}
uint16 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== UINT16) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == UINT16)}
uint32 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== UINT32) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == UINT32)}
uint8 {(ecuc((Dem/DemGeneral/DemDataElementClass/Dem
ExternalCSDataElementClass/DemDataElementDataType)
== UINT8) || ((Dem/DemGeneral/DemDataElementClass/
DemExternalSRDataElementClass/DemDataElementData
Type) == UINT8)}
Description –
Variation {(ecu((Dem/DemGeneral/DemDataElementClass/DemExternalCSDataElementClass/DemData
ElementDataType) == (BOOLEAN|[S|U]INT[8|16|32]|FLOAT) || ((Dem/DemGeneral/DemData
ElementClass/DemExternalSRDataElementClass/DemDataElementDataType) ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT))))}
Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
Available via Rte_Dem_Type.h
c()
8.6.1.3 Dem_DataArrayType
[SWS_Dem_91034] d
Name Dem_DataArrayType_{Data}
Kind Array
c()
8.6.1.4 Dem_DTCOriginType
[SWS_Dem_00934] d
Name Dem_DTCOriginType
Kind Type
Derived from uint16
Range DEM_DTC_ORIGIN_PRIMARY_ 0x0001 Event information located in the
MEMORY primary memory
DEM_DTC_ORIGIN_MIRROR_ 0x0002 Event information located in the
MEMORY mirror memory
DEM_DTC_ORIGIN_ 0x0003 The Event information is located
PERMANENT_MEMORY in the permanent memory
DEM_DTC_ORIGIN_OBD_ 0x0004 Selects all memories which are
RELEVANT_MEMORY storing OBD events (specified by
configuration)
DEM_DTC_ORIGIN_ 0x01XX Event information located in the
USERDEFINED_ user defined memory, where XX is
MEMORY_<Name> the configured DemUserDefined
MemoryIdentifier in hexadecimal
and <Name> is the Short-Name
of the DemUserDefinedMemory.
Description This enum is used to define the location of the events. The definition and use of the different
memory types is OEM-specific.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.5 Dem_DebouncingStateType
[SWS_Dem_01000] d
Name Dem_DebouncingStateType
Kind Bitfield
Derived from uint8
Elements Kind Name Mask Description
bit DEM_TEMPORARILY_ 0x01 Bit 0: Temporarily Defective
DEFECTIVE (corresponds to 0 < FDC < 127)
bit DEM_FINALLY_DEFECTIVE 0x02 Bit 1: finally Defective
(corresponds to FDC = 127)
bit DEM_TEMPORARILY_HEALED 0x04 Bit 2: temporarily healed
(corresponds to -128 < FDC < 0)
bit DEM_TEST_COMPLETE 0x08 Bit 3: Test complete
(corresponds to FDC = -128 or
FDC = 127)
bit DEM_DTR_UPDATE 0x10 Bit 4: DTR Update (= Test
complete && Debouncing
complete && enable conditions /
storage conditions fulfilled)
Description –
Variation –
5
4
Available via Rte_Dem_Type.h
c(RS_Diag_04105)
8.6.1.6 Dem_DebounceResetStatusType
[SWS_Dem_00927] d
Name Dem_DebounceResetStatusType
Kind Type
Derived from uint8
Range DEM_DEBOUNCE_STATUS_ 0x00 Freeze the internal debounce
FREEZE counter/timer.
DEM_DEBOUNCE_STATUS_ 0x01 Reset the internal debounce
RESET counter/timer.
0x02 - 0xFF reserved
Description This type contains all definitions to control an internal debounce counter/timer via the function
Dem_ResetEventDebounceStatus().
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.7 Dem_DTRControlType
[SWS_Dem_00941] d
Name Dem_DTRControlType
Kind Type
Derived from uint8
Range DEM_DTR_CTL_NORMAL 0x00 Values are reported and regarded
as valid test result
DEM_DTR_CTL_NO_MAX 0x01 Values are reported, but
maximum limit is not available (not
valid); upper limit value is ignored.
DEM DTR_CTL_NO_MIN 0x02 Values are reported, but minimum
limit is not available (not valid);
lower limit value is ignored.
DEM_DTR_CTL_RESET 0x03 Values are all ignored. External
representation will be all zeros as
initialized (e.g. after fault clear)
DEM DTR_CTL_INVISIBLE 0x04 Values are all ignored. This DTR
is treated for the external view
(tester) as if not integrated.
5
4
Description Control parameter for the interpretation of the reported test results.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.8 Dem_EventIdType
[SWS_Dem_00925] d
Name Dem_EventIdType
Kind Type
Derived from uint16
Range 1..65535 – Internal identifier of a diagnostic
event Remark: 0 is not a valid
value
Description Identification of an event by assigned EventId. The EventId is assigned by the Dem. Example: 1
refers to monitor x, 2 refers to monitor y, etc.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.9 Dem_EventStatusType
[SWS_Dem_00926] d
Name Dem_EventStatusType
Kind Type
Derived from uint8
DEM_EVENT_STATUS_PASSED 0x00 Monitor reports qualified test
result passed.
DEM_EVENT_STATUS_FAILED 0x01 Monitor reports qualified test
result failed.
DEM_EVENT_STATUS_ 0x02 Monitor reports non-qualified test
PREPASSED result pre-passed (debounced
Dem-internally).
DEM_EVENT_STATUS_ 0x03 Monitor reports non-qualified test
PREFAILED result pre-failed (debounced
Dem-internally).
DEM_EVENT_STATUS_FDC_ 0x04 Monitor triggers the storage of
THRESHOLD_REACHED ExtendedDataRecords and
FreezeFrames ON_FDC_
THRESHOLD.
5
4
0x05 - 0xFF reserved
Description This type contains all monitor test result values, which can be reported via Dem_SetEventStatus().
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.10 Dem_DTCFormatType
[SWS_Dem_00933] d
Name Dem_DTCFormatType
Kind Type
Derived from uint8
Range DEM_DTC_FORMAT_OBD 0 selects the 2-byte OBD DTC
format (refer to configuration
parameter DemObdDTC)
DEM_DTC_FORMAT_UDS 1 selects the 3-byte UDS DTC
format (refer to configuration
parameter DemUdsDTC)
DEM_DTC_FORMAT_J1939 2 selects the merged SPN + FMI to
3-byte J1939 DTC format (refer to
DemJ1939DTC)
Description This type is used to select the format of the DTC value.
Variation –
Available via Rte_Dem_Type.h
c(RS_Diag_04112)
8.6.1.11 Dem_InitMonitorReasonType
[SWS_Dem_00942] d
Name Dem_InitMonitorReasonType
Kind Type
Derived from uint8
Range DEM_INIT_MONITOR_CLEAR 0x01 Event was cleared and all internal
values and states are reset.
DEM_INIT_MONITOR_RESTART 0x02 Operation cycle of the event was
restarted.
DEM_INIT_MONITOR_ 0x03 Enable conditions or DTC settings
REENABLED re-enabled.
DEM_INIT_MONITOR_ 0x04 Storage condition reenabled.
STORAGE_REENABLED
5
4
Description (Re-)Initialization reason returned by the callback <Module>_DemInitMonitorFor<EventName>().
Variation –
Available via Rte_Dem_Type.h
c(RS_Diag_04063)
8.6.1.12 Dem_IumprDenomCondIdType
[SWS_Dem_00943] d
Name Dem_IumprDenomCondIdType
Kind Type
Derived from uint8
Range DEM_IUMPR_DEN_COND_ 0x02 Additional IUMPR denominator
COLDSTART condition "Cold Start"
DEM_IUMPR_DEN_COND_ 0x03 Additional IUMPR denominator
EVAP condition "EVAP"
DEM_IUMPR_DEN_ 0x04 Additional IUMPR denominator
COND_500MI condition "500 miles"
DEM_IUMPR_GENERAL_ 0x05 Individual denominators to
INDIVIDUAL_DENOMINATOR support different conditions than
the general denominator. It acts
on individual denominators and
allows a different condition to be
set than for the general
denominator. If the standard
individual denominator conditions
differ from the general
denominator conditions, they
typically differ by a "fueled engine"
criterion.
DEM_IUMPR_GENERAL_ 0x06 IUMPR denominator condition
OBDCOND "General Denominator" for output
with Infotype $08/$0B
Description This type contains all possible additional IUMPR denominator conditions to be broadcasted among
OBD-relevant ECUs.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.13 Dem_IumprDenomCondStatusType
[SWS_Dem_00944] d
Name Dem_IumprDenomCondStatusType
Kind Type
Derived from uint8
Range DEM_IUMPR_DEN_STATUS_ 0x00 Condition of IUMPR-Denominator
NOT_REACHED given by IUMPRDenCondId is not
met (yet).
DEM_IUMPR_DEN_STATUS_ 0x01 Condition of IUMPR-Denominator
REACHED given by IUMPRDenCondId is met
DEM_IUMPR_DEN_STATUS_ 0x02 Condition of IUMPR-Denominator
INHIBITED given by IUMPRDenCondId is
inhibited and cannot be reached.
0x03 - 0xFF reserved
Description This type contains all possible states of an additional IUMPR denominator condition to be
broadcasted among OBD-relevant ECUs.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.14 Dem_MaxDataValueType
[SWS_Dem_01072] d
Name Dem_MaxDataValueType
Kind Array Element type uint8
Size size of largest Extended data class / Freeze frame record Elements
Description –
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.15 Dem_MonitorDataType
[SWS_Dem_91036] d
Name Dem_MonitorDataType
Kind Type
Derived from uint32
Description This type is used to pass monitoring data to the Dem.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.16 Dem_MonitorStatusType
[SWS_Dem_91005] d
Name Dem_MonitorStatusType
Kind Bitfield
Derived from uint8
Elements Kind Name Mask Description
bit DEM_MONITOR_STATUS_TF 0x01 Bit0: TestFailed
bit DEM_MONITOR_STATUS_ 0x02 Bit1: TestNotCompletedThis
TNCTOC OperationCycle
Description This type contains possible monitor status values.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.17 Dem_IndicatorStatusType
[SWS_Dem_00930] d
Name Dem_IndicatorStatusType
Kind Type
Derived from uint8
Range DEM_INDICATOR_OFF 0x00 Indicator off mode
DEM_INDICATOR_ 0x01 Indicator continuously on mode
CONTINUOUS
DEM_INDICATOR_BLINKING 0x02 Indicator blinking mode
DEM_INDICATOR_BLINK_CONT 0x03 Indicator blinking or continuously
on mode
DEM_INDICATOR_SLOW_ 0x04 Indicator slow flashing mode
FLASH
DEM_INDICATOR_FAST_FLASH 0x05 Indicator fast flashing mode
DEM_INDICATOR_ON_DEMAND 0x06 Indicator on-demand mode
DEM_INDICATOR_SHORT 0x07 Indicator short mode
Description Indicator mode used by Dem_GetIndicatorStatus().
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.18 Dem_PID21valueType
[SWS_Dem_01073] d
Name Dem_PID21valueType
Kind Array Element type uint8
Size 2 Elements
Description –
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.19 Dem_PID31valueType
[SWS_Dem_01074] d
Name Dem_PID31valueType
Kind Array Element type uint8
Size 2 Elements
Description –
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.20 Dem_RatioIdType
[SWS_Dem_00940] d
Name Dem_RatioIdType
Kind Type
Derived from Basetype Variation
uint16 Configurable, size depends on system complexity (refer to
range of configuration parameter DemRatioId)
uint8 Configurable, size depends on system complexity (refer to
range of configuration parameter DemRatioId)
Range 0..255, 0..65535 – Configurable, size depends on
system complexity (refer to range
of configuration parameter Dem
RatioId)
Description OBD specific ratio Id (related to a specific event, a FID, and an IUMPR group). This type depends
on the Dem configuration.
Variation –
Available via Rte_Dem_Type.h
c()
8.6.1.21 Dem_UdsStatusByteType
[SWS_Dem_00928] d
Name Dem_UdsStatusByteType
Kind Bitfield
Derived from uint8
Lower limit 0x00
Upper limit 0xFF
c()
8.6.1.22 Dem_PID4DvalueType
[SWS_Dem_91028] d
Name Dem_PID4DvalueType
Kind Array Element type uint8
Size 2 Elements
Description –
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_MASTER_ECU)
Available via Rte_Dem_Type.h
c()
8.6.1.23 Dem_PID4EvalueType
[SWS_Dem_91029] d
Name Dem_PID4EvalueType
Kind Array Element type uint8
Size 2 Elements
Description –
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_MASTER_ECU)
Available via Rte_Dem_Type.h
c()
8.6.2 Sender-Receiver-Interfaces
8.6.2.1 DataServices_{Data}
[SWS_Dem_00850] d
Name DataServices_{Data}
Comment –
IsService false
Variation ({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/Dem
DataElementClass/DemExternalSRDataElementClass)})
Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
Data Elements data
Type Dem_DataType_{Data}
Variation Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
c()
8.6.3 Client-Server-Interfaces
8.6.3.1 CallbackClearEventAllowed
[SWS_Dem_00620] d
Name CallbackClearEventAllowed
Comment If configured, it gets the permission to clear a specific event from the SW-C. For each event,
there can be one port of this interface type.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation ClearEventAllowed
Comment –
Variation –
Parameters Allowed
Type boolean
Direction OUT
Comment True - clearance of event is allowed
False - clearance of event is not allowed
Variation –
Possible Errors E_OK
E_NOT_OK
c(RS_Diag_04117)
8.6.3.2 CallbackComponentStatusChanged
[SWS_Dem_01195] d
Name CallbackComponentStatusChanged
Comment –
IsService true
Variation –
Possible Errors – – –
Operation ComponentStatusChanged
Comment –
Variation –
Parameters ComponentFailedStatus
Type boolean
Direction IN
Comment –
Variation –
Possible Errors –
c()
8.6.3.3 CallbackDTCStatusChange
[SWS_Dem_00617] d
Name CallbackDTCStatusChange
Comment If configured it triggers SW-Cs on DTC status byte changes via DemCallbackDTCStatus
Changed, DemCallbackOBDDTCStatusChanged, and / or DemCallbackJ1939DTCStatus
Changed. There can be several ports of this interface type, provided globally by the Dem
Service Component.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation DTCStatusChanged
Comment –
Variation –
DTC
Parameters
Type uint32
Direction IN
Comment –
Variation –
DTCStatusOld
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
DTCStatusNew
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.4 CallbackEventDataChanged
[SWS_Dem_00618] d
Name CallbackEventDataChanged
Comment If configured it triggers SW-Cs on event related data changes. For each event, there can be
one port of this interface type.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation EventDataChanged
Comment –
Variation –
Possible Errors –
c(RS_Diag_04155)
8.6.3.5 CallbackEventUdsStatusChanged
[SWS_Dem_00615] d
Name CallbackEventUdsStatusChanged
Comment If configured it triggers SW-Cs on event status byte changes. For each event, there can be
several ports of this interface type.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation CallbackEventUdsStatusChanged
Comment –
Variation –
EventStatusByteOld
Parameters
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
EventStatusByteNew
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
Possible Errors –
c()
8.6.3.6 CallbackGetFaultDetectCounter
[SWS_Dem_00622] d
Name CallbackGetFaultDetectCounter
Comment If configured it get the monitor-internal fault detection counter value of a specific event from the
SW-C.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetFaultDetectionCounter
Comment –
Variation –
Parameters FaultDetectionCounter
Type sint8
Direction OUT
Comment Value of FaultDetectionCounter
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.7 CallbackInitMonitorForEvent
[SWS_Dem_00613] d
Name CallbackInitMonitorForEvent
Comment If configure it triggers an event-specific initialization of the monitor part of the SW-C). For each
event, there can be one port of this interface type.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation InitMonitorForEvent
Comment –
Variation –
Parameters InitMonitorReason
Type Dem_InitMonitorReasonType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c(SRS_BSW_00457)
8.6.3.8 CallbackMonitorStatusChange
[SWS_Dem_91011] d
Name CallbackMonitorStatusChange
Comment If configured it triggers SW-Cs on monitor status changes. For each event, there can be several
ports of this interface type.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation MonitorStatusChanged
Comment –
Variation –
Possible Errors –
c()
8.6.3.9 ClearDtcNotification
[SWS_Dem_91003] d
Name ClearDtcNotification
Comment –
IsService true
Variation (count({ecuc(Dem/DemGeneral/DemEventMemorySet/DemClearDTCNotification/DemClear
DtcNotificationFnc)} == NULL) > 0)
Possible Errors 0 E_OK Operation successful
Operation ClearDtcNotification
Comment –
Variation –
DTC
Type uint32
Direction IN
Comment –
Variation –
DTCFormat
Type Dem_DTCFormatType
Direction IN
Comment –
Variation –
DTCOrigin
5
4
Type Dem_DTCOriginType
Direction IN
Comment –
Variation –
Possible Errors E_OK
c()
8.6.3.10 ClearDTC
[SWS_Dem_00666] d
Name ClearDTC
Comment Provides the operations only related to complex device drivers. One port of this interface type is
provided globally by the Dem Service Component. It has ClientId as a port-defined argument.
IsService true
Variation –
0 E_OK Operation successful
Possible Errors
1 E_NOT_OK Operation failed
4 DEM_PENDING Clearing the DTCs is currently in progress. The
caller shall call this function again at a later moment.
5 DEM_CLEAR_BUSY Another client is currently clearing DTCs. The
requested operation will not be started and the caller
shall try again at a later moment.
6 DEM_CLEAR_ An error occurred during erasing a memory location
MEMORY_ERROR (e.g. if DemClearDTCBehavior is set to DEM_
CLRRESP_NON-VOLATILE_FINISH and erasing of
non-volatile-block failed).
7 DEM_CLEAR_FAILED DTC clearing failed
8 DEM_WRONG_DTC Selected DTC value in selected format does not
exist or clearing is restricted by configuration to
group of all DTCs only.
9 DEM_WRONG_ Selected DTCOrigin does not exist.
DTCORIGIN
22 DEM_BUSY A different Dem_SelectDTC dependent operation
according to SWS_Dem_01253 of this client is
currently in progress.
Operation ClearDTC
Comment –
Variation –
5
4
Possible Errors E_OK
E_NOT_OK
DEM_PENDING
DEM_CLEAR_BUSY
DEM_CLEAR_MEMORY_ERROR
DEM_CLEAR_FAILED
DEM_WRONG_DTC
DEM_WRONG_DTCORIGIN
DEM_BUSY
Operation SelectDTC
Comment –
Variation –
DTC
Parameters
Type uint32
Direction IN
Comment –
Variation –
DTCFormat
Type Dem_DTCFormatType
Direction IN
Comment –
Variation –
DTCOrigin
Type Dem_DTCOriginType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.11 DTCSuppression
[SWS_Dem_00608] d
Name DTCSuppression
Comment Provides the capability to control the suppression of DTCs. One port of this interface type is
provided globally by the Dem Service Component.
IsService true
Variation ({ecuc(Dem/DemGeneral/DemSuppressionSupport)} == DEM_DTC_SUPPRESSION)
0 E_OK Operation successful
1 E_NOT_OK Operation failed
5
4
4 DEM_PENDING Clearing the DTCs is currently in progress. The
caller shall call this function again at a later moment.
8 DEM_WRONG_DTC Selected DTC value in selected format does not
exist or clearing is restricted by configuration to
group of all DTCs only.
9 DEM_WRONG_ Selected DTCOrigin does not exist.
DTCORIGIN
Operation GetDTCSuppression
Comment –
Variation –
ClientID
Parameters
Type uint8
Direction IN
Comment Unique client id, assigned to the instance of the calling module.
Variation –
SuppressionStatus
Type boolean
Direction OUT
Comment Defines whether the respective DTC is suppressed (TRUE) or enabled
(FALSE).
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_PENDING
DEM_WRONG_DTC
DEM_WRONG_DTCORIGIN
Operation SetDTCSuppression
Comment –
Variation –
ClientID
Parameters
Type uint8
Direction IN
Comment Unique client id, assigned to the instance of the calling module.
Variation –
SuppressionStatus
Type boolean
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_WRONG_DTC
DEM_WRONG_DTCORIGIN
c()
8.6.3.12 DataServices_{Data}
[SWS_Dem_00621] d
Name DataServices_{Data}
Comment If configured it gets the data element value contained in a DID, a PID, or an extended data
record from the respective SW-C via client/server or sender/receiver communication (refer to
Figure "Dem and Dcm module requests PID data elements of SW-C via ReadData operation").
For each data element, one port of this interface type is provided by the SW-Cs.
IsService true
Variation (({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/Dem
DataElementClass/DemExternalCSDataElementClass)})&& ({ecuc(Dem/DemGeneral/Dem
DataElementClass/DemExternalCSDataElementClass/DemDataElementUsePort)} == true))
Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation ReadData
Comment The server is not allowed to return E_NOT_OK, but shall always provide a valid data value (e.g.
a default/replacement value in an error-case) to Dcm/Dem nevertheless the signature of the
operation includes E_NOT_OK to ensure compatibility between server runnable and RTE Call
API, since the RTE may return negative Std_Return values in certain cases (e.g. partition of
server stopped)
Variation –
Data
Parameters
Type Dem_DataType_{Data}
Direction OUT
Comment –
Variation Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
monitorData0
Type Dem_MonitorDataType
Direction IN
Comment –
Variation ({ecuc(Dem/DemGeneral/DemDataElementClass/DemExternalCSData
ElementClass/DemDataElementProvideMonitorData)} == true))
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.13 DTRCentralReport
[SWS_Dem_00769] d
Name DTRCentralReport
Comment Available if OBD support is configured.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetDTR
Comment –
Variation –
TestResult
Parameters Type sint32
Direction IN
Comment –
Variation –
LowerLimit
Type sint32
Direction IN
Comment –
Variation –
UpperLimit
Type sint32
Direction IN
Comment –
Variation –
Ctrlval
Type Dem_DTRControlType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
Note: The Dem- and Dcm-interfaces of this type are compatible, to be connected to
the same provide-port of the application.
Note: The Dem Service Component supports synchronous client/server in-
terfaces only (due to the used mechanisms for the event memory) and is
compatible with the Dcm interface DataServices_<Data> with the setting for
USE_DATA_SYNCH_CLIENT_SERVER. All further operations contained in the Dcm
interface CSDataServices_<Data> like WriteData, ReadDataLength (relates to data
elements with a variable length), ConditionCheckRead, etc. are provided by the SW-C
and used by the Dcm, but are not required/considered by the Dem module.
Note: The Dem Service Component is compatible with the Dcm interface DataSer-
vices_<Data> with the setting for USE_DATA_SENDER_RECEIVER.
8.6.3.14 DiagnosticInfo
[SWS_Dem_00599] d
Name DiagnosticInfo
Comment Provides the capability to obtain the event information. One port of this interface type is
provided per diagnostic event by the Dem Service Component. It has EventId as a port-defined
argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DEM_E_NO_DTC_ there is no DTC configured in the requested format
AVAILABLE
14 DEM_E_NO_FDC_ there is no fault detection counter available for the
AVAILABLE requested event
21 DEM_BUFFER_TOO_ The provided buffer size is too small
SMALL
48 DEM_NO_SUCH_ The requested event data is not currently stored (but
ELEMENT the request was valid) OR The requested record
number is not supported by the event OR The
requested DID is not supported by the freeze frame
(GetEventFreezeFrameDataEx)
Operation GetDTCOfEvent
Comment –
Variation –
DTCFormat
Parameters
Type Dem_DTCFormatType
Direction IN
Comment –
Variation –
DTCOfEvent
Type uint32
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_E_NO_DTC_AVAILABLE
Operation GetDebouncingOfEvent
Comment –
Variation (({ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass)} instanceof
{ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounce
CounterBased)}) ||({ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithm
Class)} instanceof {ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithm
Class/DemDebounceTimeBase)}))
Parameters DebouncingState
5
4
Type Dem_DebouncingStateType
Direction OUT
Comment Bit 0 Temporarily Defective (corresponds to 0 < FDC < 127)
Bit 1 finally Defective (corresponds to FDC = 127)
Bit 2 temporarily healed (corresponds to -128 < FDC < 0)
Bit 3 Test complete (corresponds to FDC = -128 or FDC = 127)
Bit 4 DTR Update (= Test complete && Debouncing complete && enable
conditions / storage conditions fulfilled)
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetEventAvailable
Comment –
Variation –
Parameters AvailableStatus
Type boolean*
Direction OUT
Comment TRUE if the event is available. FALSE if the event is not available.
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetEventExtendedDataRecordEx
Comment –
Variation –
RecordNumber
Parameters
Type uint8
Direction IN
Comment –
Variation –
DestBuffer
Type Dem_MaxDataValueType
Direction OUT
Comment –
Variation –
Bufsize
Type uint16
Direction INOUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_BUFFER_TOO_SMALL
DEM_NO_SUCH_ELEMENT
Operation GetEventFreezeFrameDataEx
Comment –
Variation –
RecordNumber
Parameters Type uint8
Direction IN
Comment –
Variation –
DataId
Type uint16
Direction IN
Comment –
Variation –
DestBuffer
Type Dem_MaxDataValueType
Direction OUT
Comment –
Variation –
BufSize
Type uint16
Direction INOUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_BUFFER_TOO_SMALL
DEM_NO_SUCH_ELEMENT
Operation GetEventUdsStatus
Comment Gets the current UDS status byte assigned to the DTC for the event
Variation –
Parameters UDSStatusByte
Type Dem_UdsStatusByteType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetFaultDetectionCounter
Comment –
Variation –
FaultDetectionCounter
Type sint8
Direction OUT
5
4
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_E_NO_FDC_AVAILABLE
Operation GetMonitorStatus
Comment –
Variation –
Parameters MonitorStatus
Type Dem_MonitorStatusType
Direction OUT
Comment Monitor status byte of the requested event. If the return value of the function
call is E_NOT_OK, this parameter does not contain valid data.
Variation –
Possible Errors E_OK
E_NOT_OK
c()
Note: These DiagnosticInfo ports are also available for each BSW event (so that also
SW-Cs can access on).
8.6.3.15 DiagnosticMonitor
[SWS_Dem_00598] d
Name DiagnosticMonitor
Comment Provide the capability to modify the event information. One port of this interface type is
provided per application-related diagnostic event by the Dem Service Component. It has Event
Id as a port-defined argument.
IsService true
Variation (({Dem/DemGeneral/DemStorageCondition.DemStorageConditionReplacementEvent
Ref})!=({Dem/DemConfigSet/DemEventParameter}) && ({Dem/DemConfigSet/DemEvent
Parameter/DemEventReportingType} == STANDARD_REPORTING))
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation ClearPrestoredFreezeFrame
Comment –
Variation {ecuc(Dem/DemGeneral/DemMaxNumberPrestoredFF)} > 0
Possible Errors E_OK
E_NOT_OK
Operation PrestoreFreezeFrame
Comment –
Variation {ecuc(Dem/DemGeneral/DemMaxNumberPrestoredFF)} > 0
Possible Errors E_OK
E_NOT_OK
Operation ResetEventDebounceStatus
Comment –
Variation ({ecuc(Dem/DemGeneral/DemDebounceCounterBasedSupport)} == true) || ({ecuc(Dem/Dem
General/DemDebounceTimeBasedSupport)} == true)
Parameters DebounceResetStatus
Type Dem_DebounceResetStatusType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ResetEventStatus
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation SetEventDisabled
Comment –
Variation {ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT
Possible Errors E_OK
E_NOT_OK
Operation SetEventStatus
Comment –
Variation –
Parameters EventStatus
Type Dem_EventStatusType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
Note: Each port of the DiagnosticMonitor interface is only connected to one monitor
port.
Note: For internally used events (replacement event), no port will be generated.
Caveat: all operations within this client/server interface are mutual exclusive per server
port (same eventId). Preempted invocations may be ignored and not processed by the
Dem.
8.6.3.16 DiagnosticMonitor_MonitorData
[SWS_Dem_91038] d
Name DiagnosticMonitor_MonitorData
Comment Provide means to report diagnostic monitor status with monitor data.
IsService true
Variation ({Dem/DemConfigSet/DemEventParameter/DemEventReportingType} == STANDARD_
REPORTING_WITH_MONITOR_DATA)
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetEventStatusWithMonitorData
Comment –
Variation –
EventStatus
Parameters
Type Dem_EventStatusType
Direction IN
Comment –
Variation –
monitorData0
Type Dem_MonitorDataType
Direction IN
Comment –
Variation –
monitorData1
Type Dem_MonitorDataType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.17 EnableCondition
[SWS_Dem_00604] d
Name EnableCondition
Comment If at least one enable condition is configured it provide the capability to set an enable condition.
One port of this interface type is provided per enable condition by the Dem Service
Component. It has EnableConditionId as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetEnableCondition
Comment –
Variation –
Parameters ConditionFulfilled
Type boolean
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c(RS_Diag_04192)
8.6.3.18 EventAvailable
[SWS_Dem_01193] d
Name EventAvailable
Comment –
IsService true
Variation {ecuc(Dem/DemGeneral/DemAvailabilitySupport)} == DEM_EVENT_AVAILABILITY
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetEventAvailable
Comment –
Variation –
Parameters AvailableStatus
Type boolean
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.19 EventFailureCycleCounterThreshold
[SWS_Dem_91018] d
Name EventFailureCycleCounterThreshold
Comment Provides the capability for dynamical adaptation of the failure cycle threshold. One port of this
interface is provided per diagnostic event with EventId as a port-defined argument.
IsService true
Variation (count({ecuc(Dem/DemConfigSet/DemEventParameter/DemEventConfirmationThreshold
CounterAdaptable)} == TRUE) > 0 )
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetEventFailureCycleCounterThreshold
Comment –
Variation –
Parameters FailureCycleCounterThreshold
Type uint8
Direction IN
Comment Failure cycle counter threshold of event to be set.
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.20 EvMemOverflowIndication
[SWS_Dem_00607] d
Name EvMemOverflowIndication
Comment If the respective event memory is configured it provides the status of the event memory). One
port of this interface type is provided per supported event memory by the Dem Service
Component. It has DTCOrigin as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetEventMemoryOverflow
Comment –
Variation –
Parameters OverflowIndication
5
4
Type boolean
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetNumberOfEventMemoryEntries
Comment –
Variation –
Parameters GetNumberOfEventMemoryEntries
Type uint8
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c(RS_Diag_04105)
8.6.3.21 EventStatus
[SWS_Dem_00838] d
Name EventStatus
Comment Provides the capability modify the event status. One port of this interface type is provided per
application-related diagnostic event by the Dem Service Component. It has EventId as a
port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetWIRStatus
Comment –
Variation –
Parameters WIRStatus
Type boolean
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
Note: Each port of the EventStatus interface is only connected to one port of the
failsafe SW-C.
8.6.3.22 GeneralCallbackEventDataChanged
[SWS_Dem_00619] d
Name GeneralCallbackEventDataChanged
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation EventDataChanged
Comment –
Variation –
Parameters EventId
Type Dem_EventIdType
Direction IN
Comment –
Variation –
Possible Errors –
c(RS_Diag_04155)
8.6.3.23 GeneralCallbackEventUdsStatusChanged
[SWS_Dem_00616] d
Name GeneralCallbackEventUdsStatusChanged
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation GeneralCallbackEventUdsStatusChanged
Comment –
Variation –
EventId
Type Dem_EventIdType
Direction IN
5
4
Comment –
Variation –
EventStatusByteOld
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
EventStatusByteNew
Type Dem_UdsStatusByteType
Direction IN
Comment –
Variation –
Possible Errors –
c()
8.6.3.24 GeneralCallbackMonitorStatusChanged
[SWS_Dem_91013] d
Name GeneralCallbackMonitorStatusChanged
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation MonitorStatusChanged
Comment –
Variation –
Parameters EventId
Type Dem_EventIdType
Direction IN
Comment –
Variation –
Possible Errors –
c()
8.6.3.25 GeneralDiagnosticInfo
[SWS_Dem_00600] d
Name GeneralDiagnosticInfo
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DEM_E_NO_DTC_ there is no DTC configured in the requested format
AVAILABLE
14 DEM_E_NO_FDC_ there is no fault detection counter available for the
AVAILABLE requested event
21 DEM_BUFFER_TOO_ The provided buffer size is too small
SMALL
48 DEM_NO_SUCH_ The requested event data is not currently stored (but
ELEMENT the request was valid) OR The requested record
number is not supported by the event OR The
requested DID is not supported by the freeze frame
(GetEventFreezeFrameDataEx)
Operation GetDTCOfEvent
Comment –
Variation –
EventId
Parameters
Type Dem_EventIdType
Direction IN
Comment –
Variation –
DTCFormat
Type Dem_DTCFormatType
Direction IN
Comment –
Variation –
DTCOfEvent
Type uint32
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_E_NO_DTC_AVAILABLE
Operation GetDebouncingOfEvent
Comment –
Variation (({ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass)} instanceof
{ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounce
CounterBased)}) ||({ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithm
Class)} instanceof {ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithm
Class/DemDebounceTimeBase)}))
Parameters EventId
5
4
Type Dem_EventIdType
Direction IN
Comment –
Variation –
DebouncingState
Type Dem_DebouncingStateType
Direction OUT
Comment Bit 0 Temporarily Defective (corresponds to 0 < FDC < 127)
Bit 1 finally Defective (corresponds to FDC = 127)
Bit 2 temporarily healed (corresponds to -128 < FDC < 0)
Bit 3 Test complete (corresponds to FDC = -128 or FDC = 127)
Bit 4 DTR Update (= Test complete && Debouncing complete && enable
conditions / storage conditions fulfilled)
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetEventExtendedDataRecordEx
Comment –
Variation –
EventId
Parameters Type Dem_EventIdType
Direction IN
Comment –
Variation –
RecordNumber
Type uint8
Direction IN
Comment –
Variation –
DestBuffer
Type Dem_MaxDataValueType
Direction OUT
Comment –
Variation –
Bufsize
Type uint16
Direction INOUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_BUFFER_TOO_SMALL
DEM_NO_SUCH_ELEMENT
Operation GetEventFreezeFrameDataEx
Comment –
Variation –
EventId
Parameters Type Dem_EventIdType
Direction IN
Comment –
Variation –
RecordNumber
Type uint8
Direction IN
Comment –
Variation –
DataId
Type uint16
Direction IN
Comment –
Variation –
DestBuffer
Type Dem_MaxDataValueType
Direction OUT
Comment –
Variation –
BufSize
Type uint16
Direction INOUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_BUFFER_TOO_SMALL
DEM_NO_SUCH_ELEMENT
Operation GetEventUdsStatus
Comment Gets the current UDS status byte assigned to the DTC for the event
Variation –
EventId
Parameters
Type Dem_EventIdType
Direction IN
Comment –
Variation –
UDSStatusByte
Type Dem_UdsStatusByteType
Direction OUT
Comment –
Variation –
5
4
Possible Errors E_OK
E_NOT_OK
Operation GetFaultDetectionCounter
Comment –
Variation –
EventId
Parameters
Type Dem_EventIdType
Direction IN
Comment –
Variation –
FaultDetectionCounter
Type sint8
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DEM_E_NO_FDC_AVAILABLE
Operation GetMonitorStatus
Comment –
Variation –
EventID
Parameters
Type Dem_EventIdType
Direction IN
Comment Identification of an event by assigned EventId.
Variation –
MonitorStatus
Type Dem_MonitorStatusType
Direction OUT
Comment Monitor status byte of the requested event. If the return value of the function
call is E_NOT_OK, this parameter does not contain valid data.
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.26 GetDataOfPID21
[SWS_Dem_01092] d
Name GetDataOfPID21
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetDataOfPID21
Comment –
Variation –
Parameters PID21value
Type Dem_PID21valueType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.27 IndicatorStatus
[SWS_Dem_00606] d
Name IndicatorStatus
Comment One port of this interface type is provided per indicator by the Dem Service Component. It has
IndicatorId as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetIndicatorStatus
Comment –
Variation –
Parameters IndicatorStatus
Type Dem_IndicatorStatusType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.28 IUMPRDenominator
[SWS_Dem_00611] d
Name IUMPRDenominator
Comment If OBD is configured it provides the capability to define the number of times the vehicle
operation has been fulfilled. One port of this interface type is provided per ratio Id by the Dem
Service Component. It has RatioID as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation RepIUMPRDenRelease
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.29 IUMPRDenominatorCondition
[SWS_Dem_00742] d
Name IUMPRDenominatorCondition
Comment If OBD is configured it broadcasts the status information of the General Denominator and
additional denominator conditions among all OBD relevant ECUs. One port of this interface
type is provided per denominator condition Id by the Dem Service Component. It has Dem_
IumprDenomCondId as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetIUMPRDenCondition
Comment –
Variation –
Parameters ConditionStatus
Type Dem_IumprDenomCondStatusType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation SetIUMPRDenCondition
Comment –
Variation –
Parameters ConditionStatus
Type Dem_IumprDenomCondStatusType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.30 IUMPRNumerator
[SWS_Dem_00610] d
Name IUMPRNumerator
Comment If OBD is configured it provides the capability to define the number of times a fault could have
been found. One port of this interface type is provided per ratio Id by the Dem Service
Component. It has RatioID as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation RepIUMPRFaultDetect
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.31 OperationCycle
[SWS_Dem_00601] d
Name OperationCycle
Comment Provides the capability to set the state of an operation cycle. One port of this interface type is
provided per operation cycle by the Dem Service Component. It has OperationCycleId as a
port-defined argument.
5
4
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetCycleQualified
Comment –
Variation –
Parameters isQualified
Type boolean
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation RestartOperationCycle
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation SetCycleQualified
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.32 PowerTakeOff
[SWS_Dem_00612] d
Name PowerTakeOff
Comment Available if OBD support is configured. One port of this interface type is provided by the Dem
Service Component.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetPtoStatus
Comment –
Variation –
Parameters PtoStatus
Type boolean
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.33 SetDataOfPID21
[SWS_Dem_00745] d
Name SetDataOfPID21
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetDataOfPID21
Comment –
Variation –
Parameters PID21value
Type Dem_PID21valueType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.34 SetDataOfPID31
[SWS_Dem_00746] d
Name SetDataOfPID31
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetDataOfPID31
Comment –
Variation –
Parameters PID31value
Type Dem_PID31valueType
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.6.3.35 SetDataOfPID4D
[SWS_Dem_91027] d
Name SetDataOfPID4D
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation SetDataOfPID4D
Comment –
Variation –
Parameters PID4Dvalue
Type Dem_PID4DvalueType
Direction IN
Comment –
Variation –
Possible Errors E_OK
c()
8.6.3.36 SetDataOfPID4E
[SWS_Dem_91031] d
Name SetDataOfPID4E
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation SetDataOfPID4E
Comment –
Variation –
Parameters PID4Evalue
Type Dem_PID4EvalueType
Direction IN
Comment –
Variation –
Possible Errors E_OK
c()
8.6.3.37 StorageCondition
[SWS_Dem_00605] d
Name StorageCondition
Comment Provides the capability to set a storage condition if at least one storage condition is configured.
One port of this interface type is provided per storage condition by the Dem Service
Component. It has StorageConditionId as a port-defined argument.
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation SetStorageCondition
Comment –
Variation –
ConditionFulfilled
Type boolean
Direction IN
Comment This parameter specifies whether the enable condition assigned to the Enable
ConditionID is fulfilled (TRUE) or not fulfilled (FALSE).
5
4
Variation –
Possible Errors E_OK
E_NOT_OK
c(RS_Diag_04219)
8.6.4 Ports
8.6.4.1 CBClrEvt
[SWS_Dem_91024] d
Name CBClrEvt_{Name}
Kind RequiredPort Interface CallbackClearEventAllowed
Description –
Variation (({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackClearEventAllowed)} != NULL)
&&({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackClearEventAllowed/Dem
CallbackClearEventAllowedFnc)} == NULL))
Name = {ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackClearEvent
Allowed.SHORT-NAME)}
c()
8.6.4.2 CBDataEvt
[SWS_Dem_01003] d
Name CBDataEvt_{Name}
Kind RequiredPort Interface CallbackEventDataChanged
Description –
Variation (({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackEventDataChanged)} != NULL)
&&({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackEventDataChanged/Dem
CallbackEventDataChangedFnc)} == NULL))
Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c(RS_Diag_04155)
8.6.4.3 CBFaultDetectCtr
[SWS_Dem_01004] d
Name CBFaultDetectCtr_{Name}
Kind RequiredPort Interface CallbackGetFaultDetectCounter
Description –
Variation ({ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/DemDebounce
MonitorInternal/DemCallbackGetFDC/DemCallbackGetFDCFnc)} == NULL)
Name = {ecuc(Dem/DemConfigSet/DemEventParameter/DemDebounceAlgorithmClass/Dem
DebounceMonitorInternal/DemCallbackGetFDC.SHORT-NAME)}
c(RS_Diag_04125)
8.6.4.4 CBInitEvt
[SWS_Dem_01005] d
Name CBInitEvt_{Name}
Kind RequiredPort Interface CallbackInitMonitorForEvent
Description –
Variation (({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackInitMForE)} != NULL)
&&({ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackInitMForE/DemCallbackInitMFor
EFnc)} == NULL))
Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c(SRS_BSW_00457)
8.6.4.5 CBStatusDTC
[SWS_Dem_01007] d
Name CBStatusDTC_{Name}
Kind RequiredPort Interface CallbackDTCStatusChange
Description –
Variation Name = {ecuc(Dem/DemGeneral/DemClient/DemCallbackDTCStatusChanged.SHORT-NAME)}
c()
8.6.4.6 CBEventUdsStatusChanged
[SWS_Dem_01008] d
Name CBEventUdsStatusChanged_{EventName}_{CallbackName}
Kind RequiredPort Interface CallbackEventUdsStatusChanged
Description –
Variation EventName = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
CallbackName = {ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackEventUdsStatus
Changed.SHORT-NAME)}
c()
8.6.4.7 CBMonitorStatusChanged
[SWS_Dem_91012] d
Name CBMonitorStatusChanged_{EventName}_{CallbackName}
Kind RequiredPort Interface CallbackMonitorStatusChange
Description –
Variation ({ecuc(Dem/DemConfigSet/DemEventParameter.DemEventKind)} == DEM_EVENT_KIND_SWC)
EventName = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
CallbackName = {ecuc(Dem/DemConfigSet/DemEventParameter/DemCallbackMonitorStatus
Changed.SHORT-NAME)}
c()
8.6.4.8 CBStatusComp
[SWS_Dem_01197] d
Name CBStatusComp_{ComponentName}
Kind RequiredPort Interface CallbackComponentStatusChanged
Description –
Variation ({ecuc(Dem/DemConfigSet/DemComponent.DemComponentFailedCallbackUsePort )}== TRUE)
ComponentName = {ecuc(Dem/DemConfigSet/DemComponent.SHORT-NAME)}
c()
8.6.4.9 ClearDTC
[SWS_Dem_01009] d
Name ClearDTC_{Client}
Kind ProvidedPort Interface ClearDTC
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemClient.Short-Name)}
Variation ({ecuc(Dem/DemGeneral/DemClient/DemClientUsesRte)}==True) && ({ecuc(Dem/DemGeneral/
DemClient/DemClientFunctionality)} == DEM_CLIENT_USES_FULL_FUNCTIONALITY)
Client = {ecuc(Dem/DemGeneral/DemClient.SHORT-NAME)}
c()
8.6.4.10 ClearDtcNotification
[] d
Name ClearDtcNotification_{EventMemorySet}_{Notification}
Kind ProvidedPort Interface ClearDtcNotification
Description called by the Dem when performing a clear DTC operation
Variation ({ecuc(Dem/DemGeneral/DemEventMemorySet/DemClearDTCNotification/DemClearDtc
NotificationFnc)}== NULL)
EventMemorySet = {ecuc(Dem/DemGeneral/DemEventMemorySet.SHORT-NAME)}
Notification = {ecuc(Dem/DemGeneral/DemEventMemorySet/DemClear
DTCNotification.SHORT-NAME)}
c()
8.6.4.11 ControlDTCSuppression
[SWS_Dem_01010] d
Name ControlDTCSuppression
Kind ProvidedPort Interface DTCSuppression
Description –
Variation ({ecuc(Dem/DemGeneral/DemSuppressionSupport)} == DEM_DTC_SUPPRESSION)
c()
8.6.4.12 ControlEventAvailable
[SWS_Dem_01011] d
Name ControlEventAvailable
Kind ProvidedPort Interface EventAvailable
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation {ecuc(Dem/DemGeneral/DemAvailabilitySupport)} == DEM_EVENT_AVAILABILITY
c()
8.6.4.13 ControlEventFailureCycleCounterThreshold
[SWS_Dem_91019] d
Name ControlEventFailureCycleCounterThreshold_{Name}
Kind ProvidedPort Interface EventFailureCycleCounterThreshold
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventConfirmationThresholdCounter
Adaptable)} == TRUE
Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c()
8.6.4.14 DataServices_{Data}
[SWS_Dem_01012] d
Name DataServices_{Data}
Kind RequiredPort Interface –
Description –
Variation (({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/DemData
ElementClass/DemExternalCSDataElementClass)})&& ({ecuc(Dem/DemGeneral/DemData
ElementClass/DemExternalCSDataElementClass/DemDataElementUsePort)} == TRUE))||
({ecuc(Dem/DemGeneral/DemDataElementClass)} instanceof {ecuc(Dem/DemGeneral/DemData
ElementClass/DemExternalSRDataElementClass)})
Data = {ecuc(Dem/DemGeneral/DemDataElementClass.SHORT-NAME)}
c()
8.6.4.15 DTR
[SWS_Dem_01039] d
Name DTR_{Name}
Kind ProvidedPort Interface DTRCentralReport
Description –
Port Defined Type uint16
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemDtrs/DemDtr/DemDtrId.value)}
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT)
Name = {ecuc(Dem/DemConfigSet/DemDtrs/DemDtr.SHORT-NAME)}
c()
8.6.4.16 EnableCond
[SWS_Dem_01038] d
Name EnableCond_{Name}
Kind ProvidedPort Interface EnableCondition
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemEnableCondition/DemEnableConditionId.value)}
Variation Name = {ecuc(Dem/DemGeneral/DemEnableCondition.SHORT-NAME)}
c(RS_Diag_04192)
8.6.4.17 Event
[SWS_Dem_01037] d
Name Event_{Name}
Kind ProvidedPort Interface DiagnosticMonitor
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c(RS_Diag_04063)
8.6.4.18 DiagnosticMonitor_MonitorData
[SWS_Dem_91039] d
Name DiagnosticMonitor_MonitorData_{Name}
Kind ProvidedPort Interface DiagnosticMonitor_MonitorData
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c()
8.6.4.19 EventStatus
[SWS_Dem_01036] d
Name EventStatus_{Name}
Kind ProvidedPort Interface EventStatus
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c()
8.6.4.20 EventInfo
[SWS_Dem_01034] d
Name EventInfo_{Name}
Kind ProvidedPort Interface DiagnosticInfo
Description –
Port Defined Type Dem_EventIdType
Argument Value(s)
Value {ecuc(Dem/DemConfigSet/DemEventParameter/DemEventId.value)}
Variation Name = {ecuc(Dem/DemConfigSet/DemEventParameter.SHORT-NAME)}
c(RS_Diag_04063)
8.6.4.21 GeneralCBDataEvt
[SWS_Dem_01041] d
Name GeneralCBDataEvt
Kind RequiredPort Interface GeneralCallbackEventDataChanged
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralInterfaceSupport)} == True)
c()
8.6.4.22 GeneralCBMonitorStatusChanged
[SWS_Dem_91014] d
Name GeneralCBMonitorStatusChanged
Kind RequiredPort Interface GeneralCallbackMonitorStatusChanged
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralInterfaceSupport)} == True)
c()
8.6.4.23 GeneralCBStatusEvt
[SWS_Dem_01032] d
Name GeneralCBStatusEvt
Kind RequiredPort Interface GeneralCallbackEventUdsStatusChanged
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralInterfaceSupport)} == True)
c()
8.6.4.24 GeneralEvtInfo
[SWS_Dem_01031] d
Name GeneralEvtInfo
Kind ProvidedPort Interface GeneralDiagnosticInfo
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralInterfaceSupport)} == True)
c()
8.6.4.25 IndStatus
[SWS_Dem_01030] d
Name IndStatus_{Name}
Kind ProvidedPort Interface IndicatorStatus
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemEventMemorySet/DemIndicator/DemIndicator
ID.value)}
Variation Name = {ecuc(Dem/DemGeneral/DemEventMemorySet/DemIndicator.SHORT-NAME)}
c()
8.6.4.26 IUMPRDenominator
[SWS_Dem_01029] d
Name IUMPRDenominator_{Name}
Kind ProvidedPort Interface IUMPRDenominator
Description –
Port Defined Type Dem_RatioIdType
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemRatio/DemRatioId.value)}
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT)
Name = {ecuc(Dem/DemGeneral/DemRatio/DemRatioId.SHORT-NAME)}
c()
8.6.4.27 IUMPRDenominatorCondition
[SWS_Dem_01028] d
Name IUMPRDenominatorCondition_{Name}
Kind ProvidedPort Interface IUMPRDenominatorCondition
Description –
Port Defined Type Dem_IumprDenomCondIdType
Argument Value(s)
Value TBD
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT)
Name = {ecuc(Dem/DemGeneral/DemRatio/DemIUMPRDenGroup.SHORT-NAME)}
c()
8.6.4.28 IUMPRNumerator
[SWS_Dem_01027] d
Name IUMPRNumerator_{Name}
Kind ProvidedPort Interface IUMPRNumerator
Description –
Port Defined Type Dem_RatioIdType
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemRatio/DemRatioId.value)}
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT)
Name = {ecuc(Dem/DemGeneral/DemRatio/DemRatioId.SHORT-NAME)}
c()
8.6.4.29 OpCycle
[SWS_Dem_01026] d
Name OpCycle_{Name}
Kind ProvidedPort Interface OperationCycle
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemOperationCycle/DemOperationCycleId.value)}
Variation Name = {ecuc(Dem/DemGeneral/DemOperationCycle.SHORT-NAME)}
c()
8.6.4.30 OverflowIndMirrorMemory
[SWS_Dem_01025] d
Name OverflowIndMirrorMemory_{Client}
Kind ProvidedPort Interface EvMemOverflowIndication
Description –
Port Defined Type uint8
Argument Value(s) Value –
Type Dem_DTCOriginType
Value 0x02
Variation ({ecuc(Dem/DemGeneral/DemEventMemorySet/DemMirrorMemory)} != NULL) &&(({ecuc(Dem/
DemGeneral/DemClient/DemClientUsesRte )} ==TRUE))
Client= {ecuc(Dem/DemGeneral/DemClient.SHORT-NAME)}
c()
8.6.4.31 OverflowIndPermanentMemory
[SWS_Dem_01024] d
Name OverflowIndPermanentMemory
Kind ProvidedPort Interface EvMemOverflowIndication
Description –
Port Defined Type Dem_DTCOriginType
Argument Value(s)
Value 0x03
Variation ({ecuc(Dem/DemGeneral/DemEventMemorySet/DemMaxNumberEventEntryPermanent)} > 0)
c()
8.6.4.32 OverflowIndPrimaryMemory
[SWS_Dem_01023] d
Name OverflowIndPrimaryMemory_{Client}
Kind ProvidedPort Interface EvMemOverflowIndication
Description –
Port Defined Type uint8
Argument Value(s) Value –
Type Dem_DTCOriginType
Value 0x01
Variation (({ecuc(Dem/DemGeneral/DemClient/DemClientUsesRte)} ==TRUE))
Client= {ecuc(Dem/DemGeneral/DemClient.SHORT-NAME})
c(RS_Diag_04093)
8.6.4.33 OverflowIndUserDefinedMemory
[SWS_Dem_01022] d
Name OverflowIndUserDefinedMemory_{Client}_{UserDefinedMemory}
Kind ProvidedPort Interface EvMemOverflowIndication
Description –
Port Defined Type uint8
Argument Value(s) Value –
Type Dem_DTCOriginType
Value {ecuc(Dem/DemGeneral/DemEventMemorySet/DemUserDefinedMemory/
DemUserDefinedMemoryIdentifier.value)}
5
4
Variation ({ecuc(Dem/DemGeneral/DemClient/DemEventMemorySetRef->DemEventMemorySet/DemUser
DefinedMemory != NULL)})(({ecuc(Dem/DemGeneral/DemClient/DemClientUsesRte)} ==TRUE))
Client= {ecuc(Dem/DemGeneral/DemEventMemorySet.SHORT-NAME})
UserDefinedMemory = {ecuc(Dem/DemGeneral/DemClient/DemEventMemorySetRef->DemEvent
MemorySet/DemUserDefinedMemory.SHORT-NAME)}
c()
8.6.4.34 PowerTakeOffStatus
[SWS_Dem_01020] d
Name PowerTakeOffStatus
Kind ProvidedPort Interface PowerTakeOff
Description –
Variation {ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT
c()
8.6.4.35 GetDataOfPID21
[SWS_Dem_01094] d
Name GetDataOfPID21
Kind ProvidedPort Interface GetDataOfPID21
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralOBD.DemOBDCentralizedPID21Handling)} == true) &&
({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_MASTER_ECU)
c()
8.6.4.36 SetDataOfPID21
[SWS_Dem_01017] d
Name SetDataOfPID21
Kind ProvidedPort Interface SetDataOfPID21
Description –
Variation ({ecuc(Dem/DemGeneral/DemGeneralOBD.DemOBDCentralizedPID21Handling)} == true) &&
({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_PRIMARY_ECU)
c()
8.6.4.37 SetDataOfPID31
[SWS_Dem_01016] d
Name SetDataOfPID31
Kind ProvidedPort Interface SetDataOfPID31
Description –
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} != DEM_OBD_NO_OBD_SUPPORT) &&
({ecuc(Dem/DemGeneral/DemGeneralOBD.DemOBDCentralizedPID31Handling)} == true)
c()
8.6.4.38 SetDataOfPID4D
[SWS_Dem_91030] d
Name SetDataOfPID4D
Kind ProvidedPort Interface SetDataOfPID4D
Description –
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_MASTER_ECU)
c()
8.6.4.39 SetDataOfPID4E
[SWS_Dem_91032] d
Name SetDataOfPID4E
Kind ProvidedPort Interface SetDataOfPID4E
Description –
Variation ({ecuc(Dem/DemGeneral.DemOBDSupport)} == DEM_OBD_MASTER_ECU)
c()
8.6.4.40 StorageCond
[SWS_Dem_01015] d
Name StorageCond_{Name}
Kind ProvidedPort Interface StorageCondition
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dem/DemGeneral/DemStorageCondition/DemStorageCondition
Id.value)}
Variation Name = {ecuc(Dem/DemGeneral/DemStorageCondition.SHORT-NAME)}
c(RS_Diag_04219)
9 Sequence Diagrams
9.1 ControlDTCSetting
Generic Scan Tool «module» «module»
Dcm Dem
Request: ControlDTCSetting(off)
Dem_DisableDTCSetting(Std_ReturnType, uint8)
Request: ControlDTCSetting(on)
Dem_EnableDTCSetting(Std_ReturnType, uint8)
9.2 Dem_ClearDTC
Generic Scan Tool «module» «module»
Dcm Dem
Request: ClearDTCInformation(DTC)
Dem_GetDTCSelectionResultForClearDTC(Std_ReturnType, uint8)
Dem_GetDTCSelectionResultForClearDTC(Std_ReturnType, uint8)
Dem_ClearDTC(Std_ReturnType, uint8)
<Module>_DemClearEventAllowed<ForCondition>(Std_ReturnType, boolean*)
opt
reset the events status byte and UDS
status byte()
Trigger status byte related callbacks (e.g. <Module>_DemTriggerOnEventUdsStatus)
clean prestored FreezeFrame of related events()
<Module>_DemTriggerOnEventData(Std_ReturnType, Dem_EventIdType)
!
<Module>_DemInitMonitorFor<EventName>(Std_ReturnType,
Dem_InitMonitorReasonType)
9.3 Dem_GetDTCByOccurrenceTime
Generic Scan Tool «module» «module»
Dcm Dem
Request: ReadDTCInformation(reportFirstTestFailedDTC/
reportFirstConfirmedDTC/reportMostRecentTestFailedDTC/
reportMostRecentConfirmedDTC)
9.4 Dem_GetNextExtendedDataRecord
Generic Scan Tool «module» «module»
Dcm Dem
Request: ReadDTCInformation
(reportDTCExtendedDataRecordByDTCNumber/
reportMirrorMemoryDTCExtendedDataRecordByDTCNumber)
Dem_GetSizeOfExtendedDataRecordSelection
(Std_ReturnType, uint8, uint32**)
loop
9.5 Dem_DcmGetStatusOfDTC
Generic Scan Tool «module» «module»
Dcm Dem
Request: ReadDTCInformation
(reportDTCByStatusMask)
Request: ReadDTCInformation
(reportDTCSnapshotRecordByDTCNumber)
opt
loop
9.7 GetOBDFaultInformation
Generic Scan Tool «module» «module»
Dcm Dem
Dem_SetDTCFilter()
Dem_GetNumberOfFilteredDTC(Std_ReturnType, uint8,
uint16**)
Dem_DcmGetNumberOfFilteredDTC()
Positive Response to Service S01 with PID S01()
Dem_SetDTCFilter()
Dem_GetNextFilteredDTC()
Assemble response
message()
Service S02: Request Powertrain freeze frame data PID S02, FF: S00()
Dem_DcmGetDTCOfOBDFreezeFrame(FrameNumber=0x00, DTC)
Dem_DcmGetDTCOfOBDFreezeFrame()
9.8 ReportDTCByStatusMask
Generic Scan Tool «module» «module»
Dcm Dem
Request: ReadDTCInformation
(ReportDTCSnapshotRecordByDTCNumber)
Dem_GetDTCStatusAvailabilityMask(Std_ReturnType,
uint8, Dem_UdsStatusByteType**,
Dem_DTCOriginType)
Assemble
response()
9.9 FiM_DemTriggerOnEventStatus
«module» SW-C (Functionality) «module»
Dem FiM
FiM_DemTriggerOnMonitorStatus(Dem_EventIdType)
FiM_DemTriggerOnMonitorStatus()
Dem_GetMonitorStatus(Std_ReturnType, Dem_EventIdType,
Dem_MonitorStatusType**)
Dem_GetMonitorStatus()
FiM_GetFunctionPermission(Std_ReturnType,
FiM_FunctionIdType, boolean**)
Fim_GetFunctionPermission()
opt optional
Dem_PrestoreFreezeFrame(Std_ReturnType, Dem_EventIdType)
Dem_PrestoreFreezeFrame()
Dem_SetEventStatus()
FiM_DemTriggerOnMonitorStatus
(Dem_EventIdType)
Fim_DemTriggerOnEventStatus()
10 Configuration specification
In general, this chapter defines configuration parameters and their clustering into con-
tainers. In order to support the specification Chapter chapter 10.1 describes funda-
mentals. It also specifies a template (table) you shall use for the parameter specifica-
tion. We intend to leave chapter 10.1 in the specification to guarantee comprehension.
• chapter 10.2 specifies the structure (containers) and the parameters of the mod-
ule Dem
• chapter 10.3 specifies published information of the module Dem
10.2.1 Dem
10.2.2 General
10.2.2.1 DemGeneral
true: only tested aging cycle are considered for aging cycle counter
Multiplicity 1
Type EcucBooleanParamDef
Default Value false
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Included Containers
Container Name Multiplicity Scope / Dependency
DemClient 1..255 This container contains possible clients that are using
the Dem APIs.
DemDataElementClass 0..65535 This container contains the configuration (parameters)
for an internal/external data element class.
DemDidClass 0..65535 This container contains the configuration (parameters)
for a data Id class. It is assembled out of one or several
data elements.
DemEnableCondition 0..255 This container contains the configuration (parameters)
for enable conditions.
DemEnableCondition 0..255 This container contains the configuration (parameters)
Group for enable condition groups.
DemEventMemorySet 1..255 This container is a collection of referenced event
memories and related information for a Dem client.
DemExtendedDataClass 0..65535 This class contains the combinations of extended data
records for an extended data class.
DemExtendedData 0..253 This container contains the configuration (parameters)
RecordClass for an extended data record class.
DemFunctionIdRef: EcucReferenceDef
DemGeneral: DemRatio:
EcucParamConfContainerDef EcucParamConfContainerDef +reference lowerMultiplicity = 0
upperMultiplicity = *
upperMultiplicity = 1 upperMultiplicity = 65535 requiresSymbolicNameValue = true
lowerMultiplicity = 1 lowerMultiplicity = 0
+destination
lowerMultiplicity = 1
upperMultiplicity = *
DemDiagnosticEventRef:
+reference EcucReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 1
+destination
DemIndicatorAttribute: DemEventParameter:
EcucParamConfContainerDef EcucParamConfContainerDef
+subContainer
upperMultiplicity = 255 upperMultiplicity = 65535
lowerMultiplicity = 0 lowerMultiplicity = 1
DemFreezeFrameClass: DemFreezeFrameClassRef:
EcucParamConfContainerDef +destination EcucReferenceDef
+subContainer upperMultiplicity = 1
upperMultiplicity = 65535
lowerMultiplicity = 0 lowerMultiplicity = 0
DemExtendedDataClassRef:
DemExtendedDataClass: +destination EcucReferenceDef
+subContainer EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 65535
+reference
DemExtendedDataRecordClassRef:
EcucReferenceDef
DemExtendedDataRecordClass:
EcucParamConfContainerDef +destination
+subContainer upperMultiplicity = 253
lowerMultiplicity = 1
upperMultiplicity = 253
requiresIndex = true
lowerMultiplicity = 0
DemOperationCycle: DemAgingCycleRef:
EcucParamConfContainerDef +destination EcucReferenceDef
DemOperationCycleRef:
+destination EcucReferenceDef
DemNvRamBlockId:
+subContainer EcucParamConfContainerDef +reference
upperMultiplicity = *
lowerMultiplicity = 0 DemEventParameter:
EcucParamConfContainerDef
upperMultiplicity = 65535
DemIndicator: lowerMultiplicity = 1
EcucParamConfContainerDef +destination
upperMultiplicity = 255
lowerMultiplicity = 0
+subContainer
DemIndicatorAttribute:
DemIndicatorRef: EcucReferenceDef EcucParamConfContainerDef
+reference
upperMultiplicity = 255
lowerMultiplicity = 0
DemStorageCondition: DemStorageConditionRef:
+subContainer EcucParamConfContainerDef +destination EcucReferenceDef
DemClient:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 255
10.2.2.2 DemConfigSet
Included Containers
Container Name Multiplicity Scope / Dependency
DemComponent 0..* This container configures the monitored components
and system dependencies.
DemDTC 0..65535 This container contains the configuration (parameters)
for DemUdsDTC.
DemDTCAttributes 0..65535 This container contains the configuration (parameters)
for DemDTCAttributes.
DemDebounceCounter 0..65535 This container contains the configuration of Debounce
BasedClass Counter Based Class
DemDebounceTimeBase 0..65535 This container contains the configuration of Debounce
Class Time Based Class.
DemDtrs 0..1 This container holds the configuration of DTRs
collection.
DemEventParameter 1..65535 This container contains the configuration (parameters)
for events.
DemMultiEventTriggering 0..65535 Configures an event that will trigger other events
whenever the event is reported.
DemObdDTC 0..65535 This container contains the configuration (parameters)
for DemObdDTC.
DemPidClass 0..255 This container contains the different PIDs for the single
global OBD relevant freeze frame class. It is assembled
out of one or several data elements.
Dem: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
+container
DemConfigSet: DemPidClass:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
DemDebounceTimeBaseClass:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
DemDTCAttributes: DemDTCAttributesRef:
+subContainer EcucParamConfContainerDef +destination EcucReferenceDef
+reference
DemDTC:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
DemDebounceCounterBasedClass:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
DemEventParameter:
EcucParamConfContainerDef
+subContainer
upperMultiplicity = 65535
lowerMultiplicity = 1
DemMultiEventTriggering:
EcucParamConfContainerDef
DemObdDTC:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
DemComponent:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.2.3 DemClient
Description This container contains possible clients that are using the Dem APIs.
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DemCallbackDTCStatus 0..* The presence of this container indicates, that the Dem
Changed has access to a "DTCStatusChanged" callback, which
the Dem will call to notify other components about the
change in the status of a DTC.
In case there is no
DemCallbackDTCStatusChangedFnc, the Dem will have
an R-Port requiring the interface
CallbackDTCStatusChanged whose name is generated
by using the unique callback-prefix followed by the event
name.
+destination
+subContainer
DemClient:
EcucParamConfContainerDef DemEventMemorySetRef:
+reference EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 255 lowerMultiplicity = 1
upperMultiplicity = 1
DemClientId: EcucIntegerParamDef
+parameter min = 0
max = 255
lowerMultiplicity = 1
upperMultiplicity = 1
symbolicNameValue = true
DemClientUsesRte:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = false
DemCallbackDTCStatusChanged: DemCallbackDTCStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
+parameter
+literal
DEM_CLIENT_USES_FULL_FUNCTIONALITY:
DemClientFunctionality: EcucEnumerationParamDef
EcucEnumerationLiteralDef
defaultValue = DEM_CLIENT_USES_FULL_FUNCTIONALITY
+literal
DEM_CLIENT_ONLY_USES_EVENTOVERFLOW_INTERFACE:
EcucEnumerationLiteralDef
10.2.2.4 DemDTCAttributes
No Included Containers
DemConfigSet: +subContainer DemEventParameter:
EcucParamConfContainerDef EcucParamConfContainerDef
upperMultiplicity = 65535
DemObdDTC: lowerMultiplicity = 1
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0 +reference
+destination DemDTCRef:
EcucReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 0
DemObdDTCRef: EcucReferenceDef
upperMultiplicity = 1
+reference +destination
lowerMultiplicity = 0
DemDTC:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
+subContainer
DemDTCAttributes:
EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0 +reference
upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0
DemMaxNumberFreezeFrameRecords:
EcucIntegerParamDef
+parameter
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0
DemAgingCycleCounterThreshold: EcucIntegerParamDef
+parameter min = 1
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
DemAgingCycleCounterThresholdForTFSLC:
EcucIntegerParamDef
+parameter min = 1
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
DemAgingCycleRef: EcucReferenceDef
+reference
lowerMultiplicity = 0
upperMultiplicity = 1
+literal DEM_EVENT_SIGNIFICANCE_OCCURRENCE:
EcucEnumerationLiteralDef
DemUserDefinedMemory:
EcucParamConfContainerDef
+destination lowerMultiplicity = 0
DemMemoryDestinationRef: EcucChoiceReferenceDef upperMultiplicity = 30
lowerMultiplicity = 1
upperMultiplicity = 2 DemPrimaryMemory:
+destination EcucParamConfContainerDef
+reference
lowerMultiplicity = 1
upperMultiplicity = 1
+destination DemMirrorMemory:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+reference DemJ1939FreezeFrameClassRef: EcucReferenceDef
+destination
upperMultiplicity = 1
lowerMultiplicity = 0 DemJ1939FreezeFrameClass:
EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
DemJ1939ExpandedFreezeFrameClassRef:
+reference EcucReferenceDef +destination
upperMultiplicity = 1
lowerMultiplicity = 0
DemWWHOBDFreezeFrameClassRef: DemFreezeFrameClass:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
10.2.2.5 DemEventParameter
Name DemEventConfirmationThresholdCounterAdaptable
[ECUC_Dem_00929]
Parent Container DemEventParameter
Description Indicates whether the events confirmation Cycle threshold can be
adapted by Dem_SetEventConfirmationThresholdCounter.
Multiplicity 0..1
Type EcucBooleanParamDef
Default Value false
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
Tags:
atp.Status=draft
Multiplicity 1
Type EcucEnumerationParamDef
Range IMMEDIATE_FAIL_AND_ The event is reported over the API
SYNCHRONOUS_PROC Dem_SetEventFailedWithSyncFreezeFrame.
ESSING
Tags:
atp.Status=draft
STANDARD_REPORTIN The event is reported over the API
G Dem_SetEventStatus.
Tags:
atp.Status=draft
STANDARD_REPORTIN The event is reported over the API
G_WITH_MONITOR_DAT Dem_SetEventStatusWithMonitorData.
A
Tags:
atp.Status=draft
Default Value STANDARD_REPORTING
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Included Containers
Container Name Multiplicity Scope / Dependency
DemCallbackClearEvent 0..1 The presence of this container indicates that the Dem
Allowed has access to a "ClearEventAllowed" callback.
DemCallbackEventSync 0..1 The presence of this container indicates that the Dem
StorageProcessed will call the configured callback after an event status
reported with
Dem_SetEventFailedWithSyncFreezeFrame is finished
and the Dem is ready to process a next call for this
event.
Tags:
atp.Status=draft
DemCallbackEventUds 0..* The presence of this container indicates, that the Dem
StatusChanged has access to an "EventUdsStatusChanged" callback,
which the Dem will call to notify other components about
the change in the status of an event.
In case there is a
DemCallbackEventUdsStatusChangedFnc, this
parameter defines the name of the function that the
Dem will call.
In case there is no
DemCallbackEventUdsStatusChangedFnc, the Dem will
have an R-Port requiring the interface
CallbackEventUdsStatusChanged, whose name is
generated by using the unique callback-prefix followed
by the event name.
DemCallbackInitMForE 0..1 The presence of this container indicates, that the Dem
has access to an "InitMonitorForEvent" callback, which
the Dem will call to initialize a monitor.
In case there is a
DemCallbackMonitorStatusChangedFnc, this parameter
defines the name of the function that the Dem will call.
In case there is no
DemCallbackMonitorStatusChangedFnc, the Dem will
have an R-Port requiring the interface
CallbackMonitorStatusChanged, whose name is
generated by using the unique callback-prefix followed
by the event name.
DemEventParameter:
+parameter DemEventId: EcucIntegerParamDef
EcucParamConfContainerDef
max = 65535
upperMultiplicity = 65535 min = 1
lowerMultiplicity = 1 symbolicNameValue = true
DemCallbackInitMForEFnc:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DEM_EVENT_KIND_SWC:
+literal
EcucEnumerationLiteralDef
DemEventKind:
+parameter EcucEnumerationParamDef
+literal DEM_EVENT_KIND_BSW:
upperMultiplicity = 1 EcucEnumerationLiteralDef
lowerMultiplicity = 1
DemCallbackEventUdsStatusChangedFnc:
EcucFunctionNameDef
DemCallbackEventUdsStatusChanged:+parameter lowerMultiplicity = 0
+subContainer EcucParamConfContainerDef upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = * A
DemCallbackClearEventAllowedFnc:
EcucFunctionNameDef
+parameter lowerMultiplicity = 0
DemCallbackClearEventAllowed:
EcucParamConfContainerDef upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
DemClearEventAllowedBehavior:
EcucEnumerationParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = DEM_NO_STATUS_BYTE_CHANGE
+literal
DemEventAvailable:
+parameter EcucBooleanParamDef
DEM_NO_STATUS_BYTE_CHANGE:
upperMultiplicity = 1 EcucEnumerationLiteralDef
lowerMultiplicity = 1 +literal
DEM_ONLY_THIS_CYCLE_AND_READINESS:
EcucEnumerationLiteralDef
DemOperationCycleRef:
+reference EcucReferenceDef
+destination DemOperationCycle:
EcucParamConfContainerDef
upperMultiplicity = 256
lowerMultiplicity = 1
DemEventConfirmationThreshold:
EcucIntegerParamDef
+parameter min = 1
max = 255
defaultValue = 1
lowerMultiplicity = 1
upperMultiplicity = 1
DemEventAssociatedIdentification:
EcucIntegerParamDef
+parameter
min = 0
max = 65535
DemEventAvailableInVariant: lowerMultiplicity = 0
EcucBooleanParamDef upperMultiplicity = 1
+parameter
defaultValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
DemEnableConditionGroupRef: DemEnableConditionGroup:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
DemEventParameter: DemDebounceAlgorithmClass:
EcucParamConfContainerDef +subContainer EcucChoiceContainerDef
upperMultiplicity = 65535 lowerMultiplicity = 1
lowerMultiplicity = 1 DemEventConfirmationThresholdCounterAdaptable:
upperMultiplicity = 1 EcucBooleanParamDef
+parameter
defaultValue = false
+parameter lowerMultiplicity = 0
DemFFPrestorageSupported:
upperMultiplicity = 1
EcucBooleanParamDef
DemStorageConditionGroupRef: DemStorageConditionGroup:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
DemIndicatorAttribute: DemIndicator:
+destination
EcucParamConfContainerDef +reference DemIndicatorRef: EcucParamConfContainerDef
EcucReferenceDef
+subContainer upperMultiplicity = 255 upperMultiplicity = 255
lowerMultiplicity = 0 lowerMultiplicity = 0
+parameter DemIndicatorBehaviour:
EcucEnumerationParamDef
DemCallbackEventDataChanged: DemCallbackEventDataChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 0 upperMultiplicity = 1
+reference DemOBDGroupingAssociativeEventsRef:
EcucReferenceDef DemFFPrestorageInNvm: EcucBooleanParamDef
+literal
DemReportBehavior: REPORT_BEFORE_INIT: EcucEnumerationLiteralDef
EcucEnumerationParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 0
defaultValue = REPORT_BEFORE_INIT +literal REPORT_AFTER_INIT: EcucEnumerationLiteralDef
DemEventRecoverableInSameOperationCycle:
EcucBooleanParamDef
+parameter
defaultValue = true DemCausalityDelayTime: EcucFloatParamDef
lowerMultiplicity = 0
upperMultiplicity = 1 min = 0
+parameter max = 2.5
lowerMultiplicity = 0
DemComponentPriority: EcucIntegerParamDef upperMultiplicity = 1
defaultValue = 0
+parameter min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.2.6 DemMultiEventTriggering
No Included Containers
DemMultiEventTriggering:
EcucParamConfContainerDef DemMultiEventTriggeringSlaveEventRef: DemEventParameter:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0 lowerMultiplicity = 1 upperMultiplicity = 65535
upperMultiplicity = 255 lowerMultiplicity = 1
DemMultiEventTriggeringMasterEventRef:
+reference EcucReferenceDef +destination
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.2.7 DemComponent
No Included Containers
DemComponent:
DemComponentId:
EcucParamConfContainerDef
EcucIntegerParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = * max = 65535
min = 1
symbolicNameValue = true
DemComponentIgnoresPriority:
EcucBooleanParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = false
DemComponentFailedCallbackFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
+reference DemImmediateChildComponentRef:
EcucReferenceDef
+destination lowerMultiplicity = 0
upperMultiplicity = *
DemComponentFailedCallbackUsePort:
EcucFunctionNameDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = false
10.2.2.8 DemDTC
No Included Containers
DemConfigSet:
EcucParamConfContainerDef
DemEventParameter:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
+reference
DemDTCRef:
+subContainer DemDtcValue: EcucIntegerParamDef
EcucReferenceDef
max = 16777214
DemDTC: +destination upperMultiplicity = 1
min = 1
EcucParamConfContainerDef lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 65535
lowerMultiplicity = 0 +parameter
+subContainer
DemDTCAttributes:
DemDTCAttributesRef: EcucReferenceDef EcucParamConfContainerDef
+destination
+reference
upperMultiplicity = 1 upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0
+subContainer
DemObdDTC:
DemObdDTCRef: EcucReferenceDef
+reference +destination EcucParamConfContainerDef
upperMultiplicity = 1
upperMultiplicity = 65535
lowerMultiplicity = 0
lowerMultiplicity = 0
+literal DEM_SEVERITY_NO_SEVERITY:
DemDTCSeverity: EcucEnumerationParamDef
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 0
+literal
defaultValue = DEM_SEVERITY_NO_SEVERITY DEM_SEVERITY_MAINTENANCE_ONLY:
EcucEnumerationLiteralDef
+parameter
+literal
DEM_SEVERITY_CHECK_AT_NEXT_HALT:
EcucEnumerationLiteralDef
+literal
DEM_SEVERITY_CHECK_IMMEDIATELY:
EcucEnumerationLiteralDef
DemDTCFunctionalUnit: EcucIntegerParamDef
+parameter max = 255
min = 0
upperMultiplicity = 1
lowerMultiplicity = 0 DEM_DTC_WWHOBD_CLASS_NOCLASS:
+literal EcucEnumerationLiteralDef
DemWWHOBDDTCClass: +literal
EcucEnumerationParamDef DEM_DTC_WWHOBD_CLASS_A:
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 0
+literal
DEM_DTC_WWHOBD_CLASS_B1:
+parameter EcucEnumerationLiteralDef
+literal
DEM_DTC_WWHOBD_CLASS_B2:
EcucEnumerationLiteralDef
+literal
DEM_DTC_WWHOBD_CLASS_C:
EcucEnumerationLiteralDef
+literal DURING_SHUTDOWN:
DemNvStorageStrategy: EcucEnumerationLiteralDef
+parameter EcucEnumerationParamDef
10.2.2.9 DemGroupOfDTC
No Included Containers
DemGroupOfDTC: DemGroupDTCs:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 0 min = 256
upperMultiplicity = 65535 max = 16776959
10.2.2.10 DemOperationCycle
No Included Containers
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
DemOperationCycle: DemOperationCycleId:
EcucParamConfContainerDef EcucIntegerParamDef
+reference DemLeadingCycleRef:
EcucReferenceDef
+destination lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
+destination
+reference
DemEventParameter: DemOperationCycleRef:
EcucParamConfContainerDef EcucReferenceDef
+reference +destination
upperMultiplicity = 65535
lowerMultiplicity = 1
DemGeneralOBD: DemOBDPFCCycleRef:
EcucParamConfContainerDef +reference EcucReferenceDef +destination
upperMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
DemLeadingCycleRef: +reference
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1 +destination
requiresSymbolicNameValue = true
10.2.2.11 DemIndicator
No Included Containers
10.2.2.12 DemIndicatorAttribute
No Included Containers
DemGeneral: +subContainer
EcucParamConfContainerDef DemOperationCycle:
EcucParamConfContainerDef
upperMultiplicity = 1 DemMILIndicatorRef: EcucReferenceDef
lowerMultiplicity = 1 upperMultiplicity = 256
upperMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 0
+destination
DemIndicator: EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
+destination
DemEventParameter:
EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
+subContainer
DemIndicatorAttribute:
EcucParamConfContainerDef DemIndicatorRef: EcucReferenceDef
+reference
upperMultiplicity = 255
lowerMultiplicity = 0
DemIndicatorFailureCycleCounterThreshold:
EcucIntegerParamDef
+parameter
max = 255
min = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DemIndicatorHealingCycleCounterThreshold:
EcucIntegerParamDef
+parameter
max = 255
min = 0
lowerMultiplicity = 1
upperMultiplicity = 1
+literal
DemIndicatorBehaviour: DEM_INDICATOR_CONTINUOUS:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_BLINK_CONT:
EcucEnumerationLiteralDef
+parameter +literal
DEM_INDICATOR_BLINKING:
EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_SLOW_FLASH:
EcucEnumerationLiteralDef
+literal
DEM_INDICATOR_FAST_FLASH:
EcucEnumerationLiteralDef
10.2.2.13 DemNvRamBlockId
No Included Containers
10.2.3 OBD
10.2.3.1 DemGeneralOBD
OBD events with special Conditions (e.g. Pending, MIL_On...) shall not
be displaced.
Multiplicity 1
Type EcucBooleanParamDef
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Included Containers
Container Name Multiplicity Scope / Dependency
DemCallbackOBDDTC 0..* The presence of this container indicates, that the Dem
StatusChanged has access to a "DTCStatusChanged" callback, which
the Dem will call to notify other components about the
change in the status of a DTC.
In case there is no
DemCallbackDTCStatusChangedFnc, the Dem will have
an R-Port requiring the interface
CallbackDTCStatusChanged whose name is generated
by using the unique callback-prefix followed by the event
name.
DemOBDInputEngineSpeed: +destination
+reference EcucChoiceReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1 +destination
+destination
DemOBDInputVehicleSpeed:
+reference EcucChoiceReferenceDef
lowerMultiplicity = 0 +destination
upperMultiplicity = 1
+destination
DemOBDInputDistanceInformation:
+reference EcucChoiceReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1 +destination
+destination
DemOBDInputProgrammingEvent: DemExternalSRDataElemen
+reference EcucChoiceReferenceDef EcucParamConfContaine
+destination
DemOBDInputAmbientTemperature:
+reference EcucChoiceReferenceDef
lowerMultiplicity = 0 +destination
upperMultiplicity = 1
+destination
DemOBDInputAmbientPressure:
+reference EcucChoiceReferenceDef
+destination
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
DemOBDInputAcceleratorPedalInformation:
+reference EcucChoiceReferenceDef
+destination
lowerMultiplicity = 0
upperMultiplicity = 1
DemOBDCentralizedPID21Handling:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemOBDCentralizedPID31Handling:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
DemOBDCompliancy: lowerMultiplicity = 1
EcucIntegerParamDef
+parameter
min = 0
max = 255
lowerMultiplicity = 1
upperMultiplicity = 1 DemOBDDelayedDCYConfirmedAndMIL:
EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 0
DemOBDEventDisplacement:
defaultValue = FALSE
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
10.2.3.2 DemObdDTC
No Included Containers
DemConfigSet: DemDTC:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 0
+subContainer +reference
DemDtcValue: EcucIntegerParamDef
+parameter min = 1
max = 65535
lowerMultiplicity = 0
upperMultiplicity = 1
DemConsiderPtoStatus: EcucBooleanParamDef
+parameter
DemEventOBDReadinessGroup:
EcucEnumerationParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
DemJ1939DTCValue: EcucIntegerParamDef
10.2.3.3 DemRatio
DEM_IUMPR_NOXCAT
DEM_IUMPR_OXS1
DEM_IUMPR_OXS2
DEM_IUMPR_PF1 Particulate Filter Monitor Bank 1
DEM_IUMPR_PF2 Particulate Filter Monitor Bank 2
DEM_IUMPR_PMFILTER
DEM_IUMPR_PRIVATE
DEM_IUMPR_SAIR
DEM_IUMPR_SECOXS1
DEM_IUMPR_SECOXS2
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
DemRatio: DemDiagnosticEventRef: DemEventParameter:
EcucParamConfContainerDef +reference EcucReferenceDef +destination EcucParamConfContainerDef
DemIUMPRGroup:
+parameter EcucEnumerationParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
+literal
DemRatioKind: DEM_RATIO_API:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1 +literal
DEM_RATIO_OBSERVER:
EcucEnumerationLiteralDef
DemRatioId: EcucIntegerParamDef
DemIUMPRDenGroup: +literal
DEM_IUMPR_DEN_NONE:
EcucEnumerationParamDef EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 1
+literal
DEM_IUMPR_DEN_PHYS_API:
EcucEnumerationLiteralDef
+parameter +literal
DEM_IUMPR_DEN_COLDSTART:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_DEN_EVAP:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_DEN_500MILL:
EcucEnumerationLiteralDef
DemIUMPRGroup: +literal
DEM_IUMPR_PRIVATE:
EcucEnumerationParamDef
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 1
+literal
DEM_IUMPR_CAT1:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_CAT2:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_OXS1:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_OXS2:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_EGR:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_SAIR:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_EVAP:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_SECOXS1:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_SECOXS2:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_NMHCCAT:
EcucEnumerationLiteralDef
+literal DEM_IUMPR_NOXCAT:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_NOXADSORB:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_PMFILTER:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_EGSENSOR:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_BOOSTPRS:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_FLSYS:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_AFRI1:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_AFRI2:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_PF1:
EcucEnumerationLiteralDef
+literal
DEM_IUMPR_PF2:
EcucEnumerationLiteralDef
10.2.3.4 DemDtrs
Included Containers
Container Name Multiplicity Scope / Dependency
DemDtr 0..65535 This container holds the configuration of one individual
DTR.
10.2.3.5 DemDtr
The values 0x00, 0x20, 0x40, 0x60, 0x80, 0xA0, 0xC0, 0xE0 are
reserved.
Multiplicity 1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant true
Multiplicity
Post-Build Variant true
Value
Multiplicity Pre-compile time X VARIANT-PRE-COMPILE
Configuration Class
Link time –
Post-build time X VARIANT-POST-BUILD
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE
Class
Link time –
Post-build time X VARIANT-POST-BUILD
Scope / Dependency scope: ECU
No Included Containers
DemConfigSet: EcucParamConfContainerDef
+subContainer
DemDtrs: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
DemDtr: EcucParamConfContainerDef
DemDtrId: EcucIntegerParamDef
upperMultiplicity = 65535
lowerMultiplicity = 0 +parameter max = 65535
min = 0
symbolicNameValue = true
+subContainer
DemDtrMid: EcucIntegerParamDef
+parameter
max = 255
min = 0
DemDtrTid: EcucIntegerParamDef
+parameter
max = 255
min = 0
DemDtrUasid: EcucIntegerParamDef
+parameter
max = 255
min = 0
DemDtrCompuNumerator0:
+parameter EcucFloatParamDef
DemDtrCompuNumerator1:
+parameter EcucFloatParamDef
DemDtrCompuDenominator0:
+parameter EcucFloatParamDef
10.2.3.6 DemPidClass
Included Containers
Container Name Multiplicity Scope / Dependency
DemPidDataElement 1..255 This container contains the different data elements
contained in the specific PID.
DemPidIdentifier: EcucIntegerParamDef
DemPidClass:
EcucParamConfContainerDef max = 255
min = 0
DemConfigSet: EcucParamConfContainerDef upperMultiplicity = 255 +parameter lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
+subContainer
DemPidDataElement:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 1
+reference
DemPidDataElementClassRef: EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
+destination
DemExternalSRDataElementClass:
DemDataElementClass:
+choice EcucParamConfContainerDef
EcucChoiceContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = 65535
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1 +subContainer DemExternalCSDataElementClass:
+choice EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
DemInternalDataElementClass:
+choice EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
10.2.3.7 DemPidDataElement
No Included Containers
10.2.4 J1939
10.2.4.1 DemGeneralJ19139
Included Containers
Container Name Multiplicity Scope / Dependency
DemCallbackJ1939DTC 0..* The presence of this container indicates, that the Dem
StatusChanged has access to a "DTCStatusChanged" callback, which
the Dem will call to notify other components about the
change in the status of a DTC.
In case there is no
DemCallbackDTCStatusChangedFnc, the Dem will have
an R-Port requiring the interface
CallbackDTCStatusChanged whose name is generated
by using the unique callback-prefix followed by the event
name.
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
DemDataElementClass:
EcucChoiceContainerDef
lowerMultiplicity = 0 +destination
upperMultiplicity = 65535
+subContainer
DemGeneralJ1939: DemJ1939ReadingDtcSupport:
EcucParamConfContainerDef +parameter EcucBooleanParamDef
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 1
DemJ1939FreezeFrameSupport:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939ExpandedFreezeFrameSupport:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939RatioSupport:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939Dm31Support:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939Readiness1Support:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939Readiness2Support:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939Readiness3Support:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemJ1939ClearDtcSupport:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemCallbackJ1939DTCStatusChanged: DemCallbackDTCStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
DemJ1939FreezeFrameClass: DemJ1939FreezeFrameClassRef:
EcucParamConfContainerDef +destination EcucReferenceDef
+subContainer
upperMultiplicity = 255 upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
10.2.4.2 DemJ1939FreezeFrameClass
Attributes:
requiresIndex=true
Multiplicity 1..255
Type Reference to DemSPNClass
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
DemEventParameter:
EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
DemJ1939ExpandedFreezeFrameClassRef:
+destination EcucReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 0
+reference
DemSPNClassRef:
EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 255
requiresIndex = true
+destination
DemSPNDataElementClassRef:
+reference EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
+destination
DemDataElementClass:
EcucChoiceContainerDef
lowerMultiplicity = 0
upperMultiplicity = 65535
10.2.4.3 DemSPNClass
No Included Containers
DemGeneral:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
DemGeneralJ1939:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
DemSPNDataElementClassRef:
+reference EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.5 Conditions
10.2.5.1 DemEnableCondition
No Included Containers
10.2.5.2 DemEnableConditionGroup
No Included Containers
DemEventParameter: DemEnableConditionGroupRef:
EcucParamConfContainerDef +reference EcucReferenceDef
+destination
+destination
DemEnableCondition: DemEnableConditionId:
EcucParamConfContainerDef EcucIntegerParamDef
DemEnableConditionStatus:
+parameter EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.5.3 DemStorageCondition
No Included Containers
10.2.5.4 DemStorageConditionGroup
No Included Containers
DemGeneral: DemStorageCondition: DemStorageConditionId: EcucIntegerParamDef
EcucParamConfContainerDef EcucParamConfContainerDef
+parameter symbolicNameValue = true
upperMultiplicity = 1 upperMultiplicity = 255 min = 0
lowerMultiplicity = 1 lowerMultiplicity = 0 max = 255
DemStorageConditionStatus:
+subContainer +parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemStorageConditionReplacementEventRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
DemStorageConditionRef:
EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 255
+reference
DemStorageConditionGroup:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 255
lowerMultiplicity = 0
+destination
DemStorageConditionGroupRef:
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+reference
DemEventParameter:
EcucParamConfContainerDef +destination
upperMultiplicity = 65535
lowerMultiplicity = 1
10.2.6.1 DemEventMemorySet
Included Containers
Container Name Multiplicity Scope / Dependency
DemClearDTC 0..255 Contains callback function definition which are called
Notification during clear DTC operations.
DemIndicator 0..255 This container contains the configuration (parameters)
for Indicators.
DemMirrorMemory 0..1 This container contains the mirror event memory
specific parameters of the Dem module.
DemPrimaryMemory 1 This container contains the primary event memory
specific parameters of the Dem module.
DemUserDefinedMemory 0..30 This container contains the user defined event memory
specific parameters of the Dem module.
DemEventMemorySet: DemIndicatorID:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
DemIndicator: EcucParamConfContainerDef
upperMultiplicity = 255
+subContainer lowerMultiplicity = 0
DemMILIndicatorRef: EcucReferenceDef
upperMultiplicity = 1
+reference lowerMultiplicity = 0
DemProtectLampIndicatorRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemRedStopLampIndicatorRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemAmberWarningLampIndicatorRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemEventMemorySet: DemMaxNumberEventEntryPrimary:
DemPrimaryMemory:
EcucParamConfContainerDef EcucIntegerParamDef
+subContainer EcucParamConfContainerDef +parameter
lowerMultiplicity = 1 max = 255
lowerMultiplicity = 1
upperMultiplicity = 255 min = 1
upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 1
DemMaxNumberEventEntryMirror:
DemMirrorMemory: EcucIntegerParamDef
+subContainer EcucParamConfContainerDef +parameter
min = 1
lowerMultiplicity = 0 max = 255
upperMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = 1
DemUserDefinedMemory: DemMaxNumberEventEntryUserDefined:
EcucParamConfContainerDef +parameter EcucIntegerParamDef
lowerMultiplicity = 0 min = 1
upperMultiplicity = 30 max = 255
+subContainer
DemUserDefinedMemoryIdentifier:
+parameter EcucIntegerParamDef
min = 0
max = 255
symbolicNameValue = true
DemClearDTCNotification:
EcucParamConfContainerDef START:
+literal
lowerMultiplicity = 0 DemClearDtcNotificationTime: EcucEnumerationLiteralDef
upperMultiplicity = 255 EcucEnumerationParamDef
+parameter
lowerMultiplicity = 1
+subContainer upperMultiplicity = 1 +literal FINISH:
EcucEnumerationLiteralDef
DemClearDtcNotificationFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemMaxNumberEventEntryPermanent:
EcucIntegerParamDef
+parameter
max = 255
min = 0
upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1 +literal
DEM_DTC_TRANSLATION_ISO14229_1:
EcucEnumerationLiteralDef
+literal
DEM_DTC_TRANSLATION_SAEJ1939_73:
EcucEnumerationLiteralDef
+literal
DEM_DTC_TRANSLATION_SAE_J2012_DA_DTCFORMAT_04:
EcucEnumerationLiteralDef
10.2.6.2 DemPrimaryMemory
Description This container contains the primary event memory specific parameters
of the Dem module.
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DemGroupOfDTC 0..65535 This container contains the configuration (parameters)
for DTC groups.
DemEventMemorySet:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 255
+subContainer
DemPrimaryMemory: DemMaxNumberEventEntryPrimary:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 1 max = 255
upperMultiplicity = 1 min = 1
upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 0
+parameter upperMultiplicity = 1 +literal DEM_CAPTURE_ASYNCHRONOUS_TO_REPORTING:
EcucEnumerationLiteralDef
DemEventDisplacementStrategy: +literal
DEM_DISPLACEMENT_NONE:
EcucEnumerationParamDef
EcucEnumerationLiteralDef
upperMultiplicity = 1
lowerMultiplicity = 1
+parameter +literal
DEM_DISPLACEMENT_FULL:
EcucEnumerationLiteralDef
+literal
DEM_DISPLACEMENT_PRIO_OCC:
EcucEnumerationLiteralDef
+literal
DemEventMemoryEntryStorageTrigger: DEM_TRIGGER_ON_FDC_THRESHOLD:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter lowerMultiplicity = 1
+literal
upperMultiplicity = 1 DEM_TRIGGER_ON_CONFIRMED:
defaultValue = DEM_TRIGGER_ON_TEST_FAILED EcucEnumerationLiteralDef
+literal DEM_TRIGGER_ON_TEST_FAILED:
EcucEnumerationLiteralDef
+literal
DemOccurrenceCounterProcessing: DEM_PROCESS_OCCCTR_TF:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter
+literal
DEM_PROCESS_OCCCTR_CDTC:
EcucEnumerationLiteralDef
+literal
DemTypeOfFreezeFrameRecordNumeration: DEM_FF_RECNUM_CALCULATED:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter
+literal
DEM_FF_RECNUM_CONFIGURED:
EcucEnumerationLiteralDef
DemGroupOfDTC:
EcucParamConfContainerDef
+subContainer lowerMultiplicity = 0
upperMultiplicity = 65535
+parameter DemDtcStatusAvailabilityMask:
EcucIntegerParamDef
min = 0
max = 255
10.2.6.3 DemMirrorMemory
No Included Containers
10.2.6.4 DemUserDefinedMemory
Included Containers
Container Name Multiplicity Scope / Dependency
DemGroupOfDTC 0..65535 This container contains the configuration (parameters)
for DTC groups.
DemEventMemorySet:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 255
DemMaxNumberEventEntryUserDefined:
+subContainer EcucIntegerParamDef
+parameter min = 1
DemUserDefinedMemory:
max = 255
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 30 DemUserDefinedMemoryIdentifier:
+parameter EcucIntegerParamDef
min = 0
max = 255
symbolicNameValue = true
+literal
DemEnvironmentDataCapture: DEM_CAPTURE_SYNCHRONOUS_TO_REPORTING:
+parameter EcucEnumerationParamDef EcucEnumerationLiteralDef
lowerMultiplicity = 0 +literal
upperMultiplicity = 1 DEM_CAPTURE_ASYNCHRONOUS_TO_REPORTING:
EcucEnumerationLiteralDef
+literal
DemEventDisplacementStrategy: DEM_DISPLACEMENT_NONE:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter upperMultiplicity = 1
lowerMultiplicity = 1 +literal
DEM_DISPLACEMENT_FULL:
EcucEnumerationLiteralDef
+literal
DEM_DISPLACEMENT_PRIO_OCC:
EcucEnumerationLiteralDef
+literal
DemEventMemoryEntryStorageTrigger: DEM_TRIGGER_ON_FDC_THRESHOLD:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter lowerMultiplicity = 1
upperMultiplicity = 1 +literal
DEM_TRIGGER_ON_CONFIRMED:
defaultValue = DEM_TRIGGER_ON_TEST_FAILED EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_TEST_FAILED:
EcucEnumerationLiteralDef
+literal DEM_PROCESS_OCCCTR_TF:
DemOccurrenceCounterProcessing:
+parameter EcucEnumerationParamDef EcucEnumerationLiteralDef
+literal
DEM_PROCESS_OCCCTR_CDTC:
EcucEnumerationLiteralDef
DemTypeOfFreezeFrameRecordNumeration: +literal
DEM_FF_RECNUM_CALCULATED:
+parameter EcucEnumerationParamDef EcucEnumerationLiteralDef
+literal
DEM_FF_RECNUM_CONFIGURED:
EcucEnumerationLiteralDef
lowerMultiplicity = 0
upperMultiplicity = 65535
DemDtcStatusAvailabilityMask:
+parameter EcucIntegerParamDef
min = 0
max = 255
10.2.7 Debouncing
10.2.7.1 DemDebounceAlgorithmClass
Container Choices
Container Name Multiplicity Scope / Dependency
DemDebounceCounter 0..1 This container contains the configuration (parameters)
Based for counter based debouncing.
DemDebounceMonitor 0..1 This container contains the configuration (parameters)
Internal for monitor internal debouncing.
DemDebounceTimeBase 0..1 This container contains the configuration (parameters)
for time based debouncing.
DemEventParameter:
EcucParamConfContainerDef
upperMultiplicity = 65535
lowerMultiplicity = 1
+subContainer
DemDebounceAlgorithmClass: DemDebounceTimeBase:
EcucChoiceContainerDef EcucParamConfContainerDef DemDebounceTimeBaseRef:
+choice +reference EcucReferenceDef
lowerMultiplicity = 1 upperMultiplicity = 1
upperMultiplicity = 1 lowerMultiplicity = 0 upperMultiplicity = 1
lowerMultiplicity = 1
DemDebounceCounterBased:
EcucParamConfContainerDef DemDebounceCounterBasedClassRef:
+choice +reference EcucReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
lowerMultiplicity = 1
DemDebounceMonitorInternal:
EcucParamConfContainerDef DemCallbackGetFDC:
+choice +subContainer EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1
+parameter
DemCallbackGetFDCFnc:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.7.2 DemDebounceCounterBased
No Included Containers
DemDebounceAlgorithmClass:
EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+choice
DemDebounceCounterBased:
EcucParamConfContainerDef DemDebounceCounterBasedClassRef: DemDebounceCounterBasedClass:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1 upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0
10.2.7.3 DemDebounceCounterBasedClass
No Included Containers
DemConfigSet:
EcucParamConfContainerDef
+subContainer
DemDebounceCounterBasedClass: DemDebounceCounterIncrementStepSize:
EcucParamConfContainerDef +parameter EcucIntegerParamDef
upperMultiplicity = 65535 max = 32767
lowerMultiplicity = 0 min = 1
DemDebounceCounterDecrementStepSize:
+parameter EcucIntegerParamDef
max = 32768
min = 1
DemDebounceCounterFailedThreshold:
+parameter EcucIntegerParamDef
max = 32767
min = 1
DemDebounceCounterPassedThreshold:
+parameter EcucIntegerParamDef
max = -1
min = -32768
DemDebounceCounterJumpUp:
+parameter EcucBooleanParamDef
DemDebounceCounterJumpDown:
+parameter EcucBooleanParamDef
DemDebounceCounterJumpDownValue:
EcucIntegerParamDef
+parameter
max = 32767
min = -32768
defaultValue = 0
DemDebounceCounterJumpUpValue:
EcucIntegerParamDef
+parameter
max = 32767
min = -32768
defaultValue = 0
DemDebounceCounterStorage:
+parameter
EcucBooleanParamDef
defaultValue = false
DemCounterBasedFdcThresholdStorageValue:
EcucIntegerParamDef
+parameter
max = 32767
min = 1
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.7.4 DemDebounceTimeBase
No Included Containers
DemDebounceAlgorithmClass:
EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+choice
DemDebounceTimeBase:
DemDebounceTimeBaseClass:
EcucParamConfContainerDef
DemDebounceTimeBaseRef: EcucParamConfContainerDef
upperMultiplicity = 1 +reference EcucReferenceDef +destination
upperMultiplicity = 65535
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 1
10.2.7.5 DemDebounceTimeBaseClass
No Included Containers
DemConfigSet:
EcucParamConfContainerDef
+subContainer
DemDebounceTimeBaseClass: DemDebounceTimeFailedThreshold:
EcucParamConfContainerDef EcucFloatParamDef
+parameter
upperMultiplicity = 65535 min = 0.001
lowerMultiplicity = 0 max = 3600.0
DemDebounceTimePassedThreshold:
+parameter EcucFloatParamDef
min = 0.001
max = 3600.0
+literal
DemDebounceBehavior: DEM_DEBOUNCE_FREEZE:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter upperMultiplicity = 1
lowerMultiplicity = 1
+literal DEM_DEBOUNCE_RESET:
EcucEnumerationLiteralDef
DemTimeBasedFdcThresholdStorageValue:
EcucFloatParamDef
+parameter
max = 3600
min = 0.001
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.7.6 DemDebounceMonitorInternal
Included Containers
Container Name Multiplicity Scope / Dependency
DemCallbackGetFDC 0..1 DemCallbackGetFDC specifies the callback (parameter
DemCallbackGetFDCFnc is present) or R-Port (no
parameter DemCallbackGetFDCFnc is present) to
retrieve the fault detection counter value. In case no
container is configured, no fault detection counter will be
available.
+parameter
DemCallbackGetFDCFnc:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.8 Callbacks
10.2.8.1 DemCallbackClearEventAllowed
No Included Containers
10.2.8.2 DemCallbackDTCStatusChanged
No Included Containers
10.2.8.3 DemCallbackJ1939DTCStatusChanged
No Included Containers
10.2.8.4 DemCallbackOBDDTCStatusChanged
No Included Containers
DemGeneral: EcucParamConfContainerDef
DemCallbackDTCStatusChanged: DemCallbackDTCStatusChangedFnc:
upperMultiplicity = 1 +parameter EcucFunctionNameDef
EcucParamConfContainerDef
lowerMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
+subContainer
+subContainer
10.2.8.5 DemCallbackGetFDC
No Included Containers
10.2.8.6 DemCallbackEventDataChanged
No Included Containers
10.2.8.7 DemCallbackEventUdsStatusChanged
No Included Containers
10.2.8.8 DemCallbackMonitorStatusChanged
No Included Containers
DemEventParameter:
EcucParamConfContainerDef DemCallbackEventUdsStatusChanged: DemCallbackEventUdsStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
upperMultiplicity = 65535
lowerMultiplicity = 1 lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * A upperMultiplicity = 1
DemCallbackMonitorStatusChanged: DemCallbackMonitorStatusChangedFnc:
+subContainer EcucParamConfContainerDef +parameter EcucFunctionNameDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * A upperMultiplicity = 1
10.2.8.9 DemCallbackInitMForE
Regular Expression
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency
No Included Containers
10.2.8.10 DemClearDTCNotification
No Included Containers
10.2.8.11 DemCallbackEventSyncStorageProcessed
Tags:
atp.Status=draft
Post-Build Variant false
Multiplicity
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Configuration Parameters
Tags:
atp.Status=draft
Multiplicity 1
Type EcucFunctionNameDef
Default Value
Regular Expression
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
No Included Containers
DemGeneral: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
DemExtendedDataClassRef: DemFreezeFrameClassRef:
EcucReferenceDef EcucReferenceDef
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
DemExtendedDataClass: DemFreezeFrameClass:
EcucParamConfContainerDef EcucParamConfContainerDef
+reference +reference
+subContainer
+destination +reference
DemDataElementClass:
EcucChoiceContainerDef DemDidDataElementClassRef:
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 65535 lowerMultiplicity = 1
+destination upperMultiplicity = 255
requiresIndex = true
DemInternalDataElementClass: EcucParamConfContainerDef
+choice
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 0
DemExternalSRDataElementClass: EcucParamConfContainerDef
+choice
upperMultiplicity = 1
lowerMultiplicity = 0
DemPidDataElementClassRef: EcucReferenceDef
+destination
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.9.1 DemFreezeFrameClass
Attributes:
requiresIndex=true
Multiplicity 1..255
Type Reference to DemDidClass
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
DemConfigSet:
EcucParamConfContainerDef
DemPidClass: DemPidIdentifier:
+subContainer EcucParamConfContainerDef EcucIntegerParamDef
+subContainer
DemPidDataElementClassRef:
DemPidDataElement: EcucReferenceDef
+reference
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 255 upperMultiplicity = 1
lowerMultiplicity = 1
+destination
+subContainer
DemGeneral: DemDataElementClass:
EcucParamConfContainerDef EcucChoiceContainerDef
DemDidIdentifier: EcucIntegerParamDef
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 1 min = 0 upperMultiplicity = 65535
max = 65535
lowerMultiplicity = 1
upperMultiplicity = 1 +destination
+parameter DemDidDataElementClassRef:
EcucReferenceDef
DemDidClass: +reference lowerMultiplicity = 1
EcucParamConfContainerDef upperMultiplicity = 255
+subContainer
requiresIndex = true
upperMultiplicity = 65535
lowerMultiplicity = 0 +subContainer
DemDTCAttributes: EcucParamConfContainerDef
+destination
upperMultiplicity = 65535
lowerMultiplicity = 0
DemDidClassRef: EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 255
+reference +reference
requiresIndex = true
DemFreezeFrameClassRef: DemFreezeFrameRecNumClassRef:
+reference
EcucReferenceDef EcucReferenceDef
upperMultiplicity = 1 lowerMultiplicity = 0
DemFreezeFrameClass:
lowerMultiplicity = 0 upperMultiplicity = 1
EcucParamConfContainerDef
+subContainer
upperMultiplicity = 65535 +destination
lowerMultiplicity = 0
+destination
DemFreezeFrameRecNumClass:
+subContainer EcucParamConfContainerDef DemFreezeFrameRecordClassRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 65535 lowerMultiplicity = 1
upperMultiplicity = 254
requiresIndex = true
+destination
DemFreezeFrameRecordClass: EcucParamConfContainerDef
+subContainer
lowerMultiplicity = 0
upperMultiplicity = 65535
10.2.9.2 DemFreezeFrameRecordClass
Tags:
atp.Status=draft
Multiplicity 1
Type EcucEnumerationParamDef
Range DEM_TRIGGER_ON_CO Event Memory entries are triggered if
NFIRMED the UDS status bit 3 (confirmedDTC)
changes from 0 to 1.
DEM_TRIGGER_ON_EVE EventMemory entries are triggered
RY_TEST_FAILED every time the event is reported as
FAILED or PRE_FAILED results in
failed.
DEM_TRIGGER_ON_FD Event Memory entries are triggered
C_THRESHOLD when the FDC threshold is reached.
DEM_TRIGGER_ON_PE Event Memory entries are triggered if
NDING the UDS status bit 2 (pendingDTC)
changes from 0 to 1.
DEM_TRIGGER_ON_TES Event Memory entries are triggered if
T_FAILED the UDS status bit 0 (testFailed)
changes from 0 to 1.
No Included Containers
DemFreezeFrameRecordNumber:
DemFreezeFrameRecordClass: EcucIntegerParamDef
EcucParamConfContainerDef
+parameter min = 0
lowerMultiplicity = 0 max = 254
upperMultiplicity = 65535 lowerMultiplicity = 1
upperMultiplicity = 1
+literal
DemFreezeFrameRecordUpdate: DEM_UPDATE_RECORD_NO:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
+literal DEM_UPDATE_RECORD_YES:
EcucEnumerationLiteralDef
lowerMultiplicity = 1
+literal
upperMultiplicity = 1 DEM_TRIGGER_ON_FDC_THRESHOLD:
EcucEnumerationLiteralDef
+parameter
+literal
DEM_TRIGGER_ON_PENDING:
EcucEnumerationLiteralDef
+literal DEM_TRIGGER_ON_TEST_FAILED:
EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_EVERY_TEST_FAILED:
EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_TEST_FAILED_THIS_OPERATION_CYCLE:
EcucEnumerationLiteralDef
10.2.9.3 DemFreezeFrameRecNumClass
Attributes:
requiresIndex=true
Multiplicity 1..254
Type Reference to DemFreezeFrameRecordClass
Post-Build Variant false
Multiplicity
No Included Containers
10.2.9.4 DemExtendedDataClass
Attributes:
requiresIndex=true
Multiplicity 1..253
Type Reference to DemExtendedDataRecordClass
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency
No Included Containers
DemDataElementClass: DemInternalDataElementClass:
DemGeneral:
EcucChoiceContainerDef +choice EcucParamConfContainerDef
EcucParamConfContainerDef +subContainer
lowerMultiplicity = 0 upperMultiplicity = 1
upperMultiplicity = 1
upperMultiplicity = 65535 lowerMultiplicity = 0
lowerMultiplicity = 1
DemExternalCSDataElementClass:
+choice EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+choice
DemExternalSRDataElementClass:
+destination EcucParamConfContainerDef
+subContainer
upperMultiplicity = 1
DemExtendedDataRecordClass: DemDataElementClassRef: lowerMultiplicity = 0
EcucParamConfContainerDef EcucReferenceDef
+reference
upperMultiplicity = 253 upperMultiplicity = 255
lowerMultiplicity = 0 lowerMultiplicity = 1
requiresIndex = true
DemExtendedDataRecordUpdate: +literal
DEM_UPDATE_RECORD_NO:
EcucEnumerationParamDef EcucEnumerationLiteralDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1 +literal
DEM_UPDATE_RECORD_YES:
EcucEnumerationLiteralDef
DemExtendedDataRecordNumber:
+parameter EcucIntegerParamDef
max = 239
min = 1
lowerMultiplicity = 0
+literal
upperMultiplicity = 1 DEM_TRIGGER_ON_FDC_THRESHOLD:
EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_PENDING:
EcucEnumerationLiteralDef
+parameter
+literal DEM_TRIGGER_ON_TEST_FAILED:
EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_PASSED:
EcucEnumerationLiteralDef
+literal
DEM_TRIGGER_ON_MIRROR:
EcucEnumerationLiteralDef
+destination
DemExtendedDataClass: DemExtendedDataRecordClassRef:
EcucParamConfContainerDef EcucReferenceDef
+reference
+subContainer lowerMultiplicity = 0 upperMultiplicity = 253
upperMultiplicity = 65535 lowerMultiplicity = 1
requiresIndex = true
+destination
DemDTCAttributes: DemExtendedDataClassRef:
EcucParamConfContainerDef +reference EcucReferenceDef
10.2.9.5 DemExtendedDataRecordClass
0xF0 to 0xFF are reserved by ISO (therefore the maximal value equals
239)
Multiplicity 1
Type EcucIntegerParamDef
Range 1 .. 239
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
Attributes:
requiresIndex=true
Multiplicity 1..255
Type Reference to DemDataElementClass
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
No Included Containers
10.2.10.1 DemDataElementClass
Container Choices
Container Name Multiplicity Scope / Dependency
DemExternalCSData 0..1 This container contains the configuration (parameters)
ElementClass for an external client/server based data element class.
It defines, how the Dem can obtain the value of the data
element from either a SW-C or another BSW module.
Whether a client/server port or a C function-call is used,
is defined by DemDataElementUsePort.
DemExternalSRData 0..1 This container contains the configuration (parameters)
ElementClass for an external sender/receiver based data element
class. It defines, how the Dem can obtain the value of
the data element from a SW-C, by using a
sender/receiver port.
DemInternalDataElement 0..1 This container contains the configuration (parameters)
Class for an internal data element class.
DemGeneral:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
+parameter DemInternalDataElement:
EcucEnumerationParamDef
DemExternalCSDataElementClass: DemDataElementArraySize:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = 1 min = 1
lowerMultiplicity = 0 max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
DemDataElementDataType:
+parameter EcucEnumerationParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
+choice DemDataElementUsePort:
+parameter EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
DemDataElementReadFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DemDataElementProvideMonitorData:
EcucBooleanParamDef
+parameter
defaultValue = false
lowerMultiplicity = 1
upperMultiplicity = 1
DemExternalSRDataElementClass: DemDataElementArraySize:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = 1 max = 4294967295
lowerMultiplicity = 0 min = 1
lowerMultiplicity = 0
+choice upperMultiplicity = 1
DemSRDataElementClass:
+subContainer EcucChoiceContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+literal SINT8:
EcucEnumerationLiteralDef
+literal UINT16:
EcucEnumerationLiteralDef
+literal SINT16:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal UINT8_N:
EcucEnumerationLiteralDef
+literal SINT8_N:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+literal SINT16_N:
EcucEnumerationLiteralDef
+literal UINT32_N:
EcucEnumerationLiteralDef
+literal SINT32_N:
EcucEnumerationLiteralDef
+literal FLOAT:
EcucEnumerationLiteralDef
+literal FLOAT_N:
EcucEnumerationLiteralDef
10.2.10.2 DemDataElementInstance
No Included Containers
10.2.10.3 DemDidClass
Attributes:
requiresIndex=true
Multiplicity 1..255
Type Reference to DemDataElementClass
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
10.2.10.4 DemInternalDataElementClass
No Included Containers
+literal
DemInternalDataElement: DEM_OCCCTR: EcucEnumerationLiteralDef
EcucEnumerationParamDef
+literal DEM_AGINGCTR_UPCNT:
EcucEnumerationLiteralDef
+literal
DEM_MONITOR_DATA_0:
+literal EcucEnumerationLiteralDef
DEM_AGINGCTR_DOWNCNT:
EcucEnumerationLiteralDef
+literal DEM_MONITOR_DATA_1:
EcucEnumerationLiteralDef
+literal DEM_SIGNIFICANCE: EcucEnumerationLiteralDef
+literal DEM_MAX_FDC_SINCE_LAST_CLEAR:
EcucEnumerationLiteralDef
+literal
DEM_EVENT_ASSOCIATED_IDENTIFICATION:
EcucEnumerationLiteralDef
+literal DEM_MAX_FDC_DURING_CURRENT_CYCLE:
EcucEnumerationLiteralDef
+literal DEM_CYCLES_SINCE_LAST_FAILED:
EcucEnumerationLiteralDef
+literal DEM_CYCLES_SINCE_FIRST_FAILED:
EcucEnumerationLiteralDef
+literal DEM_FAILED_CYCLES:
EcucEnumerationLiteralDef
+literal
DEM_CLR_DIST: EcucEnumerationLiteralDef
+literal DEM_AGINGCTR_UPCNT_FIRST_ACTIVE:
EcucEnumerationLiteralDef
+literal DEM_J1939LAMP_STATUS:
EcucEnumerationLiteralDef
10.2.10.5 DemExternalCSDataElementClass
It defines, how the Dem can obtain the value of the data element from
either a SW-C or another BSW module. Whether a client/server port or
a C function-call is used, is defined by DemDataElementUsePort.
Configuration Parameters
No Included Containers
10.2.10.6 DemExternalSRDataElementClass
Included Containers
Container Name Multiplicity Scope / Dependency
DemDiagnosisScaling 0..1 This container contains the configuration (parameters)
of an alternative Diagnosis Representation. Out if this
the scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
DemSRDataElement 0..1 This container defines the source of data in a provided
Class port which shall be read for a external data element
DemExternalSRDataElementClass: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
+parameter
DemDiagnosisScaling: +parameter
EcucChoiceContainerDef DemDataElementArraySize:
EcucIntegerParamDef DemDataElementDataType:
EcucEnumerationParamDef
lowerMultiplicity = 0 max = 4294967295
upperMultiplicity = 1 min = 1 lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
upperMultiplicity = 1
+subContainer
+parameter DemSRDataElementClass:
EcucChoiceContainerDef
DemDataElementEndianness: +literal LITTLE_ENDIAN: lowerMultiplicity = 0
EcucEnumerationParamDef EcucEnumerationLiteralDef upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
+literal OPAQUE:
EcucEnumerationLiteralDef
+literal
BIG_ENDIAN:
EcucEnumerationLiteralDef
DemPortInterfaceMapping: EcucForeignReferenceDef
lowerMultiplicity = 0
+reference upperMultiplicity = 1
destinationType = PORT-INTERFACE-MAPPING
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 1
destinationType = APPLICATION-DATA-TYPE
+subContainer
DemInternalDataValue: EcucIntegerParamDef
DemTextTableMapping:
EcucParamConfContainerDef +parameter lowerMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = * A
DemDiagnosisRepresentationDataValue:
+parameter EcucIntegerParamDef
lowerMultiplicity = 1
upperMultiplicity = 1 A
+choice
DemAlternativeDiagnosticDataElement:
EcucParamConfContainerDef DemDiagnosticDataElementRef: EcucForeignReferenceDef
+reference
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 1
destinationType = DIAGNOSTIC-DATA-ELEMENT
10.2.10.7 DemSRDataElementClass
Container Choices
Container Name Multiplicity Scope / Dependency
DemDataElement 0..1 Instance Reference to the primitive data in a port where
Instance the data element is typed with an
ApplicationPrimitveDataType or an
ImplementationDataType.
DemSubElementInData 0..1 Instance Reference to the primitve sub-element (at any
ElementInstance level) of composite data in a port where the data element
is typed with an ApplicationCompositeDataType.
DemSubElementInImpl 0..1 Instance Reference to the primitve sub-element (at any
DataElementInstance level) of composite data in a port where the data
element is typed with an ImplementationDataType of
category STRUCTURE or ARRAY.
10.2.10.8 DemSubElementInDataElementInstance
No Included Containers
10.2.10.9 DemSubElementInImplDataElementInstance
No Included Containers
10.2.10.10 DemDiagnosisScaling
Container Choices
Container Name Multiplicity Scope / Dependency
DemAlternativeData 0..1 This container contains the configuration (parameters)
Interface of an alternative Diagnosis Representation by the
means of a VariableDataPrototoype in a DataInterface.
10.2.10.11 DemAlternativeDataInterface
No Included Containers
10.2.10.12 DemAlternativeDiagnosticDataElement
No Included Containers
10.2.10.13 DemAlternativeDataType
Included Containers
Container Name Multiplicity Scope / Dependency
DemTextTableMapping 0..* The purpose of the DemDspTextTableMapping is to
associate a texttable value defined in the context of the
Dem to a texttable value defined in the context of a
CompuMethod referenced by a DataType that shall be
taken to create a dataElement in a
SenderReceiverInterface. By this means it is possible to
create a primitive version of a TexttableMapping (which
can only be applied if a dataElement already exists).
10.2.10.14 DemTextTableMapping
No Included Containers