AUTOSAR SWS DiagnosticCommunicationManager
AUTOSAR SWS DiagnosticCommunicationManager
Manager
AUTOSAR CP R20-11
Specification of Diagnostic
Document Title Communication Manager
Document Owner AUTOSAR
Document Responsibility AUTOSAR
Document Identification No 18
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 22
6 Requirements Tracing 31
7 Functional specification 46
7.1 Security Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.2 Error Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.2.1 Development Errors . . . . . . . . . . . . . . . . . . . . . . . 47
7.2.2 Runtime Errors . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.3 Transient Faults . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.4 Production Errors . . . . . . . . . . . . . . . . . . . . . . . . 48
7.2.5 Extended Production Errors . . . . . . . . . . . . . . . . . . . 48
7.3 General design elements . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.3.1 Submodules within the Dcm module . . . . . . . . . . . . . . 49
7.3.2 Negative Response Code (NRC) . . . . . . . . . . . . . . . . 50
7.3.3 Non-volatile information . . . . . . . . . . . . . . . . . . . . . 50
7.3.4 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.4.1 Atomic types overview . . . . . . . . . . . . . . . . . 51
7.3.4.2 Data array types overview . . . . . . . . . . . . . . . 51
7.3.4.3 Data types constraints . . . . . . . . . . . . . . . . . 51
7.3.4.4 Dcm_OpStatusType . . . . . . . . . . . . . . . . . . 52
7.3.4.5 Dcm_Cemr_{DID}Type . . . . . . . . . . . . . . . . . 53
7.4 Diagnostic Session Layer (DSL) . . . . . . . . . . . . . . . . . . . . . . 53
7.4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.4.2 Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.4.3 Interaction with other modules . . . . . . . . . . . . . . . . . 53
7.4.4 Functional description . . . . . . . . . . . . . . . . . . . . . . 54
7.4.4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . 54
7.4.4.2 Forward requests from the PduR module to the DSD
submodule . . . . . . . . . . . . . . . . . . . . . . . 55
7.4.4.2.1 Dcm_StartOfReception . . . . . . . . . . . . . 56
7.4.4.2.2 Dcm_CopyRxData . . . . . . . . . . . . . . . . 57
7.4.4.2.3 Dcm_TpRxIndication . . . . . . . . . . . . . . 57
7.4.4.3 Concurrent TesterPresent (”keep alive logic”) 58
7.4.4.3.1 Dcm_CopyTxData . . . . . . . . . . . . . . . . 58
7.4.4.3.2 Dcm_TpTxConfirmation . . . . . . . . . . . . . 59
7.4.4.4 Forward responses from the DSD submodule to the
PduR module . . . . . . . . . . . . . . . . . . . . . . 59
7.4.4.5 Generic Connection Handling . . . . . . . . . . . . . 60
7.4.4.6 Guarantee timing to tester by sending busy responses 61
7.4.4.7 Support of periodic transmission . . . . . . . . . . . 62
7.4.4.8 Support of ROE transmission . . . . . . . . . . . . . 62
7.4.4.8.1 ResponseOnEvent StateChar . . . . . . . . . 63
7.4.4.8.1.1 Initializing Dcm (1) . . . . . . . . . . . . 63
7.4.4.8.1.2 Transition from ’ROE cleared’ to ’ROE
stopped’ (2) . . . . . . . . . . . . . . . . 63
7.4.4.8.1.3 Transition from ’ROE stopped’ to ’ROE
cleared’ (3) . . . . . . . . . . . . . . . . 64
7.4.4.8.1.4 Transition from ’ROE stopped’ to ’ROE
started’ (4) . . . . . . . . . . . . . . . . 64
7.4.4.8.1.5 Transition from ’ROE started’ to ’ROE
stopped’ (5) . . . . . . . . . . . . . . . . 64
7.4.4.8.1.6 Transition from ’ROE started’ to ’ROE
started’ (6) . . . . . . . . . . . . . . . . 65
7.4.4.8.1.7 Transition from ’ROE started’ to ’ROE
cleared’ (7) . . . . . . . . . . . . . . . . 65
7.4.4.8.1.8 Transition from ’ROE cleared’ to ’ROE
cleared’ (8) . . . . . . . . . . . . . . . . 65
7.4.4.8.1.9 Transition from ’ROE cleared’ to ’ROE
started’ (9) . . . . . . . . . . . . . . . . 65
7.4.4.8.1.10 Transition from ’ROE stopped’ to ’ROE
stopped’ (10) . . . . . . . . . . . . . . . 66
7.4.4.8.2 ROE sub-functions . . . . . . . . . . . . . . . 66
7.4.4.8.3 EventWindowTime and StorageState . . . . . 66
7.4.4.8.4 Pre-configuration of ResponseOnEvent . . . . 68
7.4.4.8.5 Handling of event-trigger . . . . . . . . . . . . 69
7.4.4.8.5.1 ROE event-trigger onDTCSta-
tusChange (0x01) . . . . . . . . . . . . 69
7.4.4.8.5.2 ROE event-trigger onChangeOf-
DataIdentifier (0x03) . . . . . . . . . . . 70
7.4.4.8.6 Trigger a ServiceToRespondTo . . . . . . . . . 70
7.4.4.8.7 Send a ServiceToRespondTo . . . . . . . . . . 71
7.4.4.8.7.1 Roe transmission cycle . . . . . . . . . 72
7.4.4.8.8 ResponseOnEvent in multiple client environ-
ments . . . . . . . . . . . . . . . . . . . . . . . 72
7.4.4.9 Support of segmented response (paged-buffer) . . . 72
10.2.5.18.6DcmDspRequestRoutineResultsOutSignal . . 616
10.2.5.18.7DcmDspStartRoutine . . . . . . . . . . . . . . 618
10.2.5.18.8DcmDspStartRoutineIn . . . . . . . . . . . . . 622
10.2.5.18.9DcmDspStartRoutineInSignal . . . . . . . . . 624
10.2.5.18.10
DcmDspStartRoutineOut . . . . . . . . . . . . 627
10.2.5.18.11
DcmDspStartRoutineOutSignal . . . . . . . . 628
10.2.5.18.12
DcmDspStopRoutine . . . . . . . . . . . . . . 631
10.2.5.18.13
DcmDspStopRoutineIn . . . . . . . . . . . . . 635
10.2.5.18.14
DcmDspStopRoutineInSignal . . . . . . . . . . 637
10.2.5.18.15
DcmDspStopRoutineOut . . . . . . . . . . . . 640
10.2.5.18.16
DcmDspStopRoutineOutSignal . . . . . . . . . 641
10.2.5.19 Session Security and Modes . . . . . . . . . . . . . 644
10.2.5.19.1DcmDspSecurity . . . . . . . . . . . . . . . . . 644
10.2.5.19.2DcmDspSecurityRow . . . . . . . . . . . . . . 646
10.2.5.19.3DcmDspSession . . . . . . . . . . . . . . . . . 652
10.2.5.19.4DcmDspSessionRow . . . . . . . . . . . . . . 654
10.2.5.19.5DcmModeCondition . . . . . . . . . . . . . . . 656
10.2.5.19.6DcmSwcDataElementValue . . . . . . . . . . . 660
10.2.5.19.7DcmSwcDataElementPrimitive . . . . . . . . . 660
10.2.5.19.8DcmSwcDataElementArray . . . . . . . . . . . 660
10.2.5.19.9DcmSwcDataElementArrayElement . . . . . . 661
10.2.5.19.10
DcmModeRule . . . . . . . . . . . . . . . . . . 662
10.2.5.20 DcmDspVehInfo . . . . . . . . . . . . . . . . . . . . 664
10.2.5.21 DcmDspVehInfoData . . . . . . . . . . . . . . . . . . 666
10.2.5.22 DcmDspPeriodicTransmission . . . . . . . . . . . . . 668
10.2.5.23 DcmDspClearDTC . . . . . . . . . . . . . . . . . . . 673
10.2.6 DcmGeneral . . . . . . . . . . . . . . . . . . . . . . . . . . . 675
10.2.6.1 DcmSecurityEventRefs . . . . . . . . . . . . . . . . 680
10.3 Protocol Configuration Example . . . . . . . . . . . . . . . . . . . . . . 695
10.4 Published Information . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
A Not applicable requirements 696
Offboard Onboard
AUTOSAR Application
DCM*
Manufacturing
Microcontroller (µC)
Development
Diagnostic
Tool
Service
*DCM: Diagnostic Communication Manager
Figure 1.1: Overview of the communication between the external diagnostic tools and
the onboard AUTOSAR Application
The Dcm module ensures diagnostic data flow and manages the diagnostic states, es-
pecially diagnostic sessions and security states. Furthermore, the Dcm module checks
if the diagnostic service request is supported and if the service may be executed in
the current session according to the diagnostic states.The Dcm module provides the
OSI-Layers 5 to 7 of Table 1: Diagnostic protocols and OSI-Layer.
OSI-
Protocols
Layer
Legislated
OBD -
7 UDS-Protocol -
ISO15031-5
ISO14229-1 [1]
[2]
6 - - - - -
5 ISO15765-3 - - - ISO 15765-4
4 ISO15765-2 - - - -
3 ISO15765-2 - - - ISO 15765-4
CAN-
2 LIN-Protocol FlexRay MOST ISO 15765-4
Protocol
CAN-
1 LIN-Protocol FlexRay MOST ISO 15765-4
Protocol
At OSI-level 7, the Dcm module provides an extensive set of ISO14229-1 [1] services.
In addition, the Dcm module provides mechanisms to support the OBD services $01 -
$0A defined in documents [3, SAE J1979] and [2, ISO 15031-5]. With these services,
Autosar OBD functionality is capable of meeting all light duty OBD regulations worldwide
(California OBDII, EOBD, Japan OBD, and all others). At OSI-level 5, the Dcm module
handles the network-independent sections of the following specifications:
• ISO15765-3 [4]: Implementation of unified diagnostic services (UDS on CAN)
• ISO15765-4 [5]: Requirements for emission-related systems, Chapter 5 ”Session
Layer”
In the AUTOSAR Architecture the Diagnostic Communication Manager is located in the
Communication Services (Service Layer).
Terms: Description:
API Application Programming Interface
CAN Controller Area Network
CEMR ControlEnableMaskRecord
Dcm Diagnostic Communication Manager
Dem Diagnostic Event Manager
Det Default Error Tracer
DID Data Identifier
DSD Diagnostic Service Dispatcher (submodule of the Dcm module)
DSL Diagnostic Session Layer (submodule of the Dcm module)
DSP Diagnostic Service Processing (submodule of the Dcm module)
DTC Diagnostic Trouble Codes
ID Identifier
LIN Local Interconnect Network
MCU Micro-Controller Unit
MOST Media Orientated System Transport
NRC Negative Response Code
OBD On-Board Diagnosis
OSI Open Systems Interconnection
PDID Periodic Data Identifier, periodically send by the Dcm after a re-
quest of ReadDataByPeriodicIndentifer
PDU Protocol Data Unit
PID Parameter Identifier
RCRRP Response correctly received - response pending
RID Routine Identifier
ROE ResponseOnEvent
RTE Runtime Environment
SAP Service Access Point
SDU Service Data Unit
SID Service Identifier
SW-C Software-Component
TP Transport Protocol
UDS Unified Diagnostic Services
Xxx_ Placeholder for an API provider
SPRMIB suppressPosRspMsgIndicationBit
3 Related documentation
[1] Unified diagnostic services (UDS) – Part 1: Specification and requirements (Re-
lease 2013-03)
http://www.iso.org
[2] Road vehicles – Communication between vehicle and external equipment for
emission-related diagnostic – Part 5: Emission-related diagnostic services.
http://www.iso.org
[3] SAE J1979
[4] Diagnostics on controller area network (CAN) – Part 3: Implementation of unified
diagnostic services (UDS on CAN) (Release 2004 10-06)
[5] Diagnostics on controller area network (CAN) – Part 4: Requirements for
emission-related systems (Release 2005 01-04)
[6] Glossary
AUTOSAR_TR_Glossary
[7] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral
[8] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral
[9] ISO 17356-3: Road vehicles – Open interface for embedded automotive applica-
tions – Part 3: OSEK/VDX Operating System (OS)
[10] Unified diagnostic services (UDS) - Part 2: Session layer services (Release 2013-
03)
http://www.iso.org
[11] Specification of PDU Router
AUTOSAR_SWS_PDURouter
[12] Road vehicles – Diagnostics on Controller Area Networks (CAN) – Part2: Network
layer services
[13] Specification of Diagnostic Event Manager
AUTOSAR_SWS_DiagnosticEventManager
[14] Road vehicles – Communication between vehicle and external equipment for
emission-related diagnostic – Part 6: Diagnostic trouble code definitions
http://www.iso.org
[15] Specification of NVRAM Manager
AUTOSAR_SWS_NVRAMManager
[16] Specification of Crypto Service Manager
AUTOSAR_SWS_CryptoServiceManager
[17] Specification of Key Manager
AUTOSAR_SWS_KeyManager
[18] Specification of I/O Hardware Abstraction
AUTOSAR_SWS_IOHardwareAbstraction
4.1 Limitations
The following limitations apply when using the Dcm module:
• The Dcm module does not provide any diagnostic multi-channel capabilities. This
means that parallel requests of a tester addressed to different independent func-
tionalities cannot be processed by a single Dcm module. Furthermore, the con-
cept currently implemented does not take more than one instance of a Dcm mod-
ule residing in one ECU into account. As the legislator requires that emission-
related service requests according to ISO 15031-5 [2] shall be processed prior to
any enhanced diagnostic requests, the Dcm module provides a protocol switching
mechanism based on protocol prioritization.
• UDS Service AccessTimingParameter (0x83) is not supported by the ISO stan-
dards in CAN and LIN. Also it is not planned to support this service with FlexRay.
Therefore no support for this service is planned.
InfotypeServices ServiceRequestNotification
SecurityAccess RoutineServices
«abswRequires» «abswRequires»
«abswRequires»
DataServices «abswRequires» CallbackDCMRequestServices
«abswRequires»
Dem
«realize» «optional»
Dem_DcmReadDataOfOBDFreezeFrame «realize»
Dcm_MainFunction
«realize»
Dcm_Init NvM
«realize»
«optional» NvM_WriteBlock
«optional»
IoHwAb
«realize»
IoHwAb_Dcm «realize» «realize» «mandatory»
BswM
«realize» «optional»
BswM_Dcm_ApplicationUpdated
PduR ComM
• Diagnostic Event Manager (DEM): The DEM module provides function to retrieve
all information related to fault memory such that the Dcm module is able to re-
spond to tester requests by reading data from the fault memory.
• Protocol Data Unit Router (PduR module): The PduR module provides functions
to transmit and receive diagnostic data. Proper operation of the Dcm module
presumes that the PduR interface supports all service primitives defined for the
Service Access Point (SAP) between diagnostic application layer and underlying
transport layer (see ISO14229-1 [1], chapter 5 Application layer services).
• Communication Manager (ComM): The ComM module provides functions such
that the Dcm module can indicate the states ”active” and ”inactive” for diagnostic
6 Requirements Tracing
The following tables reference the requirements specified in
AUTOSAR_RS_RSDiagnostics as well as [8] and links to the fulfillment of these.
Please note that if column “Satisfied by” is empty for a specific requirement this means
that this requirement is not fulfilled by this document.
Requirement Description Satisfied by
[RS_Diag_04002] The Diagnostic event (fault) [SWS_Dcm_NA_00999]
management shall be
established as Basic SW Module
[RS_Diag_04003] Network independent design [SWS_Dcm_00030]
[RS_Diag_04005] Manage Security Access level [SWS_Dcm_00020] [SWS_Dcm_00033]
handling [SWS_Dcm_00252] [SWS_Dcm_00338]
[SWS_Dcm_01397] [SWS_Dcm_01535]
[SWS_Dcm_CONSTR_6083]
[RS_Diag_04006] Manage session handling [SWS_Dcm_00022] [SWS_Dcm_00250]
[SWS_Dcm_00339] [SWS_Dcm_01373]
[SWS_Dcm_01374] [SWS_Dcm_01375]
[SWS_Dcm_01376] [SWS_Dcm_01377]
[SWS_Dcm_01378] [SWS_Dcm_01535]
7 Functional specification
4
Name Description ID
DIAG_SEV_SECURITY_ACCESS_REQUIRED_ A further attempt to unlock the ECU was taken before the 34
TIME_DELAY_NOT_EXPIRED delay time had expired. NRC 0x37 (requiredTimeDelayNot
Expired) was sent.
DIAG_SEV_NUMBER_OF_FAILED_ Number of failed authentification attempts - OEM specific 35
AUTHENTICATION_ATTEMPTS_EXCEEDED
DIAG_SEV_CERTIFICATE_FAILURE The tester tried an authentication with an invalid certficate. 36
DIAG_SEV_ECU_UNLOCK_SUCCESSFUL Successful unlocked the ECU (via Security Access $27), 37
per Level
DIAG_SEV_AUTHENTICATION_SUCCESSFUL Succesfully authenticated (via Authentication $29) 38
DIAG_SEV_CLEAR_DTC_SUCCESSFUL DTC information has been cleared by SID 0x14 Clear 39
DTCInformation
DIAG_SEV_ECU_RESET ECU had been reset by SID 0x11 ResetECU 40
DIAG_SEV_WRITE_DATA Diagnostic data identifier have been written by SID 0x2E. 41
DIAG_SEV_REQUEST_DOWNLOAD A diagnsotic data download sequence was requested with 42
SID 0x34.
DIAG_SEV_DTC_SETTING_SWITCHED_OFF DTC setting switched off with service 0x85 (Control 43
DTCSetting).
c(SRS_BSW_00337)
c(SRS_BSW_00452)
To define the functionality of the Dcm module, The Dcm SWS models the Dcm module
as consisting of the following submodules:
• Diagnostic Session Layer (DSL) submodule: The DSL submodule ensures data
flow concerning diagnostic requests and responses, supervises and guarantees
diagnostic protocol timing and manages diagnostic states (especially diagnostic
session and security).
• Diagnostic Service Dispatcher (DSD) submodule: The DSD submodule pro-
cesses a stream of diagnostic data. The submodule:
– Receives a new diagnostic request over a network and forwards it to a data
processor.
– Transmits a diagnostic response over a network when triggered by the data
processor (e.g. by the DSP submodule).
• Diagnostic Service Processing (DSP) submodule: The DSP submodule handles
the actual diagnostic service (respectively subservice) requests.
The next graphic gives an overview of the interfaces between the submodules DSP,
DSD, and DSL within the Dcm module.
DspInternal_CancelPagedBufferProcessing()
DEM Interface DEM
Xxx_ReadData() DsdInternal_ProcessPage()
Xxx_WriteData()
Xxx_ReadDataLength() DspInternal_DcmUpdatePage()
DsdInternal_StartPagedProcessing()
Xxx_ConditionCheckRead()
Xxx_GetScalingInformation()
DSD
Service Interpreter calls
Xxx_ReturnControlToECU()
Xxx_ResetToDefault() DspInternal_DcmConfirmation()
Xxx_FreezeCurrentState() DSP
Xxx_ShortTermAdjustment() <Module>_<DiagnosticService>_<SubService>
RTE (Application)
() <Module>_<DiagnosticService>()
Xxx_GetInfoTypeValue()
Xxx_IsDidAvailable()
Xxx_WriteDidData()
Data Confirmation functionality
Data Indication functionality
Xxx_ReadDidData()
Xxx_Start()
Transmit functionality
Xxx_Stop()
Xxx_RequestResults()
Xxx_RequestControl()
External
Xxx_GetSeed()
Xxx_CompareKey() module
Xxx_Indication()
Xxx_Confirmation() PDU Router
Dcm_StartOfReception()
Dcm_CopyRxData()
DslInternal_SetSesCtrlType() Dcm_CopyTxData()
Dcm_TpRxIndication()
DslInternal_SetSecurityLevel()
Dcm_TpTxConfirmation()
PduR_DcmTransmit()
PduR_DcmCancelTransmit()
DSL PduR_DcmCancelReceive()
Dcm_ResetToDefaultSession()
Dcm_GetSecurityLevel( COM Manager
Dcm_GetSesCtrlTypel( *1 | see page
Dcm_GetActiveProtocol()
Xxx_StartProtocol() *2 | before
|
Xxx_StopProtocol() Dcm_Init() |
Note: The implementation of these submodules and the interfaces between them is
not mandatory. They are introduced only to improve the readability of the specification.
The standards defining the UDS Services and OBD Services define the negative re-
sponse codes (NRCs). The Dcm SWS uses these NRCs in the interfaces between the
Dcm and other BSW modules and the SW-Cs. These NRCs are defined in the data
type Dcm_NegativeResponseCodeType.
[SWS_Dcm_01075] dThe order of the transmitted NRC shall be compliant with the one
described in ISO14229-1 [1].c()
7.3.4 Types
[SWS_Dcm_00969] dThe Dcm shall treat non-integer data types (e.g. uint8[n]) either
like integer data types of the matching size or leave their contents uninterpreted in case
DcmDspDataEndianness is configured to OPAQUE.c()
[SWS_Dcm_00970] dThe Dcm module shall interpret opaque data as uint8[n] and shall
always map it to an n-bytes sized signal. For opaque data endianness, DcmDsp-
DataEndianness has to be configured to OPAQUE.c()
[SWS_Dcm_00971] dThe Dcm shall extend the endianness conversion defined in [9],
to signed data types.c()
In [9] (Chapter 2.4) the endianness conversion is defined for unsigned data types. The
associated configurations can be found in the configuration ?? DcmDspData.
7.3.4.4 Dcm_OpStatusType
For the operation using the Dcm_OpStatusType, the Dcm shall work as follow :
[SWS_Dcm_00527] dAt first call of an operation using the Dcm_OpStatusType, the
Dcm call the operation with OpStatus = DCM_INITIALc()
[SWS_Dcm_00528] dIf the value DCM_E_FORCE_RCRRP is returned from an oper-
ation using Dcm_OpStatusType, the Dcm shall invoke the transmit request for RCR-RP
(NRC 0x78 transmission) and the Dcm shall not realize further invocation of the opera-
tion till RCR-RP is transmitted.c()
[SWS_Dcm_00529] dAfter transmit confirmation of a RCR-RP transmitted on the con-
text of [SWS_Dcm_00528], the Dcm calls, from Dcm_MainFunction (due to call con-
text), the operation again with OpStatus = DCM_FORCE_RCRRP_OK.c()
[SWS_Dcm_00530] dIf a DCM_E_PENDING value is returned from an operation using
the Dcm_OpStatusType, the Dcm call the operation on each Dcm_MainFunction call
with OpStatus = DCM_PENDING as long as DCM_E_PENDING is returned.c()
7.3.4.5 Dcm_Cemr_{DID}Type
For ease of use in SWC, the Dcm generates a symbolic name to access the CEMR bit
according to Dcm_Cemr_{DID}Type (see [SWS_Dcm_91087]) for each data element
used in a DID with IO control. The SWC can work only with the generated symbolic
value of the bitfield text table to mask out a certain bit. This helps to avoid confusion,
while the first RID bit on the network controls the first parameter of the DID but that Bit
is the most significant Bit in the MSB. The symbolic name also helps if the size of the
RID is changing. In that case the bitmask changes as well, but the symbolic value is
always updated.
7.4.1 Introduction
7.4.4.1 Overview
7.4.4.2 Forward requests from the PduR module to the DSD submodule
The PduR module indicates the Dcm module whenever a reception of new diagnostic
request content is started on a DcmDslProtocolRxPduId, which is assigned to the
Dcm module. This is done by calling Dcm_StartOfReception, which inform the Dcm
module of the data size to be received and provides the data of the first frame or single
frame, and allows the Dcm to reject the reception if the data size overflows its buffer
size, or if the requested service is not available. The further call to Dcm_CopyRxData
request the Dcm module to copy the data from the provided buffer to the Dcm buffer.
If the reception of a diagnostic request is finished (when Dcm_StartOfReception
succeeded) the PduR module will call Dcm_TpRxIndication to give a receive indi-
cation to the Dcm module. The Dcm shall be able to use generic connections, where
the addressing information is provided to Dcm by Dcm_StartOfReception via the
MetaData of the DcmRxPdu. This addressing information must be stored and used for
the response and for detection of requests from the same tester. see section 7.4.4.5
Generic Connection Handling for further details.
[SWS_Dcm_00111] dThe DSL submodule shall forward received data to the DSD sub-
module only after a call of Dcm_TpRxIndication with parameter Result = E_OK (see
[SWS_Dcm_00093]).c(RS_Diag_04249)
[SWS_Dcm_00241] dAs soon as a request message is received (after a call of Dcm_-
TpRxIndication with parameter Result = E_OK (see [SWS_Dcm_00093]) and until
a call to Dcm_TpTxConfirmation (see [SWS_Dcm_00351]) for the associated Tx-
DcmPduId), the DSL submodule shall block the corresponding DcmPduId. During the
processing of this request, no other request of the same DcmDslConnection (e.g.
an enhanced session can be ended by a OBD session) can be received, until the corre-
sponding response message is sent and the DcmPduId is released again (except for
Concurrent TesterPresent requests).c()
More descriptions of the APIs (prototype, input/output parameter) can be found in the
interface description of PduR module [11].
7.4.4.2.1 Dcm_StartOfReception
[SWS_Dcm_00444] dIf the requested size is large than the buffer available in the
DCM, the function Dcm_StartOfReception shall return BUFREQ_E_OVFL (see
[SWS_Dcm_00094]).c()
[SWS_Dcm_00788] dWhen processing a diagnostic request and in case DcmDslDia-
gRespOnSecondDeclinedRequest is set to TRUE, the Dcm module shall return
BUFREQ_OK on Dcm_StartOfReception received on new request using a different
DcmDslConnection.c()
[SWS_Dcm_00789] dIn case [SWS_Dcm_00788], the Dcm respond with a NRC 0x21c
()
[SWS_Dcm_00790] dWhen processing a diagnostic request, the Dcm module shall
reject (Dcm_StartOfReception shall return BUFREQ_E_NOT_OK) any new re-
quest using a different DcmDslConnection in case DcmDslDiagRespOnSecond-
DeclinedRequest is set to FALSE until the current diagnostic request processing is
over.c()
[SWS_Dcm_00557] dWhen processing a diagnostic request, the Dcm module shall
reject (Dcm_StartOfReception shall return BUFREQ_E_NOT_OK) any new diag-
nostic request with the same DcmDslConnection until the current diagnostic request
processing is over. Concurrent TesterPresent requests will be accepted with a
BUFREQ_OK, but not further processed, as the running diagnostic request already
resets the session timeout timer (S3Server).c(RS_Diag_04249)
[SWS_Dcm_01145] dIf the current session is a non-default session and a Concur-
rent TesterPresent received on a different DcmDslConnection, this request will
be accepted with a BUFREQ_OK, but not further processed. E.g. it is not resetting the
session timeout timer (S3Server)c(RS_Diag_04249)
[SWS_Dcm_01146] dIn case of [SWS_Dcm_01145] with reception on a higher priority
protocol, this will not lead to protocol preemption.c()
[SWS_Dcm_00642] dWhen the API Dcm_StartOfReception is invoked with TpSd-
uLength equal to 0, the value BUFREQ_E_NOT_OK shall be returned and no further
action shall be taken.c(RS_Diag_04147)
[SWS_Dcm_00655] dIf the current session is a non-default session and a new
diagnostic request with same or lower priority protocol than active one is de-
tected, the Dcm shall act according [SWS_Dcm_00788], [SWS_Dcm_00789] and
[SWS_Dcm_00790].c()
[SWS_Dcm_00656] dIf the current session is the default session and a diagnostic re-
quest is in execution, for any new diagnostic request with same or lower priority protocol
than active one, the Dcm shall act according [SWS_Dcm_00788], [SWS_Dcm_00789]
and [SWS_Dcm_00790].c()
7.4.4.2.2 Dcm_CopyRxData
7.4.4.2.3 Dcm_TpRxIndication
Rationale for [SWS_Dcm_00344]: It is undefined which part of the buffer contains valid
data in this case
It is possible, that functional ”TesterPresent” commands are sent by the tester in par-
allel to physical requests/responses. This is called ”keep alive logic” in ISO14229-1
[1]. This functional ”TesterPresent” will be received on a separate DcmDslProto-
colRxPduId belonging to a DcmDslProtocolRxPduId RxConnection which has
DcmDslProtocolRxAddrType configured as DCM_FUNCTIONAL_TYPE, which is
belonging to the same DcmDslConnection as the physical request. A Dcm-internal
receive buffer which is not configured explicitly, is used in this case. Due to that rea-
son, the functional TesterPresent (and only functional TesterPresent without response)
is handled in the following way:
[SWS_Dcm_00112] dWhen the PduR module calls Dcm_TpRxIndication with pa-
rameter Result=E_OK (see [SWS_Dcm_00093]) and if the request is a ”TesterPresent”
command with ”suppressPosRspMsgIndicationBit” set to TRUE (SID equal to 0x3E,
subfunction equal to 0x80), the DSL submodule shall reset the session timeout timer
(S3Server).c(RS_Diag_04249)
[SWS_Dcm_00113] dWhen the PduR module calls Dcm_TpRxIndication with pa-
rameter Result = E_OK (see [SWS_Dcm_00093]) and if the request is a ”TesterP-
resent” command with ”suppressPosRspMsgIndicationBit” set to TRUE (SID equal to
0x3E, subfunction equal to 0x80), the DSL submodule shall not forward this request to
the DSD submodule for further interpretation.c()
Rationale for [SWS_Dcm_00113]: Because of bypassing the functional ”TesterPre-
sent” in the DSL submodule, the Dcm module is able to receive and process next phys-
ical requests without any delay.
[SWS_Dcm_01168] dThe Dcm shall handle a tester present request as concurrent
request only if it was received on a functional address with ”suppressPosRspMsgIndi-
cationBit” set to TRUE.c()
7.4.4.3.1 Dcm_CopyTxData
If the copied data is smaller than the length requested to transmit within the service
PduR_DcmTransmit() the Dcm module will be requested by the service Dcm_CopyTx-
Data to provide another data when the current copied data have been transmitted.
[SWS_Dcm_00346] dIf the function Dcm_CopyTxData is called and the Dcm module
successfully copied the data in the buffer provided in info parameter, then the function
shall return BUFREQ_OK.c()
[SWS_Dcm_00350] dCaveats of Dcm_CopyTxData:
7.4.4.3.2 Dcm_TpTxConfirmation
7.4.4.4 Forward responses from the DSD submodule to the PduR module
[SWS_Dcm_00114] dThe DSD submodule shall request the DSL submodule for trans-
mission of responses.c(RS_Diag_04249)
[SWS_Dcm_00115] dWhen the diagnostic response of a DcmDslMainConnection
is ready, the DSL submodule shall trigger the transmission of the diagnostic response
to the PduR module by calling PduR_DcmTransmit() using the corresponding DcmD-
slProtocolTxPduRef parameter as PduId.c(RS_Diag_04249)
[SWS_Dcm_01072] dIn case of PeriodicTransmission, the Dcm shall provide in the
call to PduR_DcmTransmit() the full payload data and expect no call to Dcm_CopyTx-
Data.c()
[SWS_Dcm_01073] dIn case of PeriodicTransmission, the Dcm will be called for pe-
riodic transmission with Dcm_TxConfirmation to indicate the transmission result.c
(RS_Diag_04249)
Responses are sent with the DcmTxPduId, which is linked in the Dcm module configura-
tion to the DcmDslProtocolRxPduId, i.e. the ID the request was received with (see
The Dcm shall be able to handle generic connections, identified by DcmPdus with Meta-
DataItems of type SOURCE_ADDRESS_16 and TARGET_ADDRESS_16. These con-
nections carry the actual tester address at run time. Please note that this address is
not provided to the application. If the application needs to discern different testers, sep-
arate connections have to be created. Generic connections are supported for diagnos-
tics over IP and FlexRay diagnostics, and CAN diagnostics using normal fixed or mixed
29 bit addressing formats according to ISO15765-2 [12]. Depending on the actual lay-
out of the CAN IDs, generic connections could also be used for extended or normal and
mixed 11 bit addressing formats. The Dcm is not aware of the actual addressing format
used by CanTp. Several connections may reference the same DcmPdus.
[SWS_Dcm_CONSTR_6044] dGeneric connections shall be consistent. This means
that the MetaDataItems and the PduLength of all referenced PDUs of a DcmDslCon-
nection (DcmDslProtocolRxPduRef, DcmDslProtocolTxPduRef, DcmDslPe-
riodicTxPduRef, DcmDslRoeTxPduRef)are identical.c()
[SWS_Dcm_00848] dThe source address of diagnostic requests received via
a generic connection must be stored. It is provided in the MetaDataItem
SOURCE_ADDRESS_16 provided via Dcm_StartOfReception.c()
[SWS_Dcm_00024] dIf the Application (or the DSP submodule) is able to perform a
requested diagnostic task, but needs additional time to finish the task and prepare the
response, then the DSL submodule shall send a negative response with NRC 0x78 (Re-
sponse pending) when reaching the response time (DcmDspSessionP2ServerMax
- DcmTimStrP2ServerAdjust respectively DcmDspSessionP2StarServerMax -
DcmTimStrP2StarServerAdjust).c(RS_Diag_04016, RS_Diag_04249)
Rationale for [SWS_Dcm_00024]: The DSL submodule guarantees the response tim-
ing to tester.
[SWS_Dcm_00119] dThe DSL submodule shall send negative responses as required
in [SWS_Dcm_00024] from a separate buffer.c()
Rationale for [SWS_Dcm_00119]: This is needed in order to avoid overwriting the on-
going processing of requests, e.g. the application already prepared response contents
in the diagnostic buffer. The number of negative responses with NRC 0x78 (response
pending) for one diagnostic request can be limited by the configuration parameter
The UDS service ReadDataByPeriodicIdentifier (0x2A) allows the tester to request the
periodic transmission of data record values from the ECU identified by one or more
periodicDataIdentifiers.
[SWS_Dcm_00122] dThe Dcm module shall send responses for periodic transmissions
using a separate protocol and a separate buffer of configurable size.c()
The DcmDslPeriodicTransmissionConRef configuration parameter allows linking
the protocol used to receive the periodic transmission request / transmit the periodic
transmission response to the protocol used for the transmission of the periodic trans-
mission messages. Note that multiple DcmTxPduIds can be assigned to the periodic
transmission protocol. The Dcm module respects several restrictions according to the
communication mode:
[SWS_Dcm_00123] dPeriodic transmission communication shall only take place in Full
Communication Mode.c()
Periodic transmission events can occur when not in Full Communication Mode. So the
following requirement exists:
[SWS_Dcm_00125] dThe Dcm module shall discard periodic transmission events be-
side Full Communication Mode and shall not queue it for transmission.c()
[SWS_Dcm_00126] dPeriodic transmission events shall not activate the Full Commu-
nication Mode.c()
With the UDS Service ResponseOnEvent (0x86), a tester requests an ECU to start
or stop transmission of responses initiated by a specified event. Upon registering an
event for transmission, the tester also specifies the corresponding service to respond
to (e.g: UDS Service ReadDataByIdentifier 0x22).
[SWS_Dcm_00595] dThe ROE functionality is enabled only if the container DcmDslRe-
sponseOnEvent exists.c()
[SWS_Dcm_00871] dThe Dcm shall support several RoeEvents. Each RoeEvent can
have the states ”ROE cleared”, ”ROE stopped” and ”ROE started”. The transitions
from state to state are described in the following section. The Labels in the figure
below represents the numbers of the sections.c()
[10]
Initial
Roe started
[6]
[SWS_Dcm_00872] dThe Dcm changes the state of each event to ’ROE cleared’ state
during Dcm_Init.c()
[SWS_Dcm_00873] dBy receiving a valid ROE setup request, the RoeEvent which is
addressed in the request changes to the ’ROE stopped’ state (see Table 2).c()
[SWS_Dcm_00874] dIf the RoeEvent was setup with the StorageState set to
’storeEvent’ and no StartResponseOnEvent with StorageState set to ’storeEvent’ and
an EventWindowTime which is active over power cycles or clearResponseOnEvent has
been received afterwards the Dcm will change to ’ROE stopped’ state as soon as the
non-volatile information is available.c()
Note: If an Event is initialized once with StorageState set to ’StoreEvent’, it will
stay initialized until it is cleared by a ClearResponseOnEvent request (see also
[SWS_Dcm_00897]).
[SWS_Dcm_00875] dBy receiving a valid ROE request with the sub-function clear-
ResponseOnEvent (0x06) the RoeEvents change to the ’ROE cleared’ state.c()
[SWS_Dcm_00876] dBy receiving a valid ROE request with the sub-function startRe-
sponseOnEvent (0x05) all stopped RoeEvents change to the ’ROE started’ state.c()
[SWS_Dcm_00902] dAll RoeEvents which have been in ’ROE started’ state when leav-
ing the default session shall change back into ’ROE started’ state when (re-) entering
the default session.c()
[SWS_Dcm_00965] dIf a valid StartResponseOnEvent request is received with a stor-
ageState set to StoreEvent and the EventWindowTime supports the StorageState in a
previous power cycle, the RoeEvent shall change from ’ROE stopped’ state to ’ROE
started’ state as soon as the non-volatile data is available. (This ROEEvent was set to
’ROE stopped’ according to [SWS_Dcm_00951]).c()
[SWS_Dcm_00877] dBy receiving a valid ROE request with the sub-function stopRe-
sponseOnEvent (0x00) the stopped RoeEvents change to the ’ROE stopped’ state.c
()
[SWS_Dcm_00878] dWhen the eventWindowTime times out the stopped RoeEvents
change to the ’ROE stopped’ state.c()
[SWS_Dcm_00879] dBy leaving the current session all started RoeEvents shall
change to the ’ROE stopped’ state.c()
Note: RoeEvents are stopped when the current session is left, independent if the ses-
sion changes from a non-default session to the same or a different non-default session.
By leaving the default session the current active RoeEvents are stopped and stored (in
order to be re-started as soon the session changes back to the default session (see
[SWS_Dcm_00902]).
[SWS_Dcm_00880] dBy receiving a valid ROE request with the sub-function StartRe-
sponseOnEvent (0x05) the Dcm answers positively and stays in ’ROE started’ state. ).c
()
[SWS_Dcm_00884] dBy receiving a valid ROE request with the sub-function clear-
ResponseOnEvent (0x06) all started RoeEvents change to the ’ROE cleared’ state.c
()
[SWS_Dcm_00885] dIf all RoeEvents are in ’ROE cleared’ state and a valid stopRe-
sponseOnEvent (0x00) request is received the Dcm shall reject the request with a neg-
ative Response with NRC 0x24 (requestSequenceError).c()
[SWS_Dcm_00886] dIf all RoeEvents are in ’ROE cleared’ state and a valid StartRe-
sponseOnEvent (0x05) request is received the Dcm shall reject the request with a neg-
ative Response with NRC 0x24 (requestSequenceError).c()
[SWS_Dcm_00887] dIf all RoeEvents are in ’ROE cleared’ state and a valid clear-
ResponseOnEvent (0x06) request is received the Dcm answers positively and the
RoeEvents stay in ’ROEcleared’ state.).c()
[SWS_Dcm_00888] dIf the non-volatile data could not be read correctly, all RoeEvents
in ’ROE cleared’ state remain in ’ROE cleared’ state.c()
[SWS_Dcm_00889] dIf the EventWindowTime is active over power cycles and not
timed out, the Dcm shall reactivate all RoeEvents which were active in the default ses-
sion during the last power cycle as soon as the non-volatile information is available.c
()
[SWS_Dcm_00890] dIf a valid StartResponseOnEvent request is received with a stor-
ageState set to StoreEvent and the EventWindowTime supports the StorageState in a
previous power cycle, the RoeEvent shall change to ’ROE started’ state as soon as the
non-volatile data is available.c()
[SWS_Dcm_00892] dThe Dcm shall support all ROE sub-functions marked as sup-
ported in Table 7.1.c()
Sub function Sub-function name Kind of ServiceTo Support
ID sub-function RespondTo status
0x00/0x40 stopResponseOnEvent Control Supported
0x01/0x41 onDTCStatusChange Setup 0x19, 0x0E Supported
0x02/0x42 onTimerInterrupt Setup Not supported
0x03/0x43 onChangeOfDataIdentifier Setup 0x22 Supported
0x04 reportActivatedEvents Control Supported
0x05/0x45 StartResponseOnEvent Control Supported
0x06/0x46 clearResponseOnEvent Control Supported
0x07/0x47 onComparisonOfValues Setup Not supported
Other OEM Specific Setup Not supported
Note: If a user wants to support a sub-function with StorageState bit set, then it has to
be explicitly configured in the DSD. The Dcm will not mask the StorageState bit internally.
[SWS_Dcm_00893] dFor each setup sub function the Dcm shall only support the one
fixed ServiceToRespondTo. The supported ServiceToRespondTo is listed in the table
referred in [SWS_Dcm_00892].c()
The EventWindowTime and StorageState are mandatory parameter in every ROE re-
quest. They can be contradicting between the setup request and the related control
request.
[SWS_Dcm_00903] dThe Dcm shall evaluate the EventWindowTime from the setup
request.c()
[SWS_Dcm_00894] dhe Dcm shall support in general the EventWindowTimes defined
in Table 7.2.c()
Value Name Active over
PowerCycles
0x02 Infinity Storage State
0x03 CurrentCycle No
0x04 CurrentAndFollowingCycle Yes
[SWS_Dcm_00908] dThe Dcm shall only support Roe requests which where pre-
configured in the configuration.c()
Note: The pre-configuration gives the Dcm the freedom to optimized not configured
requests.
[SWS_Dcm_00909] dThe Dcm supports the configuration container DcmDspRoe to
configure all supported ResponseOnEvent setup requests.c()
[SWS_Dcm_00954] Pre-configuraton of ROE events dIf DcmDspRoeIni-
tialEventStatus is set to DCM_ROE_STOPPED, the Dcm shall behave according
RoeEvent set-up:
• StorageState set to "StoreEvent"
• EventWindowTime set to "infinity"
• DTCStatusMask set to value configured in DcmDspRoeDTCStatusMask in case
of onDTCStatusChange and
[SWS_Dcm_00128] dThe DSP submodule shall forward this stored connectionId as pa-
rameter in the DslInternal_ResponseOnOneEvent() function, where it is used to trigger
a serviceToRespondTo.c()
Note: The Dcm stores the connectionId of the protocol where the ROE request is re-
ceived, independent if the serviceToResponseTo is sent to a same or a different Tx-
PduId. The connectionId links always the correct TxPduId, because there is only one
TxPduId for ServiceToRespondTo linked to one protocol (see ConfigurationParameter
DcmDslROEConnectionRef). If RoeEvents are active over power cycles the connec-
tionId needs to be stored over power cycles.
The Dcm supports the transmission from ServiceToResponseTo on the same TxPduId
like the ROE response is send (TYPE 1) or on a different TxPduId (TYPE 2).
[SWS_Dcm_00131] dThe configured protocol buffer shall be used for transmission of
the ROE messages (as the reception shall use a separate protocol, a separate buffer
needs to be used for reception).c()
[SWS_Dcm_00926] dIf a ROE request is received on a protocol DcmDslMainConnec-
tion, the Dcm shall send the ServiceToRespondTo on the protocol which is referred
as DcmDslROEConnectionRef.c()
Note: if the EventWindowTime ist active over more than this power cycle, the Dcm
has to store the protocol where the event was started.[SWS_Dcm_00927] dIf the re-
ferred Protocol for ResponseOnEvent (DcmDslROEConnectionRef) is configured for
TYPE1 the Dcm shall send the ServiceToRespondTo to the same TxPduID as the ROE
response is send to.c()
[SWS_Dcm_00928] dIf the referred Protocol for ResponseOnEvent (DcmDslROECon-
nectionRef) is configured for TYPE2 the Dcm shall send the ServiceToRespondTo to
the configured TxPduID (see configuration parameter DcmDslRoeTxPduRef).c()
[SWS_Dcm_00132] dThe content of the pMsgContext pointer (ROE message) shall
be copied into the buffer.c()
[SWS_Dcm_00133] dROE communication shall only be performed in Full Communica-
tion Mode. The Dcm shall check the communication mode of the DcmDslProtocol-
ComMChannelRef in the DcmDslMainConnection.c()
[SWS_Dcm_00134] dROE events shall be disabled in any other Communication Mode
except for the Full Communication Mode.c()
[SWS_Dcm_00135] dROE events occurring in a communication mode different from
Full Communication Mode shall be discarded and not queued for later transmission.c()
[SWS_Dcm_00136] dROE events requested by the Application shall not activate the
Full Communication Mode.c()
[SWS_Dcm_00601] dThe Dcm module shall respect a minimum time between two (2)
consecutive Roe transmissions (see configuration parameter DcmDspRoeInterMes-
sageTime)c()
[SWS_Dcm_00929] dIf at least one RoeEvent is in ’ROE started’ state the Dcm shall al-
ways process ROE request with the sub-function clearResponseOnEvent independent
of the DcmDslProtocol where the request is received.c()
[SWS_Dcm_00930] dIf at least one RoeEvent is in ’ROE started’ state the Dcm shall
always process ROE request with the sub-function stopResponseOnEvent independent
of the DcmDslProtocol where the request is received.c()
[SWS_Dcm_00940] dIf at least one RoeEvent is in ’ROE started’ state the Dcm shall
reject all ROE request received on a different DcmDslProtocol than the protocol
where the RoeEvents were started with an NRC 0x22 (ConditionsNotCorrect), except
for [SWS_Dcm_00929] and [SWS_Dcm_00930].c()
[SWS_Dcm_01045] dOnly TYPE2 messages will support parallel execution of Diag-
nosis response.c()
In some cases, e.g. in case of routine execution, the Application needs to request an
immediate NRC 0x78 (Response pending), which shall be sent immediately and not
just before reaching the response time (P2ServerMax respectively P2*ServerMax).
When the Dcm module calls an operation and gets an error status
DCM_E_FORCE_RCRRP, the DSL submodule will trigger the transmission of a
negative response with NRC 0x78 (Response pending). This response needs to be
sent from a separate buffer, in order to avoid overwriting the ongoing processing of the
request.
[SWS_Dcm_00020] dThe DSL submodule shall save the level of the current active
security level.c(RS_Diag_04005)
For accessing this level, the DSL submodule provides interfaces to:
• get the current active security level: Dcm_GetSecurityLevel
• set a new security level: DslInternal_SetSecurityLevel()
[SWS_Dcm_00033] dDuring Dcm initialization the security level is set to the value 0x00
(DCM_SEC_LEV_LOCKED).c(SRS_BSW_00101, RS_Diag_04005)
[SWS_Dcm_00139] dThe DSL shall reset the security level to the value 0x00 (i.e. the
security is enabled) under one of the following conditions: - if a transition from any
diagnostic session other than the defaultSession to another session other than the de-
faultSession (including the currently active diagnostic session) is performed or - if a
transition from any diagnostic session other than the defaultSession to the defaultSes-
sion (DslInternal_SetSecurityLevel()) (initiated by UDS Service DiagnosticSessionCon-
trol (0x10) or S3Server timeout) is performed.c()
Only one security level can be active at a time.
[SWS_Dcm_01329] dOn every security level change the Dcm shall update the Mod-
eDeclarationGroup DcmSecurityAccess with the new security level.c()
[SWS_Dcm_CONSTR_6083] Dependency on DcmDspSecurityAttemptCoun-
terEnabled dIf DcmDspSecurityNumAttDelay is not configured, the DcmDspSe-
curityAttemptCounterEnabled on the same DcmDspSecurityRow shall be set
to FALSE.c(RS_Diag_04005)
yet (i.e. one operation has returned a DCM_E_PENDING status in the previous
Dcm_MainFunction() cycle), the pending operation shall be cancelled by a call with
the OpStatus set to DCM_CANCEL.c()
[SWS_Dcm_01353] dIn the conditions of [SWS_Dcm_01352], the AttemptCounters of
remaining security levels (which have not been obtained via the calls to their Xxx_Get-
SecurityAttemptCounter) shall be initialized with the value configured in DcmD-
spSecurityNumAttDelay of the according SecurityLevel.c()
[SWS_Dcm_01354] dWhile not all Xxx_GetSecurityAttemptCounter operations
have returned a final status and the operation chain has not been cancelled, the con-
ditionsNotCorrect (0x22) NRC shall be returned to any SecurityAccess (0x27) request-
Seed subfunction request.c()
[SWS_Dcm_01355] dOnce all the AttemptCounter values have been successfully or
unsuccessfully retrieved (all the Xxx_GetSecurityAttemptCounter() operations have
been executed and have returned a final, non-PENDING error value or the opera-
tion chain has been cancelled), if at least one of the restored AttemptCounter val-
ues is greater than or equal to the DcmDspSecurityNumAttDelay configured for
its corresponding DcmDspSecurityRow, the Dcm shall start the SecurityDelayTimer
with the higher value of DcmDspSecurityDelayTimeOnBoot / DcmDspSecurity-
DelayTime of the according DcmDspSecurityRow.c()
[SWS_Dcm_01356] dA timer (DcmDspSecurityDelayTime, DcmDspSecurity-
MaxAttemptCounterReadoutTime) which is configured with 0 shall be considered
to have timed out instantaneously when it is started, i.e. shall have no delay effect.c()
[SWS_Dcm_CONSTR_6074] Dependency for DcmDspSecurityMaxAttempt-
CounterReadoutTime dDcmDspSecurityMaxAttemptCounterReadoutTime
shall be a multiple and at minimum equal to DcmTaskTime.c()
[SWS_Dcm_00022] dThe DSL submodule shall save the state of the current active
session.c(RS_Diag_04006)
For accessing this variable, the DSL submodule provides interfaces to:
• get the current active session: Dcm_GetSesCtrlType
• set a new session: DslInternal_SetSesCtrlType()
[SWS_Dcm_00034] dDuring Dcm initialization, the session state is set to the value
0x01 ("DefaultSession").c(SRS_BSW_00101)
[SWS_Dcm_01062] dThe call to Dcm_ResetToDefaultSession allows the appli-
cation to reset the current session to Default session and invokes the mode switch
of the ModeDeclarationGroupPrototype DcmDiagnosticSessionControl by calling
SchM_Switch_<bsnp>_DcmDiagnosticSessionControl(RTE_MODE_DcmDiagnostic
SessionControl_DCM_DEFAULT_SESSION).c()
Example: Automatic termination of an extended diagnostic session upon exceeding of
a speed limit.
The Dcm provides means for authenticated diagnostics. The DSL sub-module provides
an authentication state per diagnostic connection. It initializes this state upon startup
and takes care about fallback into non-authenticated states if the connection is idle for
some time.
[SWS_Dcm_01477] Authentication state per connection dThe Dcm shall provide an
authentication state per configured DcmDslConnection.c(RS_Diag_04230)
[SWS_Dcm_01478] Mode declaration group per authentication state dThe Dcm
shall provide the state of each authentication state via the ModeDeclarationGroupPro-
totype DcmAuthentication_<ConnectionName>.c(RS_Diag_04230)
The Dcm maintains an authentication state and mirrors this state to the mode dec-
laration group DcmAuthentication_<ConnectionName>. This mode declaration group
is intended to be changed only by the Dcm, however applications changing this state
have no influence on the Dcm authentication state.
[SWS_Dcm_01479] Authentication states dThe Dcm shall support per connection
the two authentication states:c(RS_Diag_04230)
• deauthenticated
• authenticated
Upon startup, the Dcm is in deauthenticated state or restores the persisted state. A
transition to authenticated state can only be done after the client successfully exe-
cuted the authentication sequence. In some use cases as in production, a frequent
power-on/power off sequence is performed. To keep the achieved authentication state
over the power off, there is a dedicated mode rule requesting the Dcm to persist the
authenticated state.
[SWS_Dcm_01480] Initialization of authentication state dIf DcmDspAuthentica-
tionPersistStateModeRuleRef is not configured or the mode rule referenced
by DcmDspAuthenticationPersistStateModeRuleRef is evaluated to false, the
Dcm shall initialize within Dcm_Init all authentication states to deauthenticated state.c
(RS_Diag_04230)
[SWS_Dcm_01481] Initialization of persisted authentication states dIf the mode
rule referenced by DcmDspAuthenticationPersistStateModeRuleRef is eval-
uated to true, the Dcm shall initialize the persisted authentication state including role
and white list on each connection.c(RS_Diag_04230)
Transitions between authenticated states are controlled by both DSL and DSP sub-
modules. The DSL sub-module is in charge for fallback of authenticated state into
deauthenticated state. The DSP sub-module is in charge for transition changes trig-
gered from a client by diagnostic services.
submodule shall reset to the default session state ("DefaultSession", 0x01) and in-
voke the the mode switch of the ModeDeclarationGroupPrototype DcmDiagnosticSes-
sionControl by calling SchM_Switch_<bsnp>_DcmDiagnosticSessionControl(RTE_
MODE_DcmDiagnosticSessionControl_DEFAULT_SESSION) .c()
Note: <bsnp> is the BSW Scheduler Name Prefix
The start / stop of S3Server timeout timer is processed as follows:
[SWS_Dcm_00141] d
Subsequent start:
• Completion of any final response message or an error indication (Dcm_TpTx-
Confirmation: confirmation of complete PDU or indication of an error)
• Completion of the requested action in case no response message (positive and
negative) is required / allowed.
• Indicates an error during the reception of a multi-frame request message.(Dcm_-
TpRxIndication: indication of an error)
Subsequent stop:
• Start of a multi-frame request message (Dcm_StartOfReception: indicates
start of PDU reception)
• Reception of single-frame request message. (Dcm_StartOfReception: indi-
cates start of PDU reception)
"Start of S3Server" means reset the timer and start counting from the beginning.c(RS_-
Diag_04249)
[SWS_Dcm_00027] dThe Dcm module shall handle the following protocol tim-
ing parameters in compliance with ISO14229-2 [10]: P2ServerMin, P2ServerMax,
P2*ServerMin, P2*ServerMax, S3Serverc(RS_Diag_04015, RS_Diag_04249)
[SWS_Dcm_00143] dP2min / P2*min and S3Server shall be set to defined values:
P2min = 0ms, P2*min = 0ms, S3Server = 5s.c(RS_Diag_04015, RS_Diag_04249)
These protocol timing parameters have influence on the session layer timing (no influ-
ence on Transport Layer timing). Some of these timing parameters can be modified
while protocol is active with the following means:
• UDS Service DiagnosticSessionControl (0x10)
• UDS Service AccessTimingParameter (0x83)
The DSL submodule provides the following functionalities to modify the timing parame-
ters:
For the different protocols a different set of allowed diagnostic services is valid (e.g.
the UDS commands for the enhanced diagnosis, the OBD mode services for the OBD
protocol). It is possible to create different service tables and link them to the diagnostic
protocol.
[SWS_Dcm_00035] dWith every protocol initialization, the DSL submodule sets a link
to the corresponding service table (see configuration parameter DcmDslProtocol-
SIDTable).c(SRS_BSW_00101)
The DSD submodule uses this link for further processing of diagnostic requests.
[SWS_Dcm_01370] dThe Dcm shall internally serialise all asynchronous C/S interface
calls by the same port interface between the OBD and UDS protocol processors and
return a pending to the re-entrant caller.c(RS_Diag_04162)
[SWS_Dcm_01371] dIf the Dcm received an OBD request and the Dcm is processing
a diagnostic service in a non-default session, the Dcm shall cancel the running UDS
request, make a transition into default session and process the OBD request.c(RS_-
Diag_04162)
[SWS_Dcm_01372] dIf the Dcm processes an OBD request and the Dcm is receiving an
UDS diagnostic request to change in a non-default session, the Dcm shall delay the UDS
request until the OBD service is finished according to [SWS_Dcm_01371]. After the
OBD service is finished, the Dcm shall make a transition into the requested non-default
session.c(RS_Diag_04162)
A protocol stop can appear only in case of protocol preemption (see chapter 7.4.4.16.3
Preemption of protocol).
[SWS_Dcm_00624] dWith the reception of Dcm_TpTxConfirmation connected to
the response given by the DSL submodule, the Dcm shall not stop the current protocol
(no call to xxx_StopProtocol).c()
Note: A protocol (e.g. OBD) will be active till reset or other protocol preempts.
[SWS_Dcm_01190] dIf Xxx_StopProtocol() doesn’t return E_OK, the Dcm shall return
NRC 0x22.c()
Due to limited resources, the following points should be considered as hints for the
design:
• It is allowed to use and allocate only one diagnostic buffer in the Dcm module.
This buffer is then used for processing the diagnostic requests and responses.
• Output of NRC 0x78 (Response pending) responses is done with a separate
buffer.
• paged-buffer handling (see [SWS_Dcm_00028]).
Communication Mode Handling is an interface between Dcm and ComM. The ComM
informs the Dcm about the current communication state of a channel. The Dcm is calling
the ComM about active Diagnostic which shall prevent an Ecu shutdown/sleep.
The status ActiveDiagnostic shows if diagnostic requests shall keep the ECU awake
(ActiveDiagnostic ==’DCM_COMM_ACTIVE’) or if diagnostic requests shall not pre-
vent an Ecu shutdown/sleep (ActiveDiagnostic ==’DCM_COMM_NOT_ACTIVE’). Ap-
plication can change the status ActiveDiagnostic regarding to system conditions.
[SWS_Dcm_CONSTR_6027] dThe application will inform the Dcm by calling
Xxx_SetActiveDiagnostic() about the ActiveDiagnostic status.c()
[SWS_Dcm_01069] dAfter Dcm_Init, the Dcm shall set ActiveDiagnostic to
’DCM_COMM_ACTIVE’.c()
[SWS_Dcm_01070] dIf Xxx_SetActiveDiagnostic() is called with ’false’ the Dcm set
ActiveDiagnostic to ’DCM_COMM_NOT_ACTIVE’.c()
[SWS_Dcm_01071] dIf Xxx_SetActiveDiagnostic() is called with ’true’ the Dcm set Ac-
tiveDiagnostic to ’DCM_COMM_ACTIVE’.c()
[SWS_Dcm_01142] dThe Dcm shall wait the Full Communication mode indication from
the ComM (call to Dcm_ComM_FullComModeEntered) before initiating the trans-
mission of the diagnostic answer. The time to wait should be no longer than the
P2ServerMax calculated from the moment the request was received.c()
[SWS_Dcm_01143] dIf the Dcm fails to confirm a response pending transmission
(DCM_E_FORCE_RCRRP) due to [SWS_Dcm_01142], the Dcm shall trigger the Det
error DCM_E_FORCE_RCRRP_IN_SILENT_COMM.c()
Note : On the reception side a silent communication mode can lead to the lost of the
request in case of segmented transmission.
7.4.4.18.1 No Communication
The ComM module will indicate the No Communication Mode to the Dcm module by
calling Dcm_ComM_NoComModeEntered. In response, the Dcm will immediately dis-
able all transmissions (see the definition of Dcm_ComM_NoComModeEntered for de-
tails).
[SWS_Dcm_00148] dDcm_ComM_NoComModeEntered shall disable all kinds of trans-
missions (receive and transmit) of communication. This means that the message re-
ception and also the message transmission shall be off.c()
[SWS_Dcm_00149] dDcm_ComM_NoComModeEntered shall disable the Respon-
seOnEvent transmissions.c()
The ComM module will indicate the Silent Communication Mode to the Dcm module by
calling Dcm_ComM_SilentComModeEntered. In response, the Dcm will immediately
disable all transmissions (see the definition of Dcm_ComM_SilentComModeEntered
for details).
[SWS_Dcm_00153] dDcm_ComM_SilentComModeEntered shall disable all trans-
mission. This means that the message transmission shall be off.c()
[SWS_Dcm_00154] dDcm_ComM_SilentComModeEntered shall disable the Re-
sponseOnEvent transmissions.c()
[SWS_Dcm_00155] dDcm_ComM_SilentComModeEntered shall disable the period-
icId transmissions (ReadDataByPeriodicIdentifier) shall be disabled.c()
[SWS_Dcm_00156] dDcm_ComM_SilentComModeEntered shall disable the normal
transmissions.c()
[SWS_Dcm_01325] dIn case Dcm_ComM_SilentComModeEntered is called with a
NetworkId for a ComM channel not referenced within the Dcm (see configuration pa-
rameter DcmDslProtocolComMChannelRef), the Dcm shall return without perform-
ing any further action.c()
The ComM module will indicate the Full Communication Mode to the Dcm module by
calling Dcm_ComM_FullComModeEntered. In response, the Dcm will enable all trans-
missions (see the definition of Dcm_ComM_FullComModeEntered for details).
[SWS_Dcm_00157] dDcm_ComM_FullComModeEntered shall enable all kind of
communication. This means that the message reception and also the message trans-
mission shall be on.c()
The Dcm notifies the ComM module about the internal diagnostic state for all networks.
There are two options for the diagnostic state on a network. In ’active’ diagnostic state,
the Dcm is processing one or more diagnostic requests from this network or the Dcm is
in a non-default session. In ’inactive’ diagnostic state, the Dcm is in default session and
is not processing a diagnostic request on that network.
When a network has no communication in progress, the Dcm will set the diagnostic ac-
tivation state to ’inactive’. When there is a diagnostic communication on a network the
Dcm sets the diagnostic state to ’active’. In any non-default session, the diagnostic state
remains in state ’active’. The communication state can also be controlled by the API
Xxx_SetActiveDiagnostic according to [SWS_Dcm_01070] and [SWS_Dcm_01071].
[SWS_Dcm_01373] dThe Dcm shall go into ’active’ diagnostic state on a network, if a
diagnostic request is received on a network or the diagnostic session is changed to
any non-default session.c(RS_Diag_04006)
[SWS_Dcm_01374] dThe Dcm shall go into ’inactive’ diagnostic state on a network
when the current diagnostic request processing is finished and the Dcm is not process-
ing a diagnostic request of another protocol on this network and if the Dcm is in default
session.c(RS_Diag_04006)
[SWS_Dcm_01375] dThe Dcm shall go into ’inactive’ diagnostic state on all networks
if a S3Server timeout occurs and the Dcm makes a transition into default session.c
(RS_Diag_04006)
[SWS_Dcm_01376] dIf ActiveDiagnostic is ’DCM_COMM_ACTIVE’ and the Dcm is do-
ing a transition into ’active’ diagnostic state of a diagnostic protocol, the Dcm shall call
ComM_DCM_ActiveDiagnostic(NetworkId), with the networkId associated to the re-
ceived Pdu (see DcmDslProtocolComMChannelRef), with every request, to inform
the ComM module about the need to stay in Full Communication Mode.c(RS_Diag_-
04006)
[SWS_Dcm_01377] dUpon a diagnostic state transition into ’inactive’, the Dcm shall
notify the ComM module about an inactive diagnostic state on a network by calling
ComM_DCM_InactiveDiagnostic(NetworkId), with the networkId associated to the re-
ceived Pdu (see DcmDslProtocolComMChannelRef).c(RS_Diag_04006)
[SWS_Dcm_01378] dThe definition of a finished diagnostic request according to
[SWS_Dcm_01374], shall be as follows:
• the Dcm has sent a positive or negative response unequal to NRC 0x78 by re-
ceiving the Dcm_TpTxConfirmation connected to the response given by the
DSL submodule
• the Dcm has processed the service with SPRMIB=true and the positive response
was suppressed
• in case of functional addressing, the Dcm has processed the service and the
negative response was suppressed.
c(RS_Diag_04006)
7.5.1 Introduction
The DSD submodule is responsible to check the validity of an incoming diagnostic re-
quest (Verification of Diagnostic Session/Security Access levels/Application permis-
sion) and keeps track of the progress of a service request execution.
[SWS_Dcm_00178] dThe DSD submodule shall only process valid requests and shall
reject invalid ones.c()
The following use cases are relevant and are described in detail in the following:
• Receive a request message and transmit a positive response message
• Receive a request message and suppress a positive response
• Receive a request message and suppress a negative response
• Receive a request message and transmit a negative response message
• Send a positive response message without corresponding request
• Segmented Responses
This is the standard use case of normal communication ("ping-pong"). The server
receives a diagnostic request message. The DSD submodule ensures the validity of
the request message. In this use case, the request is valid and the response will be
positive. The request will be forwarded to the appropriate data processor in the DSP
submodule. When the data processor has finished all actions of data processing, it
triggers the transmission of the response message by the DSD submodule.
If the data processor processes the service immediately as part of the request indica-
tion function, the data processor can trigger the transmission inside this indication func-
tion ("synchronous"). If the processing takes a longer time (e. g. waiting on EEPROM
driver), the data processor defers some processing ("asynchronous"). The response
pending mechanism is covered by the DSL submodule. The data processor triggers
the transmission explicitly, but from within the data processor’s context.
As soon as a request message is received, the corresponding DcmPduId is blocked by
the DSL submodule (see [SWS_Dcm_00241]). During the processing of this request,
no other request of the same protocol type (e.g. an enhanced session can be ended
by a OBD session) can be received, until the corresponding response message is sent
and the DcmPduId is released again.
This is a sub-use-case of the previous one. Within the UDS protocol it is possible
to suppress the positive response by setting a special bit in the request message
(see [SWS_Dcm_00200]). This special suppression handling is completely performed
within the DSD submodule.
In case of functional addressing the DSD submodule shall suppress the negative re-
sponse for NRC 0x11, 0x12, 0x31, 0x7E and 0x7F (see [SWS_Dcm_00001]).
There are a many different reasons why a request message is rejected and a negative
response is to be sent. If a diagnostic request is not valid or if a request may not be
executed in the current session, the DSD submodule will reject the processing and a
negative response will be returned.
But there are even many reasons to reject the execution of a well-formed request mes-
sage, e.g. if the ECU or system state does not allow the execution. In this case, the
DSP submodule will trigger a negative response including an NRC supplying additional
information why this request was rejected.
In case of a request composed of several parameters (e.g. a UDS Service Read-
DataByIdentifier (0x22) request with more than one identifier to read), each parameter
is treated separately. And each of these parameters can return an error. This kind of
request returns a positive response if at least one of the parameters was processed
successfully.
[SWS_Dcm_00827] dThe DSD sub-module shall check the received diagnostic request
in the order given by ISO14229-1 [1]. If one of the computations failed the Dcm shall
stop the execution of the NRC check sequence then stop or do not start the execution of
the received diagnostic request and finally transmit the NRC for which the computation
failed.c()
There are two services within the UDS protocol, where multiple responses are sent for
only one request. In general, one service is used to enable (and disable) an event- or
time-triggered transmission of another service, which again is sent by the ECU without
a corresponding request (see ISO14229-1 [1]). These services are:
• UDS Service ReadDataByPeriodicIdentifier (0x2A). This service allows the client
to request the periodic transmission of data record values from the server identi-
fied by one or more periodicDataIdentifiers.
Type 2 = UUDT message on a separate DcmTxPduId.
• ResponseOnEvent (0x86). This service requests a server to start or stop trans-
mission of responses on a specified event.
Type 1 = USDT messages on the DcmTxPduId already used for normal diagnos-
tic responses,
Type 2 = USDT messages on separate DcmTxPduId.
For Type 1, the outgoing messages must be synchronized with "normal outgoing
messages", which have a higher priority.
This handling is especially controlled by the DSL submodule. However, the DSD sub-
module also provides the possibility to generate a response without a corresponding
request.
Within the diagnostic protocol, some services allow to exchange a significant amount
of data, e.g. UDS Service ReadDTCInformation (0x19) and UDS Service TransferData
(0x36).
In the conventional approach, the ECU internal buffer must be large enough to keep
the longest data message which is to be exchanged (worst-case) and the complete
buffer is filled before the transmission is started.
RAM memory in an ECU often is a critical resource, especially in smaller micros. In
a more memory-saving approach, the buffer is filled only partly, transmitted partly and
then refilled partly - and so on. This paging mechanism requires only a significantly re-
duced amount of memory, but demands a well-defined reaction time for buffer refilling.
The user can decide whether to use the "linear buffer" or paged-buffer for diagnostics.
The DSD submodule is called by the DSL submodule when receiving a diagnostic mes-
sage and performs the following operations:
• delegates processing of request to the DSP submodule or external modules out-
side the Dcm
• keeps track of request processing (Return the status on <Module>_<Diagnos-
ticService>() and <Module>_<DiagnosticService>_<SubService>() APIs call or
"Service Interpreter calls")
• transmits the response of the Application to the DSL submodule (Transmit func-
tionality)
Direction Explanation
Bidirectional Exchange of the Diagnostic Messages (receive/transmit).
DSD submodule to DSL Obtain latest diagnostic session and latest security level.
submodule
DSL submodule to DSD Confirmation of transmission of Diagnostic Message.
submodule
Table 7.3: Interaction between the DSD submodule and the DSL submodule
Direction Explanation
DSD submodule to DSP - Delegate processing of request.
submodule - Confirmation of transmission of Diagnostic Message.
DSP submodule to DSD - Signal that processing is finished.
submodule
7.5.4.1 Support checking the diagnostic service identifier and adapting the di-
agnostic message
The DSD submodule shall be triggered by the DSL submodule if a new diagnostic mes-
sage is recognized. The DSD submodule will start processing by analyzing the diag-
nostic service identifier contained in the received diagnostic message.
[SWS_Dcm_00084] dIf configured (configuration parameter DcmRespondAllRe-
quest=FALSE), if the Dcm module receives a diagnostic request that contains a ser-
vice ID that is in the range from 0x40 to 0x7F or in the range from 0xC0 to 0xFF, the
Dcm shall not respond to such a request.c()
This range corresponds to the diagnostic response identifier.
[SWS_Dcm_00192] dThe DSD submodule shall analyze the (incoming) diagnostic
message for the diagnostic service identifier (based on first byte of the diagnostic
message) and shall check the supported services with the newly received diagnos-
tic service identifier.c()
[SWS_Dcm_00193] dDuring this check, the DSD submodule shall search the newly
received diagnostic service identifier in the "Service Identifier Table".c()
For performance reasons it might be necessary that the support check is done with a
"lookup table" functionality. In this "Service Identifier Table" all supported Service IDs
of the ECU are predefined.
[SWS_Dcm_00195] dThe DSL submodule shall provide the current "Service Identifier
Table"c()
Rationale for [SWS_Dcm_00195]: The "Service Identifier Table" and the information
about the supported services will be generated out of the configuration. More than one
Service Identifier Table can be configured for selection. At one time only one Service
Identifier Table can be active.
[SWS_Dcm_00196] dFor the check, the DSD submodule shall scan the active "Ser-
vice Identifier Table" for a newly received diagnostic service identifier. If this service
identifier is supported and if the configuration parameter DcmDsdSidTabFnc (see
ECUC_Dcm_00777) is not empty, the DSD submodule shall call the configured service
interface (<Module>_<DiagnosticService>). If the configuration parameter is empty,
the Dcm shall call the internally implemented service interface.c()
The diagnostic service identifier is not supported when it is not included in the "Service
Identifier Table".
[SWS_Dcm_00197] dIf the newly received diagnostic service identifier is not sup-
ported, the DSD submodule shall transmit a negative response with NRC 0x11 (Service
not supported) to the DSL submodule.c()
[SWS_Dcm_00198] dThe DSD submodule shall store the newly received diagnostic
service identifier for later use.c()
For example: WriteDataByIdentifier (for writing VIN number):
1. A new diagnostic message is received by the DSL submodule. (Diagnostic Mes-
sage WriteDataByIdentifier = 0x2E, 0xF1, 0x90, 0x57, 0x30, 0x4C, 0x30, 0x30,
0x30, 0x30, 0x34, 0x33, 0x4D, 0x42, 0x35, 0x34, 0x31, 0x33, 0x32, 0x36)
2. The DSL submodule indicates a new diagnostic message with the "Data Indica-
tion" functionality to the DSD submodule. In the diagnostic message buffer the
diagnostic message is stored (buffer = 0x2E,0xF1,0x90,..).
3. The DSD submodule executes a check of the supported services with the de-
termined service identifier (first byte of buffer 0x2E) on the incoming diagnostic
message.
4. The incoming diagnostic message is stored in the Dcm variable
Dcm_MsgContextType.
[SWS_Dcm_CONSTR_6047] dId of the Service identifier configured in DcmDsd-
SidTabServiceId shall be unique within one DcmDsdServiceTable.c()
[SWS_Dcm_00732] dFor the first call of <Module>_<DiagnosticService> the opStatus
shall be set to DCM_INITIALc()
[SWS_Dcm_00733] dThe Dcm shall not accept further requests (on same or lower
priority) while <Module>_<DiagnosticService>() returns DCM_E_PENDING. Dcm-
internal timeout handling (based on RCR-RP limitation) may lead to a cancellation
of the external diagnostic service processing.c()
[SWS_Dcm_00735] dIn case of cancellation the API <Module>_<DiagnosticService>
is called again with the parameter opStatus set to DCM_CANCELc()
Prior of execution of a received diagnostic service, the DSD performs a set of verifica-
tions. The DSD will only accept a service, if all verifications are successfully passed.
[SWS_Dcm_01535] DSD verifications prior of service execution dThe Dcm shall
only accept a diagnostic request, if the following verifications have been passed in the
following order:c(RS_Diag_04230, RS_Diag_04005, RS_Diag_04006)
1. Verification of Manufacturer permission (Call of the manufacturer interface indi-
cation operation)
2. Verification of the SID
3. Verification of the service access control on the current authentication state
4. Verification of the Diagnostic Session
5. Verification of the Service Security Access levels
6. Verification of the Supplier permission (Call of the Supplier interface indication
operation)
7. Verification of the Mode rules for service IDs.
[SWS_Dcm_01474] dIn case the DSD generates a NRC, the Dcm shall only call
XXX_Confirmation.c(RS_Diag_04235)
This means that the Dcm will not call DspInternal_DcmConfirmation().
The UDS service Authentication (0x29) is used to change the authentication state of a
diagnostic connection and to provide the access rights. Depending on the reached role
and provided white list a dynamic set of diagnostic services is available for the tester
on that connection. The DSD submodule verifies on service ID (SID) and sub-function
(SF) level, if a service can be executed or not.
[SWS_Dcm_01536] Authentication on UDS services only dThe Dcm shall only ver-
ify the authentication for UDS services. A UDS service has a service ID within the
range of 0x10 and 0xFF.c(RS_Diag_04230)
OBD services are explicitly excluded from authentication checks. By legislation the
OBD services need to be always available, independent from active authentication
state. If WWH-OBD is used the system engineer must ensure that these services are
always accessible.
[SWS_Dcm_01537] Verifying access rights dThe Dcm shall only verify and check
the configured access rights of a diagnostic service, if the container DcmDspAuthen-
tication is configured.c(RS_Diag_04230)
If no DcmDspAuthentication is configured, the Dcm will process all diagnostic services
as if the current connection would grant access to execute the current processed ser-
vice. Checking the access rights for diagnostic services is done at different levels of
the service structure. The use of diagnostic service access rights introduces means to
allow or to refuse a diagnostic service due to current roles and authentication states.
Some services shall always be allowed to be executed, like the service 0x29 (Authen-
tication) to set the current tester access rights. This service and other OEM or sup-
plier specific services should have granted access independent from the authentication
state. To realize this, the Dcm uses a default role that is used in all deauthenticated
states. In that state, all role based verifications are done as in authenticated state. The
active role is provided by the configuration.
[SWS_Dcm_01538] Access rights for services in deauthenticated state dIf the cur-
rent connection is in deauthenticated state, the Dcm shall use the role configured in
DcmDspAuthenticationDeauthenticatedRole as current role for all role based access
verification checks.c(RS_Diag_04230)
[SWS_Dcm_01539] Definition of allowed service execution dThe Dcm shall allow
the service execution, if a role verification was successful or the service is allowed by
the white list.c(RS_Diag_04233)
[SWS_Dcm_01540] Diagnostic service execution rights verification dThe Dcm
shall check if a service execution is permitted in the current authentication check or
not. The Dcm shall perform the following checks in the given order below. If a check
grants access to a service, the remaining checks are skipped:
1. Checks on service ID level
2. Checks on service ID and sub-function level
enables a specific set of diagnostic services and/or functionality in the ECU. It further-
more enables a protocol-depending data set of timing parameters applicable to the
started session.
On receiving a service request, the DSD module will obtain the current Diagnostic
Session with Dcm_GetSesCtrlType and will verify whether the execution of the re-
quested service (NOT the UDS Service DiagnosticSessionControl (0x10)) and sub-
service is allowed in the current diagnostic session or not.
Note that the handling of the UDS Service DiagnosticSessionControl (0x10) itself is not
part of the DSD submodule.
[SWS_Dcm_00211] dIf the newly received diagnostic service is not allowed in the cur-
rent Diagnostic Session (according to the configuration parameter DcmDsdSidTab-
SessionLevelRef), the DSD submodule shall transmit a negative response with NRC
0x7F (serviceNotSupportedInActiveSession) to the DSL submodule.c()
[SWS_Dcm_00616] dIf the newly received diagnostic service is allowed in the current
Diagnostic Session ( see [SWS_Dcm_00211]), but the requested subservice is not
allowed in the current Diagnostic Session (according to the configuration parameter
DcmDsdSubServiceSessionLevelRef), the DSD submodule shall transmit a neg-
ative response with NRC 0x7E (subFunctionNotSupportedInActiveSession) to the DSL
submodule.c()
The purpose of the Security Access level handling is to provide a possibility to access
data and/or diagnostic services, which have restricted access for security, emissions, or
safety reasons. The DSD submodule shall perform this handling with the UDS Service
SecurityAccess (0x27). The DSD submodule will perform a verification whether the
execution of the requested service (NOT the UDS Service SecurityAccess (0x27)) is
allowed in the current Security level by asking for the current security level, using the
DSL function Dcm_GetSecurityLevel.
The management of the security level is not part of the DSD submodule.
Note: For some use cases (e.g. UDS Service ReadDataByIdentifier (0x22), where
some DataIdentifier can be secure) it will be necessary for the Application to call also
the function Dcm_GetSecurityLevel.
[SWS_Dcm_00217] dIf the newly received diagnostic service is not allowed in the
current Security level (according to the configuration parameter DcmDsdSidTabSe-
curityLevelRef), the DSD submodule shall transmit a negative response with NRC
0x33 (Security access denied) to the DSL submodule.c()
[SWS_Dcm_00617] dIf the newly received diagnostic service is allowed in the current
Security level ( see [SWS_Dcm_00217]), but the requested subservice is not allowed in
[SWS_Dcm_00773] dIf the newly received diagnostic service is not allowed in the
current mode condition (according to the configuration parameter DcmDsdSidTab-
ModeRuleRef), the DSD submodule shall transmit the calculated negative response
of the referenced DcmModeRule to the DSL submodule.c()
[SWS_Dcm_00774] dIf the newly received diagnostic service is allowed in the cur-
rent mode condition [SWS_Dcm_00773], but the requested subservice is not allowed
in the current mode condition (according to the configuration parameter DcmDsdSub-
ServiceModeRuleRef), the DSD submodule shall transmit the calculated negative
response of the referenced DcmModeRule to the DSL submodule.c()
The DSD submodule checks whether a specific subfunction is supported before exe-
cuting the requested command.
[SWS_Dcm_00273] General sub-function supported NRC check dThe DSD shall
send the negative response NRC 0x12 (sub-functionNotSupported ), if for the pro-
cessed service no configured DcmDsdSubService exists with the DcmDsdSubSer-
viceId of the processed service. This NRC check shall not be done for UDS Service
0x31 (RoutineControl).c()
The DSD submodule will check for the minimum message length before executing the
requested command.
[SWS_Dcm_00696] dThe DSD submodule shall trigger a negative response with NRC
0x13 (Incorrect message length or invalid format), if the length of the request is inferior
to the minimum length of the request.c()
[SWS_Dcm_01411] dIf DcmDsdSubService is configured for a DcmDsdService, the
Dcm shall support the sub-function configured in DcmDsdSubServiceId with SPRMIB
set to 0 or 1.c()
The purpose of this functionality is that, just after receiving the diagnostic request, the
Manufacturer Application is requested to check permission/environment.
E.g. in after-run ECU state, it might be not allowed to process OBD requests.
The purpose of this functionality is that, right before processing the diagnostic mes-
sage, the Supplier Application is requested to check permission/environment.
E.g. in after-run ECU state, it might be not allowed to process OBD requests.
[SWS_Dcm_00516] dIf container DcmDsdServiceRequestSupplierNotifica-
tion exists, the DSD submodule shall call the operation Xxx_Indication on all
configured ServiceRequestIndication ports (see configuration parameter DcmDsdSer-
viceRequestSupplierNotification).c()
[SWS_Dcm_00517] dIf at least a single Xxx_Indication function called according
to [SWS_Dcm_00516] returns E_REQUEST_NOT_ACCEPTED, the DSD submodule
shall give no response.c()
[SWS_Dcm_00518] dIf at least a single Xxx_Indication function called accord-
ing to [SWS_Dcm_00516] has returned E_NOT_OK and no function has returned
E_REQUEST_NOT_ACCEPTED, the DSD submodule shall trigger a negative re-
sponse with NRC from the ErrorCode parameter.c()
[SWS_Dcm_01322] d If more than one Xxx_Indication function called, accord-
ing to [SWS_Dcm_00516], has returned E_NOT_OK and no function has returned
E_REQUEST_NOT_ACCEPTED, the DSD submodule shall trigger a negative re-
sponse using the ErrorCode parameter from the first Xxx_Indication returning
E_NOT_OK.c(RS_Diag_04011)
[SWS_Dcm_00221] dThe DSD submodule shall search for the executable functionality
of the DSP submodule for newly received diagnostic service identifier and shall call the
corresponding DSP service interpreter.c()
[SWS_Dcm_00222] dWhen the DSP submodule has finished the execution of the re-
quested Diagnostic Service the DSD submodule shall assemble the response.c()
The execution of the DSP service interpreter can have the results:
• positive Result or
• negative Result.
Following possible Responses can be assembled:
• positive Response,
• negative Response, or
• no Response (in the case of suppression of responses).
[SWS_Dcm_00223] dThe DSD submodule shall add the response service identi-
fier and the response data stream (returned by the Application) in the parameter
"Dcm_MsgContextType".c()
[SWS_Dcm_00224] dThe DSD submodule shall therefore transfer the
Dcm_MsgContextType into a (response) buffer and shall add the service identi-
fier at the first byte of the buffer.c()
[SWS_Dcm_00225] dThe DSD submodule shall execute the "Initiate transmission"
functionality in the next execution step.c()
The DSP submodule can trigger the transmission of a negative response with a specific
NRC to the DSD submodule. For the allowed NRC of the executed Service ID please
refer to the specification of the service in ISO14229-1 [1] (see Section 4.2.4 Response
code parameter definition Table 12) and ISO15031-5 [2]. The DSP and the Application
have to take care of the correct use of NRC of the executed Service ID.
[SWS_Dcm_00228] dThe DSD submodule shall handle all NRCs supported from the
Application and defined in Dcm_NegativeResponseCodeType.c()
[SWS_Dcm_00240] dIn case the request has been fully processed by the Dcm, The
DSD submodule shall finish the processing of one Diagnostic Message of the Diagnos-
tic Service Dispatcher by calling DspInternal_DcmConfirmation().c()
Rationale for [SWS_Dcm_00240]: The DSP submodule is waiting for the execution of
the DspInternal_DcmConfirmation() functionality. So it has to be sent, also when no
Data Confirmation is provided. Altogether this means that in any of the following cases:
• Positive Response,
• Negative Response,
• Suppressed Positive Response, and
• Suppressed Negative Response
The DSD submodule will finish by calling DspInternal_DcmConfirmation() (refer to
8.10.3 DspInternal_DcmConfirmation).
[SWS_Dcm_00741] dThe DSD submodule shall call the operation Xxx_Confirmation()
on all ports using the ServiceRequestNotification interface (see configuration param-
eter DcmDsdServiceRequestManufacturerNotification and DcmDsdSer-
viceRequestSupplierNotification)c()
[SWS_Dcm_00742] dThe call of Xxx_Confirmation() shall be done right after the call
of DspInternal_DcmConfirmation()c()
[SWS_Dcm_00677] dIf the operation Indication() returns value
E_REQUEST_NOT_ACCEPTED, the Dcm module shall not send any diagnostic
response and shall end the current diagnostic request management.c()
[SWS_Dcm_00678] dIf the operation Indication() returns value E_NOT_OK, the Dcm
module shall send a negative response with NRC value equal to ErrorCode parameter
value.c()
7.6.1 General
When receiving a function call from the DSD submodule requiring the DSP submodule
to process a diagnostic service request, the DSP always carries out following basic
process steps:
• analyze the received request message,
• check format and whether the addressed subfunction is supported,
• acquire data or execute the required function call on the DEM, SW-Cs or other
BSW modules
• assemble the response
The DSP submodule will check for appropriate message length and structure before
executing the requested command.
[SWS_Dcm_00272] dThe DSP submodule shall trigger a negative response with NRC
0x13 (Incorrect message length or invalid format), when the analysis of the request
message results in formatting or length failure.c()
Note: It is up to the implementation in which detail the format check might be executed
and depends on the level of detail the diagnostic data description provides at compile
time.
[SWS_Dcm_00039] dThe DSP submodule shall assemble the response message ex-
cluding response service identifier and determine the response message length.c()
[SWS_Dcm_00038] dIf the paged-buffer mechanism is used, the DSP submodule shall
determine the overall response length before any data is passed to the DSD submodule
or the DSL submodule respectively.c()
Requirement [SWS_Dcm_00038] is needed because of segmented diagnostic data
transmission on CAN using ISO15765-2 [12], which requires the provision of the over-
all length of the complete data stream in the very first CAN frame of the respective
data transmission (please refer to Section 7.4.4.9 for details about the paged-buffer
mechanism).
[SWS_Dcm_00275] dThe DSP submodule shall trigger a negative response with NRC
0x31 (Request out of range), when the analysis of the request message results in other
unsupported message parameters.c()
[SWS_Dcm_00775] dThe Dcm shall act as a mode manager for the diagnostic modes:
1. DcmDiagnosticSessionControl (service 0x10)
2. DcmEcuReset (partly service 0x11)
3. DcmSecurityAccess (service 0x27)
4. DcmModeRapidPowerShutDown (partly service 0x11)
5. DcmCommunicationControl_<symbolic name of ComMChannelId>. (service
0x28)
6. DcmControlDTCSetting (service 0x85)
7. DcmResponseOnEvent_<RoeEventID> (service 0x86)
8. DcmAuthenticationState_<Symbolic Name of DcmDslMainConnection>
c()
Note: The RTE/SchM will prefix the names with "MODE_", wherefore the names do
not include the MODE keyword.
[SWS_Dcm_01327] dThe Dcm shall define the ModeDeclarationGroupPrototype
DcmSecurityAccess as provided-ModeGroup based on the following ModeDeclara-
tionGroup:
1 ModeDeclarationGroup DcmSecurityAccess {
2 {
3 DCM_SEC_LEV_LOCKED
4 DCM_SEC_LEV_1
5 ...
6 DCM_SEC_LEV_63
7 }
8 initialMode = DCM_SEC_LEV_LOCKED
9 };
c()
[SWS_Dcm_01328] d
1 ModeSwitchInterface SchM_Switch_<bsnp>_DcmSecurityAccess {
2 isService = true;
3 SecLevel currentMode;
4 };
c()
Example 1:
1) DcmModeRule1 uses an OR combination (DcmModeCondition1 OR Dcm-
ModeRule2 OR DcmModeRule3)
a) DcmModeCondition1 is failing
–> NRC 0x22 is returned
b) DcmModeRule2 is failing
–> NRC 0x72 is returned
c) DcmModeRule3 is failing
–> NRC 0x22 is returned
d) DcmModeCondition1, DcmModeRule2 and DcmModeRule3 are failing
–> NRC 0x72 is returned
e) DcmModeCondition1 and DcmModeRule3 are failing
–> NRC 0x22 is returned
Example 2:
1) DcmModeRule1 uses an AND combination (DcmModeCondition1 AND Dcm-
ModeRule2 AND DcmModeRule3)
a) DcmModeCondition1 is failing
–> NRC 0x22 is returned
b) DcmModeRule2 is failing
–> NRC 0x72 is returned
c) DcmModeRule3 is failing
–> NRC 0x22 is returned
d) DcmModeCondition1, DcmModeRule2 and DcmModeRule3 are failing
–> NRC 0x22 is returned
e) DcmModeCondition1 and DcmModeRule3 are failing
–> NRC 0x22 is returned
e) DcmModeRule2 and DcmModeRule3 are failing
–> NRC 0x72 is returned
7.6.1.7 Passing SwDataDefProps properties from DEXT file to the Dcm Service
SW-C
[SWS_Dcm_01412] dIf a Dem function returns DEM_PENDING, the Dcm shall call this
function again at a later point in time as long as DEM_PENDING is returned.c()
[SWS_Dcm_00442] dThe Dcm module shall implement the services of UDS according
to Table 7.5.c()
SID Service Subfunction Supported
0x10 DiagnosticSessionControl Supported
0x11 ECUReset Supported
0x14 ClearDiagnosticInformation Supported
0x19 ReadDTCInformation Supported
0x22 ReadDataByIdentifier Supported
0x23 ReadMemoryByAddress Supported (callout)
0x24 ReadScalingDataByIdentifier Supported
0x27 SecurityAccess Supported
0x28 CommunicationControl Supported
0x29 Authentication Supported
0x2A ReadDataByPeriodicIdentifier Supported
0x2C DynamicallyDefineDataIdentifie Supported
0x2E WriteDataByIdentifier Supported
0x2F InputOutputControlByIdentifier Supported
0x31 RoutineControl Supported
0x34 RequestDownload Supported (callout)
0x35 RequestUpload Supported (callout)
0x36 TransferData Supported
0x37 RequestTransferExit Supported
0x38 RequestFileTransfer Supported (callout)
0x3D WriteMemoryByAddress Supported (callout)
0x3E TesterPresent Supported
0x83 AccessTimingParameter NRC
"ServiceNotSupported"
0x84 SecuredDataTransmission NRC
"ServiceNotSupported"
0x85 ControlDTCSetting On, off Supported
the 2-byte ISO14229-1 DTC format, the DTCFormat parameter shall be equal to
DEM_DTC_FORMAT_UDS.
[SWS_Dcm_01160] dWhen the Dcm module receives a request with the DTCSeverity-
Mask set to 0x00, it shall send a positive response as specified in ISO14229-1 [1] and
shall not use the Dem interface Dem_SetDTCFilter()c()
[SWS_Dcm_00835] dThe Dcm shall call Dem_SetDTCFilter prior to
Dem_GetNumberOfFilteredDTC, any sequence of Dem_GetNextFilteredDTC,
any sequence of Dem_GetNextFilteredDTCAndFDC, as well as any sequence of
Dem_GetNextFilteredDTCAndSeverity.c()
[SWS_Dcm_00836] dThe Dcm shall call Dem_SetFreezeFrameRecordFilter prior to
any sequence of Dem_GetNextFilteredRecord.c()
[SWS_Dcm_01127] dThe Dcm module shall retrieve the DTCSeverityAvailabilityMask
by using the function Dem_GetDTCSeverityAvailabilityMask()c()
Note: The mask DTCSeverityAvailabilityMask reflects the severity bits supported by
the ECU.
[SWS_Dcm_01212] dIf Dem_DisableDTCRecordUpdate() returns
DEM_WRONG_DTC, the Dcm shall send a NRC 0x31 (RequestOutOfRange).c
()
[SWS_Dcm_01213] dIf Dem_DisableDTCRecordUpdate() returns
DEM_WRONG_DTCORIGIN, the Dcm shall send a NRC 0x31 (RequestOutOfRange).c
()
[SWS_Dcm_01234] dIf Dem_GetNextFilteredDTCAndSeverity() returns
DEM_NO_SUCH_ELEMENT and at least one matching element could be re-
trieved before, the Dcm shall send a positive response including these data elements.c
()
[SWS_Dcm_01235] dIf Dem_GetNextFilteredDTCAndSeverity() returns
DEM_NO_SUCH_ELEMENT and no matching element could be retrieved before, the
Dcm shall send a positive response only for service, subservice and mandatory data
specified in ISO 14229-1 [1].c()
[SWS_Dcm_01242] dIf Dem_GetSizeOfExtendedDataRecordSelection() returns
DEM_WRONG_DTC, DEM_WRONG_DTCORIGIN or DEM_NO_SUCH_ELEMENT,
the Dcm shall send a NRC 0x31 (RequestOutOfRange)c()
[SWS_Dcm_01250] dIf Dem_GetStatusOfDTC() returns DEM_WRONG_DTC or
DEM_WRONG_DTCORIGIN, the Dcm shall send a NRC 0x31 (RequestOutOfRange).c
()
[SWS_Dcm_01409] dIf Dem_GetStatusOfDTC() returns
DEM_NO_SUCH_ELEMENT, the Dcm shall send a positive response only for
service and subservice.c()
UDS Service 0x10 allows an external tester to enable different diagnostic sessions in
the server. A diagnostic session enables a specific set of diagnostic services and/or
functionality in the server. The service request contains the parameter:
• diagnosticSessionType
[SWS_Dcm_00250] dThe Dcm module shall implement the UDS Service 0x10.c(RS_-
Diag_04006)
[SWS_Dcm_00307] dWhen responding to UDS Service 0x10, if the requested sub-
function value is not configured in the ECU (configuration parameter DcmDspSes-
sionLevel), the DSP submodule shall trigger a negative response with NRC 0x12
(SubFunction not supported).c()
If the requested subfunction value is configured, the following steps are processed
even if the requested session type is equal to the already running session type (see
ISO14229-1 [1] Section 9.2).
[SWS_Dcm_00311] dThe send confirmation function shall set the new diagnos-
tic session type with DslInternal_SetSesCtrlType() and shall set the new timing
parameters (P2ServerMax, P2ServerMax*) (see configuration parameters DcmD-
spSessionP2ServerMax and DcmDspSessionP2StarServerMax) and do the mode
switch of the ModeDeclarationGroupPrototype DcmDiagnosticSessionControl by call-
ing SchM_Switch_<bsnp>_DcmDiagnosticSessionControl() with the new diagnostic
session type (see [SWS_Dcm_91019]).c(RS_Diag_04248)
[SWS_Dcm_00085] dThe DSP submodule shall manage internally a read ac-
cess for the dataIdentifier 0xF186 (ActiveDiagnosticSessionDataIdentifier) defined in
ISO14229-1 [1].c()
UDS Service ECUReset (0x11) allows an external tester to request a server reset. The
service request contains parameter:
• resetType
[SWS_Dcm_00260] dThe Dcm module shall implement the UDS Service ECUReset
(0x11).c()
[SWS_Dcm_00373] dOn reception of a request for UDS Service 0x11 with the sub
functions other than enableRapidPowerShutDown (0x04) or disableRapidPowerShut-
Down (0x05), the Dcm module shall trigger the mode switch of ModeDeclarationGroup-
Prototype DcmEcuReset equal to the received resetType. After the mode switch is
requested the Dcm shall trigger the start of the positive response message transmis-
sion. Sub function hardReset (0x01) to HARD Sub function keyOffOnReset (0x02) to
KEYONOFF Sub function softReset (0x03) to SOFTc()
Note: By this mode switch the Dcm informs the BswM to carry out necessary actions
for the handling of this individual reset type. These actions can be configured within
the BswM action list corresponding to the requested reset type. Here the integrator can
also define if an ECU reset will finally be performed or not.
[SWS_Dcm_00594] dOn the transmit confirmation (call to Dcm_TpTxConfirma-
tion) of the positive response, the Dcm module shall trigger the mode switch
of ModeDeclarationGroupPrototype DcmEcuReset to the mode EXECUTE (via
SchM_Switch_<bsnp>_DcmEcuReset(RTE_MODE_DcmEcuReset_EXECUTE)).c()
Note: By this mode switch the Dcm requests the BswM to perform the final processing
on the reset type according to the configured action list.
[SWS_Dcm_00818] dOn reception of a request for UDS Service 0x11 with the
sub functions enableRapidPowerShutdown (0x04) or disableRapidPowerShutdown
(0x05), the Dcm module shall trigger the mode switch of ModeDeclarationGroupPro-
totype DcmRapidPowerShutDown: Sub function enableRapidPowerShutDown (0x04)
to ENABLE_RAPIDPOWERSHUTDOWN, Sub function disableRapidPowerShutDown
(0x05) to DISABLE_RAPIDPOWERSHUTDOWNc()
Note: If EnableRapidPowerShutdown is enabled, the ECU should shorten its power-
down time.
[SWS_Dcm_00589] dIn case the parameter DcmDspPowerDownTime is present, the
Dcm shall set the powerDownTime in positive response to sub-service enableRapid-
PowerShutDown with value set in DcmDspPowerDownTime.c()
[SWS_Dcm_00834] dAfter sending the positive response of EcuReset (call of
Dcm_TpTxConfirmation) the Dcm shall ignore all further requests during reset-
processing.c()
[SWS_Dcm_CONSTR_6080] DcmDspEcuResetRow container configuration dOne
container DcmDspEcuResetRow shall be configured for each DcmDsdSubService
(DcmDspEcuResetId matching to the DcmDsdSubServiceId) configured for the
UDS service ECUReset (0x11) which does not have the corresponding DcmDsdSub-
ServiceFnc parameter configured.c(RS_Diag_04098)
• groupOfDTC.
[SWS_Dcm_00247] dThe Dcm module shall implement UDS Service 0x14.c()
[SWS_Dcm_01263] dUpon reception of a UDS Service ClearDiagnosticInformation
(0x14) request with parameter groupOfDTC, the Dcm module shall call the API
Dem_SelectDTC() with the following parameter values:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
• DTC: groupOfDTC from the service request
• DTCFormat: DEM_DTC_FORMAT_UDS
• DTCOrigin: DEM_DTC_ORIGIN_PRIMARY_MEMORY
c(RS_Diag_04058)
[SWS_Dcm_01400] dAfter call of Dem_SelectDTC() the Dcm shall call
Dem_GetDTCSelectionResultForClearDTC() with the following parameter value:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef.
c()
[SWS_Dcm_01265] dIn case Dem_GetDTCSelectionResultForClearDTC() returns
DEM_WRONG_DTC, the Dcm shall send a NRC 0x31 (RequestOutOfRange).c()
[SWS_Dcm_01268] dIn case Dem_GetDTCSelectionResultForClearDTC() returns
E_OK, the Dcm module shall check if application allows to clear the DTC (according
to the configuration parameter DcmDspClearDTCCheckFnc). If not, the Dcm module
shall send a negative response with NRC set to value from the parameter "ErrorCode".c
()
[SWS_Dcm_01269] dIn case application allows to clear the DTC, the Dcm module
shall check if the DTC can be cleared in the current mode condition (according to the
configuration parameter DcmDspClearDTCModeRuleRef). If not, the Dcm module
shall send the calculated negative response code of the referenced DcmModeRule.c()
[SWS_Dcm_00005] dIf the condition checks are successfully done, the Dcm module
shall call Dem_ClearDTC with the following parameter values:
• ClientId = Client Id for this Dcm instance (see DcmDemClientRef)
c(RS_Diag_04058)
[SWS_Dcm_00705] dIn case Dem_ClearDTC() returns E_OK, the Dcm module shall
send a positive response.c()
[SWS_Dcm_00707] dIn case Dem_ClearDTC() returns DEM_CLEAR_FAILED, the
Dcm shall send a negative response 0x22 (conditionsNotCorrect).c()
[SWS_Dcm_00708] dIn case Dem_ClearDTC() returns DEM_WRONG_DTC, the Dcm
shall send a negative response 0x31 (requestOutOfRange).c()
Service 0x19 allows a client to read the status of server resident Diagnostic Trouble
Code (DTC) information.
[SWS_Dcm_00248] dThe Dcm module shall implement the UDS Service 0x19.c()
To setup the retrieval of specific data from the Dem module, the Dcm will
call different filter APIs (Dem_SetDTCFilter(), Dem_SetFreezeFrameRecordFilter(),
Dem_SelectFreezeFrameData() and Dem_SelectExtendedDataRecord()).
[SWS_Dcm_01043] dIn case E_NOT_OK is returned by Dem_SetDTCFilter(), the Dcm
module shall send a negative response with NRC 0x31 (requestOutOfRange).c()
[SWS_Dcm_01334] dFor all sub-functions addressing user defined fault memory,
before calling the appropriate Dem API, the Dcm shall add the value 0x0100 to
the received selection request parameter MemorySelection in order to match the
Dem_DTCOriginType.c()
UDS Service 0x19 with subfunctions 0x01, 0x11 or 0x12 requests the ECU to report
the number of DTCs matching tester-defined criteria. The service request contains the
parameter:
• DTCStatusMask
UDS Service 0x19 with subfunction 0x07 requests the ECU to report the num-
ber of DTCs matching tester-defined criteria. The service request contains the
parameters:
• DTCSeverityMask
• DTCStatusMask
[SWS_Dcm_00376] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x01, 0x07, 0x11 or 0x12, the Dcm module shall use the data in the response
message according to Table 7.6c()
Table 7.6: Subfaunction 0x01, 0x07, 0x11 and 0x12 response values
Table 7.7: Dem_SetDTCFilter() parameters values for subfunctions 0x01, 0x07, 0x11 and
0x12
UDS Service 0x19 with subfunctions 0x02, 0x0F or 0x13 requests the DTCs (and their
associated status) that match certain conditions. The service request contains the
parameter:
• DTCStatusMask
UDS Service 0x19 with subfunction 0x0A requests all supported DTCs and their associ-
ated status. UDS Service 0x19 with subfunction 0x15 requests all DTCs with permanent
status.
[SWS_Dcm_00377] dWhen sending a positive response to UDS Service 0x19 with
subfunction 0x02, 0x0A, 0x0F, 0x13, 0x15 or 0x17, the Dcm module shall use the data
in the response message according to Table 7.8.c()
Parameter name Value
DTCStatusAvailabilityMask DTCStatusAvailabilityMask (see [SWS_Dcm_00007])
DTCAndStatusRecord As defined in [SWS_Dcm_00008] and
[SWS_Dcm_00378]
MemorySelection (subservice 0x17 From request
only)
Table 7.8: Subfunction 0x02, 0x0A, 0x0F, 0x13, 0x15 and 0x17 eesponse values
Table 7.9: Dem_SetDTCFilter() parameters values for subfunctions 0x02, 0x0A, 0x0F,
0x13,0x15 and0x17
Note:
• The Dcm module can get an indication of the number of records that will be found
using Dem_GetNextFilteredDTC() by using Dem_GetNumberOfFilteredDTC().
This allows the implementation to calculate the total size of the response before
cycling through the DTCs.
• The value 0x00 used as DTCStatusMask for the subfunctions 0x0A and 0x15
disables the status byte filtering in Dem_SetDTCFilter().
[SWS_Dcm_00828] dIn case of paged buffer support is disabled, the Dcm module shall
not insert zero-padded DTCs to the response of UDS Service 0x19 with subfunctions
0x02, 0x0A, 0x0F, 0x13, 0x15 or 0x17.c()
When using paged buffer mechanism, in some case, it’s possible that the number of
DTC matching the filter change between the calculation of the total size, needed for
the first page transmission, and the sending of the further pages. For this reason, the
following requirement apply :
[SWS_Dcm_00587] dIn case of paged buffer support is enabled, The Dcm shall limit
the response size to the size calculated when sending the first page. If more DTCs
match the filter after this sending, the additional DTCs shall not be considered.c()
[SWS_Dcm_00588] dIn case of paged buffer support is enabled,The Dcm shall pad the
response with the size calculated when sending the first page. If less DTC match the
filter after this sending, the missing DTCs shall be padded with 0 value as defined in
15031-6 [14].c()
[SWS_Dcm_01229] dIf Dem_GetNextFilteredDTC() returns
DEM_NO_SUCH_ELEMENT and at least one matching element could be re-
trieved before, the Dcm shall send a positive response including these data elements.c
()
[SWS_Dcm_01230] dIf Dem_GetNextFilteredDTC() returns
DEM_NO_SUCH_ELEMENT and at no matching element could be retrieved be-
fore, the Dcm shall send a positive response only for service and subservice and
additional parameters required within a positive response.c()
UDS Service 0x19 with subfunction 0x08 requests the DTCs and the associated status
that match a tester-defined severity mask record. The service request contains the
following parameters:
• DTCSeverityMask
• DTCStatusMask
[SWS_Dcm_00379] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x08, the Dcm module shall use the data in the response message according
to Table 7.10.c()
Parameter name Value
DTCStatusAvailabilityMask DTCStatusAvailabilityMask (see [SWS_Dcm_00007])
DTCAndSeverityRecord As defined in [SWS_Dcm_00380]
reportDTCBySeverityMaskRecord
DTCStatusMask DTCStatusMask from request (see [SWS_Dcm_00700]
DTCFormat DEM_DTC_FORMAT_UDS
DTCOrigin PRIMARY_MEMORY
FilterWithSeverity YES
DTCSeverityMask DTCSeverityMask from request
FilterForFaultDetectionCounter NO
Note: The Dcm module can get an indication of the number of records
that will be found using Dem_GetNextFilteredDTCAndSeverity() by using
Dem_GetNumberOfFilteredDTC().
UDS Service 0x19 with subfunction 0x09 requests the severity information of a DTC.
The service request contains the parameter:
• DTCMaskRecord
[SWS_Dcm_00381] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x09, the Dcm module shall use the data in the response message according
to Table 7.12.c()
Parameter name Value
DTCStatusAvailabilityMask DTCStatusAvailabilityMask (see [SWS_Dcm_00007])
DTCAndSeverityRecord DTCSeverityMask: see [SWS_Dcm_01402]
DTCFunctionalUnit: see [SWS_Dcm_01403]
DTC: the given DTC of the request
statusOfDTC : see [SWS_Dcm_01404]
[SWS_Dcm_01402] dTo select the DTC, the Dcm module shall call the API
Dem_SelectDTC() with the following parameter values:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
• DTC: DTC from the service request
• DTCFormat: DEM_DTC_FORMAT_UDS
• DTCOrigin: DEM_DTC_ORIGIN_PRIMARY_MEMORY
c()
[SWS_Dcm_01403] dTo retrieve the DTCSeverityMask of the selected DTC, the Dcm
shall call Dem_GetSeverityOfDTC() with the following parameter value:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
c()
[SWS_Dcm_01404] dTo retrieve the DTCFunctionalUnit of the selected DTC, the Dcm
shall call Dem_GetFunctionalUnitOfDTC() with the following parameter value:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
c()
[SWS_Dcm_01405] dTo retrieve the statusOfDTC of the selected DTC, the Dcm shall
call Dem_GetStatusOfDTC() with the following parameter value:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
c()
[SWS_Dcm_01226] dIf Dem_GetFunctionalUnitOfDTC() returns DEM_WRONG_DTC
or DEM_WRONG_DTCORIGIN, the Dcm shall send a NRC 0x31 (requestOut-
OfRange).c()
[SWS_Dcm_01240] dIf Dem_GetSeverityOfDTC() returns DEM_WRONG_DTC, the
Dcm shall send a NRC 0x31 (requestOutOfRange)c()
[SWS_Dcm_01406] dIf Dem_GetStatusOfDTC() returns DEM_WRONG_DTC or
DEM_WRONG_DTCORIGIN, the Dcm shall send a NRC 0x31 (requestOutOfRange).c
()
The UDS Service 0x19 with subfunction 0x06, 0x10 or 0x19 requests a specific Ex-
tended Data Records for a specific DTC. The service request contains the parameters:
• DTCMaskRecord
• DTCExtendedDataRecordNumber
[SWS_Dcm_01547] Read user defined memory extended data record authentica-
tion check dOn reception of the UDS Service ReadDTCInformation (0x19) with sub-
function reportUserDefMemoryDTCExtDataRecordByDTCNumber (0x19), the Dcm
shall check if the access to the selected user defined memory in parameter Memo-
rySelection is authenticated and read the DTC information only if:
• a DcmDspReadDTCInformationUserDefinedFaultMemoryRole is configured
with DcmDspReadDTCInformationUserDefinedFaultMemoryRoleId matching the
MemorySelection and the verification according to [SWS_Dcm_01522] was suc-
cessful or
• the active white list on that connection has for that requested user defined mem-
ory selection one entry.
c(RS_Diag_04233)
Table 7.13: Dem_SelectDTC() parameters values for subfunctions 0x06, 0x10 and 0x19
As required in [SWS_Dcm_00371], the Dcm module shall obtain the size of the ex-
tended data record by using Dem_GetSizeOfExtendedDataRecordSelection().
UDS Service 0x19 with subfunction 0x03 allows an external tester to request the corre-
sponding DTCs for all FreezeFrame records present in an ECU.
[SWS_Dcm_00300] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x03, the Dcm module shall use the data in the response message according
to Table 7.15.c()
Parameter name Value
DTCRecord / DTCSnapshotRecord- As defined in [SWS_Dcm_00299]
Number
Using UDS Service 0x19 with subfunction 0x04 or 0x18, an external tester can request
FreezeFrame information for one or all FreezeFrames of a specific DTC. The service
request contains parameters:
• DTCMaskRecord
• DTCSnapshotRecordNumber
The subfunction 0x18 has an additional MemorySelection.
UDS Service 0x19 with subfunction 0x05 allows an external tester to request Freeze-
Frame information for a specific FreezeFrame record number. The service request
contains parameter:
• DTCStoredDataRecordNumber
Due to Dem limitation, the diagnostic service $19 05 is limited to the OBD legislative
freeze frame.
[SWS_Dcm_00632] dOn reception of service 0x19 with subfunction 0x05, if the record
number of the diagnostic request is different from 0x00, the Dcm module shall send a
negative response with NRC 0x31 (request out of range).c()
[SWS_Dcm_00574] dWhen sending a positive response to UDS Service 0x19 with
subfunction 0x05 and DTCStoredDataRecordNumber is 0x00, the Dcm module shall
use the data in the response message according to Table 7.17.c()
Parameter name Value
DTCStoredDataRecordNumber DTCStoredDataRecordNumber from request (0x00)
DTCAndStatusRecord DTC according to [SWS_Dcm_01193], statusOfDTC
according to [SWS_Dcm_00389]
DTCStoredDataRecordNumberOfIden- As defined in [SWS_Dcm_00388]
tifiers / DTCStoredDataRecord
An external test tool can request the first occurred or most recent failed or confirmed
DTC and associated status, by sending the UDS Service request 0x19 including one of
the following sub-functions 0x0B, 0x0C, 0x0D, 0x0E
[SWS_Dcm_00392] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x0B, 0x0C, 0x0D or 0x0E, the Dcm module shall use the data in the response
message according to Table 7.18.c()
Parameter name Value
DTCStatusAvailabilityMask DTCStatusAvailabilityMask (see [SWS_Dcm_00007])
DTCAndStatusRecord The DTC is obtained according to [SWS_Dcm_00466], the
StatusOfDtc is obtained according to [SWS_Dcm_00393]
Table 7.18: Subfunctions 0x0B, 0x0C, 0x0D and 0x0E response values
[SWS_Dcm_00393] dFor the purpose of responding to UDS Service 0x19 with sub-
functions 0x0B, 0x0C, 0x0D or 0x0E, the Dcm module shall obtain the StatusOfDtc by
calling Dem_GetStatusOfDTC() with the following parameter values:
• ClientId :Client Id for this Dcm instance (see DcmDemClientRef
An external test tool may request an ECU to report the FaultDetectionCounter for all
DTCs with a "Prefailed" status, by sending a UDS Service request 0x19 with subfunction
0x14.
[SWS_Dcm_00464] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x14, the Dcm module shall use the data in the response message according
to Table 7.20.c()
Parameter name Value
DTC The DTC is obtained according from the call to
Dem_GetNextFilteredDTCAndFDC()
DTCFaultDetectionCounter The DTCFaultDetectionCounter is obtained according
from the call to Dem_GetNextFilteredDTCAndFDC()
UDS Service 0x19 with subfunction 0x42 requests WWH OBD DTCs matching a DTC
status mask a severity mask record. The service request contains the following pa-
rameters:
• FunctionalGroupIdentifier
• DTCSeverityMask
• DTCStatusMask
[SWS_Dcm_01128] dThe Dcm shall reject request messages for subFunction 0x42
with FunctionalGroupIdentifier unequal to 0x33 by returning NRC 0x31 (requestOut-
OfRange)c()
[SWS_Dcm_01129] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x42, the Dcm module shall use the data in the response message according
to Table 7.22.c()
Parameter name Value
FunctionalGroupIdentifier 0x33
DTCStatusAvailabilityMask Dem_GetDTCStatusAvailabilityMask (see
[SWS_Dcm_00007] )
DTCSeverityAvailabilityMask Dem_GetDTCSeverityAvailabilityMask (see
[SWS_Dcm_01127])
DTCFormatIdentifier Dem_GetTranslationType (limited to values 0x04 and
0x02)
DTCAndSeverityRecord As defined in [SWS_Dcm_01130]
Note: The Dcm module can get an indication of the number of records
that will be found using Dem_GetNextFilteredDTCAndSeverity() by using
Dem_GetNumberOfFilteredDTC().
With UDS Service 0x19 with sub-function 0x55 a client can retrieve a list of WWH-OBD
DTCs with the "permanent DTC" status. The service request contains the following
parameter:
• FunctionalGroupIdentifier
[SWS_Dcm_01343] dThe Dcm shall only process request messages for sub-function
0x55 with FunctionalGroupIdentifier equal to 0x33.c()
[SWS_Dcm_01344] dThe Dcm shall reject request messages for sub-function 0x55
with FunctionalGroupIdentifier unequal to 0x33 by returning NRC 0x31 (RequestOut-
OfRange).c()
[SWS_Dcm_01345] dWhen sending a positive response to UDS Service 0x19 with sub-
function 0x55, the Dcm module shall use the following data in the response message
according to Table 7.25.c()
Parameter name Value
FunctionalGroupIdentifier 0x33
DTCStatusAvailabilityMask Dem_GetDTCStatusAvailabilityMask (see
[SWS_Dcm_00007] )
DTCFormatIdentifier Dem_GetTranslationType (limited to values 0x04 and
0x02)
DTCAndStatusRecord As returned by Dem_GetNextFilteredDTC()
Note : When responding to UDS Service 0x19 with sub-function 0x55, the
Dcm module could obtain the DTCAndStatusRecords by repeatedly calling
Dem_GetNextFilteredDTC() after having configured the filter with Dem_SetDTCFilter()
using the parameter values according to Table 7.26.
Parameter name Value
ClientId See DcmDemClientRef
DTCStatusMask 0x00
DTCFormat DEM_DTC_FORMAT_UDS
DTCOrigin DEM_DTC_ORIGIN_PERMANENT_MEMORY
FilterWithSeverity NO
DTCSeverityMask Not relevant
FilterForFaultDetectionCounter NO
The Dcm module can get an indication of the number of records that will be found using
Dem_GetNextFilteredDTC() by using Dem_GetNumberOfFilteredDTC().
[SWS_Dcm_01346] dWhen responding to UDS Service 0x19 with sub-function
0x55 and Dem_GetTranslationType returns a Dem_DTCTranslationFormatType
different to 0x02 (DEM_DTC_TRANSLATION_SAEJ1939_73) or 0x04
(DEM_DTC_TRANSLATION_J2012DA_FORMAT_04), the Dcm module shall re-
turn NRC 0x10 (generalReject).c()
[SWS_Dcm_00253] dThe Dcm module shall implement the UDS Service ReadDataByI-
dentifier (0x22)c()
[SWS_Dcm_01335] dOn reception of the UDS Service ReadDataByIdentifier (0x22), if
the number of requested DID exceeds the configured maximum number of data identi-
fiers (refer to configuration parameter DcmDspMaxDidToRead), the Dcm module shall
send NRC 0x13 (Incorrect message length or invalid format)c()
With UDS Service 0x22, the tester can request the value of one or more DIDs.
[SWS_Dcm_01548] Read UDS DID authentication check dOn reception of the UDS
Service ReadDataByIdentifier (0x22), the Dcm shall check if the access to all requested
DIDs outside the range 0xF200-0xF8FF is authenticated and read the data identifiers
only if:
• a DcmDspDidReadRole is configured for that DID and the verification according
to [SWS_Dcm_01522] was successful or
• the active white list on that connection has for each requested DID one entry with
read access that matches that DID.
c(RS_Diag_04233)
[SWS_Dcm_01549] Read Dynamically defined DID authentication check dOn re-
ception of the UDS Service ReadDataByIdentifier (0x22), the Dcm shall check for all
requested DIDs inside the range 0xF200-0xF3FF if the content is based of DIDs or
parts of DIDs that are authenticated and read the data identifiers only if:
• a DcmDspDidReadRole is configured for those DIDs and the verification accord-
ing to [SWS_Dcm_01522] was successful or
• the active white list on that connection has for each requested DID one entry with
read access that matches those DIDs.
c(RS_Diag_04233)
According to [SWS_Dcm_01537] the authentication checks are only executed if
DcmDspAuthentication is configured. In case of a failed authentication the NRC han-
dling is according to [SWS_Dcm_01544] and [SWS_Dcm_01551] applies.
[SWS_Dcm_00438] dOn reception of the UDS Service ReadDataByIdentifier (0x22)
, for every requested DID the Dcm module shall check if the DID is supported (see
configuration parameter DcmDspDid and DcmDspDidRange) If none of the requested
DIDs is supported, the Dcm module shall send NRC 0x31 (Request out of range).c()
[SWS_Dcm_00651] dOn reception of the UDS Service ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF, the Dcm module shall check if the DID can be
dynamically defined (the DcmDspDidInfo it references has the DcmDspDidDynami-
callyDefined set to true). If yes, if this DID has not been dynamically defined yet by
calls to the DynamicallyDefineDataIdentifier (0x2C) service, i.e. it has no data sources
defined, the Dcm module shall send NRC 0x31 (Requestout of range)c()
[SWS_Dcm_00652] dOn reception of the UDS Service ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF, if verification has been successfully done (see
[SWS_Dcm_00651]) and the dynamic DID has been defined with a DID source (see
[SWS_Dcm_00646]), the Dcm module shall use the configuration of this DID source to
read the data.c()
[SWS_Dcm_00864] dOn reception of the UDS Service ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF, if verification has been successfully done
(see [SWS_Dcm_00651]) and the dynamic DID has been defined with a DID source
(see [SWS_Dcm_00646]), the Dcm module shall do the session, security and mode
dependencies checks for all source DIDs in case the configuration parameter DcmD-
spDDDIDcheckPerSourceDID is set to TRUE.c()
[SWS_Dcm_00865] dIn case the configuration parameter DcmDspDDDIDcheckPer-
SourceDID is set to FALSE, there is no session, security or mode dependencies check
for the source DIDs.c()
Note: In case there is a need to validate the session or security dependencies always,
the DDDID should be cleared by any security and session transitions.
[SWS_Dcm_00653] dOn reception of the UDS Service ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF, if verification has been successfully done (see
[SWS_Dcm_00651]) and the dynamic DID has been defined with a memory address
(see [SWS_Dcm_00646]), the Dcm module shall use the callout Dcm_ReadMemory to
read the data.c()
[SWS_Dcm_00561] dIf a DID is set as unused (DcmDspDidUsed set to FALSE), the
Dcm shall consider the DID as not supported (according to [SWS_Dcm_00438])c()
[SWS_Dcm_00433] dOn reception of the UDS Service ReadDataByIdentifier (0x22),
for every requested DID the Dcm module shall check if the DID has a Read access con-
figured (see configuration parameter DcmDspDidRead in DcmDspDidInfo). If none
of the DID has a Read access, the Dcm module shall send NRC 0x31 (Request out of
range).c()
[SWS_Dcm_00434] dOn reception of the UDS Service ReadDataByIdentifier (0x22),
for every requested DID the Dcm module shall check if the DID can be read in the
current session (see configuration parameter DcmDspDidReadSessionRef). If none
of the DID can be renden in the current session, the Dcm module shall send a NRC
0x31 (RequestOutOfRange).c()
[SWS_Dcm_00435] dOn reception of the UDS Service ReadDataByIdentifier (0x22),
for every requested DID the Dcm module shall check if the DID can be read in the cur-
rent security level (see configuration parameter DcmDspDidReadSecurityLevel-
Ref). If not, the Dcm module shall send NRC 0x33 (Security access denied).c()
[SWS_Dcm_00819] dOn reception of the UDS Service ReadDataByIdentifier (0x22),
for every requested DID the Dcm module shall check if the DID can be read in the
current mode condition (according to the configuration parameter DcmDspDidRead-
ModeRuleRef). If not, the Dcm module shall send the calculated negative response of
the referenced DcmModeRule.c()
[SWS_Dcm_00439] dOn reception of the UDS Service ReadDataByIdentifier (0x22),
for every requested DID outside the OBD range (F400-F8FF), the Dcm mod-
ule shall request the application if the DID can be read by calling the config-
ured function (if parameter DcmDspDataUsePort set to USE_DATA_SYNCH_FNC or
USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_FNC_ERROR; see configuration
parameter DcmDspDataConditionCheckReadFnc) on each data of the DID or
call the associated ConditionCheckRead operation (if parameter DcmDspDataUse-
Port set to USE_DATA_SYNCH_CLIENT_SERVER or USE_DATA_ASYNCH_CLIENT_-
SERVER or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR). If not (one function re-
turns E_NOT_OK) , the Dcm module shall send a negative response with NRC set
to value from the parameter "ErrorCode" of DcmDspDataConditionCheckReadFnc
function or ConditionCheckRead operation.c()
Note: This requirement exceeds the standard ConditionCheck behavior as described
by ISO 14229-1 ”NRC handling for ReadDataByIdentifier service” , because it is not
restricted to use NRC 0x22 in a negative response.
[SWS_Dcm_00440] dIf the requested DID references other DID using DcmDsp-
DidRef, the Dcm module shall process the verification and the reading of every ref-
erenced DID and concatenate the response data without any gaps based on the se-
quence in the configuration.c()
[SWS_Dcm_CONSTR_6023] DcmDspDidRef shall not reference the same DID ref-
erence twice dDcmDspDid container shall not include the same DcmDspDidRef pa-
rameters more than once.c()
[SWS_Dcm_CONSTR_6057] Dependency for DcmDspDataEcuSignal dDcmDsp-
DataEcuSignal shall be only present if DcmDspDataUsePort is set to USE_ECU_-
SIGNAL.c()
[SWS_Dcm_00258] dThe Dcm module shall implement the UDS Service ReadScaling-
DataByIdentifier (0x24)c()
To obtain scaling information, the tester can invoke UDS Service 0x24 with the 2-byte
DID as parameter. The configuration of the Dcm contains for each configured DID:
• The 2-byte DID (see configuration parameter DcmDspDidIdentifier)
• For every data of the DID :
[SWS_Dcm_00252] dThe Dcm module shall implement the UDS Service SecurityAc-
cess (0x27)c(RS_Diag_04005)
The purpose of this service is to provide a means to access data and/or diagnostic
services, which have restricted access for security, emissions, or safety reasons.
[SWS_Dcm_00321] dIf the request length is correct, the DSP submodule shall check
if the requested subfunction value (access type) is configured in the ECU (see con-
figuration parameter DcmDspSecurityLevel). If the requested subfunction value is
not configured, the DSP submodule shall trigger a negative response with NRC 0x12
(SubFunction not supported).c()
[SWS_Dcm_00323] dIf the requested subfunction value is configured and a service
with subfunction type "requestSeed "(= odd value) has been received and if the re-
quested access type is already active (see Dcm_GetSecurityLevel), the DSP sub-
module shall set the seed content to 0x00.c()
[SWS_Dcm_00324] dIn the other case than the one described in [SWS_Dcm_00323]
(access type is not active or "send key" request), if DcmDspSecurityUsePort is
set to USE_ASYNCH_CLIENT_SERVER, the DSP submodule shall call the configured
operation Xxx_GetSeed() (in case "request seed" is received) or Xxx_CompareKey()
(in case "send key" is received).c()
[SWS_Dcm_00862] dOn reception of the UDS Service SecurityAccess (0x27) with sub-
function type "requestSeed" and if the requested access type is not already active, the
Dcm module shall request a seed by calling the configured Xxx_GetSeed() function (if
parameter is not configured, the number of failed attempts to enter the requested
security level (AttemptCounter) is not considered.c()
[SWS_Dcm_01349] dIf Xxx_CompareKey() returns value
DCM_E_COMPARE_KEY_FAILED and if the number of failed attempts to enter
the requested security level (AttemptCounter) is greater or equal than the value con-
figured for the DcmDspSecurityNumAttDelay parameter of the requested security
level, the Dcm module shall start the SecurityDelayTimer with the value configured in
DcmDspSecurityDelayTime for the SecurityLevel which was requested in the failed
request, send a negative response with NRC 0x36 (exceededNumberOfAttempts) and
shall not change the Dcm internal security level.c()
[SWS_Dcm_01150] dIf Xxx_CompareKey() returns value E_NOT_OK, the Dcm module
shall send a negative response with NRC code equal to the ErrorCode parameter value
and shall not increment the attempt counter or change the Dcm internal security level.c
()
[SWS_Dcm_01350] dWhile the SecurityDelayTimer of SecurityLevel is not yet
elapsed, the Dcm module shall send a negative response with NRC 0x37 (required-
TimeDelayNotExpired) on a SecurityAccess (0x27) requestSeed subfunction request
for that Security Level.c()
[SWS_Dcm_00659] dIf Xxx_GetSeed() returns value E_NOT_OK, the Dcm module
shall send a negative response with NRC code equal to the ErrorCode parameter
value.c()
upon any diagnostic session change where the new session does not support UDS
Service CommunicationControl anymore, the Dcm shall:
1. switch the mode group Dcm_CommunicationControl_<Network> ModeDeclara-
tionGroupPrototype to DCM_ENABLE_RX_TX_NORM_NM
2. call BswM_Dcm_CommunicationMode_CurrentState with the parameters Net-
workHandleType set to the corresponding NetworkHandle of the network and
RequestedCommunicationMode set to DCM_ENABLE_RX_TX_NORM_NM
c()
Note: the NetworkHandles to be considered are all ComM channels which are refer-
enced from either DcmDspSpecificComMChannelRef, DcmDspAllComMChannel-
Ref or DcmDspComControlSubNodeComMChannelRef.
[SWS_Dcm_01077] dIf a CommunicationControl Request with the sub-function "en-
ableRxAndDisableTxWithEnhancedAddressInformation" is received, the Dcm shall
check the "nodeIdentification-Number" listed as DcmDspComControlSubNodeId and
for the referenced network (see DcmDspComControlSubNodeComMChannelRef ), it
shall do the followings:
1. trigger the mode switch Dcm_CommunicationControl_<Network> ModeDeclara-
tionGroupPrototype to the mode corresponding the communicationType and con-
trolType parameter from the CommunicationControl request.
2. call the Api BswM_Dcm_CommunicationMode_CurrentState with the parameters
NetworkHandleType and Dcm_CommunicationModeType corresponding to the
communicationType and controlType parameter from the CommunicationControl
request (see Dcm_CommunicationModeType definition).
The analogue controlType enableRxAndDisableTx shall be used with the the following
existing Dcm_CommunicationModeType values:
• DCM_ENABLE_RX_DISABLE_TX_NORM
• DCM_ENABLE_RX_DISABLE_TX_NM
• DCM_ENABLE_RX_DISABLE_TX_NORM_NM.
c()
[SWS_Dcm_01078] dThe Dcm shall trigger a negative response with NRC 0x31
(RequestOutOfRange), if a CommunicationControl Request with the sub-function
"enableRxAndDisableTxWithEnhancedAddressInformation" and a "nodeIdentification-
Number" which is not listed as DcmDspComControlSubNodeId is received.c()
[SWS_Dcm_01079] dIf a CommunicationControl Request with the sub-function "en-
ableRxAndTxWithEnhancedAddressInformation" is received, the Dcm shall check the
"nodeIdentification-Number" listed as DcmDspComControlSubNodeId and for the
referenced network (see DcmDspComControlSubNodeComMChannelRef ) it shall
do the followings:
The UDS service Authentication (0x29) is used to provide dynamic means to control
the access to diagnostic services. Execution of certain diagnostic services might have
impact on safety, emissions or the vehicle. Controlling the access to diagnostic ser-
vices via certificates provide means to control the access to diagnostic services after
production. The access to these resources can be limited in time or bound to certain
vehicles or ECUs only. AUTOSAR Dcm provides an out of the box solution for authen-
ticated diagnostics with a given semantics of the UDS service Authentication. Even
ISO 14229-1 [x] leaves more freedom, the Dcm will use only the functionality specified
in this chapter. Further interpretations, certificate types or certificate content are out
of scope of the AUTOSAR Dcm module. At the point of time this specification was de-
veloped, only the DIS (Draft International Standard) of ISO 14299-1:2018 is available.
Unless the official international standard ISO 14299-1:2018 is released, AUTOSAR will
implement a solution based on this not public available draft.
[SWS_Dcm_01559] Support of UDS service authentication dThe Dcm shall imple-
ment the UDS service Authentication (0x29) for sub-functions:
• deAuthenticate
• verifyCertificateUnidirectional
• verifyCertificateBidirectional
• proofOfOwnership
• authenticationConfiguration
c(RS_Diag_04230)
Note: AUTOSAR Dcm only implements the authentication via PKI certificated ex-
change. Authentication with challenge-response (ACR) is out of scope of AUTOSAR.
If it is required it needs a full custom implementation using existing Dcm callouts for
custom service processing.
[SWS_Dcm_01551] NRC Handling for UDS service authentication dThe Dcm shall
follow the NRC handling as defined for ISO 14229-1:2018 for UDS service authenti-
cation. This includes the NRC codes as well as the order of individual NRC checks.c
(RS_Diag_04230)
[SWS_Dcm_CONSTR_6091] Authentication configuration dThe presence of a
DcmDsdService with DcmDsdSidTabServiceId set to 0x29, requires a configured con-
tainer DcmDspAuthentication on DcmDsp.c()
[SWS_Dcm_CONSTR_6092] Authentication per connection dThe presence of a
DcmDsdService with DcmDsdSidTabServiceId set to 0x29, requires a configured
DcmDspAuthenticationConnection per configured connection DcmDslConnection.c()
[SWS_Dcm_CONSTR_6093] One authentication configuration per connection
dEach DcmDspAuthenticationConnection shall refer a different DcmDslMainConnec-
tion by the reference in DcmDspAuthenticationConnectionMainConnectionRef.c()
The Dcm is using the Csm and KeyM for certificate management. Parsing the certifi-
cate is a potential time-consuming operation and needs to be executed asynchronous.
There are opinions that security shall not reveal any cause of failed authentication and
thus have no dedicated NRCs for different certificate failures. To respect this use case
the Dcm provides a general security NRC handling.
[SWS_Dcm_01560] Use of generic NRC for invalid certificate or content dIf the
mode referenced by DcmDspAuthenticationGeneralNRCModeRuleRef evaluates to
true, the Dcm shall send the NRC code given in DcmDspAuthenticationGeneralNRC
instead of the specific NRC codes in all situation where a Certificate verification failed
- NRC is returned.c(RS_Diag_04230)
7.6.2.10.1 De-authentication
The de-authenticate sub-function shall be always available if service 0x29 is used. This
service set the authentication state to deauthenticated for the diagnostic connection the
request was received on.
[SWS_Dcm_CONSTR_6095] dThe presence of a DcmDsdService with DcmDsd-
SidTabServiceId set to 0x29, requires a DcmDsdSubService on this DcmDsdService
with DcmDsdSubServiceId set to deAuthenticate.c()
[SWS_Dcm_01561] Deauthentication by diagnostic service request dOn reception
of an Authentication (0x29) service with sub-function equal to de-authenticate, the Dcm
shall set the authentication state to deauthenticated on the connection the Dcm has
received that request.c(RS_Diag_04230)
[SWS_Dcm_01565] dOn reception of an Authentication (0x29) service with sub-
function equal to de-Authenticate, the Dcm shall reply with a positive response having
the authenticationReturnParameter set to DeAuthentication successful.c(RS_Diag_-
04230)
in the parameters lengthOfCertificateClient and return a NRC 0x13 if the size does not
match.c(RS_Diag_04230)
[SWS_Dcm_01461] Verify verifyCertificateBidirectional message length check
dOn reception of an Authentication (0x29) service with sub-function equal to verifyCer-
tificateBidirectional, the Dcm shall verify that the message length fits to the size given
in the parameters lengthOfCertificateClient and lengthOfChallengeClient and return a
NRC 0x13 if the size does not match. The Dcm uses the lengthOfCertificateClient as
offset to calculate the position of lengthOfChallengeClient.c(RS_Diag_04230)
[SWS_Dcm_01462] Required configuration for bidirectional authentication dIf the
sub-function verifyCertificateBidirectional is configured in the DsdServiceSubFunc-
tion for 0x29, the configuration parameters DcmDspAuthenticationECUCertifi-
cateRef and DcmDspAuthenticationECUCertificateKeyElementRef are re-
quired.c()
[SWS_Dcm_01579] Mandatory certificate data dOn reception of an Authentication
(0x29) service with sub-function equal to verifyCertificateUnidirectional or verifyCertifi-
cateBidirectionaland a lengthOfCertificateClient equal to zero, the Dcm shall respond
with NRC 0x13 (incorrectMessageLengthOrInvalidFormat)..c(RS_Diag_04230)
Store certificate in Csm
[SWS_Dcm_01463] Certificate validation dOn reception of an Authentication (0x29)
service with sub-function equal to verifyCertificateUnidirectional or verifyCertificate-
Bidirectional, the Dcm shall use the KeyM API KeyM_SetCertificate to store the client
certificate from the service request within the KeyM module. The following parameter
values shall be used:
• CertificateId = DcmDspAuthenticationConnectionCertificateRef ->
KeyMCertificate.KeyMCertificateId
• certificateDataPtr.certData = Pointer to certificateClient from Request
• certificateDataPtr.certDataLength = lengthOfCertificateClient from Request
c(RS_Diag_04230)
Diagnostic certificate configuration is a task that is mainly executed in the Csm and
KeyM modules. The Dcm provides an abstraction from these modules and only keeps
symbolic references to containers that keep the information. Please take attention
while configuring the Csm and KeyM ’in spirit of Dcm certificates’.
[SWS_Dcm_01464] Invalid certificate size failure dIf the API KeyM_SetCertificate
returns KEYM_E_SIZE_MISMATCH, the Dcm shall return the NRC 0x13 (incorrectMes-
sageLengthOrInvalidFormat).c(RS_Diag_04230)
[SWS_Dcm_01465] Behavior on busy crypto operation dIf any of the Csm or KeyM
APIs called by the Dcm is returning CRYPTO_E_BUSY or KEYM_E_BUSY, the Dcm
shall return the NRC 0x21 (busyRepeat).c(RS_Diag_04230)
Note: While most of the KeyM return values can be mapped 1:1 on UDS NRC values,
this does not apply for KEYM_E_INVALID_CONTENT. An invalid content from KeyM
indicates that a key element verification has failed. A failed key element verification
means that the certificate itself is valid, but the KeyM refuses the certificate as the
data does not fit to the server’s required value. In UDS this is expressed by ’Certificate
verification failed - Invalid Scope’. As result invalid content from KeyM will trigger the
NRC invalid scope.
[SWS_Dcm_01475] Check certificate format dIf the operation started in
[SWS_Dcm_01468] returns a result of KEYM_E_CERTIFICATE_REVOKED, the Dcm
shall refuse the client certificate and return a negative response with NRC ’Certificate
verification failed - Invalid Certificate (revoked)’.c(RS_Diag_04235)
[SWS_Dcm_01476] Check certificate valid until dIf the operation started in
[SWS_Dcm_01468] returns a result of KEYM_E_VALIDITY_PERIOD_FAIL, the Dcm
shall refuse the client certificate and return a negative response with NRC ’Certificate
verification failed - Invalid Time Period’.c(RS_Diag_04235)
Verify target identification
Certificates can have target constraints, such as limiting a certificate to a certain VIN
or ECU version number. This is realized by target identification blocks as elements of
the certificate. A target identification block is evaluated at runtime, only if all items are
fulfilled, the certificate is accepted by the Dcm. Each target identification element is
mapped to a compare value of a DcmModeCondition. A DcmModeRule combines
these conditions to one term that evaluates to true or false.
[SWS_Dcm_01490] Certificate acceptance by target identification dThe Dcm shall
only accept certificates if the configured mode rule referenced by DcmDspAuthen-
ticationTargetIdentificationModeRuleRef is evaluated to true.c(RS_Diag_-
04236)
[SWS_Dcm_01491] Behavior on failed target identification dIf the config-
ured mode rule referenced by DcmDspAuthenticationTargetIdentification-
ModeRuleRef is evaluated to fail, the Dcm shall refuse the certificate and send a
negative response with NRC ’Certificate verification failed - Invalid Scope’.c(RS_Diag_-
04236)
[SWS_Dcm_01492] Invalid target identification block data dIf the Dcm fails to match
the target identification block data from DcmModeConditionConnectionCertificateCom-
pareElementRef as valid (e.g. number of required bytes do not match), the Dcm shall
send a negative response with NRC ’Certificate verification failed - Invalid Format’.c
(RS_Diag_04236)
Providing the server challenge
The Dcm uses the Csm to create a server challenge by returning a random value.
[SWS_Dcm_01588] Length of server challenge dThe Dcm shall create a server
challenge with the length configured in DcmDspAuthenticationEcuChallenge-
Length.c(RS_Diag_04230)
the Dcm shall provide the server certificate in the response. The Dcm shall call
KeyM_GetCertificate with the following parameters:
certId: DcmDspAuthenticationECUCertificateRef/KeyMCertificateId
certificateDataPtr: Dcm implementation specific
c(RS_Diag_04230)
[SWS_Dcm_01507] Server certificate size check dIf the API Csm_GetKeyElement
returns CRYPTO_E_SMALL_BUFFER, the Dcm shall return NRC 0x14 (responseToo-
Long).c(RS_Diag_04230)
[SWS_Dcm_01508] Sending positive response on verifyCertificateBidirectional
dIf the Dcm has successfully calculated server challenge, the server challenge and the
server certificate, the Dcm shall send a positive response for the verifyCertificateBidi-
rectional request with the following parameter values:
authenticationReturnParameter: ’Certificate verified, Ownership verification neces-
sary’
lengtfOfChallengeServer: length of the challenge generated in [SWS_Dcm_01493]
challengeServer: challenge generated in [SWS_Dcm_01493]
lengthOfCertificateServer: length of the certificated provided in [SWS_Dcm_01506]
certificateServer: certificated provided in [SWS_Dcm_01506]
lengthOfProofOfOwnershipServer: length of proof-of-ownership server created in
[SWS_Dcm_01504]
proofOfOwnershipServer: proof-of-ownership server created in [SWS_Dcm_01504]
lengthOfEphemeralPublicKeyServer: 0x0000
c(RS_Diag_04230)
[SWS_Dcm_01517] White list access dTo read the white list from a certificate,
the Dcm shall read all child elements from the referenced DcmDspAuthentica-
tionWhiteListServicesElementRef, DcmDspAuthenticationWhiteList-
DIDElementRef, DcmDspAuthenticationWhiteListRIDElementRef and
DcmDspAuthenticationWhiteListMemorySelectionElementRef certifi-
cate data, by repeating calling the sequence of KeyM_CertElementGetFirst and
KeyM_CertElementGetNext until no further child element is available. The Dcm shall
use the following in parameter values:
certId: DcmDspAuthenticationConnectionCertificateRef -> KeyMCertifi-
cate.KeyMCertificateId
certElementId: DcmDspAuthenticationWhiteListMemorySelectionElemen-
tRef -> KeyMCertificateElement.KeyMCertificateElementId
c()
[SWS_Dcm_01518] White list size check dIf the size of the read white list infor-
mation in [SWS_Dcm_01516] is larger than the size in DcmDspAuthentication-
WhiteListMemorySelectionMaxSize, the Dcm shall send a negative response
with NRC ’Certificate verification failed - Invalid Content’.c(RS_Diag_04230)
[SWS_Dcm_CONSTR_6087] Required size for white lists dIf any of the optional
DcmDspAuthenticationWhiteListMemorySelectionElementRef are config-
ured, the corresponding DcmDspAuthenticationWhiteListMemorySelection-
MaxSize shall be configured for that white list.c(RS_Diag_04232)
The roles transmitted inside the certificates are used to assign a tester on one con-
nection one or more roles. A single role itself is presented by a certain bit within the
bitfield representation of the role. Within the Dcm there is static role assignment to each
diagnostic service. A service can be executed if at least one role (bit) assigned to a
service matches a role (bit) in the certificate.
[SWS_Dcm_CONSTR_6088] Supported role sizes dThe parameter DcmDspAu-
thenticationRoleSize defines the size in bytes used in both, certificates and ECU
internal static role configuration. All role parameters (e.g. DcmDspServiceRole) shall
have values that would fit in the amount of bytes given by DcmDspAuthentication-
RoleSize.c(RS_Diag_04233)
[SWS_Dcm_01521] Integer interpretation of roles in certificates dThe Dcm shall
interpret all configured role integer values in the little endian format.c(RS_Diag_04234)
[SWS_Dcm_01522] Role verification dUpon each role verification, the Dcm shall
make a bitwise ’and’ operation on the role provided in the certificate for that connection
and the role assigned to the service. If the result is greater than 0, the Dcm shall treat
the service as allowed to be executed.c(RS_Diag_04233; RS_Diag_04234)
[SWS_Dcm_01523] Failed role verification dUpon each role verification, the Dcm
shall make a bitwise ’and’ operation on the role provided in the certificate for that con-
nection and the role assigned to the service. If the result is equal to 0, the Dcm shall
stop the processing of that service and send a negative response ’authenticationRe-
quired’.c(RS_Diag_04233; RS_Diag_04234)
An example of roles in certificates and services with assigned certificates is given in
Figure 7.10. The provided certificate uses 1 byte for roles, with 5 role definitions in.
The certificate will grant the tester rights for the roles ’AfterSales’ and ’ExtendedUser’.
With that certificate, the tester can execute the services that have the corresponding
permissions to be executed in that roles. In that example, the service 0x28 and 0x11
01 are both allowed to be executed. The routine with identifier 0x5678 is only allowed
to be executed in role ’production’, the Dcm will deny the execution with NRC ’authenti-
cationRequired’.
Besides the use of roles, the certificates can get extended with optional white lists
for service execution. This allows the issuer of the certificate to extend the range of
allowed services without updating the access lists in the ECU.
The white list is build out of the following elements:
• List of allowed services, 1-4 byte each
• List of allowed data identifiers (DID) and access information, 3 byte each
• List of allowed routine identifiers (RID) and access information, 3 byte each
• List of allowed user defined fault memories, 1 byte each
Parsing and access to the different elements of the white lists is done by
invoking KeyM_CertElementGetFirst and KeyM_CertElementGetNext according to
[SWS_Dcm_01517].
[SWS_Dcm_01524] White list for services definition dThe white list for services
is a set of values, each consisting of up to 4 bytes. Each value itself contains the
first bytes of a diagnostic service that is allowed be executed.c(RS_Diag_04233; RS_-
Diag_04234)
Example:
In the following example, a white list section within a certificate is shown. It contains 5
additional services that can be executed:
1 ...
2 SEQUENCE (1 elem)
3 SEQUENCE (2 elem)
4 OBJECT IDENTIFIER 3.9.3.345.3.1.3453.24.3.9.355.73
5 SET (6 elem)
6 OCTET STRING (1 byte) 85
7 OCTET STRING (2 byte) 1101
8 OCTET STRING (3 byte) 22123A
9 OCTET STRING (3 byte) 2E123A
10 OCTET STRING (4 byte) 310113F4
11 SEQUENCE (3 elem) ....
DID read operations are performed from various UDS services. Dcm checks on each
DID read the access to that DID.
[SWS_Dcm_01526] White list definition for RIDs dThe white list for RIDs defines
the set of routine identifiers that have access to the sub-functions startRoutine, sto-
pRoutine and requestRoutineResult. Each entry shall contain in the first two bytes the
RID number and in the third byte the following access definitions:
• Bit 0: Access to sub-function ’startRoutine’
• Bit1: Access to sub-function ’stopRoutine’
• Bit2: Access to sub-function ’requestRoutineResult’
A bit value of 0 means that the sub-function is forbidden, a bit value of 1 means that
the sub-function is allowed. All not used bits (3-7) shall be set to zero.
RID numbers are always in big endian format (MSB first).c(RS_Diag_04233; RS_-
Diag_04234)
Example:
[SWS_Dcm_01527] White list definition for MemorySelection dThe white list mem-
ory selection is used for the UDS service 0x19 with sub-functions 0x17, 0x18 and 0x19.
The value in the white list defines the accepted parameter values for MemorySelection
in the UDS request.c(RS_Diag_04233; RS_Diag_04234)
Transition into authenticated session
7.6.2.10.6 AuthenticationConfiguration
DID(s), the Dcm module shall do the session, security and mode dependencies checks
for all source data in case the configuration parameter DcmDspDDDIDcheckPer-
SourceDID is set to TRUE.c(RS_Diag_04215)
[SWS_Dcm_01098] Condition check for ReadDataByPeriodicIdentifier DID dOn
reception of the UDS Service ReadDataByPeriodicIdentifier (0x2A), for every requested
periodicDIDs, the Dcm module shall invoke the ConditionCheckRead operation (or the
respective C-Function) if configured. In case of a negative result, the returned Error-
Code shall be used as final negative response code.c(RS_Diag_04215)
[SWS_Dcm_01099] Support of dynamic length DIDs dOn reception of the UDS Ser-
vice ReadDataByPeriodicIdentifier (0x2A), for every requested periodicDIDs, with a
configured dynamic length the Dcm module shall invoke the ReadDataLength opera-
tion (or the respective C-Function) to retrieve the length of the periodicDID. This length
is valid for each ReadData operation till the periodicDID is removed from the scheduler
or updated via a new request. This length shall further be used to check against the
UUDT size.c(RS_Diag_04215)
[SWS_Dcm_01100] Verifications on all sub-functions except stopSending dOn
reception of the UDS Service ReadDataByPeriodicIdentifier (0x2A) with transmission-
Mode different than stopSending, the Dcm shall do the verification for session, security
and mode rule.c(RS_Diag_04215)
[SWS_Dcm_01426] No verifications for sub-function stopSending dOn reception
of the UDS Service ReadDataByPeriodicIdentifier (0x2A) with transmissionMode =
stopSending, the Dcm shall skip the verification for security and mode rule.c(RS_Diag_-
04215)
[SWS_Dcm_01427] Dcm behavior on sub-function stopSending without further
parameters dOn reception of the UDS Service ReadDataByPeriodicIdentifier (0x2A)
with transmissionMode = stopSending and no periodicDataIdentifier in the request, the
Dcm shall stop all scheduled periodicDataIdentifier transmissions.c(RS_Diag_04215)
[SWS_Dcm_01428] Dcm behavior on sub-function stopSending with further pa-
rameters dOn reception of the UDS Service ReadDataByPeriodicIdentifier (0x2A) with
transmissionMode = stopSending and at least one periodicDataIdentifier is in the re-
quest, the Dcm shall stop the scheduled periodic data transmissions for all requested
and in the current session supported periodicDataIdentifiers.c(RS_Diag_04215)
[SWS_Dcm_00716] Serialisation with S/R data interfaces dTo serialize the required
AUTOSAR data types (signed- and unsigned integer) into the response message of
ReadDataByPeriodicIdentifier responses the target endianness configured in DcmD-
spDataEndianness shall be considered for DcmDspData elements having DcmD-
spDataUsePort set to USE_DATA_SENDER_RECEIVER, USE_DATA_SENDER_RE-
CEIVER_AS_SERVICE, USE_ECU_SIGNAL. In case DcmDspDataEndianness is
not present, the DcmDspDataDefaultEndianness shall be used instead.c(RS_-
Diag_04215)
[SWS_Dcm_00843] Ensuring maxim number of periodic DIDs dOn reception of the
UDS Service ReadDataByPeriodicIdentifier (0x2A),the Dcm module shall check if the
The following example gives an overview about scheduler type 1 and type 2. They use
PDIDs starting at 0xF201 and having all PDID data set to zero. The PDIDs are send
on CAN 2.0, using the CAN-IDs 0x6A0, 0x6A1.
Example 1: Scheduler Type 1
1 SchedulerRate: 1000ms
2
3 PeriodicRate: 4000ms
4
5 NumPeriodicAddr: 1
6
7 NumPDID 2
8
9 1017.02 6A0 01 00 00 00 00 00 00 00
10
11 2016.97 6A0 02 00 00 00 00 00 00 00
12
13
14
15 5016.87 6A0 01 00 00 00 00 00 00 00
16
17 6016.78 6A0 02 00 00 00 00 00 00 00
18
19
20
21 9016.67 6A0 01 00 00 00 00 00 00 00
22
23 10016.63 6A0 02 00 00 00 00 00 00 00
24
25
26
27 13016.52 6A0 01 00 00 00 00 00 00 00
28
29 14016.46 6A0 02 00 00 00 00 00 00 00
7 NumPDID 2
8
9 945.01 6A0 01 00 00 00 00 00 00 00
10
11 4944.78 6A0 02 00 00 00 00 00 00 00
12
13 8944.66 6A0 01 00 00 00 00 00 00 00
14
15 12944.49 6A0 02 00 00 00 00 00 00 00
16
17 16944.33 6A0 01 00 00 00 00 00 00 00
18
19 20944.28 6A0 02 00 00 00 00 00 00 00
20
21 24944.01 6A0 01 00 00 00 00 00 00 00
10 529.89 6A0 01 00 00 00 00 00 00 00
11
12 1529.70 6A0 02 00 00 00 00 00 00 00
13
14 2529.59 6A0 03 00 00 00 00 00 00 00
15
16 3529.35 6A0 04 00 00 00 00 00 00 00
17
18
19
20 4529.16 6A0 05 00 00 00 00 00 00 00 <-- Alias (should start over at
01)
21
22 5529.02 6A0 01 00 00 00 00 00 00 00
23
24 6529.15 6A0 02 00 00 00 00 00 00 00
25
26 7529.03 6A0 03 00 00 00 00 00 00 00
27
28
29
30 8528.92 6A0 04 00 00 00 00 00 00 00 <-- Alias (should start over
at 01)
31
32 9528.82 6A0 05 00 00 00 00 00 00 00
33
34 10528.46 6A0 01 00 00 00 00 00 00 00
35
36 11528.60 6A0 02 00 00 00 00 00 00 00
37
38
39
40 12528.47 6A0 03 00 00 00 00 00 00 00 <-- Alias (should start over
at 01)
41
42 13528.36 6A0 04 00 00 00 00 00 00 00
43
44 14528.27 6A0 05 00 00 00 00 00 00 00
2
3 PeriodicRate: 4000ms
4
5 NumPeriodicAddr: 1
6
7 NumPDID 5
8
9
10 592.03 6A0 01 00 00 00 00 00 00 00
11
12 4591.56 6A0 02 00 00 00 00 00 00 00
13
14 8591.13 6A0 03 00 00 00 00 00 00 00
15
16 12590.69 6A0 04 00 00 00 00 00 00 00
17
18 16590.26 6A0 05 00 00 00 00 00 00 00
19
20 20589.78 6A0 01 00 00 00 00 00 00 00
21
22 24589.23 6A0 02 00 00 00 00 00 00 00
23
24 28588.90 6A0 03 00 00 00 00 00 00 00
25
26 32588.45 6A0 04 00 00 00 00 00 00 00
27
28 36588.05 6A0 05 00 00 00 00 00 00 00
13 778.73 6A1 02 00 00 00 00 00 00 00
14
15
16
17 1778.56 6A0 03 00 00 00 00 00 00 00
18
19 1778.61 6A1 04 00 00 00 00 00 00 00
20
21
22
23 2778.44 6A0 05 00 00 00 00 00 00 00
24
25
26
27 4778.24 6A0 01 00 00 00 00 00 00 00
28
29 4778.27 6A1 02 00 00 00 00 00 00 00
30
31
32
33 5778.08 6A0 03 00 00 00 00 00 00 00
34
35 5778.12 6A1 04 00 00 00 00 00 00 00
36
37
38
39 6778.12 6A0 05 00 00 00 00 00 00 00
40
41
42 8777.90 6A0 01 00 00 00 00 00 00 00
43
44 8777.93 6A1 02 00 00 00 00 00 00 00
45
46
47
48 9777.70 6A0 03 00 00 00 00 00 00 00
49
50 9777.73 6A1 04 00 00 00 00 00 00 00
51
52
53
54 10777.57 6A0 05 00 00 00 00 00 00 00
7 NumPDID 5
8
9
10
11
12 764.64 6A0 01 00 00 00 00 00 00 00
13
14 764.69 6A1 02 00 00 00 00 00 00 00
15
16
17
18 4762.79 6A0 03 00 00 00 00 00 00 00
19
20 4762.82 6A1 04 00 00 00 00 00 00 00
21
22
23
24 8762.35 6A0 05 00 00 00 00 00 00 00
25
26 8762.36 6A1 01 00 00 00 00 00 00 00
27
28
29
30 12762.01 6A0 02 00 00 00 00 00 00 00
31
32 12762.04 6A1 03 00 00 00 00 00 00 00
5 NumPeriodicAddr: 2
6
7 NumPDID 1
8
9
10
11 7.19 6A0 01 00 00 00 00 00 00 00
12
13 77.21 6A1 01 00 00 00 00 00 00 00
14
15
16
17 1077.61 6A0 01 00 00 00 00 00 00 00
18
19 1077.68 6A1 01 00 00 00 00 00 00 00
20
21
22
23 2078.29 6A0 01 00 00 00 00 00 00 00
24
25 2078.40 6A1 01 00 00 00 00 00 00 00
26
27
28
29 3078.26 6A0 01 00 00 00 00 00 00 00
30
31 3078.33 6A1 01 00 00 00 00 00 00 00
32
33
34
35 4079.13 6A0 01 00 00 00 00 00 00 00
36
37 4079.19 6A1 01 00 00 00 00 00 00 00
38
39
40
41 5079.17 6A0 01 00 00 00 00 00 00 00
42
43 5079.24 6A1 01 00 00 00 00 00 00 00
44
45
46
47 6079.75 6A0 01 00 00 00 00 00 00 00
48
49 6079.82 6A1 01 00 00 00 00 00 00 00
50
51
52
53 7080.77 6A0 01 00 00 00 00 00 00 00
54
55 7080.91 6A1 01 00 00 00 00 00 00 00
56
57
58
59 8080.90 6A0 01 00 00 00 00 00 00 00
60
61 8080.97 6A1 01 00 00 00 00 00 00 00
62
63
64
65 9081.09 6A0 01 00 00 00 00 00 00 00
66
67 9081.15 6A1 01 00 00 00 00 00 00 00
[SWS_Dcm_00255] dThe Dcm module shall implement the UDS Service WriteDataByI-
dentifier (0x2E) of the Unified Diagnostic Services.c()
When using Service 0x2E, the request of the tester contains a 2-byte DID and a
dataRecord with the data to be written. The configuration of the Dcm contains a list
of supported DIDs and defines for each configured DID:
• The 2-byte DID (see configuration parameter DcmDspDidIdentifier)
• For every data of the DID:
– The function WriteData to be used for this data (see configuration parame-
ters DcmDspDataWriteFnc and DcmDspDataUsePort)
[SWS_Dcm_01496] Write UDS DID authentication check dOn reception of the UDS
Service WriteDataByIdentifier (0x2E), the Dcm shall check if the write access to the
requested DID is authenticated and write the data identifier only if:
• a DcmDspDidWriteRole is configured for that DID and the verification according
to [SWS_Dcm_01522] was successful or
• the active white list on that connection has for the requested DID one entry with
write access that matches that DID.
c(RS_Diag_04233)
According to [SWS_Dcm_01537] the authentication checks are only executed if
DcmDspAuthentication is configured. In case of a failed authentication the NRC han-
dling is according to [SWS_Dcm_01544] and [SWS_Dcm_01551] applies.
[SWS_Dcm_00467] dOn reception of the UDS Service WriteDataByIdentifier (0x2E),
the Dcm module shall check if the DID is supported (see configuration parameter
DcmDspDid and DcmDspDidRange) If not, the Dcm module shall send NRC 0x31 (Re-
quest out of range) .c()
[SWS_Dcm_00562] dIf a DID is set as unused (DcmDspDidUsed set to FALSE), the
Dcm shall consider the DID as not supported (according to [SWS_Dcm_00467])c()
[SWS_Dcm_00468] dOn reception of the UDS Service WriteDataByIdentifier (0x2E),
the Dcm module shall check if the DID has a Write access configured (see configuration
parameter DcmDspDidWrite in DcmDspDidInfo). If not, the Dcm module shall send
NRC 0x31 (Request out of range).c()
[SWS_Dcm_01583] Not allowed atomic BndM write operation dIf the Dcm
calls BndM_WriteBlock_’BlockId.Shortname’ according to [SWS_Dcm_01582] and
BndM_WriteBlock_’BlockId.Shortname’ returns E_NOT_OK, the Dcm shall return a
negative response 0x24 (requestSequenceError).c(RS_Diag_04243)
Note: The BndM needs to be set into writing mode as a precondition. This is either
done by the coding sub-module in Dcm or by a CDD.
[SWS_Dcm_01584] Positive response on atomic BndM write operation dIf the
Dcm has triggered an atomic BndM write operation according to [SWS_Dcm_01582],
the Dcm shall return a positive response if the write operation of the BndM has called
Dcm_BndMWriteBlockFinish with the parameter result set to E_OK.c(RS_Diag_04243)
[SWS_Dcm_01585] Negative response on atomic BndM write operation dIf the
Dcm has triggered an atomic BndM write operation according to [SWS_Dcm_01582],
the Dcm shall return a negative response 0x72 (generalProgrammingFailure) if the write
operation of the BndM has called Dcm_BndMWriteBlockFinish with the parameter re-
sult set to E_NOT_OK.c(RS_Diag_04243)
Note: The Dcm needs to ensure that [SWS_Dcm_00024] requirement is respected
while waiting on the job finish callback as specified in [SWS_Dcm_01584] and
[SWS_Dcm_01585].
[SWS_Dcm_01586] dIf the Dcm is reading or writing a DID with DcmDspDidUsePort
set to USE_ATOMIC_BNDM, the Dcm shall transform the dataRecord into the corre-
sponding BndM type. The DID data element structure needs to be compatible to the
referenced ImplementationDataType of the BndMBlockDescriptor. For each DID data
element a corresponding sub-element shall exist in the ImplementationDataType with
the same shortname and the basetypes shall be compatible.c(RS_Diag_04243)
[SWS_Dcm_CONSTR_6099] Consistency of BndM Block configuration dIf a
DcmDspDid has DcmDspDidUsePort set to USE_ATOMIC_BNDM, the parameter
DcmDspDidBndMBlockIdRef shall be present.c()
[SWS_Dcm_00256] dThe Dcm module shall implement the UDS Service InputOutput-
ControlByIdentifier (0x2F).c(RS_Diag_04218)
When using Service 0x2F, the request of the tester contains a 2-byte DID.
The configuration of the Dcm contains a list of supported DID’s. For each DID, the Dcm
configuration specifies:
• The 2-bytes DID (see configuration parameter DcmDspDidIdentifier)
• For every data of the DID :
shall reject requests without included control enable mask record with the NRC 0x13
(incorrectMessageLengthOrInvalidFormat).c(RS_Diag_04218)
[SWS_Dcm_01274] dIf the configuration parameter DcmDspDidControlMask is set
to DCM_CONTROLMASK_NO, the Dcm shall reject request with included control en-
able mask record with the NRC 0x13 (incorrectMessageLengthOrInvalidFormat).c(RS_-
Diag_04218)
[SWS_Dcm_CONSTR_6084] Sender-receiver communication for IOControls is
limited to atomic S/R interfaces dIf a DID has a configured DcmDspDidUsePort
= USE_DATA_ELEMENT_SPECIFIC_INTERFACES, the possible values of DcmDsp-
DataUsePort are limited to non S/R interfaces.c(RS_Diag_04218)
[SWS_Dcm_CONSTR_6085] Atomic S/R for IOControls are limited to non-NV in-
terfaces dIf a DID has a configured DcmDspDidControl, the possible values of
DcmDspDidUsePort are limited to atomic S/R interface and USE_DATA_ELEMENT_-
SPECIFIC_INTERFACES.c(RS_Diag_04218)
[SWS_Dcm_CONSTR_6086] Signals for DIDs with Atomic S/R are not shared
with other DIDs dIf a DcmDspDid is configured to have an atomic S/R interface, all
DcmDspDataElements referenced by this DID shall be referenced only from this DID.
c(RS_Diag_04218)
[SWS_Dcm_CONSTR_6050] dIf a DcmDspDid is used in service 0x2F and is config-
ured to have an atomic S/R interface, the DcmDspDidControlMask shall be set to
DCM_CONTROLMASK_EXTERNAL and the parameter DcmDspDidControlMaskSize
shall be present with a value greater than zero.c()
[SWS_Dcm_00680] Mapping of internal ControlEnableMaskRecord to DID data
elements dIf DcmDspDidControlMask is set to DCM_CONTROLMASK_INTERNAL,the
ControlEnableMaskRecord shall be mapped to the DID data elements by applying the
following mapping :
• The most significant bit of the first byte of the ControlEnableMask shall corre-
spond to the first DID data element
• The second most significant bit of the first byte of the ControlEnableMask shall
correspond to the second DID data element and continuing on in this fashion
utilizing as many ControlEnableMask bytes as necessary to map all DID data
elements.
c(RS_Diag_04218)
The controlEnableMaskRecord is only present, if the DataIdentifer supports more than
one signal.
The Dcm supports atomic S/R interfaces activated by the configuration DcmD-
spDidUsePort set to USE_ATOMIC_SENDER_RECEIVER_INTERFACE or USE_-
ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE. In the text and require-
ments of this chapter the term ’atomic S/R interface’ for IO control means that the
IO controlled DID is configured to one of the two choices.
The service use case [TPS_SWCT_01654] and the [constr_1679] limits the S/R inter-
faces used for IOControl to explicit S/R communication. In implicit communication is
not supported by the Dcm.
[SWS_Dcm_01434] IOControl General execution sequence dOn reception of a re-
quest for UDS Service InputOutputControlByIdentifier (0x2F) the Dcm shall first exe-
cute the service verifications according to [SWS_Dcm_00563], [SWS_Dcm_00565],
[SWS_Dcm_00566], [SWS_Dcm_00567] and on successful passing the verifications
start the configured service processing.c(RS_Diag_04218)
[SWS_Dcm_00396] dOn reception of a request for UDS Service InputOutputCon-
trolByIdentifier (0x2F) with inputOutputControlParameter equal to returnCon-
trolToEcu, the Dcm module shall invoke all impacted configured function of the
controlEnableMaskRecord (if parameter DcmDspDataUsePort set to USE_DATA_-
SYNCH_FNC or USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_FNC_ERROR; see
configuration parameter DcmDspDataReturnControlToEcuFnc). Alternatively call
all the associated ReturnControlToECU operations (if parameter DcmDspDataUse-
Port set to USE_DATA_SYNCH_CLIENT_SERVER or USE_DATA_ASYNCH_CLIENT_-
SERVER or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR) for every data of the DID
received in the request.c(RS_Diag_04218)
[SWS_Dcm_00397] dOn reception of a request for UDS Service InputOutputCon-
trolByIdentifier (0x2F) with inputOutputControlParameter equal to resetToDe-
fault, the Dcm module shall invoke all impacted configured function of the controlEn-
ableMaskRecord (if parameter DcmDspDataUsePort set to USE_DATA_SYNCH_FNC
or USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_FNC_ERROR; see configuration
parameter DcmDspDataResetToDefaultFnc). Alternatively call all the associated
ResetToDefault operations (if parameter DcmDspDataUsePort set to USE_DATA_-
SYNCH_CLIENT_SERVER or USE_DATA_ASYNCH_CLIENT_SERVER or USE_DATA_-
ASYNCH_CLIENT_SERVER_ERROR) for every data of the DID received in the request.c
(RS_Diag_04218)
[SWS_Dcm_00398] dOn reception of a request for UDS Service InputOutputCon-
trolByIdentifier (0x2F) with inputOutputControlParameter equal to freezeCur-
rentState, the Dcm module shall invoke all impacted configured function of the
controlEnableMaskRecord (if parameter DcmDspDataUsePort set to USE_DATA_-
SYNCH_FNC or USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_FNC_ERROR; see
configuration parameter DcmDspDataFreezeCurrentStateFnc). Alternatively call
all the associated FreezeCurrentState operations (if parameter DcmDspDataUse-
Port set to USE_DATA_SYNCH_CLIENT_SERVER or USE_DATA_ASYNCH_CLIENT_-
SERVER or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR) for every data of the DID
received in the request.c(RS_Diag_04218)
[SWS_Dcm_00399] dOn reception of a request for UDS Service InputOutputCon-
trolByIdentifier (0x2F) with inputOutputControlParameter equal to shortTer-
mAdjustment, the Dcm module shall invoke all impacted configured function of
• 0x22 conditionsNotCorrect
• 0x26 FailurePreventsExecutionOfRequestedAction
• 0x31 requestOutOfRange
• 0x78 ResponsePending (similar to E_PENDING)
Based on the write trigger of the SW-C to IOControlResponse_DID.IOOpera-
tionResponse, the Dcm will:
1. wait for final processing (0x78)
2. send a positive response message (0x00)
3. send a negative response message (all other values, except 0xFF)
Note: The controlState is a separate data elment that it can be optionally pro-
cessed by a data transformer to transform the byte stream into a composite type (see
Figure 7.11: IO-Control with Sender/Receiver interfaces).
An example of the Dcm S/R interaction is given in Figure 7.12 and Figure 7.13. For
ReturnControlToECU the data from the request is provided to the application, the
Dcm will continue to finalize the request after writing the data into the S/R ports. All
other sub-functions will wait for the application providing the response 0x00 or an code.
sd IOSequence 00
2F D001 00 80
Tester requests IOControl
⦁ DID D001
⦁ returnControlToECU
⦁ CEMR 0x80 Write IOControlRequest_{DID}
⦁ underControl = ~CEMR & underControl)
Write IOControlRequest_{DID}.IOOperationRequest
⦁ controlEnableMask = 0x80
⦁ inputOutputControlParameter = 0x00
⦁ Set IsUpdated Flag
6F D001 00 1234
[positive response]:
[Read IOControlRequest_{DID}]:
[underControl]:
[IsUpdatedWriteIOControlRequest_{DID}().IOOper...]:
[status]:
[Read IOControlRequest_{DID}.IOOperationRequest]:
[Process
IOControlRequest]:
⦁ IOOperationResponse = 0x00
⦁ Set IsUpdated Flag
[Write IOControlResponse_{DID}({Ack|Nack}]:
sd IOSequence 01_02_03
2F D001 03 1234 80
Tester requests IOControl
Tester ⦁ DID D001 Dcm RTE SWC
⦁ shortTermAdjustment
⦁ Clear IsUpdated
⦁ CEMR 0x80
[Read IOControlResponse.IOOperationResponse]:
⦁ DidData 0x1234 Write IOControlRequest_{DID}
⦁ controlState = 0x1234 1)
Write IOControlRequest_{DID}.IOOperationRequest
⦁ controlEnableMask = 0x80
⦁ inputOutputControlParameter = 0x03
⦁ Set IsUpdated Flag
[Read IOControlRequest_{DID}]:
[underControl]:
alt InputOutputControlParameter
[ResetToDefault (01)]
[freezeCurrentState(02)]
[shortTermAcjustment(03)]
[Read IOControlRequest_{DID}]:
[controlState = 0x1234]:
alt OperationStatus
[Done]
[Write IOControlResponse_{DID}({Ack=0x0|Nack}]:
⦁ [Write
Set IsUpdated
DataServices_{DID}(data
Flag = 0x1234)]:
[IsUpdated IOControlResponse]:
[status]:
alt IOOperationResponse
[Pending (0x78)]
[SWS_Dcm_00257] dThe Dcm module shall implement the UDS Service RoutineCon-
trol (0x31) for subFunctions startRoutine, stopRoutine and requestsRoutineResults.c
()
A tester can use UDS Service 0x31 to start, stop or obtain the results of a routine
identified by a 2-byte routineIdentifier. The Dcm module configuration contains a list
of the routineIdentifiers (see configuration parameter DcmDspRoutineIdentifier)
supported by the DCM. For each routineIdentifier, the Dcm configuration specifies:
• The function Xxx_Start() associated with this routineIdentifier (see configuration
parameters DcmDspStartRoutineFnc and DcmDspRoutineUsePort)
• List of signal available in the request and in the response (see configuration pa-
rameters DcmDspStartRoutineIn and DcmDspStartRoutineOut)
• The function Xxx_Stop() associated with this routineIdentifier (see configuration
parameters DcmDspStopRoutineFnc and DcmDspRoutineUsePort)
• List of signal available in the request and in the response (see configuration pa-
rameters DcmDspStopRoutineIn and DcmDspStopRoutineOut)
• The function Xxx_RequestResults() associated with this routineIdentifier (see
configuration parameters DcmDspRequestRoutineResultsFnc and DcmD-
spRoutineUsePort)
• List of signal available in the request and in the response (see configuration
parameters DcmDspRequestRoutineResultsIn and DcmDspRequestRou-
tineResultsOut)
[SWS_Dcm_01442] dIf DcmDspRoutineUsePort is set to true, the Dcm shall call the
corresponding operation of the C/S interfaces RoutineServices_RoutineName to
process this routine.c(RS_Diag_04224)
A routine handler processes the diagnostic routine control request. The Dcm passes the
routineControlOption as input parameters to the routine handler. The routine processes
the request and writes the result to the output parameters of the routine handler call.
In case of shared Rx and Tx buffer, there are two cases where writing to the output
parameters of the routine control can cause overwriting of the input parameters:
• a routine control uses arrays as output parameters (call by reference)
• a routine control writes to output parameters and returns DCM_E_PENDING. It
is called again with DcmOpstatus set to DCM_PENDING. The input parameters
are derived from the Rx buffer that was overwritten by the previous write to the
output parameters
For efficient memory consumption it is controllable, if the Dcm applies further strategies
to separate input and output parameters in those situations.
[SWS_Dcm_01580] Input and output consistency during C/S based routine han-
dling dIf DcmDspRoutineUsePort is set to TRUE and the ClientServerOpera-
tion.diagArgIntegrity of that operation is also set to TRUE, the Dcm shall ensure that
the routine handler in the C/S interfaces RoutineServices_RoutineName writing
to the output parameters will not overwrite the input parameters.c(RS_Diag_04224)
Dcm shall check if the access to the requested routine identifier is authenticated and
process the routine only if:
• a DcmDspRequestRoutineResultsRole is configured for that routine and the ver-
ification according to [SWS_Dcm_01522] was successful or
• the active white list on that connection has one RID entry with sub-function ac-
cess set to requestRoutineResults that matches that service and sub-function.
c(RS_Diag_04233)
According to [SWS_Dcm_01537] the authentication checks are only executed if
DcmDspAuthentication is configured. In case of a failed authentication the NRC
handling is according to [SWS_Dcm_01544] and [SWS_Dcm_01551] applies.
The service RoutineControl (0x31) is of exotic nature and has both, a sub-function and
an identifier. UDS defines a different behavior for this service. Permission checks for
session and security are done on identifier level rather than on sub-function level.
[SWS_Dcm_CONSTR_6100] Same session and security settings for same rou-
tine identifier dAll DcmDspCommonAuthorization that are referenced via DcmD-
spStartRoutineCommonAuthorizationRef, DcmDspStopRoutineCommonAu-
thorizationRef or DcmDspRequestRoutineResultsCommonAuthorization-
Ref from a the same DcmDspRoutine, shall have the same (identical) set of ref-
erenced DcmDspCommonAuthorizationSecurityLevelRef and DcmDspCommo-
nAuthorizationSessionRef.c()
[SWS_Dcm_00570] dOn reception of the UDS Service RoutineControl (0x31), the Dcm
module shall check if the Routine can be executed in the current session (see con-
figuration parameters DcmDspStartRoutineCommonAuthorizationRef, DcmD-
spStopRoutineCommonAuthorizationRef and DcmDspRequestRoutineRe-
sultsCommonAuthorizationRef). If not, the Dcm module shall send a NRC 0x31
(Request Out of Range).c()
[SWS_Dcm_00571] dOn reception of the UDS Service RoutineControl (0x31), the
Dcm module shall check if the Routine can be executed in the current secu-
rity level (see configuration parameter DcmDspStartRoutineCommonAuthoriza-
tionRef, DcmDspStopRoutineCommonAuthorizationRef and DcmDspReque-
stRoutineResultsCommonAuthorizationRef). If not, the Dcm module shall send
NRC 0x33 (Security access denied).c()
[SWS_Dcm_00869] dOn reception of the UDS Service RoutineControl (0x31), the
Dcm module shall check if the SubFunction to the corresponding Routine is supported
(see existence of configuration container DcmDspStopRoutine for SubFunction 0x02;
DcmDspRequestRoutineResults for SubFunction 0x03). If not, the Dcm module
shall send NRC 0x12 (SubFunction not supported).c()
[SWS_Dcm_01169] dOn reception of the UDS Service RoutineControl (0x31) with Sub-
Function startRoutine, the Dcm module shall check if the Routine can be executed in
at least one of the routine input signal data or routine output signal data have a signal
with routine type ’VARIABLE_LENGTH’.c()
Note: The ’currentDataLength’ parameter as in/out parameter contains the data length
in bytes of the ’dataInVar’ while calling the operation and it returns the length in bytes
of the ’dataOutVar’. As ’dataInVar’ and ’dataOutVar’ are optional, ’currentDataLength’
is only present if at least one of this optional parameter is used.
[SWS_Dcm_00590] dWhen receiving a request for UDS Service RoutineControl
(0x31) if all verifications have been successfully done (see [SWS_Dcm_00568],
[SWS_Dcm_00570], [SWS_Dcm_00571]), the Dcm module shall split the routineCon-
trolOptionRecord received according of the list of input signal configured for this routine
( see configuration parameters DcmDspStartRoutineIn, DcmDspStopRoutineIn,
DcmDspRequestRoutineResultsIn)c()
[SWS_Dcm_00400] dWhen receiving a request for UDS Service RoutineControl (0x31)
with subfunction startRoutine, if all verifications have been successfully done (see
[SWS_Dcm_00568], [SWS_Dcm_00570], [SWS_Dcm_00571]), the Dcm module shall
call the configured Xxx_Start() function passing the dataIn, calculated from routineCon-
trolOptionRecord (see [SWS_Dcm_00590]), and the dataOut reference according of
the list of output signal configured for this routine ( see configuration parameter DcmD-
spStartRoutineOut).c()
[SWS_Dcm_00401] dUpon completing [SWS_Dcm_00400], when Xxx_Start() returns
E_OK, the Dcm module shall reply with a positive response with the data returned
by Xxx_Start() in the dataOut as routineStatusRecord (dataOut are merged according
to the list of output signal configured for this routine ( see configuration parameter
DcmDspStartRoutineOut)).c()
[SWS_Dcm_00402] dWhen receiving a request for UDS Service RoutineControl (0x31)
with subfunction stopRoutine, if all verifications have been successfully done (see
[SWS_Dcm_00568], [SWS_Dcm_00570], [SWS_Dcm_00571]), the Dcm module shall
call the configured Xxx_Stop() function passing the dataIn, calculated from routineCon-
trolOptionRecord (see [SWS_Dcm_00590]), and the dataOut reference according of
the list of output signal configured for this routine ( see configuration parameter DcmD-
spStopRoutineOut).c()
[SWS_Dcm_00403] dUpon completing [SWS_Dcm_00402], when Xxx_Stop() returns
E_OK, the Dcm module shall reply with a positive response with the data returned
by Xxx_Stop()in the dataOut as routineStatusRecord (dataOut are merged according
to the list of output signal configured for this routine ( see configuration parameter
DcmDspStopRoutineOut)).c()
[SWS_Dcm_00404] dWhen receiving a request for UDS Service RoutineControl (0x31)
with subfunction requestRoutineResults, if all verifications have been successfully done
(see [SWS_Dcm_00568], [SWS_Dcm_00570], [SWS_Dcm_00571]), the Dcm module
shall call the configured Xxx_RequestResults() function passing the dataIn, calculated
from routineControlOptionRecord (see [SWS_Dcm_00590])and provide the dataOut
reference according of the list of output signal configured for this routine ( see configu-
ration parameter DcmDspRequestRoutineResultsOut).c()
[SWS_Dcm_00405] dUpon completing [SWS_Dcm_00404], when
Xxx_RequestResults() returns E_OK, the Dcm module shall reply with a positive
response with the data returned by Xxx_RequestResults()in the dataOut as routineS-
tatusRecord (dataOut are merged according to the list of output signal configured for
this routine ( see configuration parameter DcmDspRequestRoutineResultsOut)).c
()
[SWS_Dcm_00641] dTo serialize the required AUTOSAR data types (signed- and un-
signed integer) from the request message / into the response message of UDS Service
RoutineControl, the target endianness configured in DcmDspRoutineSignalEndi-
anness shall be considered for DcmDspRoutine signals having set to fixed length (
DcmDspRoutineSignalType set to other value than VARIABLE_LENGTH).c()
[SWS_Dcm_CONSTR_6072] Dependency for DcmDspRoutineSignalEndian-
ness dIn case DcmDspRoutineSignalEndianness is not present, the DcmDsp-
DataDefaultEndianness shall be used instead.c()
[SWS_Dcm_01139] dThe Dcm shall follow the NRC handling for RoutineControlService
according to ISO 14229-1 [1].c()
[SWS_Dcm_01140] dOn reception of the UDS Service RoutineControl (0x31), the Dcm
module shall check the overall length of the request. If length of the request is wrong,
the Dcm module shall send NRC 0x13 (Incorrect message length or invalid format) to
the tester.c()
[SWS_Dcm_01141] dThe Dcm shall call the appropriate routine functions of the SWC
after having performed the total length check and the Mode rules, security level
and session checks (DcmDspStartRoutineCommonAuthorizationRef, DcmD-
spStopRoutineCommonAuthorizationRef and DcmDspRequestRoutineRe-
sultsCommonAuthorizationRef).c()
Note: Subsequent checks have to be performed by the SWC.
[SWS_Dcm_01194] dOn reception of the UDS Service RoutineControl (0x31), for every
requested RID inside the OBD range (E000-E0FF), the Dcm shall implicitly allow sub-
function StartRoutine.c()
[SWS_Dcm_00701] dOn reception of the UDS Service RoutineControl (0x31), for every
requested RID inside the OBD range (E000-E0FF) and usage of UDS interface, the Dcm
module shall use the routineInfo byte value from DcmDspRoutineInfoByte in the
response to the tester.c()
[SWS_Dcm_01330] dIf DcmDspEnableObdMirror is set to true, an explicitly config-
ured RID inside the OBD range (E000-E0FF) shall use the UDS interface.c()
[SWS_Dcm_01331] dIf DcmDspEnableObdMirror is set to false, all requests within
the OBD RID range shall use the UDS interface.c()
[SWS_Dcm_01332] dOn reception of the UDS Service RoutineControl (0x31), for every
requested RID inside the OBD range (E000-E0FF), the Dcm module shall handle the
RID as defined for OBD Service $08 (see [SWS_Dcm_00418], [SWS_Dcm_00947],
[SWS_Dcm_00419], [SWS_Dcm_00420], [SWS_Dcm_00948], [SWS_Dcm_01192]) if
DcmDspEnableObdMirror is set to true and RID not explicitly configured.c()
[SWS_Dcm_01333] dOn reception of the UDS Service RoutineControl (0x31), for every
requested RID inside the OBD range (E000-E0FF) and usage of OBD interface, the Dcm
shall use the routineInfo byte value from DcmDspRequestControlInfoByte in the
response to the tester.c()
If DcmDspEnableObdMirror is set to FALSE or the RID is explicitly configured inside
the OBD TestId range (E000-E0FF), the access to the OBD data shall be given in the
following way:
[SWS_Dcm_01390] dOn reception of an UDS Service RoutineControl (0x31) request
with one or more ”availability OBDTestIds” as parameter, the Dcm module shall respond
with the corresponding supported (=configured) RIDs.c()
[SWS_Dcm_01391] dOn reception of an UDS Service RoutineControl (0x31) request
”availability OBDTestIds” together with other OBDTestIds as parameter, the Dcm mod-
ule shall ignore the request.c()
[SWS_Dcm_01392] dOn reception of an UDS Service RoutineControl (0x31) request
with a OBDTestIds that is not an ”availability OBDTestIds”, the Dcm module shall invoke
the configured Xxx_Start() function.c()
[SWS_Dcm_01393] dAs specified in [3, SAE J1979], unused data bytes shall be filled
with $00.c()
[SWS_Dcm_01394] dIf Xxx_Start() doesn’t return E_OK, the Dcm shall return NRC
0x22.c()
[SWS_Dcm_00668] dIf the operation Start() returns value E_NOT_OK, the Dcm mod-
ule shall send a negative response with NRC code equal to ErrorCode parameter
value.c()
[SWS_Dcm_00669] dIf the operation Start() returns value DCM_E_FORCE_RCRRP,
the Dcm module shall start the transmission of NRC 0x78.c(RS_Diag_04249)
[SWS_Dcm_00670] dIf the operation Stop() returns value E_NOT_OK, the Dcm mod-
ule shall send a negative response with NRC code equal to ErrorCode parameter
value.c()
[SWS_Dcm_00671] dIf the operation Stop() returns value DCM_E_FORCE_RCRRP,
the Dcm module shall start the transmission of NRC 0x78.c(RS_Diag_04249)
[SWS_Dcm_00672] dIf the operation RequestResults() returns value E_NOT_OK, the
Dcm module shall send a negative response with NRC code equal to ErrorCode param-
eter value.c()
[SWS_Dcm_00251] dThe Dcm module shall implement the Tester Present (service
0x3E, diagnostic communication and security) of the Unified Diagnostic Services for
the subfunction values 0x00 and 0x80.c()
[SWS_Dcm_01558] Skipping authentication check for tester present dThe Dcm
shall process the UDS service 0x3E (TesterPresent) independently from the current
authentication state.c(RS_Diag_04230)
This service is used to keep one or multiple servers in a diagnostic session being
different than the defaultSession.
Note: the callout function can, if needed, return also other NRC but the ones above
won’t be treated by the Dcm module.
[SWS_Dcm_00757] dIf the operation Xxx_ProcessRequestDownload returns value
E_NOT_OK, the Dcm module shall send a negative response with NRC code equal to
the parameter ErrorCode parameter value.c()
[SWS_Dcm_01417] dUpon calling Xxx_ProcessRequestDownload, the Dcm shall
write the maximum possible buffer size into the BlockLength parameter.c(RS_Diag_-
04033)
[SWS_Dcm_01418] dIf the function call Xxx_ProcessRequestDownload returns a
requested buffer length larger than the supported buffer length of the current proto-
col connection, the Dcm shall report the Det error DCM_E_INTERFACE_BUFFER_-
OVERFLOW.c(RS_Diag_04033) For definition of DCM_E_INTERFACE_BUFFER_OVER-
FLOW see [SWS_Dcm_00040].
[SWS_Dcm_01419] dIf the function call Xxx_ProcessRequestDownload returns a
requested buffer length smaller or equal than the supported buffer length of the current
protocol connection, the Dcm shall return the BlockLength value within the maxNum-
berOfBlockLength parameter of the positive response.c(RS_Diag_04033)
Note: the callout function can, if needed, return also other NRC but the ones above
won’t be treated by the Dcm module.
[SWS_Dcm_00758] dIf the operation Xxx_ProcessRequestUpload returns value
E_NOT_OK, the Dcm module shall send a negative response with NRC code equal to
the parameter ErrorCode parameter value.c()
[SWS_Dcm_01420] dUpon calling Xxx_ProcessRequestUpload, the Dcm shall
write the maximum possible buffer size into the BlockLength parameter.c(RS_Diag_-
04033)
[SWS_Dcm_01421] dIf the function call Xxx_ProcessRequestUpload returns a re-
quested buffer length larger than the supported buffer length of the current protocol
connection, the Dcm shall report the Det error DCM_E_INTERFACE_BUFFER_OVER-
FLOW.c(RS_Diag_04033) For definition of DCM_E_INTERFACE_BUFFER_OVERFLOW
see [SWS_Dcm_00040].
[SWS_Dcm_01422] dIf the function call Xxx_ProcessRequestUpload returns a re-
quested buffer length smaller or equal than the supported buffer length of the current
protocol connection, the Dcm shall return the BlockLength value within the maxNum-
berOfBlockLength parameter of the positive response.c(RS_Diag_04033)
and the request format is correct, the Dcm module shall call the callout Xxx_Pro-
cessTransferDataWrite.c(RS_Diag_04033)
[SWS_Dcm_00504] dOn reception of the UDS Service TransferData (0x36), if an up-
load process is running (RequestUpload service has been previously received) and the
request format is correct, the Dcm module shall call the callout Xxx_ProcessTrans-
ferDataRead.c(RS_Diag_04033)
[SWS_Dcm_00645] dOn reception of the UDS Service TransferData (0x36), if a block
sequence error is detected, the Dcm module shall trigger a negative response with NRC
0x73 (WrongBlockSequenceCounter)c()
[SWS_Dcm_01444] dOn reception of the UDS Service TransferData (0x36), if a file
download is running (RequestFileTransfer service has been previously received with
0x01 (AddFile) or 0x03 (ReplaceFile)) and the request format is correct, the Dcm mod-
ule shall call the callout Dcm_WriteFile().c()
[SWS_Dcm_01445] dOn reception of the UDS Service TransferData (0x36), if a file
or directory information upload is running (RequestFileTransfer service has been pre-
viously received with 0x04 (ReadFile) or 0x05 (ReadDir)) and the request format is
correct, the Dcm module shall call the callout Dcm_ReadFileOrDir().c()
[SWS_Dcm_01173] dNRCs described in Table 7.30 shall be the responsibility of the
callout function.c()
NRC Use Case
0x24 - requestSequenceError only for the following conditions:
If the RequestDownload or RequestUpload service
is active, but the server has already received all
data as determined by the memorySize parameter
in the active RequestDownload or RequestUpload
service
0x31 - requestOutOfRange Only for the following conditions:
The transferRequestParameterRecord contains
additional control parameters (e.g. additional
address information) and this control information is
invalid. The transferRequestParameterRecord is
not consistent with the server’s memory alignment
constraints
0x71 - transferDataSuspended The data transfer operation was halted due to
some fault.
0x72 - generalProgrammingFailure If the server detects an error when finalizing the
data transfer between the client and server (e.g.,
via an integrity check).
0x92 - voltageTooHigh The voltage measured is higher than the maximum
acceptable voltage for downloading data.
0x93 - voltageTooLow The voltage measured is under the minimum
acceptable voltage for downloading data.
Note: the callout function can, if needed, return also other NRCs but the ones above
won’t be treated by the Dcm module.
Note: the callout function can, if needed, return also other NRC but the ones above
won’t be treated by the Dcm module.
[SWS_Dcm_00759] dIf the operation Xxx_ProcessRequestTransferExit returns
value E_NOT_OK, the Dcm module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.c()
An external test tool can request an ECU to either disable or enable DTC storage in the
ECUs error memory by sending a UDS Service 0x85 request with sub-function 0x01
("ON") or 0x02 ("OFF").
[SWS_Dcm_00249] dThe Dcm module shall implement UDS Service ControlDTCSet-
ting (0x85) to enable or disable the storage of DTCs in the ECUs error memory.c(RS_-
Diag_04159)
[SWS_Dcm_01399] dIf the Dcm receives a ControlDTCSetting (0x85) service with
DTCSettingControlOptionRecord != 0xFFFFFF, the Dcm shall send a NRC 0x31 (Re-
questOutOfRange).c(RS_Diag_04159)
[SWS_Dcm_01063] dOn reception of UDS Service 0x85 with subfunction 0x01 (DTC-
SettingType "ON"), the Dcm shall call Dem_EnableDTCSetting() with ClientId = Client
Id for this Dcm instance (see DcmDemClientRef).c(RS_Diag_04115)
[SWS_Dcm_00783] dIn case of Dem_EnableDTCSetting returns
E_OK (see [SWS_Dcm_01063]), the Dcm shall invoke a mode
switch of the ModeDeclarationGroupPrototype DcmControlDTC-
Setting by calling SchM_Switch_<bsnp>_DcmControlDTCSetting
(RTE_MODE_DcmControlDTCSetting_ENABLEDTCSETTING).c()
[SWS_Dcm_00406] dOn reception of UDS Service 0x85 with subfunction 0x02 (DTC-
SettingType "OFF"), the Dcm shall call Dem_DisableDTCSetting() with ClientId = Client
Id for this Dcm instance (see DcmDemClientRef).c(RS_Diag_04115)
[SWS_Dcm_00784] dIn case of Dem_DisableDTCSetting returns
E_OK (see [SWS_Dcm_00406] ), the Dcm shall invoke a mode
switch of the ModeDeclarationGroupPrototype DcmControlDTC-
Setting by calling SchM_Switch_<bsnp>_DcmControlDTCSetting
(RTE_MODE_DcmControlDTCSetting_DISABLEDTCSETTING).c()
[SWS_Dcm_00751] dIn case the DTCSetting is disabled and a transitions to de-
fault session or upon any diagnostic session change where the new session does
not support UDS Service ControlDTCsetting anymore, the Dcm module shall call
Dem_EnableDTCSetting() with the following parameters
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
and switch the mode DcmControlDTCSetting to DCM_ENABLEDTCSETTING.c()
For some use-cases the Dcm may re-enable the controlDTCsetting due to external
changed mode conditions:
[SWS_Dcm_00752] dIn case the DTCSetting is disabled and at least one ref-
erenced arbitrary ModeDeclarationGroupPrototypes (see configuration parameter
DcmDspControlDTCSettingReEnableModeRuleRef) for service ControlDTCSet-
ting (0x85) with DTCSettingType "OFF" (0x02) are not fulfilled anymore, the Dcm mod-
ule shall call Dem_EnableDTCSetting() with the following parameters:
7.6.3.1 Overview
The following table defines the OBD Services supported by the DCM.
In many cases, the Dcm protocol allows the bundling of several requests (for example
several "PIDs") and the corresponding bundling of the responses. The descriptions of
the behavior for the individual services do not explicitly consider this. As the Dcm needs
to comply with OBD standard (as is defined through various requirements below), the
Dcm might need to repeat the steps defined below to parse a request and assemble a
valid response.
In a vehicle there can be 3 different types of OBD ECUs:
• Master ECU (one per vehicle)
• Primary ECU (several per vehicle)
• Dependent / Secondary ECUs (several per vehicle)
From the Basic Software point of view Dependent / Secondary ECUs doesn’t need any
specific OBD functionality. In Dependent / Secondary ECUs OBD-relevant information
will not be stored in the Basic Software (e.g. no direct communication with the scan
tool). The respective OBD functionality might be handled in Dependent / Secondary
ECUs by a SWC.
The following OBD requirements are only valid for Master and Primary ECUs. If neces-
sary the OBD requirements differentiate between Master and Primary Requirement.
The following table gives an overview about which OBD functionality must be supported
in a Master ECU, Primary ECU or Dependent / Secondary ECU:
Functionality Master ECU Primary ECU Dependent /
Secondary ECU
OBD Scantool Yes Yes No
Communication
[SWS_Dcm_00077] dWhen calling the DEM module for OBD services, the Dcm module
shall use the following values for the parameter DTCOrigin:
Service $0A uses DEM_DTC_ORIGIN_PERMANENT_MEMORY
All other services use DEM_DTC_ORIGIN_OBD_RELEVANT_MEMORYc(RS_Diag_-
04058)
[SWS_Dcm_00243] dThe Dcm module shall implement the OBD service $01 (Request
Current Powertrain diagnostic Data) in compliance to all provisions of the OBD stan-
dard.c()
Using Service $01, an external test tool can request an emission-related ECU to return
PID-values or to return the supported PIDs. OBD reserves certain PIDs for the special
purpose of obtaining the list of available PIDs in a certain range. These PIDs are called
"availability PIDs" and are $00, $20, $40, $60, $80, $A0, $C0 an $E0.
The Dcm collects the PID information from 1 to n SW-Cs. This applies in particular
for PIDs which contain several data values for potentially different sources. Example:
PID$83 reports Nox Sensor Data for sensor 1 and sensor 2 in one composed PID
which might come from different SW-C.
The Dcm configuration defines the PIDs that are available on the ECU. The Dcm con-
figuration defines for each such PID:
• The PID Identifier (see configuration parameter DcmDspPidIdentifier)
• Indication of the PID is used or not (for postbuild configuration) (see configuration
parameter DcmDspPidUsed)
• The size of the PID (see configuration parameter DcmDspPidSize)
• The supported information for this PID (see configuration parameter DcmDsp-
PidSupportInfo)
• List of data (DcmDspPidData) for the PID with the following configuration for
every data
– The length of the data associated with the PID (see configuration parameter
DcmDspPidDataByteSize)
– The position of the data in the PID (see configuration parameter DcmDsp-
PidByteOffset)
– The reference to the supported information container (see configuration pa-
rameter DcmDspPidDataSupportInfo)
– The Xxx_ReadData() function that the Dcm must call to obtain the current
value of the data or the name of the port that the Dcm uses to obtain the
current value through the RTE from a SW-C (see configuration parameters
DcmDspPidDataReadFnc and DcmDspPidDataUsePort)
[SWS_Dcm_00407] dOn reception of an OBD Service $01 request with only "avail-
ability PIDs" as parameter, the Dcm shall respond with the corresponding supported
(=configured) PIDs encoded according to the OBD standard.c()
To obtain the value for a PID, the Dcm uses the configured Xxx_ReadData() functions
for every data of the PID. To provide OBD Service $01, the Dcm relies on external
functions that allow it to obtain the value of the PIDs. There is one such function per
data of every PID that is needed by the DCM.
When using a Xxx_ReadData() function, the Dcm provides a buffer of the correct length,
which is filled by the function with the data PID value.
[SWS_Dcm_00408] dOn reception of an OBD Service $01 request with only PIDs that
are not "availability PIDs", the Dcm shall obtain the current value of these PIDs by
invoking the configured Xxx_ReadData() functions for every data of the PID and shall
return these values as response to Service $01.c()
[SWS_Dcm_00943] dOn reception of an OBD Service $01 request with a mixure of
"avalibility PIDs" and not "avalibility PIDs", this request shall be ignored by the Dcm.c()
The entity providing the actual implementation of the Xxx_ReadData() function for a
specific signal of a PID might be a SW-C or another basic software module. The origin
of the function is not known to the Dcm but is part of the Dcm configuration. Some
PIDs are provided by the DEM. These PIDs are also explicitly configured in the Dcm
configuration and it is the responsibility of a correct Dcm configuration to make the
Xxx_ReadData() function point to the correct function provided by the DEM.
[SWS_Dcm_CONSTR_6069] Dependency for DcmDspPidDataReadFnc dDcmD-
spPidDataReadFnc shall be only present if DcmDspPidDataUsePort is set to
USE_DATA_SYNCH_FNC.c()
For certain PIDs, the Dem provides the function to obtain the PID value. Which PIDs
come from the Dem are part of the Dcm configuration.
Note: For PIDs where Dem provides the function, DcmDspPidDataUsePort for that
PID should be set to USE_DATA_SYNCH_FNC and DcmDspPidDataReadFnc shall
point to the function Dem_DcmReadDataOfPID<NN> where <NN> represents the Id
of the PID.
The data byte A of the PIDs contain the support status of the subsequent data bytes.
Since not all data values might be available due to the particular vehicle configuration
(e.g. there is only a Nox-sensor 1 available in the vehicle in the example above), the
PID response contains in this data byte A the information about the support status of
the following data values. Note, that the PIDs always contain the same number of bytes
- even if not all values are really available.
[SWS_Dcm_00244] dThe Dcm shall implement OBD Service $02 (Request Power Train
FreezeFrame Data) in compliance to all provisions of the OBD standard.c()
For OBD-relevant FreezeFrames AUTOSAR only supports frame 0, which is the mini-
mum required by legislation.
[SWS_Dcm_00409] dThe Dcm shall ignore all requests regarding record-numbers that
are not 0c()
[SWS_Dcm_00972] dOn reception of an OBD Service $02 request with a mixure of
"availability PIDs" and not "availability PIDs", this request shall be ignored by the
Dcm.c()
[SWS_Dcm_00973] dWhen responding to OBD Service $02, the Dcm shall put fill-bytes
between DcmDspPidData in the PID whenever content bytes are missing in order to
fit to the PID size (see configuration parameter DcmDspPidSize).c()
[SWS_Dcm_00974] dThe Dcm shall set the fill bytes to 0x00.c()
Note: If other fill-bytes than 0x00 are needed by legislation, the application has to
provide the value of the fill-byte.
The following sections define how specific PIDs are handled by the Dcm.
An external tester can request the DTC that caused a FreezeFrame to be stored by
using the Service $02 with the PID value $02.
[SWS_Dcm_00279] dOn reception of a request for Service $02 with PID $02, the Dcm
shall call Dem_DcmGetDTCOfOBDFreezeFrame() with FrameNumber set to 0x00 to
get the DTC number.c(RS_Diag_04058)
The Dem module returns the corresponding DTC. Note that this 2-byte DTC is packed
into the 4-byte data returned by the call to Dem_DcmGetDTCOfOBDFreezeFrame ().
see Dem specification on how this is done.
[SWS_Dcm_01061] dIf Dem_DcmGetDTCOfOBDFreezeFrame returns E_NOT_OK,
the Dcm shall answer positively with $0000 (indicates no stored freeze frame data).c()
Using Service $02, an external tester may request the supported PIDs for a specific
freeze-frame by using the "availability PIDs".
[SWS_Dcm_00284] dOn reception of a service $02 request with an "availability PID",
the Dcm shall respond with the corresponding supported (=configured) PIDs encoded
according to the OBD standard.c()
Using Service $02, an external tester may request the values of specific PIDs in specific
FreezeFrames.
[SWS_Dcm_00286] dOn reception of a service $02 request with a
PID that is not an "availability PID" and is not $02, the Dcm shall call
Dem_DcmReadDataOfOBDFreezeFrame() for every data of the PID with the
following parameter values:
• PID = the PID received in the OBD request
• DestBuffer = a buffer in which the callee can write the value of the PID
• BufSize = the size of the DestBuffer, this must be at least equal to the size needed
to store the value of the PID as configured in the DCM
• DataElementIndexOfPid = implicit index (from 0 to n) of the DataElement calcu-
lated by Dcm according to the order of the DataElement positions in the PID (see
parameter DcmDspPidByteOffset)
c()
Note that is not necessary for the Dcm module to lock or unlock the record updates of
the Dem module.
[SWS_Dcm_00287] dUpon the completion of [SWS_Dcm_00286], the Dcm shall gen-
erate a response message including the respective PID, FreezeFrame Number and
the associated data record for the requested FreezeFrame number.c()
[SWS_Dcm_01252] dIf Dem_DcmReadDataOfOBDFreezeFrame() returns
E_NOT_OK and a single PID is requested, the Dcm shall not provide any answer.c()
[SWS_Dcm_01253] dIf Dem_DcmReadDataOfOBDFreezeFrame() returns
E_NOT_OK and all PIDs from the requested multiple PID(s) are not supported,
the Dcm shall not provide any answer.c()
[SWS_Dcm_01254] dIf Dem_DcmReadDataOfOBDFreezeFrame() returns
E_NOT_OK and at least one PID from the requested multiple PID(s) is sup-
ported, the Dcm shall send a positive response including the data of the supported
PID(s).c()
[SWS_Dcm_00245] dThe Dcm module shall implement OBD Service $03 (Request
emission-related diagnostic trouble codes) in compliance to all provisions of the OBD
standard.c()
[SWS_Dcm_00410] dThe Dcm module shall implement OBD Service $07 (Request
Emission-Related Diagnostic Trouble Codes Detected during Current or Last Com-
pleted Driving Cycle) in compliance to all provisions of the OBD standard.c()
[SWS_Dcm_00411] dThe Dcm module shall implement OBD Service $0A (Request
Emission-Related Diagnostic Trouble Codes with Permanent Status) in compliance to
all provisions of the OBD standard.c()
An external test tool can request an emission-related ECU to report all stored, pending
or permanent emission-related DTCs by sending the request $03, $07, $0A respec-
tively.
[SWS_Dcm_00289] dWhen receiving a request for OBD Service $03, the Dcm module
shall obtain from the DEM all DTCs in primary memory and with a "confirmed" status
using the functions Dem_SetDTCFilter() and Dem_GetNextFilteredDTC().c()
Note: The Dcm module can get an indication of the number of records that will be
found using Dem_GetNextFilteredDTC() by using Dem_GetNumberOfFilteredDTC().
This allows the implementation to calculate the total size of the response before cycling
through the DTCs.
[SWS_Dcm_00412] dWhen receiving a request for OBD Service $07, the Dcm module
shall obtain from the DEM module all DTCs in primary memory with a "pending" status
using the functions Dem_SetDTCFilter() and Dem_GetNextFilteredDTC().c()
Note: The Dcm module can get an indication of the number of records that will be
found using Dem_GetNextFilteredDTC() by using Dem_GetNumberOfFilteredDTC().
This allows the implementation to calculate the total size of the response before cycling
through the DTCs.
[SWS_Dcm_00330] dWhen receiving a request for OBD Service $0A, the Dcm module
shall obtain from the DEM all DTCs stored in permanent memory using the functions
Dem_SetDTCFilter() and Dem_GetNextFilteredDTC().c()
Note: The Dcm module can get an indication of the number of records that will be
found using Dem_GetNextFilteredDTC() by using Dem_GetNumberOfFilteredDTC().
This allows the implementation to calculate the total size of the response before cycling
through the DTCs.
The following table illustrates the parameters the Dcm module must use when calling
Dem_SetDTCFilter() in response to a request for OBD Service $03, $07 or $0A.
Parameters to Dem_SetDTCFilter
OBD Service $03 $07 $0A
ClientId Client Id for this Dcm Client Id for this Dcm Client Id for this Dcm
instance (see instance (see instance (see
DcmDemClientRef) DcmDemClientRef) DcmDemClientRef)
DTCStatusMask 0x08 (confirmed bit 0x04(pending bit set) 0x00
set)
DTCFormat DEM_DTC_ DEM_DTC_ DEM_DTC_
FORMAT_OBD FORMAT_OBD FORMAT_OBD
DTCOrigin DEM_DTC_ORIGIN_ DEM_DTC_ORIGIN_ DEM_DTC_ORIGIN_
OBD_RELEVANT_ OBD_RELEVANT_ PERMANENT
MEMORY MEMORY
FilterWithSeverity DEM_FILTER_WITH_ DEM_FILTER_WITH_ DEM_FILTER_WITH_
SEVERITY_NO SEVERITY_NO SEVERITY_NO
DTCSeverityMask Not relevant Not relevant Not relevant
FilterForFaultDetec- DEM_FILTER_FOR_ DEM_FILTER_FOR_ DEM_FILTER_FOR_
tionCounter FDC_NO FDC_NO FDC_NO
When using paged buffer mechanism, in some case, it’s possible that the number of
DTC matching the filter change between the calculation of the total size, needed for
the first page transmission, and the sending of the further pages. For this reason, the
requirement [SWS_Dcm_00587] and [SWS_Dcm_00588] shall be considered for the
implementation of this service.
[SWS_Dcm_01227] dDem_GetNextFilteredDTC returns DEM_NO_SUCH_ELEMENT
and at least one matching element could be retrieved before, the Dcm shall send a
positive response including these data elements and the number of DTCs.c()
[SWS_Dcm_01228] dIf Dem_GetNextFilteredDTC returns
DEM_NO_SUCH_ELEMENT and no matching element could be retrieved be-
fore, the Dcm shall send a positive response with the number of DTCs set to 0x00.c
()
[SWS_Dcm_00246] dThe Dcm module shall implement OBD Service $04 (Clear/re-
set emission-related diagnostic information) in compliance to all provisions of the OBD
standard.c()
An external test tool can request an emission-related ECU to clear the error memory
by sending the request $04.
[SWS_Dcm_00004] dWhen receiving a request for OBD Service $04, the Dcm module
shall call the interface Dem_SelectDTC with the following parameter values:
• ClientId: Client Id for this Dcm instance (see DcmDemClientRef)
• DTC = DEM_DTC_GROUP_ALL_DTCS
• DTCFormat = DEM_DTC_FORMAT_OBD
• DTCOrigin = DEM_DTC_ORIGIN_OBD_RELEVANT_MEMORY
c(RS_Diag_04058)
[SWS_Dcm_00413] dIn case Dem_ClearDTC() returns E_OK, the Dcm module shall
send a positive response.c()
[SWS_Dcm_00703] dIn case Dem_ClearDTC() returns DEM_PENDING, the Dcm shall
invoke Dem_ClearDTC() on next Dcm_MainFunction call again. It is up to the Dcm
to send NRC 78 (ResponsePending) to respect the response behaviourc(RS_Diag_-
04249)
[SWS_Dcm_00704] dIn case Dem_ClearDTC() returns DEM_CLEAR_FAILED, the
Dcm shall send a negative response 0x22 (conditionsNotCorrect).c()
[SWS_Dcm_00967] dIn case Dem_ClearDTC() returns DEM_CLEAR_BUSY, the Dcm
shall send a negative response 0x22 (ConditionsNotCorrect).c()
[SWS_Dcm_00414] dThe Dcm module shall implement OBD Service $06 (Request On-
Board Monitoring Test-results for Specific Monitored Systems) in compliance to all pro-
visions of the OBD standard.c()
Using Service $06, an external test tool can request an emission-related ECU to return
the DTR’s associated with the OBDMID or to return the supported OBDMIDs. OBD
reserves certain OBDMIDs for the special purpose of obtaining the list of supported
OBDMIDs in a certain range. These OBDMIDs are called "availability OBDMIDs" and
are $00, $20, $40, $60, $80, $A0, $C0 an $E0.
A tester request for supported OBDMIDs may contain up to six (6) "availability OBD-
MIDs".
[SWS_Dcm_00945] dOn reception of an OBD Service $06 request with "availability
OBDMIDs" together with other OBDMIDs as parameter, the Dcm module shall ignore
the request.c()
[SWS_Dcm_00956] dOn reception of an OBD Service $06 request with multiple non-
availability OBDMIDs, the Dcm module shall ignore the request.c()
The maintenance of the DTRs lies within the responsibility of the DEM. SW-Cs report-
ing DTRs use dedicated interfaces offered by the DEM. Upon requests from the tester
the Dcm retrieves the information from the DEM using dedicated DEM interfaces. There
is no direct interaction between the Dcm and SW-Cs.
[SWS_Dcm_00957] dOn reception of an OBD Service $06 request with only "availability
OBDMID(s)" as parameter(s), the Dcm module shall obtain the supported OBDMIDs by
calling the Dem interface Dem_DcmGetAvailableOBDMIDs()for each "availability OBD-
MID ($00, $20, ...)" contained within the request and concatenate the results within the
response message according to ISO-15031-5 [2].c()
[SWS_Dcm_00958] dOn reception of an OBD Service $06 request with an OBDMID
that is not an "availability OBDMID", the Dcm module shall call the DEM interface
Dem_DcmGetNumTIDsOfOBDMID() to obtain the TIDs available for the requested OB-
DMID and then recurrently call the interface Dem_DcmGetDTRData() for the number
of reported TIDs to obtain the associated DTR data.c()
[SWS_Dcm_00417] dThe Dcm module shall implement OBD Service $08 (Request
Control of On-Board System, Test or Component) in compliance to all provisions of
the OBD standard.c()
Using Service $08, an external test tool can control an on-board system, test or com-
ponent using a TID. OBD reserves certain TIDs for the special purpose of obtaining the
list of supported TIDs in a certain range. These TIDs are called "availability TIDs" and
are $00, $20, $40, $60, $80, $A0, $C0 an $E0.
The Dcm module’s configuration defines the TIDs that are available on the ECU for
the purpose of OBD Service $08. The configuration defines for each such TID (see
configuration parameter DcmDspRequestControlTestId):
• the name of the port the Dcm uses to access the RequestControlServices inter-
face (see configuration parameter DcmDspRequestControl)
• the number of bytes this function takes as input (see configuration parameter
DcmDspRequestControlInBufferSize)
• the number of bytes this function writes as output (see configuration parameter
DcmDspRequestControlOutBufferSize)
To provide OBD Service $08, the Dcm relies on external functions configured per TID.
[SWS_Dcm_00418] dOn reception of an OBD Service $08 request with one or more
"availability TIDs" as parameter, the Dcm module shall respond with the corresponding
supported (=configured) TIDs.c()
[SWS_Dcm_00947] dOn reception of an OBD Service $08 request "availability TIDs"
together with other TIDs as parameter, the Dcm module shall ignore the request.c()
[SWS_Dcm_00419] dOn reception of an OBD Service $08 request with a TID that is not
an "availability TID", the Dcm module shall invoke the configured Xxx_RequestControl()
function with the following parameters values: InBuffer: data contained in the OBD
request (the size of which must correspond to the size configured in the Dcm module’s
configuration) OutBuffer: space in which the RequestControl function can store its
result (the size of the buffer is taken from the Dcm module’s configuration)c()
[SWS_Dcm_00420] dAfter the execution of [SWS_Dcm_00419], the Dcm module shall
respond to the service request using the data stored by the RequestControl function in
the OutBuffer.c()
[SWS_Dcm_00948] dAs specified in [3, SAE J1979], unused data bytes shall be filled
with $00.c()
[SWS_Dcm_01192] dIf Xxx_RequestControl() doesn’t return E_OK, the Dcm shall re-
turn NRC 0x22.c()
[SWS_Dcm_00421] dThe Dcm module shall implement OBD Service $09 (Request Ve-
hicle Information) in compliance to all provisions of the OBD standard.c()
Using Service $09, an external test tool can request vehicle information or can obtain
lists of supported vehicle information. OBD reserves certain InfoTypes for the special
purpose of obtaining the list of supported InfoTypes in a certain range. These Infotypes
are called "availability InfoTypes" and are $00, $20, $40, $60, $80, $A0, $C0 an $E0.
The Dcm module’s configuration defines the InfoTypes and associated data that are
available on one or several SW-C. The configuration defines for each such InfoType:
• The value of InfoType (see configuration parameter DcmDspVehInfoInfoType)
• For every data of the InfoType:
– The position of this data in the InfoType (see configuration parameter DcmD-
spVehInfoDataOrder)
– the size of the value of the InfoType data (see configuration parameter
DcmDspVehInfoDataSize)
– the function that the Dcm module must call to obtain the value for this Info-
Type data OR the port-name through which the Dcm module can obtain the
value for this InfoType data (see configuration parameter DcmDspVehInfo-
DataReadFnc and DcmDspVehInfoDataUsePort).
To provide OBD Service $09, the Dcm relies on external functions that allow it to obtain
the value of an InfoType data. There is one such function per InfoType data that is
needed by the DCM.
When invoking a Xxx_GetInfotypeValueData() function, the Dcm module provides a
buffer of the correct size in which the value of the InfoType data can be stored. The
entity providing the actual implementation of the Xxx_GetInfotypeValueData() function
for a specific InfoType data might be a SW-C or another basic software module. The
origin of the function is part of the Dcm module’s configuration.
Certain InfoTypes needed by the Dcm to provide Service $09 are provided by the DEM.
This is handled in the Dcm configuration.
[SWS_Dcm_00422] dOn reception of an OBD Service $09 request with one or more
"availability InfoTypes" as parameter, the Dcm module shall respond with the corre-
sponding supported (=configured) InfoTypes.c()
[SWS_Dcm_00949] dOn reception of an OBD Service $09 request "availability Info-
Types" together with other InfoTypes as parameter, the Dcm module shall ignore the
request.c()
[SWS_Dcm_00423] dOn reception of an OBD Service $09 request for an InfoType that
is not an "availability InfoType", the Dcm module shall obtain the value of this InfoType
The Dcm shall be able to manage a jump to the bootloader / jump due to ECUReset
request. Due to the diversity of possibility to realize this jump, this will be done using
callout call.
4 different use cases have been identified for the jump to the bootloader, if all precon-
ditions are fulfilled and assuming the ’suppressPosRspMsgIndicationBit ’ flag is set to
’false’:
1. The application immediately sends a final positive response and then jumps to
the bootloader
2. The application first sends a NRC 0x78 response, then the final positive response
and afterwards jumps to the bootloader
3. The application immediately jumps to the bootloader and the bootloader sends
the final positive response
4. The application first sends a NRC 0x78 response, then jumps to the bootloader
and the bootloader sends the final positive response
Note: In case the ’suppressPosRspMsgIndicationBit’ flag is set to ’true’, use case ’1’
and use case ’3’ will not issue a positive response.
[SWS_Dcm_00532] dOn reception of service DiagnosticSessionControl if the provided
session is used to jump to OEM bootloader (parameter DcmDspSessionForBoot
set to DCM_OEM_BOOT or DCM_OEM_BOOT_RESPAPP) the Dcm shall prepare the
jump to the OEM bootloader (see [SWS_Dcm_00535]) by triggering the mode switch
of ModeDeclarationGroupPrototype DcmEcuReset to JUMPTOBOOTLOADER.c(RS_-
Diag_04098)
Note: By this mode switch the Dcm informs the BswM to prepare the jump to the boot-
loader.
[SWS_Dcm_00592] dOn reception of service DiagnosticSessionControl if the provided
session is used to jump to System Supplier bootloader (parameter DcmDspSession-
ForBoot set to DCM_SYS_BOOT or DCM_SYS_BOOT_RESPAPP) the Dcm shall
prepare the jump to the System Supplier bootloader (see [SWS_Dcm_00535]) by trig-
gering the mode switch of ModeDeclarationGroupPrototype DcmEcuReset to JUMP-
TOSYSSUPPLIERBOOTLOADERc(RS_Diag_04098)
Note: By this mode switch the Dcm informs the BswM to prepare the jump to the boot-
loader.
[SWS_Dcm_01164] dIn case the service DiagnosticSessionControl implies an ECU
reset, the Dcm shall ignore all further requests while that reset is being processed.c()
[SWS_Dcm_00654] dIn case the ModeDeclarationGroupPrototype DcmEcuReset
is switched to mode JUMPTOBOOTLOADER or JUMPTOSYSSUPPLIERBOOT-
LOADER and the configuration parameter DcmSendRespPendOnRestart is set to
TRUE, the Dcm shall trigger transmission of NRC 0x78 - RCR-RP.c(RS_Diag_04098,
RS_Diag_04249)
Note: This final transmission of NRC 0x78 before switching to Bootloader shall reload
the P2* timeout in the client.
[SWS_Dcm_01175] dIn case the ModeDeclarationGroupPrototype DcmEcuReset can
not be switched JUMPTOBOOTLOADER or JUMPTOSYSSUPPLIERBOOTLOADER,
the Dcm shall answer negatively to the request with NRC 0x22 (Conditions not correct).c
()
[SWS_Dcm_00535] dIf the jump to bootloader is requested (see [SWS_Dcm_00532],
[SWS_Dcm_00592], the configuration parameter DcmSendRespPendOnRestart is
set to TRUE (see [SWS_Dcm_00654]) and the configuration parameter DcmDspSes-
sionForBoot is set to DCM_OEM_BOOT or DCM_SYS_BOOT, the Dcm shall call
Note: It is the responsibility of the software integrator to ensure that the data contained
in Dcm_ProgConditionsType is valid when Dcm_Init is called. E.g. if this data is
stored in non-volatile memory, it may take some time to make it available after an ECU
reset. This has to be taken into account when designing the ECU’s startup process.
[SWS_Dcm_00537] dIf the initialization of the Dcm is the consequence of a jump
from the bootloader / ECUReset (see [SWS_Dcm_00536], the Dcm shall call
ComM_DCM_ActiveDiagnostic(NetworkId) to request the ComManager for the full
communication mode.c()
[SWS_Dcm_00767] dWhen the ComM reports full communication to the Dcm, the Dcm
shall send the Response to the Service Id passed in the Dcm_ProgConditionsType.c
(RS_Diag_04098)
[SWS_Dcm_00768] dIf the initialization of the Dcm is the consequence of a jump
from the bootloader (see [SWS_Dcm_00536] and the application is updated by an
FLASH download (Dcm_ProgConditionsType.ApplUpdated == True), the Dcm shall call
BswM_Dcm_ApplicationUpdated() to notify the BswM that the application was up-
dated.c()
After successful reprograming of the application software, the bootloader will update
the ApplUpdated flag and the ResponseRequired flags.
After an ECU reset, when the newly programmed application is started for the first time,
the Dcm will read the ApplUpdated and ResponseRequired flag by calling Dcm_Get-
ProgConditions. During this function call the ApplUpdated and ResponseRequired
flags are cleared by the integration code.
Note : INOUT parameter are a combination of the requirements above, i.e. on each
call of the interface the parameters shall have a valid in-value, and the Dcm considers
the out-value valid only after the last call of the interface.
[SWS_Dcm_01189] dIf an asynchronous interface is used, the Dcm shall provide the
values originating from the request for the Input data (IN) on every call to the interface.c
()
Note: Requirements [SWS_Dcm_01187], [SWS_Dcm_01188] and
[SWS_Dcm_01189] do not apply for functions where a deviant behaviour is ex-
plicitly specified.
The individual DID can be configured in DcmDspDid. A unique DID identifier is config-
ured on 2 bytes in DcmDspDidIdentifier. In case the DID refers to other DIDs, the
link between them can be configured in DcmDspDidRef2 . Each DID allows to access
to signal data values (by reading and/or writing). The signal reference (to DcmDsp-
Data) and the position of the data in the diagnostic answer (for reading) or request (for
writing) can be configured in DcmDspDidSignal.
The configuration of the data belonging to the DID can be provided in the container
DcmDspData (ECUC_Dcm_00869). This container collects the following information:
2
Overview of DcmDspDid container is described in chapter 10.2.5.7.1
• DcmDspDidIdentifier=0xF080
• DcmDspDidByteOffset=0
• DcmDspDidDataRef=DcmDspData_F080
• DcmDspDataByteSize=8
• DcmDspDataType=UINT8_N
• DcmDspDataUsePort=USE_DATA_SYNCH_FNC
• DcmDspDataWriteFnc=WriteDID_F080
• DcmDspDataReadFnc=ReadDID_F080
[SWS_Dcm_CONSTR_6067] Dependency for DcmDspDataBlockIdRef dDcmD-
spDataBlockIdRef shall be only present if DcmDspDataUsePort is set to USE_-
BLOCK_ID.c()
DID ranges are in general the same as the ’normal’ DID read and write function, except
that the DID is also passed as a parameter. This allows to treat the DID range in a
switch/case in the read or the write function.
The ranges can be applied for reading (ReadDataByIdentifier 0x22) and writing (Write-
DataByIdentifier 0x2E) DIDs.
The ranges can be configured in ECUC_Dcm_00937 : DcmDspDidRange. Each con-
figured range is by default accessible by service 0x22 and 0x2E. In case the range
should be limited to reading or writing, the referenced DcmDspDidInfo container
should be defined accordingly.
It is also possible to define gaps within the range (DcmDspDidRangeHasGaps). By
activating this feature, the Dcm invokes each time a DID is requested within the config-
ured range, the operation IsDidAvailable has to check the current availability. And as
the DIDs of the specified range can have different length, the length of the longest DID
has to be configured (DcmDspDidRangeMaxDataLength) in order to reserve enough
buffer passed to the respective function.
In general, the range functionality can also be used for a single DID if you specifically
want to pass the DID as a parameter. Then lower DID and upper DID should be the
same.
ReadDidRangeDataLength operation allows to request the application to return the
data length of a DID Range.
[SWS_Dcm_CONSTR_6020] Definition of allowed DID access dAny defined range
shall only reference via DcmDspDidRangeInfoRef. The sub-containers DcmDsp-
DidControl and DcmDspDidDefineinDcmDspDidInfo shall not be used] .c()
8 API specification
This section defines:
• The syntax and semantics of the functions that are provided and required from
other BSW modules. These take the form of "C"-APIs.
• The syntax and semantics of a subset of those functions which are used by
software-components through the RTE. These take the form of descriptions using
the concepts of the Software-Component Template.
4
Module Header File Imported Type
ComStack_Types.h TpDataStateType
c()
8.2.1 Dcm_StatusType
[SWS_Dcm_00976] d
Name Dcm_StatusType
Kind Type
Derived from uint8
DCM_E_OK 0x00 This value is representing a
successful operation.
DCM_E_ROE_NOT_ACCEPTED 0x06 ResponseOnOneEvent request is
not accepted by DCM (e.g. old
ResponseOnOneEvent is not
finished) (used at API: Dcm_
ResponseOnOneEvent())
5
4
DCM_E_PERIODICID_NOT_ 0x07 Periodic transmission request is
ACCEPTED not accepted by DCM (e.g. old
Periodic transmission is not
finished) (used at API: Dcm_
ResponseOnOneDataByPeriodic
Id ())
Description Base item type to transport status information.
Available via Dcm.h
c()
8.2.2 Dcm_CommunicationModeType
[SWS_Dcm_00981] d
Name Dcm_CommunicationModeType
Kind Type
Derived from uint8
DCM_ENABLE_RX_TX_NORM 0x00 Enable the Rx and Tx for normal
Range
communication
DCM_ENABLE_RX_DISABLE_ 0x01 Enable the Rx and disable the Tx
TX_NORM for normal communication
DCM_DISABLE_RX_ENABLE_ 0x02 Disable the Rx and enable the Tx
TX_NORM for normal communication
DCM_DISABLE_RX_TX_ 0x03 Disable Rx and Tx for normal
NORMAL communication
DCM_ENABLE_RX_TX_NM 0x04 Enable the Rx and Tx for network
management communication
DCM_ENABLE_RX_DISABLE_ 0x05 Enable Rx and disable the Tx for
TX_NM network management
communication
DCM_DISABLE_RX_ENABLE_ 0x06 Disable the Rx and enable the Tx
TX_NM for network management
communication
DCM_DISABLE_RX_TX_NM 0x07 Disable Rx and Tx for network
management communication
DCM_ENABLE_RX_TX_NORM_ 0x08 Enable Rx and Tx for normal and
NM network management
communication
DCM_ENABLE_RX_DISABLE_ 0x09 Enable the Rx and disable the Tx
TX_NORM_NM for normal and network
management communication
DCM_DISABLE_RX_ENABLE_ 0x0A Disable the Rx and enable the Tx
TX_NORM_NM for normal and network
management communication
DCM_DISABLE_RX_TX_NORM_ 0x0B Disable Rx and Tx for normal and
NM network management
communication
Description –
5
4
Available via Dcm.h
c()
8.2.3 Dcm_ConfigType
[SWS_Dcm_00982] d
Name Dcm_ConfigType
Kind Structure
Elements Implementation specific
Type –
Comment –
Description This type defines a data structure for the post build parameters of the DCM . At initialization the
DCM gets a pointer to a structure of this type to get access to its configuration data, which is
necessary for initialization.
Available via Dcm.h
c()
8.2.4 Dcm_ReturnReadMemoryType
[SWS_Dcm_00985] d
Name Dcm_ReturnReadMemoryType
Kind Type
Derived from uint8
Range DCM_READ_OK 0x00 Reading has been done
DCM_READ_PENDING 0x01 Reading is pending, another call
is request to finalize the reading
DCM_READ_FAILED 0x02 Reading has failed
DCM_READ_FORCE_RCRRP 0x03 Reading is pending, the
Response pending transmission
starts immediately
Description Return values of Callout Dcm_ReadMemory
Available via Dcm.h
c()
8.2.5 Dcm_ReturnWriteMemoryType
[SWS_Dcm_00986] d
Name Dcm_ReturnWriteMemoryType
Kind Type
Derived from uint8
Range DCM_WRITE_OK 0x00 Writing has been done
DCM_WRITE_PENDING 0x01 Writing is pending, another called
is requested
DCM_WRITE_FAILED 0x02 The writing has failed
DCM_WRITE_FORCE_RCRRP 0x03 Writing is pending, the Response
pending transmission starts
immediately
Description Return type of callout Dcm_WriteMemory
Available via Dcm.h
c()
8.2.6 Dcm_EcuStartModeType
[SWS_Dcm_00987] d
Name Dcm_EcuStartModeType
Kind Type
Derived from uint8
Range DCM_COLD_START 0x00 The ECU starts normally
DCM_WARM_START 0x01 The ECU starts from a bootloader
jump
Description Allows the DCM to know if a diagnostic response shall be sent in the case of a jump from
bootloader
Available via Dcm.h
c()
8.2.7 Dcm_ProgConditionsType
[SWS_Dcm_00988] d
Name Dcm_ProgConditionsType
Kind Structure
ConnectionId
Type uint16
Comment Unique id of the connection on which the request has been received
TesterAddress
Type uint16
5
4
Comment Source address of the received request if meta data is enabled,
otherwise the value as configured in DcmDslProtocolRxTesterSource
Addr
Sid
Type uint8
Comment Service identifier of the received request
SubFncId
Type uint8
Comment Identifier of the received subfonction
ReprogramingRequest
Type boolean
Comment Set to true in order to request reprogramming of the ECU.
ApplUpdated
Type boolean
Comment Indicate whether the application has been updated or not.
ResponseRequired
Type boolean
Comment Set to true in case the flashloader or application shall send a response.
Description Used in Dcm_SetProgConditions() to allow the integrator to store relevant information prior to
jumping to bootloader / jump due to ECUReset request.
Available via Dcm.h
c()
8.2.8 Dcm_MsgItemType
[SWS_Dcm_00989] d
Name Dcm_MsgItemType
Kind Type
Derived from uint8
Description Base type for diagnostic message item
Available via Dcm.h
c()
8.2.9 Dcm_MsgType
[SWS_Dcm_00990] d
Name Dcm_MsgType
Kind Pointer
Type Dcm_MsgItemType*
Description Base type for diagnostic message (request, positive or negative response)
Available via Dcm.h
c()
8.2.10 Dcm_MsgLenType
[SWS_Dcm_00991] d
Name Dcm_MsgLenType
Kind Type
Derived from uint32
Description Length of diagnostic message (request, positive or negative response). The maximum length is
dependent of the underlying transport protocol/media.
Available via Dcm.h
c()
8.2.11 Dcm_MsgAddInfoType
Please note that the following table describes a struct type definition - including its
struct items "elements".
[SWS_Dcm_00992] d
Name Dcm_MsgAddInfoType
Kind Structure
Elements reqType
Type bit
Comment (Pos LSB+0)
0 = physical request
1 = functional request
suppressPosResponse
Type bit
Comment Position LSB+1
0 = no (do not suppress)
1 = yes (no positive response will be sent)
5
4
Description Additional information on message request.
Datastructure: Bitfield
Available via Dcm.h
c()
8.2.12 Dcm_IdContextType
[SWS_Dcm_00993] d
Name Dcm_IdContextType
Kind Type
Derived from uint8
Description This message context identifier can be used to determine the relation between request and
response confirmation.
Available via Dcm.h
c()
8.2.13 Dcm_MsgContextType
Please note that the following table describes a struct type definition - including its
struct items "elements".
[SWS_Dcm_00994] d
Name Dcm_MsgContextType
Kind Structure
reqData
Type Dcm_MsgType
Comment Request data, starting directly after service identifier (which is not part
of this data)
reqDataLen
Type Dcm_MsgLenType
Comment Request data length (excluding service identifier)
resData
Type Dcm_MsgType
Comment Positive response data, starting directly after service identifier (which is
not part of this data).
resDataLen
Type Dcm_MsgLenType
5
4
Comment Positive response data length (excluding service identifier)
msgAddInfo
Type Dcm_MsgAddInfoType
Comment Additional information about service request and response (see: Dcm_
MsgAddInfo)
resMaxDataLen
Type Dcm_MsgLenType
Comment The maximal length of a response is restricted by the size of the buffer.
The buffer size can depend on the diagnostic protocol identifier which
is assigned to this message, e. g. an OBD protocol id can obtain other
properties than the enhanced diagnostic protocol id. The resMaxData
Len is a property of the diagnostic protocol assigned by the DSL. The
value does not change during communication. It cannot be
implemented as a constant, because it can differ between different
diagnostic protocols.
idContext
Type Dcm_IdContextType
Comment This message context identifier can be used to determine the relation
between request and response confirmation. This identifier can be
stored within the application at request time, so that the response can
be assigned to the original request. Background: Within the
confirmation, the message context is no more valid, all message data
is lost. You need an additional information to determine the request to
which this confirmation belongs.
dcmRxPduId:
Type PduIdType
Comment Pdu identifier on which the request was received. The PduId of the
request can have consequences for message processing. E. g. an
OBD request will be received on the OBD PduId and will be processed
slightly different than an enhanced diagnostic request received on the
physical
Description This data structure contains all information which is necessary to process a diagnostic message
from request to response and response confirmation.
Available via Dcm.h
c()
8.2.14 Dcm_ExtendedOpStatusType
[SWS_Dcm_91015] d
Name Dcm_ExtendedOpStatusType
Kind Type
Derived from uint8
DCM_INITIAL 0x00 Indicates the initial call to the
operation
DCM_PENDING 0x01 Indicates that a pending return
has been done on the previous
call of the operation
5
4
DCM_CANCEL 0x02 Indicates that the Dcm requests to
cancel the pending operation
DCM_FORCE_RCRRP_OK 0x03 Confirm a response pending
transmission Variation
DCM_POS_RESPONSE_SENT 0x04 Indicates that a positive response
has been sent successfully
DCM_POS_RESPONSE_FAILED 0x05 Indicates that a positive response
has not been sent successfully
DCM_NEG_RESPONSE_SENT 0x06 Indicates that a negative response
has been sent successfully
DCM_NEG_RESPONSE_FAILED 0x07 Indicates that a negative response
has not been sent successfully
Description –
Available via Dcm.h
c()
8.3.1.1 Dcm_Init
[SWS_Dcm_00037] d
Service Name Dcm_Init
Syntax void Dcm_Init (
const Dcm_ConfigType* ConfigPtr
)
c(SRS_BSW_00438, SRS_BSW_00101)
The call of this service is mandatory before using the Dcm module for further process-
ing.
8.3.1.2 Dcm_GetVersionInfo
[SWS_Dcm_00065] d
Service Name Dcm_GetVersionInfo
Syntax void Dcm_GetVersionInfo (
Std_VersionInfoType* versionInfo
)
8.3.1.3 Dcm_DemTriggerOnDTCStatus
[SWS_Dcm_00614] d
Service Name Dcm_DemTriggerOnDTCStatus
Syntax Std_ReturnType Dcm_DemTriggerOnDTCStatus (
uint32 DTC,
Dem_UdsStatusByteType DTCStatusOld,
Dem_UdsStatusByteType DTCStatusNew
)
c()
8.3.1.4 Dcm_GetVin
[SWS_Dcm_00950] d
Service Name Dcm_GetVin
Syntax Std_ReturnType Dcm_GetVin (
uint8* Data
)
c()
Note: After fetching the VIN, the Dcm can offer the data to all users without worrying
that the data is unavailable if a user asks for it. This is necessary because the VIN
could not be fetched synchronously for all settings of DcmDspDidDataUsePort.
8.3.1.5 Dcm_BndMWriteBlockFinish
[SWS_Dcm_91088] d
Service Name Dcm_BndMWriteBlockFinish
Syntax void Dcm_BndMWriteBlockFinish (
BndM_BlockIdType BlockId,
BndM_ResultType result
)
c(RS_Diag_04243)
The functions defined in this section can also be used by SW-Cs through the RTE.
8.3.2.1 Dcm_SetDeauthenticatedRole
[SWS_Dcm_91069] d
Service Name Dcm_SetDeauthenticatedRole
Syntax Std_ReturnType Dcm_SetDeauthenticatedRole (
uint16 connectionId,
Dcm_AuthenticationRoleType deauthenticatedRole
)
c()
8.3.2.2 Dcm_GetSecurityLevel
[SWS_Dcm_00338] d
Service Name Dcm_GetSecurityLevel
Syntax Std_ReturnType Dcm_GetSecurityLevel (
Dcm_SecLevelType* SecLevel
)
4
Parameters (out) SecLevel Active Security Level value Conversion formula to calculate
SecurityLevel out of tester requested SecurityAccessType
parameter: SecurityLevel = (SecurityAccessType + 1) / 2 Content
of SecurityAccessType is according to "securityAccessType"
parameter of SecurityAccess request (see [11])
Return value Std_ReturnType E_OK: this value is always returned.
Description This function provides the active security level value.
Available via Dcm.h
c(RS_Diag_04005, RS_Diag_04011)
8.3.2.3 Dcm_GetSesCtrlType
[SWS_Dcm_00339] d
Service Name Dcm_GetSesCtrlType
Syntax Std_ReturnType Dcm_GetSesCtrlType (
Dcm_SesCtrlType* SesCtrlType
)
c(RS_Diag_04006, RS_Diag_04011)
8.3.2.4 Dcm_GetActiveProtocol
[SWS_Dcm_00340] d
Service Name Dcm_GetActiveProtocol
Syntax Std_ReturnType Dcm_GetActiveProtocol (
Dcm_ProtocolType* ActiveProtocolType,
uint16* ConnectionId,
uint16* TesterSourceAddress
)
5
4
Service ID [hex] 0x0f
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) None
Parameters (inout) None
Parameters (out) ActiveProtocolType Active protocol type value
ConnectionId Unique connection identifier
TesterSourceAddress source address of the tester
Return value Std_ReturnType E_OK: this value is always returned.
Description This function returns the active UDS protocol details
Available via Dcm.h
c(RS_Diag_04011)
8.3.2.5 Dcm_ResetToDefaultSession
[SWS_Dcm_00520] d
Service Name Dcm_ResetToDefaultSession
Syntax Std_ReturnType Dcm_ResetToDefaultSession (
void
)
c()
8.3.2.6 Dcm_TriggerOnEvent
[SWS_Dcm_00521] d
c()
[SWS_Dcm_01068] d
Service Name Dcm_SetActiveDiagnostic
Syntax Std_ReturnType Dcm_SetActiveDiagnostic (
boolean active
)
c()
class DCMCallbacks
«module»
Dcm
«realize» «realize»
«interface» «interface»
Dcm_PduR Dcm_ComM
Dcm_CopyRxData() Dcm_ComMNoComModeEntered()
Dcm_CopyTxData() Dcm_ComMSilentComModeEntered()
Dcm_RxIndication() Dcm_ComMFullComModeEntered()
Dcm_TxConfirmation()
Dcm_StartOfReception()
«optional»
«module»
«module»
__PduR
ComM
8.4.1 Dcm_StartOfReception
[SWS_Dcm_00094] d
Service Name Dcm_StartOfReception
Syntax BufReq_ReturnType Dcm_StartOfReception (
PduIdType id,
const PduInfoType* info,
PduLengthType TpSduLength,
PduLengthType* bufferSizePtr
)
4
Parameters (in) id Identification of the I-PDU.
info Pointer to a PduInfoType structure containing the payload data
(without protocol information) and payload length of the first
frame or single frame of a transport protocol I-PDU reception, and
the MetaData related to this PDU. If neither first/single frame data
nor MetaData are available, this parameter is set to NULL_PTR.
TpSduLength Total length of the N-SDU to be received.
Parameters (inout) None
Parameters (out) bufferSizePtr Available receive buffer in the receiving module. This parameter
will be used to compute the Block Size (BS) in the transport
protocol module.
Return value BufReq_ReturnType BUFREQ_OK: Connection has been accepted. bufferSizePtr
indicates the available receive buffer; reception is continued. If no
buffer of the requested size is available, a receive buffer size of 0
shall be indicated by bufferSizePtr.
BUFREQ_E_NOT_OK: Connection has been rejected; reception
is aborted. bufferSizePtr remains unchanged.
BUFREQ_E_OVFL: No buffer of the required length can be
provided; reception is aborted. bufferSizePtr remains unchanged.
Description This function is called at the start of receiving an N-SDU. The N-SDU might be fragmented into
multiple N-PDUs (FF with one or more following CFs) or might consist of a single N-PDU (SF).
The service shall provide the currently available maximum buffer size when invoked with TpSdu
Length equal to 0. This function might be called in interrupt context.
Available via Dcm.h
c()
By the function Dcm_StartOfReception the receiver (e.g. DCM) is also informed
implicitly about a first frame reception or a single frame reception. If the function Dcm_-
StartOfReception returns a return value not equal to BUFREQ_OK, the values of
the out parameters are not specified and should not be evaluated by the caller.
8.4.2 Dcm_CopyRxData
[SWS_Dcm_00556] d
Service Name Dcm_CopyRxData
Syntax BufReq_ReturnType Dcm_CopyRxData (
PduIdType id,
const PduInfoType* info,
PduLengthType* bufferSizePtr
)
4
info Provides the source buffer (SduDataPtr) and the number of bytes
to be copied (SduLength). An SduLength of 0 can be used to
query the current amount of available buffer in the upper layer
module. In this case, the SduDataPtr may be a NULL_PTR.
Parameters (inout) None
Parameters (out) bufferSizePtr Available receive buffer after data has been copied.
Return value BufReq_ReturnType BUFREQ_OK: Data copied successfully
BUFREQ_E_NOT_OK: Data was not copied because an error
occurred.
Description This function is called to provide the received data of an I-PDU segment (N-PDU) to the upper
layer. Each call to this function provides the next part of the I-PDU data. The size of the
remaining buffer is written to the position indicated by bufferSizePtr. This function might be
called in interrupt context.
Available via Dcm.h
c()
8.4.3 Dcm_TpRxIndication
[SWS_Dcm_00093] d
Service Name Dcm_TpRxIndication
Syntax void Dcm_TpRxIndication (
PduIdType id,
Std_ReturnType result
)
c()
8.4.4 Dcm_CopyTxData
[SWS_Dcm_00092] d
c()
8.4.5 Dcm_TpTxConfirmation
[SWS_Dcm_00351] d
Service Name Dcm_TpTxConfirmation
Syntax void Dcm_TpTxConfirmation (
PduIdType id,
Std_ReturnType result
)
c()
8.4.6 Dcm_TxConfirmation
[SWS_Dcm_01092] d
Service Name Dcm_TxConfirmation
Syntax void Dcm_TxConfirmation (
PduIdType TxPduId,
Std_ReturnType result
)
c()
8.4.7 Dcm_ComM_NoComModeEntered
[SWS_Dcm_00356] d
Service Name Dcm_ComM_NoComModeEntered
Syntax void Dcm_ComM_NoComModeEntered (
uint8 NetworkId
)
c()
8.4.8 Dcm_ComM_SilentComModeEntered
[SWS_Dcm_00358] d
Service Name Dcm_ComM_SilentComModeEntered
Syntax void Dcm_ComM_SilentComModeEntered (
uint8 NetworkId
)
c()
8.4.9 Dcm_ComM_FullComModeEntered
[SWS_Dcm_00360] d
c()
8.4.10 Dcm_CsmAsyncJobFinished
[SWS_Dcm_91076] d
Service Name Dcm_CsmAsyncJobFinished
Syntax Std_ReturnType Dcm_CsmAsyncJobFinished (
Csm_ResultType result
)
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) result Return value of the asynchronous job
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this value is always returned.
Description Can be called from Csm upon finishing an asynchronous job processing. The integrator will
configure this name as callback function within the Csm ECUC configuration for asynchronous
jobs. Only one such callback is available, the Dcm detects the job that has finished by
evaluating the job parameter. API availability: This API will be available only if ({ecuc(Dcm/Dcm
Dsp/DcmDspAuthentication/DcmDspAuthenticationConnection} != null).
Available via
c()
8.4.11 Dcm_KeyMAsyncCertificateVerifyFinished
[SWS_Dcm_91077] d
Sync/Async Synchronous
Reentrancy Reentrant
Parameters (in) CertID Certificate identifier that has finished the verification
Result Return value of the asynchronous job
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: this value is always returned
Description Can be called from Key upon finishing an asynchronous certificate verification. The integrator
will configure this name as callback function within the KeyM ECUC configuration for
asynchronous jobs. Only one such callback is available, the Dcm detects the certificate that has
finished by evaluating the certId parameter. API availability: This API will be available only if
({ecuc(Dcm/DcmDsp/DcmDspAuthentication/DcmDspAuthenticationConnection} != null).
Available via
c()
8.5.1 Dcm_ReadMemory
[SWS_Dcm_00539] d
c()
8.5.2 Dcm_WriteMemory
[SWS_Dcm_00540] d
c()
Note : The callout implementation shall take care of the following points :
• When writing data in NVRAM, take care to keep the consistency with data in the
mirror RAM
• When writing data in memory, take care that a SW-C won’t overwrite the data.
Maybe the SW-C should be informed of this writing
8.5.3 Dcm_SetProgConditions
[SWS_Dcm_00543] d
c()
Note: In case the SecurityAccess AttemptCounter needs to be shared between appli-
cation and bootloader in addition to the ProgConditionStructure the current value can
be retrieved via the API Xxx_GetSecurityAttemptCounter (see chapter 7.6.4 In-
teraction)
8.5.4 Dcm_GetProgConditions
[SWS_Dcm_00544] d
Service Name Dcm_GetProgConditions
Syntax Dcm_EcuStartModeType Dcm_GetProgConditions (
Dcm_ProgConditionsType * ProgConditions
)
4
Return value Dcm_EcuStartModeType –
Description The Dcm_GetProgConditions callout is called upon Dcm initialization and allows to determine if
a response ($50 or $51) has to be sent. The context parameters are defined in Dcm_Prog
ConditionsType.
Available via Dcm_Externals.h
c()
8.5.5 Dcm_ProcessRequestAddFile
[SWS_Dcm_91078] d
Service Name Dcm_ProcessRequestAddFile
Syntax Std_ReturnType Dcm_ProcessRequestAddFile (
Dcm_OpStatusType OpStatus,
uint16 filePathAndNameLength,
const uint8* filePathAndName,
uint8 dataFormatIdentifier,
uint64 fileSizeUncompressed,
uint64 fileSizeCompressed,
uint64* maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
Parameters (in) OpStatus DCM_INITIAL: All In-parameters are valid. DCM_PENDING: All
In-parameters are set to 0x00. DCM_CANCEL: All In-parameters
are set to 0x00. DCM_FORCE_RCRRP_OK: All In-parameters
are set to 0x00.
filePathAndNameLength Defines the length in bytes for the parameter filePathAndName.
filePathAndName Defines the file system location of the server where the file which
shall be added, deleted, replaced or read from depending on the
parameter modeOfOperation parameter. In addition this
parameter includes the file name of the file which shall be added,
deleted, replaced or read as part of the file path.
dataFormatIdentifier This data-parameter is a one byte value with each nibble
encoded separately. The high nibble specifies the "compression
Method", and the low nibble specifies the "encryptingMethod".
The value 0x00 specifies that neither compressionMethod nor
encryptingMethod is used. Values other than 0x00 are vehicle
manufacturer specific.
fileSizeUncompressed Defines the size of the uncompressed file to be download in
bytes.
fileSizeCompressed Defines the size of the compressed file to be downloaded in
bytes.
Parameters (inout) None
Parameters (out) maxNumberOfBlock Max number of bytes to be included in each TransferData request
Length excluding the SID and the blockSequenceCounter.
5
4
ErrorCode If the operation Dcm_ProcessRequestAddFile returns value E_
NOT_OK, the DCM module shall send a negative response with
NRC code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application request the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. DCM shall call this function to start a RequestFileTransfer process with mode
OfOperation equal to 0x01 (AddFile).
Available via Dcm_Externals.h
c()
8.5.6 Dcm_ProcessRequestDeleteFile
[SWS_Dcm_91079] d
Service Name Dcm_ProcessRequestDeleteFile
Syntax Std_ReturnType Dcm_ProcessRequestDeleteFile (
Dcm_OpStatusType OpStatus,
uint16 filePathAndNameLength,
const uint8* filePathAndName,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Available via Dcm_Externals.h
c()
8.5.7 Dcm_ProcessRequestReplaceFile
[SWS_Dcm_91080] d
Service Name Dcm_ProcessRequestReplaceFile
Syntax Std_ReturnType Dcm_ProcessRequestReplaceFile (
Dcm_OpStatusType OpStatus,
uint16 filePathAndNameLength,
const uint8* filePathAndName,
uint8 dataFormatIdentifier,
uint64 fileSizeUncompressed,
uint64 fileSizeCompressed,
uint64* maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
Parameters (in) OpStatus DCM_INITIAL: All In-parameters are valid. DCM_PENDING: All
In-parameters are set to 0x00. DCM_CANCEL: All In-parameters
are set to 0x00. DCM_FORCE_RCRRP_OK: All In-parameters
are set to 0x00.
filePathAndNameLength Defines the length in bytes for the parameter filePathAndName.
filePathAndName Defines the file system location of the server where the file which
shall be added, deleted, replaced or read from depending on the
parameter modeOfOperation parameter. In addition this
parameter includes the file name of the file which shall be added,
deleted, replaced or read as part of the file path.
dataFormatIdentifier This data-parameter is a one byte value with each nibble
encoded separately. The high nibble specifies the "compression
Method", and the low nibble specifies the "encryptingMethod".
The value 0x00 specifies that neither compressionMethod nor
encryptingMethod is used. Values other than 0x00 are vehicle
manufacturer specific.
fileSizeUncompressed Defines the size of the uncompressed file to be download in
bytes.
fileSizeCompressed Defines the size of the compressed file to be downloaded in
bytes.
Parameters (inout) None
Parameters (out) maxNumberOfBlock Max number of bytes to be included in each TransferData request
Length excluding the SID and the blockSequenceCounter.
ErrorCode If the operation Dcm_ProcessRequestReplaceFile returns value
E_NOT_OK, the DCM module shall send a negative response
with NRC code equal to the parameter ErrorCode parameter
value.
5
4
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application request the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. DCM shall call this function to start a RequestFileTransfer process with mode
OfOperation equal to 0x03 (ReplaceFile).
Available via Dcm_Externals.h
c()
8.5.8 Dcm_ProcessRequestReadFile
[SWS_Dcm_91081] d
Service Name Dcm_ProcessRequestReadFile
Syntax Std_ReturnType Dcm_ProcessRequestReadFile (
Dcm_OpStatusType OpStatus,
uint16 filePathAndNameLength,
const uint8* filePathAndName,
uint8 dataFormatIdentifier,
uint64 fileSizeUncompressed,
uint64 fileSizeCompressed,
uint64* maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
ErrorCode If the operation Dcm_ProcessRequestReadFile returns value E_
NOT_OK, the DCM module shall send a negative response with
NRC code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application request the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. DCM shall call this function to start a RequestFileTransfer process with mode
OfOperation equal to 0x04 (ReadFile).
Available via Dcm_Externals.h
c()
8.5.9 Dcm_ProcessRequestReadDir
[SWS_Dcm_91082] d
Service Name Dcm_ProcessRequestReadDir
Syntax Std_ReturnType Dcm_ProcessRequestReadDir (
Dcm_OpStatusType OpStatus,
uint16 filePathAndNameLength,
const uint8* filePathAndName,
uint64* dirInfoLength,
uint64* maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application request the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. DCM shall call this function to start a RequestFileTransfer process with mode
OfOperation equal to 0x05 (ReadDir).
Available via Dcm_Externals.h
c()
8.5.10 Dcm_WriteFile
[SWS_Dcm_91083] d
Service Name Dcm_WriteFile
Syntax Std_ReturnType Dcm_WriteFile (
Dcm_OpStatusType OpStatus,
uint64 DataLength,
uint8* Data,
Dcm_NegativeResponseCodeType* ErrorCode
)
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) OpStatus DCM_INITIAL: All In-parameters are valid. DCM_PENDING: All
In-parameters are set to 0x00. DCM_CANCEL: All In-parameters
are set to 0x00. DCM_FORCE_RCRRP_OK: All In-parameters
are set to 0x00.
DataLength Defines the length in bytes for the parameter Data. The value will
not exceed, but might be less, compared to the value of max
NumberOfBlockLength return in Dcm_ProcessRequestFile
Transfer.
Data Pointer to the data to be written.
Parameters (inout) None
Parameters (out) ErrorCode If the operation Dcm_WriteFile returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application request the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. DCM shall call this function when data is received using UDS service Transfer
Data if there’s an ongoing RequestFileTransfer process started with 0x01 (AddFile) or 0x03
(ReplaceFile).
Available via Dcm_Externals.h
c()
8.5.11 Dcm_ReadFileOrDir
[SWS_Dcm_91085] d
Service Name Dcm_ReadFileOrDir
Syntax Std_ReturnType Dcm_ReadFileOrDir (
Dcm_OpStatusType OpStatus,
uint64* DataLength,
uint8* Data,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
8.6.1 Dcm_MainFunction
[SWS_Dcm_00053] d
c(SRS_BSW_00424, SRS_BSW_00373)
This section defines all interfaces, which are required to fulfill the core functionality of
the module.
[SWS_Dcm_91001] d
API Function Header File Description
ComM_DCM_ActiveDiagnostic ComM_Dcm.h Indication of active diagnostic by the DCM.
ComM_DCM_InactiveDiagnostic ComM_Dcm.h Indication of inactive diagnostic by the DCM.
PduR_DcmTransmit PduR_Dcm.h Requests transmission of a PDU.
c()
This section defines all interfaces, which are required to fulfill an optional functionality
of the module.
[SWS_Dcm_91002] d
API Function Header File Description
BndM_GetBlockPtr_<Block BndM_Externals.h –
Id.Shortname>
5
4
API Function Header File Description
BndM_WriteBlock_<Block BndM_Externals.h Will persist the data in flash, that it can later directly
Id.Shortname> accessed via BndM_GetBlockPtr API. The writing
take a while and is finished after the successful
callback xxx_BndMWriteBlockFinish
BndM_WriteCancel BndM.h Cancels the writing
BndM_WriteFinalize BndM.h Will trigger the finalization of writing phase. The
finish of asynchronous processing will trigger the
callback xxx_BndMWriteFinalizeFinish including the
result of this operation.
BndM_WriteStart BndM.h Will trigger the start of writing phase. The finish of
asynchronous processing will trigger the callback
xxx_BndMWriteStartFinish including the result of
this operation
BswM_Dcm_ApplicationUpdated BswM_Dcm.h This function is called by the DCM in order to report
an updated application.
BswM_Dcm_CommunicationMode BswM_Dcm.h Function called by DCM to inform the BswM about
_CurrentState the current state of the communication mode.
Dem_ClearDTC Dem.h Clears single DTCs, as well as groups of DTCs.
Dem_DcmGetAvailableOBDMIDs Dem_Dcm.h Reports the value of a requested
"availability-OBDMID" to the DCM upon a Service
$06 request. Derived from that the tester displays
the supported tests a mechanic can select from. 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)
Dem_DcmGetDTCOfOBDFreeze Dem_Dcm.h Gets DTC by freeze frame record number. API is
Frame needed in OBD-relevant ECUs only.
API Availability: This API will be available only if
({ecuc(Dem/DemGeneral.DemOBDSupport)} !=
DEM_OBD_NO_OBD_SUPPORT)
Dem_DcmGetDTRData Dem_Dcm.h Reports a DTR data along with TID-value, UaSID,
test result with lower and upper limit. 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)
Dem_DcmGetNumTIDsOfOBDMID Dem_Dcm.h 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)
Dem_DcmReadDataOfOBDFreeze Dem_Dcm.h Gets data element per PID and index of the most
Frame 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)
Dem_DisableDTCRecordUpdate Dem.h Disables the event memory update of a specific
DTC (only one at one time).
5
4
API Function Header File Description
Dem_DisableDTCSetting Dem.h Disables the DTC setting for all DTCs assigned to
the DemEventMemorySet of the addressed client.
Dem_EnableDTCRecordUpdate Dem.h Enables the event memory update of the DTC
disabled by Dem_DisableDTCRecordUpdate()
before.
Note: As the call to Dem_EnableDTCRecordUpdate
is the last action in the sequence of disabling/
enabling a DTC, the caller is not interested in the
return value. Therefore E_OK should be returned
even if the DTC is enabled asynchronously.
Dem_EnableDTCSetting Dem.h (Re)-Enables the DTC setting for all DTCs assigned
to the DemEventMemorySet of the addressed client.
Dem_GetDTCByOccurrenceTime Dem.h Gets the DTC by occurrence time. There is no
explicit parameter for the DTC-origin as the origin
always is DEM_DTC_ORIGIN_PRIMARY_
MEMORY.
Dem_GetDTCSeverityAvailabilityMask Dem.h Gets the DTC Severity availability mask.
Dem_GetDTCStatusAvailabilityMask Dem.h Gets the DTC Status availability mask of the
selected fault memory.
Dem_GetFunctionalUnitOfDTC Dem.h Gets the functional unit of the requested DTC.
Dem_GetNextExtendedDataRecord Dem.h Gets extended data record for the DTC selected by
Dem_SelectExtendedDataRecord. The function
stores the data in the provided DestBuffer.
Dem_GetNextFilteredDTC Dem.h 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.
Dem_GetNextFilteredDTCAndFDC Dem.h Gets the next filtered DTC and its associated Fault
Detection Counter (FDC) matching the filter criteria.
The interface has an asynchronous behavior,
because a large number of DTCs has to be
processed and the FDC might be received
asynchronously from a SW-C, too.
Dem_GetNextFilteredDTCAndSeverity Dem.h Gets the next filtered DTC and its associated
Severity matching the filter criteria. The interface
has an asynchronous behavior, because a large
number of DTCs has to be processed.
Dem_GetNextFilteredRecord Dem.h 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.
Dem_GetNextFreezeFrameData Dem.h Gets freeze frame data by the DTC selected by
Dem_SelectFreezeFrameData. The function stores
the data in the provided DestBuffer.
Dem_GetNumberOfFilteredDTC Dem.h Gets the number of a filtered DTC.
Dem_GetNumberOfFreezeFrame Dem.h This function returns the number of all freeze frame
Records records currently stored in the primary event
memory
Dem_GetSeverityOfDTC Dem.h Gets the severity of the requested DTC. For large
configurations and DTC-calibration, the interface
behavior can be asynchronous (splitting the
DTC-search into segments).
Dem_GetSizeOfExtendedDataRecord Dem.h Gets the size of Extended Data Record by DTC
Selection selected by the call of Dem_SelectExtendedData
Record.
5
4
API Function Header File Description
Dem_GetSizeOfFreezeFrameSelection Dem.h Gets the size of freeze frame data by DTC selected
by the call of Dem_SelectFreezeFrameData.
Dem_GetStatusOfDTC Dem.h 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.
Dem_GetTranslationType Dem.h Gets the supported DTC formats of the ECU.The
supported formats are configured via DemTypeOf
DTCSupported.
Dem_SetDTCFilter Dem.h 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 DTCStatusAvailabilityMask, 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
Dem_SetFreezeFrameRecordFilter Dem.h Sets a freeze frame record filter.
Det_ReportError Det.h Service to report development errors.
IdsM_SetSecurityEvent IdsM.h This API is the application interface to report
security events to the IdsM.
IdsM_SetSecurityEventWithContext IdsM.h This API is the application interface to report
Data security events with context data to the IdsM.
IoHwAb_Dcm_<EcuSignalName> IoHwAb_Dcm.h This function provides control access to a certain
ECU Signal to the DCM module (<EcuSignalname>
is the symbolic name of an ECU Signal). The ECU
signal can be locked and unlocked by this function.
Locking ’freezes’ the ECU signal to the current
value, the configured default value or a value given
by the parameter ’signal’.
IoHwAb_Dcm_Read<EcuSignal IoHwAb_Dcm.h This function provides read access to a certain ECU
Name> Signal to the DCM module (<EcuSignalname> is the
symbolic name of an ECU Signal).
NvM_ReadBlock NvM.h Service to copy the data of the NV block to its
corresponding RAM block.
NvM_SetBlockLockStatus NvM.h Service for setting the lock status of a permanent
RAM block or of the explicit synchronization of a
NVRAM 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.
PduR_DcmCancelReceive PduR_Dcm.h Requests cancellation of an ongoing reception of a
PDU in a lower layer transport protocol module.
5
4
API Function Header File Description
PduR_DcmCancelTransmit PduR_Dcm.h Requests cancellation of an ongoing transmission of
a PDU in a lower layer communication module.
SchM_ActMainFunction_Dcm <none> Invokes the SchM_ActMainFunction function to
trigger the activation of a corresponding main
processing function.
c()
Dem_DcmReadDataOfOBDFreezeFrame is only required when OBD Service $02 is
configured (see configuration parameter DcmDsdSidTabServiceId).
This section defines the interfaces where the Dcm configuration defines the actual func-
tions that the Dcm will use. Depending on the configuration, an implementation of these
functions could be provided by other BSW-modules (typically the DEM) or by software-
components (through the RTE).
8.7.3.1 SecurityAccess
From the point of view of the DCM, the operation has the following signature:
8.7.3.1.1 GetSeed
If DcmDspSecurityADRSize is present:
[SWS_Dcm_01151] d
Service Name Xxx_GetSeed
Syntax Std_ReturnType Xxx_GetSeed (
const uint8* SecurityAccessDataRecord,
Dcm_OpStatusType OpStatus,
uint8* Seed,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
OpStatus Status of the current operation
Parameters (inout) None
Parameters (out) Seed Pointer for provided seed
ErrorCode If the operation Xxx_GetSeed returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
Description Request to application for asynchronous provision of seed value
Available via Dcm_Externals.h
c()
If DcmDspSecurityADRSize is not present:
[SWS_Dcm_91003] d
Service Name Xxx_GetSeed
Syntax Std_ReturnType Xxx_GetSeed (
Dcm_OpStatusType OpStatus,
uint8* Seed,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
8.7.3.1.2 CompareKey
[SWS_Dcm_91004] d
c()
8.7.3.1.3 GetSecurityAttemptCounter
[SWS_Dcm_01152] d
Service Name Xxx_GetSecurityAttemptCounter
Syntax Std_ReturnType Xxx_GetSecurityAttemptCounter (
Dcm_OpStatusType OpStatus,
uint8* AttemptCounter
)
c()
Note: In case the Security Access AttemptCounter needs to be shared between ap-
plication and bootloader, the application needs to consider this in the API-call Xxx_-
GetSecurityAttemptCounter (see chapter 7.6.4 Interaction). Further this has also
impact on the security delay timer which needs to be considered.
8.7.3.1.4 SetSecurityAttemptCounter
[SWS_Dcm_01153] d
Service Name Xxx_SetSecurityAttemptCounter
Syntax Std_ReturnType Xxx_SetSecurityAttemptCounter (
Dcm_OpStatusType OpStatus,
uint8 AttemptCounter
)
c()
8.7.3.2 DataServices
From the point of view of the DCM, the operations have the following signatures:
Note : The OpStatus parameter shall only exist for asynchronous operations (if DcmD-
spDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or USE_DATA_-
ASYNCH_CLIENT_SERVER_ERROR or USE_DATA_ASYNCH_FNC or USE_DATA_-
ASYNCH_FNC_ERROR). In case of synchronous operations (DcmDspDataUsePort is
set to USE_DATA_SYNCH_CLIENT_SERVER or USE_DATA_SYNCH_FNC), the OpSta-
tus parameter shall not exist.
8.7.3.2.1 ReadData
[SWS_Dcm_00793] d
Service Name Xxx_ReadData
Syntax Std_ReturnType Xxx_ReadData (
uint8* Data
)
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or
USE_DATA_ASYNCH_FNC, the following definition is used:
[SWS_Dcm_91006] d
Service Name Xxx_ReadData
Syntax Std_ReturnType Xxx_ReadData (
Dcm_OpStatusType OpStatus,
uint8* Data
)
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER_ERROR or
USE_DATA_ASYNCH_FNC_ERROR, the following definition is used:
[SWS_Dcm_91005] d
c()
8.7.3.2.2 WriteData
4
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
Description This function requests the application to write a data value of a DID.
Available via Dcm_Externals.h
c()
If DcmDspDataType is set to UINT8_DYN, the following definition is used:
[SWS_Dcm_91007] d
Service Name Xxx_WriteData
Syntax Std_ReturnType Xxx_WriteData (
const uint8* Data,
uint16 DataLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or
USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR
USE_DATA_ASYNCH_FNC_ERROR, the following definition is used:
If DcmDspDataType is NOT set to UINT8_DYN, the following definition is used:
[SWS_Dcm_91008] d
Service Name Xxx_WriteData
Syntax Std_ReturnType Xxx_WriteData (
const uint8* Data,
Dcm_OpStatusType OpStatus,
Dcm_NegativeResponseCodeType* ErrorCode
)
5
4
Service ID [hex] 0x35
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) Data Buffer containing the data to be written
OpStatus Status of the current operation
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_WriteData returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
Description This function requests the application to write a data value of a DID.
Available via Dcm_Externals.h
c()
If DcmDspDataType is set to UINT8_DYN, the following definition is used:
[SWS_Dcm_91009] d
Service Name Xxx_WriteData
Syntax Std_ReturnType Xxx_WriteData (
const uint8* Data,
uint16 DataLength,
Dcm_OpStatusType OpStatus,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
8.7.3.2.3 ReadDataLength
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or USE_-
DATA_ASYNCH_CLIENT_SERVER_ERROR or USE_DATA_ASYNCH_FNC or USE_-
DATA_ASYNCH_FNC_ERROR, the following definition is used:
[SWS_Dcm_91010] d
Service Name Xxx_ReadDataLength
Syntax Std_ReturnType Xxx_ReadDataLength (
Dcm_OpStatusType OpStatus,
uint16* DataLength
)
c()
8.7.3.2.4 ConditionCheckRead
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or
USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR
USE_DATA_ASYNCH_FNC_ERROR, the following definition is used:
[SWS_Dcm_91011] d
Service Name Xxx_ConditionCheckRead
Syntax Std_ReturnType Xxx_ConditionCheckRead (
Dcm_OpStatusType OpStatus,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Description This function requests to the application if the conditions to read the Data are correct.
Available via Dcm_Externals.h
c()
8.7.3.2.5 GetScalingInformation
This function requests to the application for the scaling information of a Data (scaling-
Byte and scalingByteExtension).
If DcmDspDataUsePort is set to USE_DATA_SYNCH_CLIENT_SERVER or USE_-
DATA_SYNCH_FNC, the following definition is used:
[SWS_Dcm_00798] d
Service Name Xxx_GetScalingInformation
Syntax Std_ReturnType Xxx_GetScalingInformation (
uint8* ScalingInfo,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
If DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or
USE_DATA_ASYNCH_FNC or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR
USE_DATA_ASYNCH_FNC_ERROR, the following definition is used:
[SWS_Dcm_91012] d
c()
8.7.3.2.6 ReturnControlToECU
[SWS_Dcm_01285] d
Service Name Xxx_ReturnControlToECU
Syntax Std_ReturnType Xxx_ReturnControlToECU (
[Dcm_ControlMask_{DID}Type controlMask],
[uint8* controlMask2],
Dcm_NegativeResponseCodeType* ErrorCode
)
4
4
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDid
Control/DcmDspDidResetToDefault)} == TRUE) || ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/
DcmDspDidShortTermAdjustment)}== TRUE) && ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> Dcm
DspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} ==
DCM_CONTROLMASK_EXTERNAL) && ({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/
DcmDspDidControl/DcmDspDidControlMaskSize)} <= 0x04)
controlMask2 –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_SYNCH_FNC || USE_DATA_
ASYNCH_FNC ||USE_DATA_ASYNCH_FNC_ERROR) &&
{ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDid
Control/DcmDspDidFreezeCurrentState)} == TRUE)||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDid
Control/DcmDspDidResetToDefault)} == TRUE) || ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/
DcmDspDidShortTermAdjustment)}== TRUE) && ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> Dcm
DspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} ==
DCM_CONTROLMASK_EXTERNAL)&& ({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspDid/?DcmDspDidInfoRef->DcmDspDidInfo/
DcmDspDidControl/DcmDspDidControlMaskSize)} => 0x05)
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_ReturnControlToECU returns value E_NOT_
OK, the DCM module shall send a negative response with NRC
code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
Description This function requests to the application to return control to ECU of an IOControl.
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
8.7.3.2.7 ResetToDefault
[SWS_Dcm_01286] d
Service Name Xxx_ResetToDefault
Syntax Std_ReturnType Xxx_ResetToDefault (
[Dcm_ControlMask_{DID}Type controlMask],
[uint8* controlMask2],
Dcm_NegativeResponseCodeType* ErrorCode
)
5
4
Service ID [hex] 0x4d
Sync/Async Synchronous
Reentrancy Non Reentrant
Parameters (in) controlMask –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_SYNCH_FNC)) && ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDsp
DidResetToDefault)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)&& ({ecuc(Dcm/?DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidControlMaskSize)} <= 0x04)
controlMask2 –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_SYNCH_FNC)) && ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDsp
DidResetToDefault)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef -> DcmDspDidInfo/
DcmDspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)&& ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidControlMaskSize)} => 0x05)
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_ResetToDefault returns value E_NOT_OK,
the DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
Description This function requests to the application to reset an IOControl to default value.
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_01314] d
Service Name Xxx_ResetToDefault
Syntax Std_ReturnType Xxx_ResetToDefault (
Dcm_OpStatusType OpStatus,
[Dcm_ControlMask_{DID}Type controlMask],
[uint8* controlMask2],
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Reentrancy Non Reentrant
Parameters (in) OpStatus Status of the current operation
controlMask –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_ASYNCH_FNC || USE_DATA_
ASYNCH_FNC_ERROR))&& ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidResetTo
Default)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDid/DcmDspDidInfoRef -> DcmDspDidInfo/DcmDspDid
Control/DcmDspDidControlMask)} == DCM_CONTROLMASK_
EXTERNAL)&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Did/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/
DcmDspDidControlMaskSize)} <= 0x04)
controlMask2 –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_ASYNCH_FNC || USE_DATA_
ASYNCH_FNC_ERROR))&& ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidResetTo
Default)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDid/DcmDspDidInfoRef -> DcmDspDidInfo/DcmDspDid
Control/DcmDspDidControlMask)} == DCM_CONTROLMASK_
EXTERNAL)&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Did/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/
DcmDspDidControlMaskSize)} => 0x05)
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_ResetToDefault returns value E_NOT_OK,
the DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
Description This function requests to the application to reset an IOControl to default value.
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
8.7.3.2.8 FreezeCurrentState
[SWS_Dcm_01290] d
Service Name Xxx_FreezeCurrentState
5
4
Syntax Std_ReturnType Xxx_FreezeCurrentState (
[Dcm_ControlMask_{DID}Type controlMask],
[uint8* controlMask2],
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_01315] d
Service Name Xxx_FreezeCurrentState
5
4
Syntax Std_ReturnType Xxx_FreezeCurrentState (
Dcm_OpStatusType OpStatus,
[Dcm_ControlMask_{DID}Type controlMask],
[uint8* controlMask2],
Dcm_NegativeResponseCodeType* ErrorCode
)
Service ID [hex]
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) OpStatus Status of the current operation
controlMask –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_ASYNCH_FNC || USE_DATA_
ASYNCH_FNC_ERROR))&& ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidFreeze
CurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDid/DcmDspDidInfoRef -> DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)&& ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidControlMaskSize)} <= 0x04)
controlMask2 –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == (USE_DATA_ASYNCH_FNC || USE_DATA_
ASYNCH_FNC_ERROR))&& ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidFreeze
CurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDid/DcmDspDidInfoRef -> DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)&& ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidControlMaskSize)} => 0x05)
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_FreezeCurrentState returns value E_NOT_
OK, the DCM module shall send a negative response with NRC
code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
Description This function requests to the application to freeze the current state of an IOControl.
Available via Dcm_Externals.h
c()
8.7.3.2.9 ShortTermAdjustment
[SWS_Dcm_00802] d
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_01316] d
c()
8.7.3.3 DataServices_DIDRange
From the point of view of the DCM, the operations have the following signatures:
Note : The OpStatus parameter should only be used for asynchronous operations
(if DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER or USE_-
DATA_ASYNCH_FNC or USE_DATA_ASYNCH_CLIENT_SERVER_ERROR USE_DATA_-
ASYNCH_FNC_ERROR). In case of synchronous operations (DcmDspDataUsePort is
set to USE_DATA_SYNCH_CLIENT_SERVER or USE_DATA_SYNCH_FNC), the OpSta-
tus parameter should not be used.
8.7.3.3.1 IsDidAvailable
[SWS_Dcm_00803] d
Service Name Xxx_IsDidAvailable
Syntax Std_ReturnType Xxx_IsDidAvailable (
uint16 DID,
Dcm_OpStatusType OpStatus,
Dcm_DidSupportedType* supported
)
c()
8.7.3.3.2 ReadDidData
[SWS_Dcm_00804] d
c()
8.7.3.3.3 WriteDidData
[SWS_Dcm_00805] d
Service Name Xxx_WriteDidData
Syntax Std_ReturnType Xxx_WriteDidData (
uint16 DID,
const uint8* Data,
Dcm_OpStatusType OpStatus,
uint16 DataLength,
Dcm_NegativeResponseCodeType ErrorCode
)
4
DataLength Length of the data to be written
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_WriteDidData returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
Description This function requests the application to write a data value of a DID.
Available via Dcm_Externals.h
c()
8.7.3.3.4 ReadDidRangeDataLength
c()
8.7.3.4 InfoTypesServices
8.7.3.4.1 GetInfotypeValueData
[SWS_Dcm_91014] d
Service Name Xxx_GetInfotypeValueData
Syntax Std_ReturnType Xxx_GetInfotypeValueData (
Dcm_OpStatusType OpStatus,
uint8* DataValueBuffer,
uint8* DataValueBufferSize
)
c()
8.7.3.5 RoutineServices
The operations mentioned in the following sub-chapters are only general examples,
because the number of In and OUT parameters can be variable from 0 to an arbitrary
number.It is therefore not possible to list all variations of operation prototypes.
[SWS_Dcm_01203] d
Service Name Xxx_Start
Syntax Std_ReturnType Xxx_Start (
[DcmDspRoutineSignalType dataIn_1, ...
DcmDspRoutineSignalType dataIn_n],
[const uint8* dataInVar],
5
5
4
4
Dcm_OpStatusType OpStatus,
[DcmDspRoutineSignalType dataOut_1, ...
DcmDspRoutineSignalType dataOut_n],
[uint8* dataOutVar],
[uint16* currentDataLength],
Dcm_NegativeResponseCodeType ErrorCode
)
Parameters (out) dataOut_1 Fixed-length output data to provide in the routine control response
... ...
dataOut_n Fixed-length output data to provide in the routine control response
dataOutVar Variable-length output data to provide in the routine control
response
ErrorCode If the operation Xxx_Start returns value E_NOT_OK, the Dcm
module shall send a negative response with NRC code equal to
the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish.
DCM_E_FORCE_RCRRP: application requests the transmission
of a response Pending (NRC 0x78)
Description This function requests to the application to start the execution of a routine.
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_91016] d
Sync/Async Synchronous
Reentrancy Non Reentrant
Parameters (in) ConfirmationStatus Confirmation status of a StartRoutine request
Parameters (inout) None
Parameters (out) None
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
Description This function indicates the transmission of a response to a StartRoutine request
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_01204] d
Service Name Xxx_Stop
Syntax Std_ReturnType Xxx_Stop (
[DcmDspRoutineSignalType dataIn_1, ...
DcmDspRoutineSignalType dataIn_n],
[const uint8* dataInVar],
[DcmDspRoutineSignalType dataOut_1, ...
DcmDspRoutineSignalType dataOut_n],
[uint8* dataOutVar],
[uint16* currentDataLength],
Dcm_NegativeResponseCodeType* ErrorCode
)
4
dataOut_n Fixed-length output data to provide in the routine control response
dataOutVar Variable-length output data to provide in the routine control
response
ErrorCode If the operation Xxx_Stop returns value E_NOT_OK, the Dcm
module shall send a negative response with NRC code equal to
the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish
DCM_E_FORCE_RCRRP: application requests the transmission
of a response Pending (NRC 0x78)
Description This function requests to the application to stop the execution of a routine
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_91017] d
Service Name Xxx_StopConfirmation
Syntax Std_ReturnType Xxx_StopConfirmation (
Dcm_ConfirmationStatusType ConfirmationStatus
)
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_91013] d
Parameters (out) dataOut_1 Fixed-length Output data to provide in the routine control
response
... ...
dataOut_n Fixed-length Output data to provide in the routine control
response
dataOutVar Variable-length Output data to provide in the routine control
response
ErrorCode If the operation Xxx_RequestResults returns value E_NOT_OK,
the Dcm module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
DCM_E_PENDING: Request is not yet finished. Further call(s)
required to finish
DCM_E_FORCE_RCRRP: application requests the transmission
of a response Pending (NRC 0x78)
Description This function requests to the application the result of a routine execution
Available via Dcm_Externals.h
c()
Note: Square brackets [] indicate that an argument is optional.
[SWS_Dcm_91018] d
c()
Note: Square brackets [] indicate that an argument is optional.
8.7.3.6 RequestControlServices
From the point of view of the DCM, the operation has the following signature:
[SWS_Dcm_01338] d
Service Name Xxx_RequestControl
Syntax Std_ReturnType Xxx_RequestControl (
uint8* OutBuffer,
const uint8* InBuffer
)
4
Description Invokes a TID-specific function taking a configured number of bytes as input and returing a
fixed number of bytes as output. This is typically used to implement OBD Service $08
Available via Dcm_Externals.h
c()
8.7.3.7 CallbackDCMRequestServices
From the point of view of the DCM, the operations have the following signatures:
8.7.3.7.1 StartProtocol
[SWS_Dcm_01339] d
Service Name Xxx_StartProtocol
Syntax Std_ReturnType Xxx_StartProtocol (
Dcm_ProtocolType ProtocolType,
uint16 TesterSourceAddress,
uint16 ConnectionId
)
c()
8.7.3.7.2 StopProtocol
[SWS_Dcm_01340] d
c()
8.7.3.8 ServiceRequestNotification
From the point of view of the DCM, the operations has the following signatures:
8.7.3.8.1 Indication
[SWS_Dcm_01341] d
Service Name Xxx_Indication
Syntax Std_ReturnType Xxx_Indication (
uint8 SID,
const uint8* RequestData,
uint32 DataSize,
uint8 ReqType,
uint16 ConnectionId,
Dcm_NegativeResponseCodeType* ErrorCode,
Dcm_ProtocolType ProtocolType,
uint16 TesterSourceAddress
)
4
RequestData Complete request data (diagnostic buffer), except the service ID
DataSize Number of valid bytes in the RequestData parameter
ReqType Addressing type of the request(0=physical request,1=functional
request)
ConnectionId Unique connection identifier
ProtocolType Type of the protocol to be indicated
TesterSourceAddress source address of the tester
Parameters (inout) None
Parameters (out) ErrorCode If the operation Xxx_Indication re- turns value E_NOT_OK, the
Dcm module shall send a negative response with NRC code
equal to the parameter ErrorCode parameter value
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
E_REQUEST_NOT_ACCEPTED : Request not accepted
Description This function indicates to the application that a service is about to be executed and allows the
application to reject the execution of the service request
Available via Dcm_Externals.h
c()
8.7.3.8.2 Confirmation
[SWS_Dcm_01342] d
Service Name Xxx_Confirmation
Syntax Std_ReturnType Xxx_Confirmation (
uint8 SID,
uint8 ReqType,
uint16 ConnectionId,
Dcm_ConfirmationStatusType ConfirmationStatus,
Dcm_ProtocolType ProtocolType,
uint16 TesterSourceAddress
)
4
Return value Std_ReturnType E_OK: Request was successful.
E_NOT_OK: Request was not successful.
Description This function confirms to the application the successful transmission or a transmission error of
a diagnostic service.
Available via Dcm_Externals.h
c()
8.7.3.9 ClearDTCCheckFnc
From the point of view of the Dcm, the operation has the following signature:
[SWS_Dcm_01270] d
Service Name Xxx_ClearDTCCheckFnc
Syntax Std_ReturnType Xxx_ClearDTCCheckFnc (
uint32 GoDTC,
Dcm_NegativeResponseCodeType* ErrorCode
)
c()
8.7.3.10 UploadDownloadServices
From the point of view of the DCM, the operations has the following signatures:
8.7.3.10.1 ProcessRequestDownload
[SWS_Dcm_00754] d
c()
8.7.3.10.2 ProcessRequestTransferExit
[SWS_Dcm_00755] d
Service Name Xxx_ProcessRequestTransferExit
Syntax Std_ReturnType Xxx_ProcessRequestTransferExit (
Dcm_OpStatusType OpStatus,
Dcm_NegativeResponseCodeType* ErrorCode
)
5
4
Service ID [hex] 0x32
Sync/Async Asynchronous
Reentrancy Non Reentrant
Parameters (in) OpStatus DCM_INITIAL DCM_PENDING DCM_CANCEL
Parameters (inout) None
Parameters (out) ErrorCode see below
Return value Std_ReturnType E_OK: Transfer was successful
E_NOT_OK: Transfer was not successful or the response buffer
is too small
DCM_E_PENDING: Transfer is not yet finished
Description Callout function. DCM shall call this callout function to terminate a download or upload process.
This callout is needed for the implementation of UDS service RequestTransferExit.
Available via Dcm_Externals.h
c()
8.7.3.10.3 ProcessRequestUpload
[SWS_Dcm_00756] d
Service Name Xxx_ProcessRequestUpload
Syntax Std_ReturnType Xxx_ProcessRequestUpload (
Dcm_OpStatusType OpStatus,
uint8 DataFormatIdentifier,
uint8 MemoryIdentifier,
uint32 MemoryAddress,
uint32 MemorySize,
uint32* BlockLength,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Parameters (inout) BlockLength Max. Number of bytes for one Dcm_ReadMemory
Parameters (out) ErrorCode If the operation Dcm_ProcessRequestUpload returns value E_
NOT_OK, the DCM module shall send a negative response with
NRC code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
Description Callout function. DCM shall call this callout function to start an upload process. This service is
needed for the implementation of UDS service RequestUpload.
Available via Dcm_Externals.h
c()
8.7.3.10.4 ProcessTransferDataRead
[SWS_Dcm_91070] d
Service Name Xxx_ProcessTransferDataRead
Syntax Dcm_ReturnReadMemoryType Xxx_ProcessTransferDataRead (
Dcm_OpStatusType OpStatus,
uint8 MemoryIdentifier,
uint32 MemoryAddress,
uint32 MemorySize,
Dcm_RequestDataArrayType MemoryData,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Description The ProcessTransferDataRead callout is used to request memory data identified by the
parameter memoryAddress and memorySize from the UDS request message. This service is
needed for the implementation of UDS services:
• ReadMemoryByAddress
• RequestUpload
• ReadDataByIdentifier (in case of Dynamical DID defined by memory address)
• TransferData
Available via Dcm_Externals.h
c()
8.7.3.10.5 ProcessTransferDataWrite
[SWS_Dcm_91071] d
Service Name Xxx_ProcessTransferDataWrite
Syntax Dcm_ReturnWriteMemoryType Xxx_ProcessTransferDataWrite (
Dcm_OpStatusType OpStatus,
uint8 MemoryIdentifier,
uint32 MemoryAddress,
uint32 MemorySize,
const Dcm_RequestDataArrayType MemoryData,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Description The ProcessTransferDataWrite callout is used to write memory data identified by the parameter
memoryAddress and memorySize. This service is needed for the implementation of UDS
services :
• WriteMemoryByAddress
• RequestDownload
• TransferData
Available via Dcm_Externals.h
c()
8.8.1.1 Dcm_OpStatusType
[SWS_Dcm_00984] d
Name Dcm_OpStatusType
Kind Type
Derived from uint8
Range DCM_INITIAL 0x00 Indicates the initial call to the
operation
DCM_PENDING 0x01 Indicates that a pending return
has been done on the previous
call of the operation
DCM_CANCEL 0x02 Indicates that the DCM requests
to cancel the pending operation
DCM_FORCE_RCRRP_OK 0x03 Confirm a response pending
transmission
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.2 Dcm_ConfirmationStatusType
[SWS_Dcm_00983] d
Name Dcm_ConfirmationStatusType
Kind Type
Derived from uint8
Range DCM_RES_POS_OK 0x00 –
DCM_RES_POS_NOT_OK 0x01 –
DCM_RES_NEG_OK 0x02 –
DCM_RES_NEG_NOT_OK 0x03 –
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.3 Dcm_SecLevelType
[SWS_Dcm_00977] d
Name Dcm_SecLevelType
Kind Type
Derived from uint8
Range DCM_SEC_LEV_LOCKED 0x00 –
configuration dependent 0x01...0x3F –
Reserved by Document 0x40...0xFF –
Description Security Level type definition
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.4 Dcm_SesCtrlType
[SWS_Dcm_00978] d
Name Dcm_SesCtrlType
Kind Type
Derived from uint8
DCM_DEFAULT_SESSION 0x01 –
DCM_PROGRAMMING_ 0x02 –
SESSION
DCM_EXTENDED_ 0x03 –
DIAGNOSTIC_SESSION
5
4
DCM_SAFETY_SYSTEM_ 0x04 –
DIAGNOSTIC_SESSION
configuration dependent 0x40...0x7E (according to "diagnosticSession
Type" parameter of Diagnostic
SessionControl request)
Description Session type definition. 0, 127 and all values above 127 are reserved by ISO.
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.5 Dcm_ProtocolType
[SWS_Dcm_00979] d
Name Dcm_ProtocolType
Kind Type
Derived from uint8
DCM_OBD_ON_CAN 0x00 OBD on CAN (ISO15765-4;
ISO15031-5)
DCM_OBD_ON_FLEXRAY 0x01 (OBD on Flexray (Manufacturer
specific; ISO15031-5))
DCM_OBD_ON_IP 0x02 (OBD on Internet Protocol
(Manufacturer specific;
ISO15031-5))
DCM_UDS_ON_CAN 0x03 UDS on CAN (ISO15765-3;
ISO14229-1)
DCM_UDS_ON_FLEXRAY 0x04 UDS on FlexRay (Manufacturer
specific; ISO14229-1)
DCM_UDS_ON_IP 0x05 (UDS on Internet Protocol
(Manufacturer specific;
ISO14229-1))
DCM_ROE_ON_CAN 0x06 Response On Event on CAN
DCM_ROE_ON_FLEXRAY 0x07 Response On Event on FlexRay
DCM_ROE_ON_IP 0x08 (Response on Event on Internet
Protocol)
DCM_PERIODICTRANS_ON_ 0x09 Periodic Transmission on CAN
CAN
DCM_PERIODICTRANS_ON_ 0x0A Periodic Transmission on FlexRay
FLEXRAY
DCM_PERIODICTRANS_ON_IP 0x0B (Periodic Transmission on Internet
Protocol)
DCM_NO_ACTIVE_PROTOCOL 0x0C No protocol has been started
DCM_UDS_ON_LIN 0x0D UDS on LIN (ISO14229-1;
ISO14229-7)
Reserved for further AUTOSAR 0x0E..0xEF –
implementation
5
4
DCM_SUPPLIER_1 0xF0 Reserved for SW supplier
specific.
DCM_SUPPLIER_2 0xF1 Reserved for SW supplier
specific.
DCM_SUPPLIER_3 0xF2 Reserved for SW supplier
specific.
DCM_SUPPLIER_4 0xF3 Reserved for SW supplier
specific.
DCM_SUPPLIER_5 0xF4 Reserved for SW supplier
specific.
DCM_SUPPLIER_6 0xF5 Reserved for SW supplier
specific.
DCM_SUPPLIER_7 0xF6 Reserved for SW supplier
specific.
DCM_SUPPLIER_8 0xF7 Reserved for SW supplier
specific.
DCM_SUPPLIER_9 0xF8 Reserved for SW supplier
specific.
DCM_SUPPLIER_10 0xF9 Reserved for SW supplier
specific.
DCM_SUPPLIER_11 0xFA Reserved for SW supplier
specific.
DCM_SUPPLIER_12 0xFB Reserved for SW supplier
specific.
DCM_SUPPLIER_13 0xFC Reserved for SW supplier
specific.
DCM_SUPPLIER_14 0xFD Reserved for SW supplier
specific.
DCM_SUPPLIER_15 0xFE Reserved for SW supplier
specific.
Description Protocol type definition
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.6 Dcm_NegativeResponseCodeType
[SWS_Dcm_00980] d
Name Dcm_NegativeResponseCodeType
Kind Type
Derived from uint8
DCM_POS_RESP 0x00 PR
range of values 0x01..0x0F 0x01..0x0F ISOSAERESRVD
reserved by ISO 14229
5
4
DCM_E_GENERALREJECT 0x10 GR
DCM_E_ 0x11 SNS
SERVICENOTSUPPORTED
DCM_E_SUBFUNCTIONNOT- 0x12 SFNS
SUPPORTED
DCM_E_ 0x13 IMLOIF
INCORRECTMESSAGE-
LENGTHORINVALIDFORMAT
DCM_E_RESPONSETOOLONG 0x14 RTL
range of values 0x15..0x20 0x15..0x20 ISOSAERESRVD
reserved by ISO 14229
DCM_E_ 0x21 BRR
BUSYREPEATREQUEST
DCM_E_ 0x22 CNC
CONDITIONSNOTCORRECT
value 0x23 reserved by ISO 0x23 ISOSAERESRVD
14229
DCM_E_ 0x24 RSE
REQUESTSEQUENCEERROR
DCM_E_NORESPONSEFROM- 0x25 NRFSC
SUBNETCOMPONENT
DCM_E_ 0x26 FPEORA
FAILUREPREVENTSEXECU-
TIONOFREQUESTEDACTION
range of values 0x27..0x30 0x27..0x30 ISOSAERESRVD
reserved by ISO 14229
DCM_E_ 0x31 ROOR
REQUESTOUTOFRANGE
value 0x32 reserved by ISO 0x32 ISOSAERESRVD
14229
DCM_E_ 0x33 SAD
SECURITYACCESSDENIED
value 0x34 reserved by ISO 0x34 ISOSAERESRVD
14229
DCM_E_INVALIDKEY 0x35 IK
DCM_E_ 0x36 ENOA
EXCEEDNUMBEROFATTEMPTS
DCM_E_REQUIREDTIMEDE- 0x37 RTDNE
LAYNOTEXPIRED
range of values 0x38..0x4F 0x38..0x4F RBEDLSD
reserved by ISO 15764
range of values 0x50..0x6F 0x50..0x6F ISOSAERESRVD
reserved by ISO 14229
DCM_E_UPLOADDOWNLOAD- 0x70 UDNA
NOTACCEPTED
DCM_E_ 0x71 TDS
TRANSFERDATASUSPENDED
DCM_E_GENERALPROGRAM- 0x72 GPF
MINGFAILURE
DCM_E_WRONGBLOCKSE- 0x73 WBSC
QUENCECOUNTER
range of values 0x74..0x77 0x74..0x77 ISOSAERESRVD
reserved by ISO 14229
5
4
range of values 0x79..0x7D 0x79..0x7D ISOSAERESRVD
reserved by ISO 14229
DCM_E_ 0x7E SFNSIAS
SUBFUNCTIONNOTSUPPORTE-
DINACTIVESESSION
DCM_E_SERVICENOTSUP- 0x7F SNSIAS
PORTEDINACTIVESESSION
value 0x80 reserved by ISO 0x80 ISOSAERESRVD
14229
DCM_E_RPMTOOHIGH 0x81 RPMTH
DCM_E_RPMTOOLOW 0x82 RPMTL
DCM_E_ENGINEISRUNNING 0x83 EIR
DCM_E_ 0x84 EINR
ENGINEISNOTRUNNING
DCM_E_ 0x85 ERTTL
ENGINERUNTIMETOOLOW
DCM_E_ 0x86 TEMPTH
TEMPERATURETOOHIGH
DCM_E_ 0x87 TEMPTL
TEMPERATURETOOLOW
DCM_E_ 0x88 VSTH
VEHICLESPEEDTOOHIGH
DCM_E_ 0x89 VSTL
VEHICLESPEEDTOOLOW
DCM_E_THROTTLE_ 0x8A TPTH
PEDALTOOHIGH
DCM_E_THROTTLE_ 0x8B TPTL
PEDALTOOLOW
DCM_E_TRANSMISSION- 0x8C TRNIN
RANGENOTINNEUTRAL
DCM_E_TRANSMISSION- 0x8D TRNIG
RANGENOTINGEAR
value 0x8E reserved by ISO 0x8E ISOSAERESRVD
14229
DCM_E_BRAKESWITCH_ 0x8F BSNC
NOTCLOSED
DCM_E_ 0x90 SLNIP
SHIFTERLEVERNOTINPARK
DCM_E_TORQUECONVERTER- 0x91 TCCL
CLUTCHLOCKED
DCM_E_VOLTAGETOOHIGH 0x92 VTH
DCM_E_VOLTAGETOOLOW 0x93 VTL
range of values 0x94..0xEF 0x94..0xEF RFSCNC
reserved by ISO 14229
DCM_E_VMSCNC_0 0xF0 VMSCNC
DCM_E_VMSCNC_1 0xF1 VMSCNC1
DCM_E_VMSCNC_2 0xF2 VMSCNC2
DCM_E_VMSCNC_3 0xF3 VMSCNC3
DCM_E_VMSCNC_4 0xF4 VMSCNC4
DCM_E_VMSCNC_5 0xF5 VMSCNC5
5
4
DCM_E_VMSCNC_6 0xF6 VMSCNC6
DCM_E_VMSCNC_7 0xF7 VMSCNC7
DCM_E_VMSCNC_8 0xF8 VMSCNC8
DCM_E_VMSCNC_9 0xF9 VMSCNC9
DCM_E_VMSCNC_A 0xFA VMSCNCA
DCM_E_VMSCNC_B 0xFB VMSCNCB
DCM_E_VMSCNC_C 0xFC VMSCNCC
DCM_E_VMSCNC_D 0xFD VMSCNCD
DCM_E_VMSCNC_E 0xFE VMSCNCE
value 0xFF reserved by ISO 0xFF ISOSAERESRVD
14229
Description This Table of available Negative Response Codes represents the allowed Response Codes an
AUTOSAR SW Component shall return after a function call. For the allowed NRC of the executed
Service ID please refer to the specification of the service in ISO14229-1 (UDS) and ISO15031-5
(OBD/CARB) (see chapter 4.2.4 Response code parameter definition Table 12).
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.7 Dcm_DataElementType_{Data}Type
[SWS_Dcm_91051] d
Name Dcm_DataElement_{Data}Type
Kind Type
Derived from Basetype Variation
Dcm_DataElement_{Data}_Array (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Type Data.?DcmDspDataType)} == ([S|U]INT[8|16|32]|FLOAT)_N)
|| ({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Pid/?DcmDspPidData/?DcmDspPidService01.?DcmDspPid
DataType)} == ([S|U]INT[8|16|32]|FLOAT)_N))
Dcm_DataElement_{Data} (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
_PrimitiveType Data.?DcmDspDataType)} ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT)) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT)))
Description Common description for S/R and C/S data elements.
Variation (({Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort == USE_DATA_ELEMENT_
SPECIFIC_INTERFACES}) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspData
UsePort)} == USE_DATA_SENDER_RECEIVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Pid/DcmDspPidData/DcmDspPidService01/DcmDspPidDataUsePort)} == USE_DATA_SENDER_
RECEIVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/DcmDspPid
Service01/DcmDspPidDataUsePort)} == USE_DATA_SENDER_RECEIVER_AS_SERVICE) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataUsePort)} == USE_DATA_
SENDER_RECEIVER_AS_SERVICE) ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDsp
DataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/
5
5
4
4
DcmDspData.DcmDspDataUsePort)} == USE_DATA_ASYNCH_CLIENT_SERVER) || ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_ASYNCH_CLIENT_
SERVER_ERROR) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/DcmDsp
PidService01.DcmDspPidDataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) ))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.8 Dcm_DataElementType_{Data}ArrayType
[SWS_Dcm_91063] d
Name Dcm_DataElement_{Data}_ArrayType
Kind Array
4
Variation ((({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDspData.?DcmDspDataType)} ==
([S|U]INT[8|16|32]|FLOAT)_N) || ({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDspPid/?DcmDsp
PidData/?DcmDspPidService01.?DcmDspPidDataType)} == ([S|U]INT[8|16|32]|FLOAT)_N))
&&({Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort == USE_DATA_ELEMENT_
SPECIFIC_INTERFACES}) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspData
UsePort)} == USE_DATA_SENDER_RECEIVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Pid/DcmDspPidData/DcmDspPidService01/DcmDspPidDataUsePort)} == USE_DATA_SENDER_
RECEIVER) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/DcmDspPid
Service01/DcmDspPidDataUsePort)} == USE_DATA_SENDER_RECEIVER_AS_SERVICE) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataUsePort)} == USE_DATA_
SENDER_RECEIVER_AS_SERVICE) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.Dcm
DspDataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) || ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_ASYNCH_CLIENT_SERVER) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
ASYNCH_CLIENT_SERVER_ERROR) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/Dcm
DspPidData/DcmDspPidService01.DcmDspPidDataUsePort)} == USE_DATA_SYNCH_CLIENT_
SERVER)))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.9 Dcm_DataElementType_{Data}PrimitiveType
[SWS_Dcm_91062] d
Name Dcm_DataElement_{Data}_PrimitiveType
Kind Type
Basetype Variation
boolean (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == BOOLEAN) ||
({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDspPid/?Dcm
DspPidData/?DcmDspPidService01.?DcmDspPidData
Type)} == BOOLEAN))
float32 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == FLOAT) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == FLOAT))
sint16 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == SINT16) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == SINT16))
sint32 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == SINT32) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == SINT32))
sint8 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == SINT8) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == SINT8))
5
4
uint16 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == UINT16) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == UINT16))
uint32 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == UINT32) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == UINT32))
uint8 (({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Data.?DcmDspDataType)} == UINT8) || ({ecuc(Dcm/?Dcm
ConfigSet/?DcmDsp/?DcmDspPid/?DcmDspPidData/?Dcm
DspPidService01.?DcmDspPidDataType)} == UINT8))
Description –
Variation ((({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDspData.?DcmDspDataType)} ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT)) || ({ecuc(Dcm/?DcmConfigSet/?DcmDsp/?DcmDsp
Pid/?DcmDspPidData/?DcmDspPidService01.?DcmDspPidDataType)} ==
(BOOLEAN|[S|U]INT[8|16|32]|FLOAT))) &&({Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDsp
DidUsePort == USE_DATA_ELEMENT_SPECIFIC_INTERFACES}) && (({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspData/DcmDspDataUsePort)} == USE_DATA_SENDER_RECEIVER) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/DcmDspPidService01/DcmDsp
PidDataUsePort)} == USE_DATA_SENDER_RECEIVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspPid/DcmDspPidData/DcmDspPidService01/DcmDspPidDataUsePort)} == USE_DATA_
SENDER_RECEIVER_AS_SERVICE) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/Dcm
DspDataUsePort)} == USE_DATA_SENDER_RECEIVER_AS_SERVICE) ||({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
ASYNCH_CLIENT_SERVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == USE_DATA_ASYNCH_CLIENT_SERVER_ERROR) || ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspPid/DcmDspPidData/DcmDspPidService01.DcmDspPidDataUsePort)} == USE_
DATA_SYNCH_CLIENT_SERVER)))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.10 Dcm_DataArrayTypeUint8_{Data}Type
[SWS_Dcm_01121] d
Name Dcm_DataArrayTypeUint8_{Data}Type
Kind Array Element type uint8
Size (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataByteSize)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.DcmDspPidDataByteSize)})) Elements
Description –
Variation (( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Data.DcmDspDataType)} == UINT8_N) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.Dcm
DspDataType)} == UINT8_DYN) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data/DcmDspPidService01.DcmDspPidDataType)} == UINT8_N))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)})
5
4
Available via Rte_Dcm_Type.h
c()
8.8.1.11 {DID}_Struct_DataType
This data type has a different modeling as other data types. The
{DID}_Struct_DataType datatype is modeled as prosa text only. At the time this
specification was created there are no means to visualize this datatype with existing
AUTOSAR tooling as table as all the other data types. Still AUTOSAR allows modeling
such data types. Simply that they cannot be shown here as table.
[SWS_Dcm_91056] d
Name {DID}_Struct_DataType
Kind Structure
Description The elements of this structure data type is a composition of all DcmDspDataElement of the Dcm
DspDid. Example: A DID with the 3 data elements uint32 data1, sint8 data2 and sint16 data 3,
has a structure definition of struct { uint32 data1, sint8 data2, sint16 data 3}.
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == ((USE_ATOMIC_
SENDER_RECEIVER_INTERFACE|| USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_
SERVICE) || USE_ATOMIC_NV_DATA_INTERFACE))
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.12 Dcm_RangeArray_{Range}Type
[SWS_Dcm_01012] d
Name Dcm_RangeArray_{Range}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRangeMaxDataLength)} Elements
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.DcmDspDidRangeUsePort)} == TRUE
Range = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.13 Dcm_InfoTypeServicesArray_{VehInfoData}Type
[SWS_Dcm_01013] d
Name Dcm_InfoTypeServicesArray_{VehInfoData}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfoData.DcmDspVehInfoData
Size)} Elements
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfoData/DcmDspVehInfoData
UsePort)} == TRUE
VehInfoData = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfo
Data.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.14 Dcm_RequestControlServicesInArray_{Tid}Type
[SWS_Dcm_01014] d
Name Dcm_RequestControlServicesInArray_{Tid}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.DcmDspRequestControlInBuffer
Size)} Elements
Description –
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.15 Dcm_RequestControlServicesOutArray_{Tid}Type
[SWS_Dcm_01015] d
Name Dcm_RequestControlServicesOutArray_{Tid}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.DcmDspRequestControlOutBuffer
Size)} Elements
Description –
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.16 Dcm_ScalingInfoArray_{Data}Type
[SWS_Dcm_01017] d
Name Dcm_ScalingInfoArray_{Data}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDataInfo.DcmDspDataScalingInfoSize)} Elements
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
ASYNCH_CLIENT_SERVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
UsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspData.DcmDspDataUsePort)} == USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData->DcmDspDataInfoRef.DcmDspDataScalingInfo
Size)} != NULL)
Data = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.17 Dcm_RequestDataOut_{Routine}_{Signal}PrimitivType
[SWS_Dcm_01018] d
Name Dcm_RequestDataOut_{Routine}_{Signal}PrimitivType
Kind Type
Basetype Variation
float32 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == FLOAT
sint16 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == SINT16
sint32 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == SINT32
sint8 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == SINT8
uint16 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == UINT16
uint32 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == UINT32
5
4
uint8 {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == UINT8
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutineSignal
Type)} == [U|S]INT[8|16|32]|FLOAT) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/
DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.18 Dcm_RequestDataIn_{Routine}_{Signal}PrimitiveType
[SWS_Dcm_91054] d
Name Dcm_RequestDataIn_{Routine}_{Signal}PrimitiveType
Kind Type
4
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.DcmDspRoutineSignalType)}
== [U|S]INT[8|16|32]|FLOAT)&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.19 Dcm_RequestDataOut_{Routine}_{Signal}Type
[SWS_Dcm_91040] d
Name Dcm_RequestDataOut_{Routine}_{Signal}Type
Kind Type
Derived from Basetype Variation
Dcm_RequestDataOut_{Routine} ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
_{Signal}PrimitivType DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT))
Dcm_RequestDataOut_{Routine} ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
_{Signal}ArrayType DspRequestRoutineResults/DcmDspRequestRoutine
ResultsOut/DcmDspRequestRoutineResultsOutSignal.Dcm
DspRoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.20 Dcm_RequestDataIn_{Routine}_{Signal}Type
[SWS_Dcm_91052] d
Name Dcm_RequestDataIn_{Routine}_{Signal}Type
Kind Type
Derived from Basetype Variation
5
4
Dcm_RequestDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}PrimitiveType DspRequestRoutineResults/DcmDspRequestRoutine
ResultsIn/DcmDspRequestRoutineResultsInSignal.DcmDsp
RoutineSignalType)} == ([U|S]INT[8|16|32|FLOAT)])
Dcm_RequestDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}ArrayType DspRequestRoutineResults/DcmDspRequestRoutine
ResultsIn/DcmDspRequestRoutineResultsInSignal.DcmDsp
RoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.21 Dcm_RequestDataOut_{Routine}_{Signal}ArrayType
[SWS_Dcm_91041] d
Name Dcm_RequestDataOut_{Routine}_{Signal}ArrayType
Kind Array
4
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutineSignal
Type)} == ([U|S]INT[8|16|32]|FLOAT)_N) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/
DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.22 Dcm_RequestDataIn_{Routine}_{Signal}ArrayType
[SWS_Dcm_91055] d
Name Dcm_RequestDataIn_{Routine}_{Signal}ArrayType
Kind Array
4
Available via Rte_Dcm_Type.h
c()
8.8.1.23 Dcm_RequestFlexibleOutArrayData_{Routine}_{Signal}Type
[SWS_Dcm_01019] d
Name Dcm_RequestFlexibleOutArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutineParameter
Size} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutineSignal
Type)} == VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.24 Dcm_RequestFlexibleInArrayData_{Routine}_{Signal}Type
[SWS_Dcm_91053] d
Name Dcm_RequestFlexibleInArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.DcmDspRoutineParameter
Size} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/DcmDsp
RequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.DcmDspRoutineSignalType)}
== VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/
DcmDspRequestRoutineResultsIn/DcmDspRequestRoutineResultsInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.25 Dcm_StartDataIn_{Routine}_{Signal}PrimitivType
[SWS_Dcm_01020] d
Name Dcm_StartDataIn_{Routine}_{Signal}PrimitivType
Kind Type
c()
8.8.1.26 Dcm_StartDataIn_{Routine}_{Signal}Type
[SWS_Dcm_91042] d
Name Dcm_StartDataIn_{Routine}_{Signal}Type
Kind Type
Basetype Variation
Dcm_StartDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}PrimitivType DspStartRoutine/DcmDspStartRoutineIn/DcmDspStart
RoutineInSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT))
5
4
Dcm_StartDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}ArrayType DspStartRoutine/DcmDspStartRoutineIn/DcmDspStart
RoutineInSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.27 Dcm_StartDataIn_{Routine}_{Signal}ArrayType
[SWS_Dcm_91043] d
Name Dcm_StartDataIn_{Routine}_{Signal}ArrayType
Kind Array
4
Available via Rte_Dcm_Type.h
c()
8.8.1.28 Dcm_StartDataOut_{Routine}_{Signal}PrimitivType
[SWS_Dcm_01021] d
Name Dcm_StartDataOut_{Routine}_{Signal}PrimitivType
Kind Type
c()
8.8.1.29 Dcm_StartDataOut_{Routine}_{Signal}Type
[SWS_Dcm_91044] d
Name Dcm_StartDataOut_{Routine}_{Signal}Type
Kind Type
Derived from Basetype Variation
Dcm_StartDataOut_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}PrimitivType DspStartRoutine/DcmDspStartRoutineOut/DcmDspStart
RoutineOutSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT))
Dcm_StartDataOut_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}ArrayType DspStartRoutine/DcmDspStartRoutineOut/DcmDspStart
RoutineOutSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.30 Dcm_StartDataOut_{Routine}_{Signal}ArrayType
[SWS_Dcm_91045] d
Name Dcm_StartDataOut_{Routine}_{Signal}ArrayType
Kind Array
4
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
Out/DcmDspStartRoutineOutSignal.DcmDspRoutineParameterSize)} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
Out/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT)_
N) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.31 Dcm_StartFlexibleInArrayData_{Routine}_{Signal}Type
[SWS_Dcm_01022] d
Name Dcm_StartFlexibleInArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
In/DcmDspStartRoutineInSignal.DcmDspRoutineParameterSize} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
In/DcmDspStartRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.32 Dcm_StartFlexibleOutArrayData_{Routine}_{Signal}Type
[SWS_Dcm_01023] d
Name Dcm_StartFlexibleOutArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
Out/DcmDspStartRoutineOutSignal.DcmDspRoutineParameterSize} Elements
Description –
5
4
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStartRoutine
Out/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.33 Dcm_StopDataIn_{Routine}_{Signal}PrimitivType
[SWS_Dcm_01024] d
Name Dcm_StopDataIn_{Routine}_{Signal}PrimitivType
Kind Type
c()
8.8.1.34 Dcm_StopDataIn_{Routine}_{Signal}Type
[SWS_Dcm_91046] d
Name Dcm_StopDataIn_{Routine}_{Signal}Type
Kind Type
Derived from Basetype Variation
Dcm_StopDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}PrimitivType DspStopRoutine/DcmDspStopRoutineIn/DcmDspStop
RoutineInSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT))
Dcm_StopDataIn_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}ArrayType DspStopRoutine/DcmDspStopRoutineIn/DcmDspStop
RoutineInSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.35 Dcm_StopDataIn_{Routine}_{Signal}ArrayType
[SWS_Dcm_91047] d
Name Dcm_StopDataIn_{Routine}_{Signal}ArrayType
Kind Array
Type Variation
float32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == FLOAT_N
sint16 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == SINT16_N)
sint32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == SINT32_N)
sint8 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == SINT8_N)
uint16 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == UINT16_N)
uint32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == UINT32_N)
5
4
uint8 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDsp
RoutineSignalType)} == UINT8_N)
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
In/DcmDspStopRoutineInSignal.DcmDspRoutineParameterSize)} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
In/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT)_N)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.36 Dcm_StopDataOut_{Routine}_{Signal}PrimitivType
[SWS_Dcm_01025] d
Name Dcm_StopDataOut_{Routine}_{Signal}PrimitivType
Kind Type
4
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
Out/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} == [U|S]INT[8|16|32]|FLOAT) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.37 Dcm_StopDataOut_{Routine}_{Signal}Type
[SWS_Dcm_91048] d
Name Dcm_StopDataOut_{Routine}_{Signal}Type
Kind Type
Derived from Basetype Variation
Dcm_StopDataOut_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}PrimitivType DspStopRoutine/DcmDspStopRoutineOut/DcmDspStop
RoutineOutSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT))
Dcm_StopDataOut_{Routine}_{ ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/Dcm
Signal}ArrayType DspStopRoutine/DcmDspStopRoutineOut/DcmDspStop
RoutineOutSignal.DcmDspRoutineSignalType)} ==
([U|S]INT[8|16|32]|FLOAT)_N)
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.38 Dcm_StopDataOut_{Routine}_{Signal}ArrayType
[SWS_Dcm_91049] d
Name Dcm_StopDataOut_{Routine}_{Signal}ArrayType
Kind Array
Type Variation
float32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == FLOAT_N
5
4
sint16 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == SINT16_N)
sint32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == SINT32_N)
sint8 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == SINT8_N)
uint16 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == UINT16_N)
uint32 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == UINT32_N)
uint8 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.Dcm
DspRoutineSignalType)} == UINT8_N)
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
Out/DcmDspStopRoutineOutSignal.DcmDspRoutineParameterSize)} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
Out/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} == ([U|S]INT[8|16|32]|FLOAT)_
N) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.39 Dcm_StopFlexibleInArrayData_{Routine}_{Signal}Type
[SWS_Dcm_01026] d
Name Dcm_StopFlexibleInArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
In/DcmDspStopRoutineInSignal.DcmDspRoutineParameterSize} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
In/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.40 Dcm_StopFlexibleOutArrayData_{Routine}_{Signal}Type
[SWS_Dcm_01027] d
Name Dcm_StopFlexibleOutArrayData_{Routine}_{Signal}Type
Kind Array Element type uint8
Size {(ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
Out/DcmDspStopRoutineOutSignal.DcmDspRoutineParameterSize} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStopRoutine
Out/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&& ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRoutineUsePort)} == TRUE)
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.41 Dcm_KeyArray_{SecurityLevel}Type
[SWS_Dcm_01028] d
Name Dcm_KeyArray_{SecurityLevel}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurityKey
Size)} Elements
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurityUse
Port)} == USE_ASYNCH_CLIENT_SERVER
SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurity
Row.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.42 Dcm_SeedArray_{SecurityLevel}Type
[SWS_Dcm_01029] d
Name Dcm_SeedArray_{SecurityLevel}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecuritySeed
Size)} Elements
5
4
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurityUse
Port)} == USE_ASYNCH_CLIENT_SERVER
SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurity
Row.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.43 Dcm_SecurityAccessDataRecordArray_{SecurityLevel}Type
[SWS_Dcm_01159] d
Name Dcm_SecurityAccessDataRecordArray_{SecurityLevel}Type
Kind Array Element type uint8
Size {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp/DcmDspSecurity/DcmDspSecurityRow/DcmDsp
SecurityADRSize)} Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurityUse
Port)} == USE_ASYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Security/DcmDspSecurityRow.DcmDspSecurityADRSize)} != NULL)
SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurity
Row.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
8.8.1.44 Dcm_RequestDataArrayType
[SWS_Dcm_01165] d
Name Dcm_RequestDataArrayType
Kind Array Element type uint8
Size (MAX({ecuc(Dcm/DcmConfigSet/DcmDsl/DcmDslProtocol/DcmDslProtocolRow/DcmDslProtocol
RxBufferID->DcmDslBuffer.DcmDslBufferSize)}) -1) Elements
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.45 Dcm_ControlMask_{DID}Type
[SWS_Dcm_01320] d
Name Dcm_ControlMask_{DID}Type
Kind Type
c()
8.8.1.46 Dcm_inputOutputControlParameterType
[SWS_Dcm_01305] d
Name Dcm_InputOutputControlParameterType
Kind Type
Derived from uint8
Range DCM_RETURN_CONTROL_TO_ 0x00 returnControlToECU
ECU
DCM_RESET_TO_DEFAULT 0x01 resetToDefault
DCM_FREEZE_CURRENT_ 0x02 freezeCurrentState
STATE
DCM_SHORT_TERM_ 0x03 shortTermAdjustment
ADJUSTMENT
DCM_IDLE 0xff Idle state, no request in
processing (initial value)
5
4
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.47 Dcm_IOOperationRequest_{DID}Type
[SWS_Dcm_01306] d
Name Dcm_IOOperationRequest_{DID}Type
Kind Structure
Elements inputOutputControlParameter
Type Dcm_InputOutputControlParameterType
Comment –
controlEnableMask
Type Dcm_Cemr_{DID}Type
Comment –
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE )) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/Dcm
DspDidUsePort)} == (USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE
))&&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/Dcm
DspDidControl)} != NULL)
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.48 Dcm_IOOperationResponseType
[SWS_Dcm_01307] d
Name Dcm_IOOperationResponseType
Kind Type
Derived from uint8
DCM_POSITIVE_RESPONSE 0x00 positive response (similar to E_
OK)
DCM_GENERAL_REJECT 0x10 NRC generalReject
DCM_BUSY_REPEAT_ 0x21 NRC busyRepeatRequest
REQUEST
DCM_CONDITIONS_NOT_ 0x22 NRC conditionsNotCorrect
CORRECT
5
4
DCM_FAILURE_PREVENTS_ 0x26 NRC FailurePreventsExecutionOf
EXECUTION RequestedAction
DCM_REQUEST_OUT_OF_ 0x31 NRC requestOutOfRange
RANGE
DCM_RESPONSE_PENDING 0x78 ResponsePending (similar to E_
PENDING)
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.49 Dcm_DidSupportedType
[SWS_Dcm_01138] d
Name Dcm_DidSupportedType
Kind Type
Derived from uint8
Range DCM_DID_SUPPORTED 0x00 –
DCM_DID_NOT_SUPPORTED 0x01 –
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.50 Dcm_FileAndDirNameType
[SWS_Dcm_91066] d
Name Dcm_FileAndDirNameType
Kind Array Element type uint8
Size ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestFileTransfer.DcmRequestFileTransferMax
FileAndDirName)}) Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestFileTransfer/DcmRequestFileTransferUse
Port)} == TRUE)
Available via Rte_Dcm_Type.h
c()
8.8.1.51 Dcm_ResponseDataArrayType
[SWS_Dcm_91064] d
Name Dcm_ResponseDataArrayType
Kind Array Element type uint8
Size (MAX({ecuc(Dcm/DcmConfigSet/DcmDsl/DcmDslProtocol/DcmDslProtocolRow/DcmDslProtocol
TxBufferRef->DcmDslBuffer.DcmDslBufferSize)}) -1) Elements
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestFileTransfer/DcmRequestFileTransferUse
Port)} == TRUE)
Available via Rte_Dcm_Type.h
c()
8.8.1.52 Dcm_AuthenticationRoleType
[SWS_Dcm_91068] d
Name Dcm_AuthenticationRoleType
Kind Array Element type uint8
Size ({ecuc(Dcm/DcmDsp/DcmDspAuthentication.DcmDspAuthenticationRoleSize)}) Elements
Description –
Variation –
Available via Rte_Dcm_Type.h
c()
8.8.1.53 Dcm_ControlMask_{Data}ArrayType
[SWS_Dcm_91050] d
Name Dcm_ControlMask_{Data}ArrayType
Kind Array Element type uint8
Size ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidControlMaskSize)}) Elements
Description –
Variation (( ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidControlMaskSize)} >= 0x05) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspData.DcmDspDataUsePort)} == (USE_DATA_ SYNCH_CLIENT_SERVER || USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
Available via Rte_Dcm_Type.h
c()
8.8.1.54 Dcm_Cemr_{DID}Type
[SWS_Dcm_91087] d
Name Dcm_Cemr_{DID}Type
Kind Bitfield
Derived from Dcm_ControlMask_{DID}Type
Elements Variable bit
Kind bit
Name ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidControl. DcmDspDidControlEnable
Mask.SHORT-NAME)}
Mask 2ˆ (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDsp
DidInfo/DcmDspDidControl/DcmDspDidControlMaskSize)} * 8 - 1) - {ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDid
Control/DcmDspDidControlEnableMask/DcmDspDidControlMaskBitPosition)})
Descrip- Bitmask of data element in control enable mask record.
tion
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidControl/DcmDspDidControlEnableMask)} !=
NULL)
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
Available via Rte_Dcm_Type.h
c()
The Dcm_Cemr_Type data type defines a bitfield text table with a single mask entry
for each valid bit in the control enable mask record. A value of 0 in the DcmDspDid-
ControlMaskBitPosition represents the most significant bit in the most significant
byte of the control enable mask. Therefore it is mapped to Bit 7 (0x80) of the first byte
of the control enable mask. In a two byte CEMR the bit position 0 would map to 0x8000,
the bit position 1 would map to 0x4000, ... . Also this is a unusual representation it
helps to keep the bits stable if the size of the CEMR is changed. The definition of the
bits is directly defined by DcmDspDidControlEnableMask.
8.8.2 Sender-Receiver-Interfaces
Using the concepts of the SW-C template, the interface is defined as follows if Sender-
Receiver interface is used (DcmDspDataUsePort set to
USE_DATA_SENDER_RECEIVER ||USE_DATA_SENDER_RECEIVER_AS_SERVICE):
8.8.2.1 DataServices_{DID}
[SWS_Dcm_91057] d
Name DataServices_{DID}
Comment –
IsService ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_ATOMIC_
SENDER_RECEIVER_INTERFACE_AS_SERVICE)
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/Dcm
DspDidUsePort)} == (USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE))
DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
Data Elements data
Type {DID}_Struct_DataType
Variation DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
c(RS_Diag_04218)
8.8.2.2 DataServices_{Data}
[SWS_Dcm_00687] d
Name DataServices_{Data}
Comment –
IsService (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataUsePort)} == USE_DATA_
SENDER_RECEIVER_AS_SERVICE) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/Dcm
DspPidData/DcmDspPidService01/DcmDspPidDataUsePort)} == USE_DATA_SENDER_
RECEIVER_AS_SERVICE))
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES)&&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/
DcmDspDataUsePort)} == (USE_DATA_SENDER_RECEIVER ||USE_DATA_SENDER_
RECEIVER_AS_SERVICE))) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data/DcmDspPidService01/DcmDspPidDataUsePort)} ==(USE_DATA_SENDER_RECEIVER
||USE_DATA_SENDER_RECEIVER_AS_SERVICE))
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME})
Data Elements data
Type Dcm_DataElement_{Data}Type
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data.SHORT-NAME)})
c()
8.8.2.3 IOControlRequest_{DID}
[SWS_Dcm_01308] d
Name IOControlRequest_{DID}
Comment Attention: controlState is only valid in case of IOOperationRequest is set to shortTerm
Adjustment.
The DCM provides a byte stream which could be transformed via transformer into an complex
type.
IsService true
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/Dcm
DspDidControl/DcmDspDidShortTermAdjustment)} == True) && ({ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDid
ControlMask)} == DCM_CONTROLMASK_EXTERNAL)))
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
c()
8.8.2.4 IOControlResponse_{DID}
[SWS_Dcm_01309] d
Name IOControlResponse_{DID}
Comment –
IsService true
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} ==(USE_ATOMIC_
SENDER_RECEIVER_INTERFACE || USE_ATOMIC_SENDER_RECEIVER_INTERFACE_
AS_SERVICE))) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/Dcm
DspDidControl)} != NULL))
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
Data Elements IOOperationResponse
Type Dcm_IOOperationResponseType
Variation –
c()
8.8.3 Client-Server-Interfaces
8.8.3.1 SecurityAccess_{SecurityLevel}
Operation CompareKey
Comment –
Variation –
Key
Parameters
Type Dcm_KeyArray_{SecurityLevel}Type
Direction IN
Comment Key, which needs to be compared
Variation SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDsp
SecurityRow.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment return Error Code
Variation –
5
4
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_COMPARE_KEY_FAILED
Operation GetSecurityAttemptCounter
Comment Restore the attempt counter from the application
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurity
AttemptCounterEnabled)} == TRUE
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
AttemptCounter
Type uint8
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation GetSeed
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurity
ADRSize)} == NULL)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
Seed
Type Dcm_SeedArray_{SecurityLevel}Type
Direction OUT
Comment Pointer for provided seed
Variation SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDsp
SecurityRow.SHORT-NAME)}
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation GetSeed
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurity
ADRSize)} != NULL)
SecurityAccessDataRecord
Parameters
Type Dcm_SecurityAccessDataRecordArray_{SecurityLevel}Type
Direction IN
Comment –
Variation SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDsp
SecurityRow.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
Seed
Type Dcm_SeedArray_{SecurityLevel}Type
Direction OUT
Comment Pointer for provided seed
Variation SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDsp
SecurityRow.SHORT-NAME)}
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation SetSecurityAttemptCounter
Comment Store the attempt counter in the application
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurity
AttemptCounterEnabled)} == TRUE
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
AttemptCounter
Type uint8
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
c()
8.8.3.2 DataServices_{Data}
Using the concepts of the SW-C template, the interface is defined as fol-
lows if ClientServer interface is used (DcmDspDataUsePort set to USE_-
DATA_SYNCH_CLIENT_SERVER or USE_DATA_ASYNCH_CLIENT_SERVER or
USE_DATA_ASYNCH_CLIENT_SERVER_ERROR):
[SWS_Dcm_00686] d
Name DataServices_{Data}
Comment –
IsService true
Variation ((( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES)) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Data.DcmDspDataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} ==USE_DATA_ASYNCH_CLIENT_
SERVER) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)}
==USE_DATA_ASYNCH_CLIENT_SERVER_ERROR) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspPid/DcmDspPidData/DcmDspPidService01.DcmDspPidDataUsePort)} ==USE_DATA_
SYNCH_CLIENT_SERVER) )
Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) || ({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)})
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
Operation ConditionCheckRead
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead)} != NULL) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataConditionCheckReadFnc
Used)} == TRUE)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ConditionCheckRead
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidRead)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspData
ConditionCheckReadFncUsed)} == TRUE)
Parameters ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation FreezeCurrentState
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidFreeze
CurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} != DCM_
CONTROLMASK_EXTERNAL)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation FreezeCurrentState
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidFreeze
CurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
5
4
Variation –
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation FreezeCurrentState
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidFreezeCurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} != DCM_CONTROLMASK_EXTERNAL)
Parameters ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation FreezeCurrentState
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidFreezeCurrentState)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} == DCM_CONTROLMASK_EXTERNAL)
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
5
4
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetScalingInformation
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDspDataInfoRef->DcmDspDataScaling
InfoSize)} != NULL)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ScalingInfo
Type Dcm_ScalingInfoArray_{Data}Type
Direction OUT
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation GetScalingInformation
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/DcmDsp
DataInfoRef->DcmDspDataScalingInfoSize)} != NULL)
ScalingInfo
Parameters
Type Dcm_ScalingInfoArray_{Data}Type
Direction OUT
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
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 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
ASYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/Dcm
DspDidRead)} != NULL)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
Data
Type Dcm_DataElement_{Data}Type
Direction OUT
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data.SHORT-NAME)})
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
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 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
ASYNCH_CLIENT_SERVER_ERROR) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid
Info/DcmDspDidRead)} != NULL)
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
Data
Type Dcm_DataElement_{Data}Type
Direction OUT
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
5
4
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
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 ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/Dcm
DspDidRead)} != NULL) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/
DcmDspPidService01.DcmDspPidDataUsePort)} == USE_DATA_SYNCH_CLIENT_SERVER))
Parameters Data
Type Dcm_DataElement_{Data}Type
Direction OUT
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPid
Data.SHORT-NAME)})
Possible Errors E_OK
E_NOT_OK
Operation ReadDataLength
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidRead)} != NULL) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType} == UINT8_DYN)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataLength
Type uint16
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ReadDataLength
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidRead)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType}
== UINT8_DYN)
Parameters DataLength
Type uint16
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ResetToDefault
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidResetTo
Default)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} != DCM_
CONTROLMASK_EXTERNAL)
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ResetToDefault
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidResetTo
Default)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
5
4
Variation –
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ResetToDefault
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidResetToDefault)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} != DCM_CONTROLMASK_EXTERNAL)
Parameters ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ResetToDefault
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidResetToDefault)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} == DCM_CONTROLMASK_EXTERNAL)
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
5
4
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ReturnControlToECU
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
SYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER || USE_DATA_
ASYNCH_CLIENT_SERVER_ERROR)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid
Info/DcmDspDidControl/DcmDspDidFreezeCurrentState)} == TRUE) || ({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidResetToDefault)} == TRUE) ||
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidShort
TermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} != DCM_
CONTROLMASK_EXTERNAL)
Parameters ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ReturnControlToECU
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidFreeze
CurrentState)} == TRUE) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDid
Control/DcmDspDidResetToDefault)} == TRUE) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDidInfo/DcmDspDidControl/DcmDspDidShortTermAdjustment)} == TRUE) && ({ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/
DcmDspDidControlMask)} == DCM_CONTROLMASK_EXTERNAL)
controlMask
Parameters
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ShortTermAdjustment
Comment –
5
4
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidShort
TermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDsp
DataType} != UINT8_DYN) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} != DCM_
CONTROLMASK_EXTERNAL)
ControlStateInfo
Parameters
Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidShort
TermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDsp
DataType} != UINT8_DYN) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)
ControlStateInfo
Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
5
4
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidShort
TermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDsp
DataType} == UINT8_DYN) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} != DCM_
CONTROLMASK_EXTERNAL)
ControlStateInfo
Parameters Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidControl/DcmDspDidShort
TermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDsp
DataType} == UINT8_DYN) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControlMask)} == DCM_
CONTROLMASK_EXTERNAL)
ControlStateInfo
Parameters Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidShortTermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspData.DcmDspDataType} != UINT8_DYN) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} != DCM_CONTROLMASK_EXTERNAL)
ControlStateInfo
Type Dcm_DataArrayTypeUint8_{Data}Type
5
4
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidShortTermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspData.DcmDspDataType} != UINT8_DYN) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} == DCM_CONTROLMASK_EXTERNAL)
ControlStateInfo
Parameters
Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidShortTermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspData.DcmDspDataType} == UINT8_DYN) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} != DCM_CONTROLMASK_EXTERNAL)
ControlStateInfo
Type Dcm_DataArrayTypeUint8_{Data}Type
5
4
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ShortTermAdjustment
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidControl/DcmDspDidShortTermAdjustment)} == TRUE) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspData.DcmDspDataType} == UINT8_DYN) && ({ecuc(Dcm/DcmConfigSet/Dcm
Dsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl/DcmDspDidControl
Mask)} == DCM_CONTROLMASK_EXTERNAL)
ControlStateInfo
Parameters Type Dcm_DataArrayTypeUint8_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
controlMask
Type Dcm_ControlMask_{DID}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation WriteData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidWrite)} != NULL) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType} != UINT8_DYN)
Data
Parameters
Type Dcm_DataElement_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation WriteData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == (USE_DATA_
ASYNCH_CLIENT_SERVER || USE_DATA_ASYNCH_CLIENT_SERVER_ERROR)) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDspDidWrite)} != NULL) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType} == UINT8_DYN)
Data
Type Dcm_DataElement_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
ErrorCode
5
4
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation WriteData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidWrite)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType}
!= UINT8_DYN)
Data
Parameters
Type Dcm_DataElement_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation WriteData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataUsePort)} == USE_DATA_
SYNCH_CLIENT_SERVER) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidInfo/DcmDsp
DidWrite)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.DcmDspDataType}
== UINT8_DYN)
Data
Type Dcm_DataElement_{Data}Type
Direction IN
Comment –
Variation Data = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)})
DataLength
Type uint16
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
5
4
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
One DataServices interface will be generated for each Data of each DID/PID, with
following possible operations:
8.8.3.2.1 ReadData
8.8.3.2.2 WriteData
WriteData requests the application to write a data value of a DID. The Data specific type
is an array of uint8 which represent either the fix length of this Data or the maximum
possible length of this Data. A WriteData interface is defined for every data of each
DID with write access. This interface is used for the UDS Service WriteDataByIdentifier
(0x2E).
8.8.3.2.3 ReadDataLength
ReadDataLength requests the application to return the data length of a Data. A Read-
DataLength interface is defined for every data of each DID with variable data length.
This interface is used for UDS Service ReadDataByIdentifier and for UDS Service Read-
DataByPeriodicIdentifier (0x2A).
8.8.3.2.4 ConditionCheckRead
8.8.3.2.5 GetScalingInformation
8.8.3.2.6 ReturnControlToEcu
8.8.3.2.7 ResetToDefault
8.8.3.2.8 FreezeCurrentState
8.8.3.2.9 ShortTermAdjustment
8.8.3.3 DataServices_DIDRange_{Range}
The following interface defines an operation needed to get the DID range. Using the
concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00769] d
Name DataServices_DIDRange_{Range}
Comment –
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.DcmDspDidRangeUsePort)} == TRUE
Range = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.SHORT-NAME)})
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
Operation IsDidAvailable
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.DcmDspDidRangeHasGaps)} == TRUE
DID
Parameters
Type uint16
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
supported
Type Dcm_DidSupportedType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
DCM_E_PENDING
Operation ReadDidData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange/DcmDspDidRangeInfoRef->DcmDsp
DidRead)} != NULL)
DID
Type uint16
Direction IN
Comment –
Variation –
Data
Type Dcm_RangeArray_{Range}Type
Direction OUT
Comment –
Variation Range = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid
Range.SHORT-NAME)})
5
4
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataLength
Type uint16
Direction OUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ReadDidRangeDataLength
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange/DcmDspDidRangeInfoRef->DcmDsp
DidRead)} != NULL)
DID
Parameters
Type uint16
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataLength
Type uint16
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation WriteDidData
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange/DcmDspDidRangeInfoRef->DcmDsp
DidWrite)} != NULL)
DID
Parameters Type uint16
Direction IN
Comment –
Variation –
Data
Type Dcm_RangeArray_{Range}Type
Direction IN
Comment –
Variation Range = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid
Range.SHORT-NAME)})
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataLength
Type uint16
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
c()
8.8.3.4 InfotypeServices_{VehInfoData}
The following interface defines an operation needed to get data from one or several
SW-C in order to supply OBD Service $09 (see [SWS_Dcm_00423]).
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00688] d
Name InfotypeServices_{VehInfoData}
Comment –
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfoData/DcmDspVehInfo
DataUsePort)}==TRUE
VehInfoData = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfo
Data.SHORT-NAME)}
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
Operation GetInfotypeValueData
Comment –
Variation –
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataValueBuffer
Type Dcm_InfoTypeServicesArray_{VehInfoData}Type
Direction OUT
Comment –
Variation VehInfoData = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDsp
VehInfoData.SHORT-NAME)}
DataValueBufferSize
Type uint8
Direction INOUT
Comment 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 DataValueBuffer
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
c()
8.8.3.5 RoutineServices_{RoutineName}
The following interface defines operations needed for the UDS Service Rou-
tineControl (0x31) (see [SWS_Dcm_00400], [SWS_Dcm_00401], [SWS_Dcm_00402],
[SWS_Dcm_00403], [SWS_Dcm_00404], [SWS_Dcm_00405]).
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00690] d
Name RoutineServices_{RoutineName}
Comment –
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.DcmDspRoutineUsePort)} == TRUE
RoutineName = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
12 DCM_E_FORCE_RCRRP application request the transmission of a response
Response Pending (NRC 0x78)
Operation RequestResults
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/Dcm
DspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutine
SignalType)} != VARIABLE_LENGTH) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine/DcmDspRequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
DataIn_{Signal}
Parameters
Type Dcm_RequestDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.SHORT-NAME)}Routine = {ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspRoutine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_RequestDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
5
4
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation RequestResults
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/Dcm
DspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutine
SignalType)} == VARIABLE_LENGTH) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine/DcmDspRequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
DataIn_{Signal}
Type Dcm_RequestDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.SHORT-NAME)}Routine = {ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspRoutine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_RequestDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutine
Results/DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResults
OutSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataOut_{Signal}
Type Dcm_RequestFlexibleOutArrayData_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutine
Results/DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResults
OutSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
currentDataLength
5
4
Type uint16
Direction OUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors –
Operation RequestResults
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/Dcm
DspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutine
SignalType)} != VARIABLE_LENGTH) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine/DcmDspRequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
DataIn_{Signal}
Type Dcm_RequestDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.SHORT-NAME)}Routine = {ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspRoutine.SHORT-NAME)}
DataIn_{Signal}
Type Dcm_RequestFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.SHORT-NAME)}Routine = {ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspRoutine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_RequestDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
5
4
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors –
Operation RequestResults
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/Dcm
DspRequestRoutineResultsOut/DcmDspRequestRoutineResultsOutSignal.DcmDspRoutine
SignalType)} == VARIABLE_LENGTH) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine/DcmDspRequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
DataIn_{Signal}
Type Dcm_RequestDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsIn/DcmDspRequest
RoutineResultsInSignal.SHORT-NAME)}Routine = {ecuc(Dcm/DcmConfigSet/
DcmDsp/DcmDspRoutine.SHORT-NAME)}
DataIn_{Signal}
Type Dcm_StartFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_RequestDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutine
Results/DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResults
OutSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataOut_{Signal}
Type Dcm_RequestFlexibleOutArrayData_{Routine}_{Signal}Type
Direction OUT
5
4
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutine
Results/DcmDspRequestRoutineResultsOut/DcmDspRequestRoutineResults
OutSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDsp
RequestRoutineResults/DcmDspRequestRoutineResultsOut/DcmDspRequest
RoutineResultsOutSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
currentDataLength
Type uint16
Direction OUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation RequestResultsConfirmation
Comment This operation indicates the transmission of a response to a RequestResultsRoutine request
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspRequestRoutineResults/Dcm
DspRequestRoutineResultsConfirmationEnabled)}==TRUE)
Parameters ConfirmationStatus
Type Dcm_ConfirmationStatusType
Direction IN
Comment Confirmation status of a RequestResultsRoutinerequest
Variation –
Possible Errors E_OK
E_NOT_OK
Operation Start
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} != VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StartDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
5
4
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineIn/DcmDspStartRoutineIn
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StartDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineOut/DcmDspStartRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Start
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StartDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineIn/DcmDspStartRoutineIn
Signal.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
5
4
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StartDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineOut/DcmDspStartRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)
DataOut_{Signal}
Type Dcm_StartFlexibleOutArrayData_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation –
currentDataLength
Type uint16
Direction OUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Start
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} != VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StartDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineIn/DcmDspStartRoutineIn
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
5
4
DataIn_{Signal}
Type Dcm_StartFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StartDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineOut/DcmDspStartRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)
currentDataLength
Type uint16
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Start
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH) &&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StartDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
5
4
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/
DcmDspStartRoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignal
Type)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineIn/DcmDspStartRoutineIn
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataIn_{Signal}
Type Dcm_StartFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/
DcmDspStartRoutineIn/DcmDspStartRoutineInSignal.DcmDspRoutineSignal
Type)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineIn/DcmDspStartRoutineIn
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StartDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/
DcmDspStartRoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutine
SignalType)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineOut/DcmDspStartRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataOut_{Signal}
Type Dcm_StartFlexibleOutArrayData_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/
DcmDspStartRoutineOut/DcmDspStartRoutineOutSignal.DcmDspRoutine
SignalType)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStart
Routine/DcmDspStartRoutineOut/DcmDspStartRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
currentDataLength
Type uint16
Direction INOUT
5
4
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation StartConfirmation
Comment This operation indicates the transmission of a response to a StartRoutine request
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStartRoutine/DcmDspStart
RoutineConfirmationEnabled)}==TRUE
Parameters ConfirmationStatus
Type Dcm_ConfirmationStatusType
Direction IN
Comment Confirmation status of a StartRoutine request
Variation –
Possible Errors E_OK
E_NOT_OK
Operation Stop
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} != VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StopDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StopDataOut_{Routine}_{Signal}Type
5
4
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Stop
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} != VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StopDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StopDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)
DataOut_{Signal}
Type Dcm_StopFlexibleOutArrayData_{Routine}_{Signal}Type
5
4
Direction OUT
Comment –
Variation –
currentDataLength
Type uint16
Direction OUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Stop
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} != VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StopDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataIn_{Signal}
Type Dcm_StopFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StopDataOut_{Routine}_{Signal}Type
Direction OUT
5
4
Comment –
Variation Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)
currentDataLength
Type uint16
Direction IN
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation Stop
Comment –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignalType)} == VARIABLE_LENGTH)
&&
({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutineSignalType)} == VARIABLE_
LENGTH)
DataIn_{Signal}
Type Dcm_StopDataIn_{Routine}_{Signal}Type
Direction IN
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/
DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignal
Type)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataIn_{Signal}
Type Dcm_StopFlexibleInArrayData_{Routine}_{Signal}Type
Direction IN
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/
DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.DcmDspRoutineSignal
Type)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineIn/DcmDspStopRoutineInSignal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
5
4
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment –
Variation –
DataOut_{Signal}
Type Dcm_StopDataOut_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/
DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutine
SignalType)} != VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
DataOut_{Signal}
Type Dcm_StopFlexibleOutArrayData_{Routine}_{Signal}Type
Direction OUT
Comment –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/
DcmDspStopRoutineOut/DcmDspStopRoutineOutSignal.DcmDspRoutine
SignalType)} == VARIABLE_LENGTH
Signal = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStop
Routine/DcmDspStopRoutineOut/DcmDspStopRoutineOut
Signal.SHORT-NAME)}
Routine = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Routine.SHORT-NAME)}
currentDataLength
Type uint16
Direction INOUT
Comment –
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation StopConfirmation
Comment This operation indicates the transmission of a response to a StopRoutine request
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine/DcmDspStopRoutine/DcmDspStop
RoutineConfirmationEnabled)}==TRUE)
Parameters ConfirmationStatus
5
4
Type Dcm_ConfirmationStatusType
Direction IN
Comment Confirmation status of a StopRoutine request
Variation –
Possible Errors E_OK
E_NOT_OK
c()
From the point of view of the DCM, the operations have the following signatures:
8.8.3.6 RequestControlServices_{Tid}
The following interface allows the Dcm to provide OBD Service $08 (see
[SWS_Dcm_00419]).
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00691] d
Name RequestControlServices_{Tid}
Comment –
IsService true
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.SHORT-NAME)}
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation RequestControl
Comment –
Variation –
OutBuffer
Parameters
Type Dcm_RequestControlServicesOutArray_{Tid}Type
Direction OUT
Comment –
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequest
Control.SHORT-NAME)}
InBuffer
Type Dcm_RequestControlServicesInArray_{Tid}Type
Direction IN
Comment –
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequest
Control.SHORT-NAME)}
Possible Errors E_OK
E_NOT_OK
c()
8.8.3.7 CallbackDCMRequestServices
The following interface provides information on the status of the protocol commu-
nication and allows the Application to disallow a protocol (see [SWS_Dcm_00036],
[SWS_Dcm_00144], [SWS_Dcm_00145], [SWS_Dcm_00146]; [SWS_Dcm_00147],
[SWS_Dcm_00459]).
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00692] d
Name CallbackDCMRequestServices
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
5 E_PROTOCOL_NOT_ conditions in application allows no further procession
ALLOWED of protocol
Operation StartProtocol
Comment –
Variation –
ProtocolType
Parameters
Type Dcm_ProtocolType
Direction IN
Comment –
Variation –
TesterSourceAddress
Type uint16
Direction IN
Comment –
Variation –
ConnectionId
Type uint16
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
E_PROTOCOL_NOT_ALLOWED
Operation StopProtocol
Comment –
Variation –
Parameters ProtocolType
5
4
Type Dcm_ProtocolType
Direction IN
Comment –
Variation –
TesterSourceAddress
Type uint16
Direction IN
Comment –
Variation –
ConnectionId
Type uint16
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.8.3.8 ServiceRequestNotification
The following interface indicates to the Application that a service is about to be ex-
ecuted and allows the Application to reject the execution of the service request (see
[SWS_Dcm_00218], [SWS_Dcm_00462], [SWS_Dcm_00463]).
Using the concepts of the SW-C template, the interface is defined as follows:
[SWS_Dcm_00694] d
Name ServiceRequestNotification
Comment –
IsService true
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestManufacturerNotification)} !=
NULL)||({ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestSupplierNotification)} !=
NULL)
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
8 E_REQUEST_NOT_ no response will be sent
ACCEPTED
Operation Confirmation
Comment –
Variation –
Parameters SID
5
4
Type uint8
Direction IN
Comment Value of service identifier
Variation –
ReqType
Type uint8
Direction IN
Comment Addressing type of the request(0=physical request, 1=functional request)
Variation –
ConnectionId
Type uint16
Direction IN
Comment Unique connection identifier
Variation –
ConfirmationStatus
Type Dcm_ConfirmationStatusType
Direction IN
Comment Confirmation of a successful transmission or a transmission error of a
diagnostic service.
Variation –
ProtocolType
Type Dcm_ProtocolType
Direction IN
Comment –
Variation –
TesterSourceAddress
Type uint16
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation Indication
Comment –
Variation –
SID
Type uint8
Direction IN
Comment Value of service identifier
Variation –
RequestData
Type Dcm_RequestDataArrayType
Direction IN
5
4
Comment This parameter contains the complete request data (diagnostic buffer), except
the service ID
Variation –
DataSize
Type uint16
Direction IN
Comment This parameter defines how many bytes in the RequestData parameter are
valid
Variation –
ReqType
Type uint8
Direction IN
Comment Addressing type of the request(0=physical request, 1=functional request
Variation –
ConnectionId
Type uint16
Direction IN
Comment Unique connection identifier
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment –
Variation –
ProtocolType
Type Dcm_ProtocolType
Direction IN
Comment –
Variation –
TesterSourceAddress
Type uint16
Direction IN
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
E_REQUEST_NOT_ACCEPTED
c()
8.8.3.9 UploadDownloadServices
[SWS_Dcm_91065] d
Name UploadDownloadServices
Comment –
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspMemoryTransfer.DcmDspMemoryTransferUse
Port)} == TRUE)
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
12 DCM_E_FORCE_RCRRP application request the transmission of a response
Response Pending (NRC 0x78)
Operation ProcessRequestDownload
Comment Callout function.
DCM shall call this callout function to start a download process.
This service is needed for the implementation of UDS service RequestDownload.
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL
DCM_PENDING
DCM_CANCEL
Variation –
DataFormatIdentifier
Type uint8
Direction IN
Comment Bit 7 - 4: Compression Method
• 0x0: not compressed
• 0x1..F: vehicle-manufacturer-specific
Bit 3 - 0: Encrypting method
• 0x0: not encrypted
• 0x1..F: vehicle-manufacturer-specific
Variation –
MemoryIdentifier
Type uint8
Direction IN
Comment Identifier of the Memory Block, if the parameter is not used it shall be set to 0.
Variation –
MemoryAddress
Type uint32
Direction IN
Comment Starting address of server memory to which data is to be written
Variation –
MemorySize
5
4
Type uint32
Direction IN
Comment Uncompressed memory size in bytes
Variation –
BlockLength
Type uint32
Direction INOUT
Comment Max. Number of bytes for one Dcm_WriteMemory
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ProcessRequestDownload returns value E_NOT_OK,
the DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ProcessRequestTransferExit
Comment Callout function.
DCM shall call this callout function to terminate a download or upload process.
This callout is needed for the implementation of UDS service RequestTransferExit.
Variation –
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL
DCM_PENDING
DCM_CANCEL
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment see below
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ProcessRequestUpload
Comment Callout function.
DCM shall call this callout function to start an upload process.
This service is needed for the implementation of UDS service RequestUpload.
5
4
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL
DCM_PENDING
DCM_CANCEL
DCM_FORCE_RCRRP_OK
Variation –
DataFormatIdentifier
Type uint8
Direction IN
Comment Bit 7 - 4: Compression Method
• 0x1..F: vehicle-manufacturer-specific
• 0x1..F: vehicle-manufacturer-specific
Variation –
MemoryIdentifier
Type uint8
Direction IN
Comment Identifier of the Memory Block, if the parameter is not used it shall be set to 0.
Variation –
MemoryAddress
Type uint32
Direction IN
Comment Starting address of server memory from which data are to be copied
Variation –
MemorySize
Type uint32
Direction IN
Comment Uncompressed memory size in bytes
Variation –
BlockLength
Type uint32
Direction INOUT
Comment Max. Number of bytes for one Dcm_ReadMemory
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
5
4
Direction OUT
Comment If the operation Dcm_ProcessRequestUpload returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
Operation ProcessTransferDataRead
Comment The ProcessTransferDataRead callout is used to request memory data identified by the
parameter memoryAddress and memorySize from the UDS request message.
This service is needed for the implementation of UDS services:
• ReadMemoryByAddress
• RequestUpload
• ReadDataByIdentifier (in case of Dynamical DID defined by memory address)
• TransferData
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL
DCM_PENDING
DCM_CANCEL
DCM_FORCE_RCRRP_OK
Variation –
MemoryIdentifier
Type uint8
Direction IN
Comment Identifier of the Memory Block (e.g. used if memory section distinguishing is
needed)
Note: If it’s not used this parameter shall be set to 0.
Variation –
MemoryAddress
Type uint32
Direction IN
Comment Starting address of server memory from which data is to be retrieved.
Variation –
MemorySize
Type uint32
Direction IN
Comment Number of bytes in the MemoryData
Variation –
MemoryData
Type Dcm_RequestDataArrayType
Direction OUT
5
4
Comment Data read (Points to the diagnostic buffer in DCM)
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ReadMemory returns value DCM_READ_FAILED, the
Dcm module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ProcessTransferDataWrite
Comment The ProcessTransferDataWrite callout is used to write memory data identified by the parameter
memoryAddress and memorySize. This service is needed for the implementation of UDS
services :
• WriteMemoryByAddress
• RequestDownload
• TransferData
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL
DCM_PENDING
DCM_CANCEL
DCM_FORCE_RCRRP_OK
Variation –
MemoryIdentifier
Type uint8
Direction IN
Comment Identifier of the Memory Block (e.g. used by WriteDataByIdentifier service).
Note: If it’s not used this parameter shall be set to 0.
Variation –
MemoryAddress
Type uint32
Direction IN
Comment Starting address of server memory in which data is to be copied.
Note: If it’s not used (e.g. if the data is compressed) this parameter shall be set
to 0.
Variation –
MemorySize
Type uint32
Direction IN
5
4
Comment Number of bytes in MemoryData
Variation –
MemoryData
Type Dcm_RequestDataArrayType
Direction IN
Comment Data to write (Points to the diagnostic buffer in DCM)
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_WriteMemory returns value DCM_WRITE_FAILED, the
Dcm module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
c()
8.8.3.10 RequestFileTransfer
[SWS_Dcm_91086] d
Name RequestFileTransfer
Comment –
IsService true
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestFileTransfer/DcmRequestFileTransfer
UsePort)} == TRUE)
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
10 DCM_E_PENDING Request is not yet finished. Further call(s) required
to finish.
12 DCM_E_FORCE_RCRRP application request the transmission of a response
Response Pending (NRC 0x78)
Operation ProcessRequestAddFile
Comment Callout function.
DCM shall call this function to start a RequestFileTransfer process with modeOfOperation equal
to 0x01 (AddFile).
Variation –
OpStatus
Type Dcm_OpStatusType
5
4
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
filePathAndNameLength
Type uint16
Direction IN
Comment Defines the length in bytes for the parameter filePathAndName.
Variation –
filePathAndName
Type const Dcm_FileAndDirNameType
Direction IN
Comment Defines the file system location of the server where the file which shall be
added, deleted, replaced or read from depending on the parameter modeOf
Operation parameter. In addition this parameter includes the file name of the
file which shall be added, deleted, replaced or read as part of the file path.
Variation –
dataFormatIdentifier
Type uint8
Direction IN
Comment This data-parameter is a one byte value with each nibble encoded separately.
The high nibble specifies the "compressionMethod", and the low nibble
specifies the "encryptingMethod". The value 0x00 specifies that neither
compressionMethod nor encryptingMethod is used. Values other than 0x00
are vehicle manufacturer specific.
Variation –
fileSizeUncompressed
Type uint64
Direction IN
Comment Defines the size of the uncompressed file to be download in bytes.
Variation –
fileSizeCompressed
Type uint64
Direction IN
Comment Defines the size of the compressed file to be downloaded in bytes.
Variation –
maxNumberOfBlockLength
Type uint64
Direction OUT
Comment Max number of bytes to be included in each TransferData request excluding
the SID and the blockSequenceCounter.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
5
4
Comment If the operation Dcm_ProcessRequestAddFile returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ProcessRequestDeleteFile
Comment Callout function.
DCM shall call this function to start a RequestFileTransfer process with modeOfOperation equal
to 0x02 (DeleteFile).
Variation –
OpStatus
Parameters
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
filePathAndNameLength
Type uint16
Direction IN
Comment Defines the length in bytes for the parameter filePathAndName.
Variation –
filePathAndName
Type const Dcm_FileAndDirNameType
Direction IN
Comment Defines the file system location of the server where the file which shall be
added, deleted, replaced or read from depending on the parameter modeOf
Operation parameter. In addition this parameter includes the file name of the
file which shall be added, deleted, replaced or read as part of the file path.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ProcessRequestDeleteFile returns value E_NOT_OK,
the DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ProcessRequestReadDir
Comment Callout function.
DCM shall call this function to start a RequestFileTransfer process with modeOfOperation equal
to 0x05 (ReadDir).
Variation –
OpStatus
Parameters Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
filePathAndNameLength
Type uint16
Direction IN
Comment Defines the length in bytes for the parameter filePathAndName.
Variation –
filePathAndName
Type const Dcm_FileAndDirNameType
Direction IN
Comment Defines the file system location of the server where the file which shall be
added, deleted, replaced or read from depending on the parameter modeOf
Operation parameter. In addition this parameter includes the file name of the
file which shall be added, deleted, replaced or read as part of the file path.
Variation –
dirInfoLength
Type uint64
Direction OUT
Comment Defines the size of directory information to be uploaded in bytes.
Variation –
maxNumberOfBlockLength
Type uint64
Direction OUT
Comment Max number of bytes to be included in each TransferData request excluding
the SID and the blockSequenceCounter.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ProcessRequestReadDir returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ProcessRequestReadFile
Comment Callout function.
DCM shall call this function to start a RequestFileTransfer process with modeOfOperation equal
to 0x04 (ReadFile).
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
filePathAndNameLength
Type uint16
Direction IN
Comment Defines the length in bytes for the parameter filePathAndName.
Variation –
filePathAndName
Type const Dcm_FileAndDirNameType
Direction IN
Comment Defines the file system location of the server where the file which shall be
added, deleted, replaced or read from depending on the parameter modeOf
Operation parameter. In addition this parameter includes the file name of the
file which shall be added, deleted, replaced or read as part of the file path.
Variation –
dataFormatIdentifier
Type uint8
Direction IN
Comment This data-parameter is a one byte value with each nibble encoded separately.
The high nibble specifies the "compressionMethod", and the low nibble
specifies the "encryptingMethod". The value 0x00 specifies that neither
compressionMethod nor encryptingMethod is used. Values other than 0x00
are vehicle manufacturer specific.
Variation –
fileSizeUncompressed
Type uint64
Direction OUT
Comment Defines the size of the uncompressed file to be uploaded in bytes.
Variation –
fileSizeCompressed
Type uint64
Direction OUT
Comment Defines the size of the compressed file to be uploaded in bytes.
Variation –
maxNumberOfBlockLength
Type uint64
5
4
Direction OUT
Comment Max number of bytes to be included in each TransferData response excluding
the SID and the blockSequenceCounter.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ProcessRequestReadFile returns value E_NOT_OK, the
DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ProcessRequestReplaceFile
Comment Callout function.
DCM shall call this function to start a RequestFileTransfer process with modeOfOperation equal
to 0x03 (ReplaceFile).
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
filePathAndNameLength
Type uint16
Direction IN
Comment Defines the length in bytes for the parameter filePathAndName.
Variation –
filePathAndName
Type const Dcm_FileAndDirNameType
Direction IN
Comment Defines the file system location of the server where the file which shall be
added, deleted, replaced or read from depending on the parameter modeOf
Operation parameter. In addition this parameter includes the file name of the
file which shall be added, deleted, replaced or read as part of the file path.
Variation –
dataFormatIdentifier
Type uint8
Direction IN
5
4
Comment This data-parameter is a one byte value with each nibble encoded separately.
The high nibble specifies the "compressionMethod", and the low nibble
specifies the "encryptingMethod". The value 0x00 specifies that neither
compressionMethod nor encryptingMethod is used. Values other than 0x00
are vehicle manufacturer specific.
Variation –
fileSizeUncompressed
Type uint64
Direction IN
Comment Defines the size of the uncompressed file to be download in bytes.
Variation –
fileSizeCompressed
Type uint64
Direction IN
Comment Defines the size of the compressed file to be downloaded in bytes.
Variation –
maxNumberOfBlockLength
Type uint64
Direction OUT
Comment Max number of bytes to be included in each TransferData request excluding
the SID and the blockSequenceCounter.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ProcessRequestReplaceFile returns value E_NOT_OK,
the DCM module shall send a negative response with NRC code equal to the
parameter ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation ReadFileOrDir
Comment Callout function.
DCM shall call this function when data shall be sent as a response to UDS service TransferData
if there’s an ongoing RequestFileTransfer process started with 0x04 (ReadFile) or 0x05 (Read
Dir).
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
5
4
Variation –
DataLength
Type uint64
Direction INOUT
Comment As in, the parameter defines the maximum block length to be used, i.e. the
value of maxNumberOfBlockLength sent to the client in the response of
RequestFileTransfer.
As out, the parameter defines the actual length in bytes for the parameter
Data. The value shall not exceed, but might be less, the value provided as in
parameter.
Variation –
Data
Type Dcm_ResponseDataArrayType
Direction IN
Comment Pointer to the data to be written.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_ReadFileOrDir returns value E_NOT_OK, the DCM
module shall send a negative response with NRC code equal to the parameter
ErrorCode parameter value.
Variation –
Possible Errors E_OK
E_NOT_OK
DCM_E_PENDING
DCM_E_FORCE_RCRRP
Operation WriteFile
Comment Callout function.
DCM shall call this function when data is received using UDS service TransferData if there’s an
ongoing RequestFileTransfer process started with 0x01 (AddFile) or 0x03 (ReplaceFile).
Variation –
OpStatus
Type Dcm_OpStatusType
Direction IN
Comment DCM_INITIAL: All In-parameters are valid.
DCM_PENDING: All In-parameters are set to 0x00.
DCM_CANCEL: All In-parameters are set to 0x00.
DCM_FORCE_RCRRP_OK: All In-parameters are set to 0x00.
Variation –
DataLength
Type uint64
Direction IN
Comment Defines the length in bytes for the parameter Data. The value will not exceed,
but might be less, compared to the value of maxNumberOfBlockLength return
in Dcm_ProcessRequestFileTransfer.
Variation –
5
4
Data
Type Dcm_RequestDataArrayType
Direction IN
Comment Pointer to the data to be written.
Variation –
ErrorCode
Type Dcm_NegativeResponseCodeType
Direction OUT
Comment If the operation Dcm_WriteFile returns value E_NOT_OK, the DCM module
shall send a negative response with NRC code equal to the parameter Error
Code parameter value.
Variation –
Possible Errors –
c()
8.8.3.11 DCMServices
[SWS_Dcm_00698] d
Name DCMServices
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
1 E_NOT_OK Operation failed
Operation GetActiveProtocol
Comment –
Variation –
ActiveProtocolType
Type Dcm_ProtocolType
Direction OUT
Comment –
Variation –
ConnectionId
Type uint16
Direction OUT
Comment –
Variation –
TesterSourceAddress
Type uint16
Direction OUT
5
4
Comment –
Variation –
Possible Errors E_OK
Operation GetSecurityLevel
Comment –
Variation –
Parameters SecLevel
Type Dcm_SecLevelType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation GetSesCtrlType
Comment –
Variation –
Parameters SesCtrlType
Type Dcm_SesCtrlType
Direction OUT
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation ResetToDefaultSession
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
Operation SetActiveDiagnostic
Comment Allows to activate and deactivate the call of ComM_DCM_ActiveDiagnostic() function.
Variation –
Parameters active
Type boolean
Direction IN
Comment If false Dcm shall not call ComM_DCM_ActiveDiagnostic(). If true Dcm will call
ComM_DCM_ActiveDiagnostic().
Variation –
Possible Errors E_OK
c()
8.8.3.12 DCM_Roe
Operation TriggerOnEvent
Comment –
Variation –
Possible Errors E_OK
E_NOT_OK
c()
8.8.3.13 Authentication
[SWS_Dcm_91072] d
Name Authentication
Comment –
IsService true
Variation –
Possible Errors 0 E_OK Operation successful
Operation SetDeauthenticatedRole
Comment Sets a new role used in deauthenticated state for that connection. The set role is valid until the
connection switches into authenticated state or the ECU is reset.
Variation –
Parameters deauthenticatedRole
Type Dcm_AuthenticationRoleType
Direction IN
Comment New deauthenticated role that is assigned to that connection.
Variation –
Possible Errors E_OK
c()
8.8.4 NvDataInterface
8.8.4.1 DataServices_{DID}
[SWS_Dcm_91061] d
Name DataServices_{DID}
Comment –
IsService false
Variation ( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_ATOMIC_
NV_DATA_INTERFACE)
DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
Data Elements data
Type {DID}_Struct_DataType
Variation DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
c(RS_Diag_04218)
8.8.5 Ports
This section formally specifies the corresponding AUTOSAR Service using the con-
cepts of the Software-Component-Template. The following definition can be generated
completely out of the configuration of the Dcm, which defines the exact ports that are
present and their names.
Naming of the port : The prefix of the port name is fixed and defined herafter (e.g.
DataServices_). The name behind the prefix corresponds to the name of the associ-
ated container in the ECU configuration and can be freely defined during the configu-
ration step. e.g. : for a DcmDspData container called Speed the port name would be
DataServices_Speed
1 ServiceSwComponentType Dcm {
2
18 RequirePort InfotypeServices_{VehInfoData}
19 InfotypeServices_{VehInfoData}
20 ...
21
22
23 //see configuration parameter DcmDspRoutine
24 RequirePort RoutineServices_{RoutineName}
25 RoutineServices_{RoutineName};
26 ...
27
28 //see configuration parameter DcmDspRequestControl
29 RequirePort RequestControlServices_\{Tid\}
30 RequestControlServices_\{Tid\};
31 ...
32
33 //see configuration parameter DcmDslCallbackDCMRequestService
34 RequirePort CallbackDCMRequestServices
35 CallbackDCMRequestServices_\_SWC>;
36 ...
37
38 //see configuration parameter
DcmDsdServiceRequestManufacturerNotication
39 RequirePort ServiceRequestNotification
40 ServiceRequestManufacturerNotification_{Name};
41 ...
42
43 //see configuration parameter DcmDsdServiceRequestSupplierNotication
44 RequirePort ServiceRequestNotification
45 ServiceRequestSupplierNotification_\_SWC>;
46 ...
47
48 //Note: When service 0x19 subfunctions 0x14 is used (call to //
Dem_GetNextFilteredDTCAndFDC), the following is defined:
49 //Non-DEM-internal calculated fault detection counters are typically
50 //requested from SW-Cs through the RTE. To indicate an equivalent call-
tree //for these runables, a work-around is used: The Dcm main
function //specifies a trigger to the DEM interface GeneralEvtInfo
(operation //GetFaultDetectionCounter), which triggers the
according ehavior (refer to //RunnableEntity
GetFaultDetectionCounter, chapter "Service Interface //
DiagnosticInfo & General" in DEM SWS)."
51 RequirePort Dem/CallbackGetFaultDetectCounter CBFaultDetectCtrDummy
52 (The client-server interface can be used from the DEM.)
53
54 RunnableEntity MainFunction
55 symbol \ARApiRef{Dcm_MainFunction}"
56 canbeInvokedConcurrently = FALSE
57 SSCP = port CBFaultDetectCtrDummy,
GetFaultDetectionCounter
58
59 Connector from CBFaultDetectCtrDummy to Dem/GeneralEvtInfo
60 }
8.8.5.1 Dcm_CallbackDCMRequestServices_{Name}
[SWS_Dcm_01033] d
Name CallbackDCMRequestServices_{Name}
Kind RequiredPort Interface CallbackDCMRequestServices
Description –
Variation Name = {ecuc(Dcm/DcmConfigSet/DcmDsl/DcmDslCallbackDCMRequestService.SHORT-NAME)}
c()
8.8.5.2 DataServices_DIDRange_{Range}
[SWS_Dcm_01034] d
Name DataServices_DIDRange_{Range}
Kind RequiredPort Interface DataServices_DIDRange_{Range}
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.DcmDspDidRangeUsePort)} == TRUE
Range = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDidRange.SHORT-NAME)})
c()
8.8.5.3 DataServices_{DID}
[SWS_Dcm_91058] d
Name DataServices_{DID}
Kind ProvidedPort Interface –
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE ) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDsp
DidUsePort)} == (USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE )
||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_NV_
DATA_INTERFACE)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->
DcmDspDidInfo/DcmDspDidWrite)} != NULL) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Did/DcmDspDidInfoRef-> DcmDspDidInfo/DcmDspDidRead)} == NULL) ||({ecuc(Dcm/DcmConfig
Set/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/DcmDspDidControl)} !=NULL))
DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
c(RS_Diag_04218)
[SWS_Dcm_91060] d
Name DataServices_{DID}
Kind Provided Interface –
RequiredPort
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE ) ||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDsp
DidUsePort)} == (USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE )
||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_NV_
DATA_INTERFACE)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidWrite)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidRead)} != NULL))
DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
c(RS_Diag_04218)
[SWS_Dcm_91059] d
Name DataServices_{DID}
Kind RequiredPort Interface –
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE ) || ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDsp
DidUsePort)} == (USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE )
||({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_NV_
DATA_INTERFACE)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref->DcmDspDidInfo/DcmDspDidWrite)} == NULL) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidRead)} != NULL) ||({ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef->DcmDspDidInfo/DcmDspDidControl)}
!=NULL))
DID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)}
c(RS_Diag_04218)
8.8.5.4 DataServices_{Data}
[SWS_Dcm_01035] d
Name DataServices_{Data}
Kind RequiredPort Interface –
Description –
Variation ( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspPid/DcmDspPidData/DcmDspPidService01/Dcm
DspPidDataUsePort)} ==(USE_DATA_SYNCH_CLIENT_SERVER ||USE_DATA_SENDER_
RECEIVER ||USE_DATA_SENDER_RECEIVER_AS_SERVICE))
Data = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)} || {ecuc(Dcm/Dcm
ConfigSet/DcmDsp/DcmDspPid/DcmDspPidData.SHORT-NAME)}
c()
[SWS_Dcm_01310] d
Name DataServices_{Data}
Kind RequiredPort Interface –
Description –
Variation ((( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/
DcmDspDataUsePort)} == (USE_DATA_SENDER_RECEIVER ||USE_DATA_SENDER_
RECEIVER_AS_SERVICE))) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDid
InfoRef-> DcmDspDidInfo/DcmDspDidWrite)} == NULL) && (({ecuc(Dcm/DcmConfigSet/DcmDsp/
DcmDspDid/DcmDspDidInfoRef-> DcmDspDidInfo/DcmDspDidRead)} != NULL)))
Data = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}
c()
[SWS_Dcm_01031] d
Name DataServices_{Data}
Kind ProvidedPort Interface –
Description –
Variation ((( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES)) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/
DcmDspDataUsePort)} == (USE_DATA_SENDER_RECEIVER ||USE_DATA_SENDER_
RECEIVER_AS_SERVICE))) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfo
Ref-> DcmDspDidInfo/DcmDspDidWrite)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/Dcm
DspDid/DcmDspDidInfoRef-> DcmDspDidInfo/DcmDspDidRead)} == NULL)
Data = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}
c()
[SWS_Dcm_01311] d
Name DataServices_{Data}
Kind Provided Interface DataServices_{Data}
RequiredPort
Description –
Variation ((( {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == USE_DATA_
ELEMENT_SPECIFIC_INTERFACES)) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData/Dcm
DspDataUsePort)} == (USE_DATA_SENDER_RECEIVER ||USE_DATA_SENDER_RECEIVER_
AS_SERVICE))) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> Dcm
DspDidInfo/DcmDspDidWrite)} != NULL) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/
DcmDspDidInfoRef-> DcmDspDidInfo/DcmDspDidRead)} != NULL)
Data = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspData.SHORT-NAME)}
c()
8.8.5.5 IOControlRequest_{DID}
[SWS_Dcm_01312] d
Name IOControlRequest_{DID}
Kind Provided Interface IOControlRequest_{DID}
RequiredPort
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE || USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_
SERVICE))) && ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDsp
DidInfo/DcmDspDidControl)} != NULL)
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
c()
8.8.5.6 IOControlResponse_{DID}
[SWS_Dcm_01313] d
Name IOControlResponse_{DID}
Kind RequiredPort Interface IOControlResponse_{DID}
Description –
Variation (({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidUsePort)} == (USE_ATOMIC_
SENDER_RECEIVER_INTERFACE || USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_
SERVICE))) &&({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid/DcmDspDidInfoRef-> DcmDsp
DidInfo/DcmDspDidControl)} != NULL)
DID = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspDid.SHORT-NAME)})
c(RS_Diag_04218)
8.8.5.7 DCM_Roe_{RoeName}
[SWS_Dcm_01032] d
Name DCM_Roe_{RoeName}
Kind ProvidedPort Interface DCM_Roe
Description –
Port Defined Type uint8
Argument Value(s)
Value {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoe/DcmDspRoeEvent/DcmDsp
RoeEventId.value)}
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoe/DcmDspRoeEvent)}
RoeName = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoe/DcmDspRoeEvent.SHORT-NAME)}
c()
8.8.5.8 DCMServices
[SWS_Dcm_01030] d
Name DCMServices
Kind ProvidedPort Interface DCMServices
Description –
Variation –
c()
8.8.5.9 InfotypeServices_{VehInfoData}
[SWS_Dcm_01037] d
Name InfotypeServices_{VehInfoData}
Kind RequiredPort Interface InfotypeServices_{VehInfoData}
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfoData/DcmDspVehInfoData
UsePort)}==TRUE
VehInfoData = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspVehInfo/DcmDspVehInfo
Data.SHORT-NAME)}
c()
8.8.5.10 RequestControlServices_{Tid}
[SWS_Dcm_01038] d
Name RequestControlServices_{Tid}
Kind RequiredPort Interface RequestControlServices_{Tid}
Description –
Variation Tid = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestControl.SHORT-NAME)}
c()
8.8.5.11 RequestFileTransfer
[SWS_Dcm_91143] d
Name RequestFileTransfer
Kind RequiredPort Interface RequestFileTransfer
Description –
5
4
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRequestFileTransfer/DcmRequestFileTransferUse
Port)} == TRUE)
c()
8.8.5.12 ServiceRequestManufacturerNotification_{Name}
[SWS_Dcm_01039] d
Name ServiceRequestManufacturerNotification_{Name}
Kind RequiredPort Interface ServiceRequestNotification
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestManufacturerNotification)} != NULL)
Name = {ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestManufacturer
Notification.SHORT-NAME)}
c()
8.8.5.13 ServiceRequestSupplierNotification_{Name}
[SWS_Dcm_01042] d
Name ServiceRequestSupplierNotification_{Name}
Kind RequiredPort Interface ServiceRequestNotification
Description –
Variation ({ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestSupplierNotification)} != NULL)
Name = {ecuc(Dcm/DcmConfigSet/DcmDsd/DcmDsdServiceRequestSupplier
Notification.SHORT-NAME)}
c()
8.8.5.14 RoutineServices_{RoutineName}
[SWS_Dcm_01040] d
Name RoutineServices_{RoutineName}
Kind RequiredPort Interface RoutineServices_{RoutineName}
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.DcmDspRoutineUsePort)} == TRUE
RoutineName = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoutine.SHORT-NAME)}
c()
8.8.5.15 SecurityAccess_{SecurityLevel}
[SWS_Dcm_01041] d
Name SecurityAccess_{SecurityLevel}
Kind RequiredPort Interface SecurityAccess_{SecurityLevel}
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.DcmDspSecurityUse
Port)} == USE_ASYNCH_CLIENT_SERVER
SecurityLevel = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurity
Row.SHORT-NAME)}
c()
8.8.5.16 Dcm_DiagnosticSessionControlModeSwitchInterface
[SWS_Dcm_91033] d
Name DiagnosticSessionControlModeSwitchInterface
Kind ProvidedPort Interface Dcm_DiagnosticSessionControlModeSwitchInterface
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Diagnostic Session
Variation –
c()
8.8.5.17 Dcm_EcuResetModeSwitchInterface
[SWS_Dcm_91034] d
Name EcuResetModeSwitchInterface
Kind ProvidedPort Interface Dcm_EcuResetModeSwitchInterface
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about an upcoming ECU Reset and
its type
Variation –
c()
8.8.5.18 Dcm_ModeRapidPowerShutDownModeSwitchInterface
[SWS_Dcm_91035] d
Name ModeRapidPowerShutDownModeSwitchInterface
Kind ProvidedPort Interface Dcm_ModeRapidPowerShutDownModeSwitchInterface
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the rapid power shut down
mode
Variation –
c()
8.8.5.19 Dcm_CommunicationControlModeSwitchInterface_{ComMChannel-
Name}
[SWS_Dcm_91036] d
Name CommunicationControlModeSwitchInterface_{ComMChannelName}
Kind ProvidedPort Interface CommunicationControlModeSwitchInterface_{ComM
ChannelName}
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the communication control of
the indicated ComM channel
Variation ComMChannelName = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspComControl/DcmDspCom
ControlAllChannel/DcmDspAllComMChannelRef->ComMChannel.SHORT-NAME)} or {ecuc(Dcm/
DcmConfigSet/DcmDsp/DcmDspComControl/DcmDspComControlSpecificChannel/DcmDsp
SpecificComMChannelRef->ComMChannel.SHORT-NAME)}
c()
8.8.5.20 Dcm_ControlDTCSettingModeSwitchInterface
[SWS_Dcm_91037] d
Name ControlDTCSettingModeSwitchInterface
Kind ProvidedPort Interface Dcm_ControlDTCSettingModeSwitchInterface
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the DTC Setting mode
Variation –
c()
8.8.5.21 Dcm_ResponseOnEventModeSwitchInterface_{RoeEventID}
[SWS_Dcm_91038] d
Name ResponseOnEventModeSwitchInterface_{RoeEventID}
Kind ProvidedPort Interface ResponseOnEvent_{RoeEventID}
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the mode of the indicated
Response On Event
Variation RoeEventID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoe/DcmDspRoe
Event.SHORT-NAME)}
c()
8.8.5.22 Dcm_SecurityAccessModeSwitchInterface
[SWS_Dcm_91039] d
Name SecurityAccessModeSwitchInterface
Kind ProvidedPort Interface Dcm_SecurityAccessModeSwitchInterface
Description A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Security Level
Variation –
c()
8.8.5.23 Dcm_UploadDownloadServices
[SWS_Dcm_91084] d
Name UploadDownloadServices
Kind RequiredPort Interface UploadDownloadServices
Description –
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspMemoryTransfer.DcmDspMemoryTransferUsePort)}
== TRUE)
c()
8.8.5.24 Dcm_Authentication_{Connection}
[SWS_Dcm_91073] d
Name Authentication_{Connection}
Kind RequiredPort Interface Authentication
Description –
Port Defined Type uint16
Argument Value(s)
Value {ecuc(Dcm/DcmConfigSet/DcmDsl/DcmDslProtocol/DcmDslProtocolRow/
DcmDslConnection/DcmDslMainConnection.DcmDslProtocolRxConnectionId
)}
Variation Connection = { Dcm/DcmConfigSet/DcmDsl/DcmDslProtocol/DcmDslProtocolRow/DcmDsl
Connection/DcmDslMainConnection.Short-Name)}
c()
8.8.6 ModeDeclarationGroups
8.8.6.1 DcmDiagnosticSessionControl
[SWS_Dcm_91019] d
Name DcmDiagnosticSessionControl
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_DEFAULT_SESSION
On transition value 255
Modes DCM_DEFAULT_SESSION 0
DCM_PROGRAMMING_SESSION 1
DCM_EXTENDED_DIAGNOSTIC_SESSION 2
DCM_SAFETY_SYSTEM_DIAGNOSTIC_SESSION 3
Description ModeDeclarationGroup representing the different diagnostic sessions
Further modes to be added: {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSession/
DcmDspSessionRow.SHORT-NAME)}
c()
Note: According [SWS_Dcm_CONSTR_6001] there are standardized mode dec-
laration which are part of the standardized AUTOSAR interface. Note: Refer
[ecuc_sws_2108] defining the symbolic name prefix
8.8.6.2 DcmEcuReset
[SWS_Dcm_91021] d
Name DcmEcuReset
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_NONE
On transition value 255
Modes DCM_NONE 0
DCM_HARD 1
DCM_KEYONOFF 2
DCM_SOFT 3
DCM_JUMPTOBOOTLOADER 4
DCM_JUMPTOSYSSUPPLIERBOOTLOADER 5
DCM_EXECUTE 6
Description ModeDeclarationGroup representing the different ECU reset types
c()
8.8.6.3 DcmModeRapidPowerShutDown
[SWS_Dcm_91023] d
Name DcmModeRapidPowerShutDown
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_ENABLE_RAPIDPOWERSHUTDOWN
On transition value 255
Modes DCM_ENABLE_RAPIDPOWERSHUTDOWN 0
DCM_DISABLE_RAPIDPOWERSHUTDOWN 1
Description ModeDeclarationGroup representing the enable/disable state of rapid power
shutdown
c()
8.8.6.4 DcmCommunicationControl
[SWS_Dcm_91025] d
Name DcmCommunicationControl
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_ENABLE_RX_TX_NORM_NM
On transition value 255
5
4
DCM_ENABLE_RX_TX_NORM 0
Modes
DCM_ENABLE_RX_DISABLE_TX_NORM 1
DCM_DISABLE_RX_ENABLE_TX_NORM 2
DCM_DISABLE_RX_TX_NORMAL 3
DCM_ENABLE_RX_TX_NM 4
DCM_ENABLE_RX_DISABLE_TX_NM 5
DCM_DISABLE_RX_ENABLE_TX_NM 6
DCM_DISABLE_RX_TX_NM 7
DCM_ENABLE_RX_TX_NORM_NM 8
DCM_ENABLE_RX_DISABLE_TX_NORM_NM 9
DCM_DISABLE_RX_ENABLE_TX_NORM_NM 10
DCM_DISABLE_RX_TX_NORM_NM 11
Description ModeDeclarationGroup representing the different communication control states
c()
8.8.6.5 DcmControlDTCSetting
[SWS_Dcm_91027] d
Name DcmControlDTCSetting
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_ENABLEDTCSETTING
On transition value 255
Modes DCM_ENABLEDTCSETTING 0
DCM_DISABLEDTCSETTING 1
Description ModeDeclarationGroup representing the enable/disable state for DTC storage
c()
8.8.6.6 DcmResponseOnEvent
[SWS_Dcm_91029] d
Name DcmResponseOnEvent
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_EVENT_CLEARED
On transition value 255
5
4
Modes DCM_EVENT_STARTED 0
DCM_EVENT_STOPPED 1
DCM_EVENT_CLEARED 2
Description ModeDeclarationGroup representing the state of a Response On Event
c()
8.8.6.7 DcmSecurityAccess
[SWS_Dcm_91031] d
Name DcmSecurityAccess
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_SEC_LEV_LOCKED
On transition value 255
Modes DCM_SEC_LEV_LOCKED 0
Description ModeDeclarationGroup representing the different diagnostic security levels
Further modes to be added: {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp
Security/DcmDspSecurityRow.SHORT-NAME)}
c()
8.8.6.8 DcmAuthenticationState
[SWS_Dcm_91067] d
Name DcmAuthenticationState_{Connection}
Kind ModeDeclarationGroup
Category EXPLICIT_ORDER
Initial mode DCM_DEAUTHENTICATED
On transition value 255
Modes DCM_DEAUTHENTICATED 0
DCM_AUTHENTICATED 1
Description Representing the authentication state of a diagnostic connection.
c()
8.8.7 Mode-Switch-Interfaces
8.8.7.1 Dcm_DiagnosticSessionControlModeSwitchInterface
[SWS_Dcm_91020] d
Name Dcm_DiagnosticSessionControlModeSwitchInterface
Comment A SW-C that wants to get informed about the current Diagnostic Session requires the Mode
SwitchInterface Dcm_DiagnosticSessionControlModeSwitchInterface
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSession/DcmDspSessionRow.SHORT-NAME)}
ModeGroup diagnosticSession DcmDiagnosticSessionControl
c()
8.8.7.2 Dcm_EcuResetModeSwitchInterface
[SWS_Dcm_91022] d
Name Dcm_EcuResetModeSwitchInterface
Comment A SW-C that wants to get informed about an upcoming ECU Reset requires the ModeSwitch
Interface Dcm_EcuResetModeSwitchInterface
IsService true
Variation –
ModeGroup ecuReset DcmEcuReset
c()
8.8.7.3 Dcm_ModeRapidPowerShutDownModeSwitchInterface
[SWS_Dcm_91024] d
Name Dcm_ModeRapidPowerShutDownModeSwitchInterface
Comment A SW-C that wants to get informed about the rapid power shut down mode requires the Mode
SwitchInterface Dcm_ModeRapidPowerShutDownModeSwitchInterface
IsService true
Variation –
ModeGroup modeRapidPowerShutDown DcmModeRapidPowerShutDown
c()
8.8.7.4 Dcm_CommunicationControlModeSwitchInterface
[SWS_Dcm_91026] d
Name CommunicationControlModeSwitchInterface_{ComMChannelName}
Comment A SW-C that wants to get informed about the communication control of a ComM channel
requires the ModeSwitchInterface Dcm_CommunicationControlModeSwitchInterface
IsService true
Variation ComMChannelName = ({ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspComControl/DcmDspCom
ControlAllChannel/DcmDspAllComMChannelRef->ComMChannel.SHORT-NAME)} ||
{ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspComControl/DcmDspComControlSpecificChannel/
DcmDspSpecificComMChannelRef->
ModeGroup communicationControl DcmCommunicationControl
c()
8.8.7.5 Dcm_ControlDTCSettingModeSwitchInterface
[SWS_Dcm_91028] d
Name Dcm_ControlDTCSettingModeSwitchInterface
Comment A SW-C that wants to get informed about the DTC Setting mode requires the ModeSwitch
Interface Dcm_ControlDTCSettingModeSwitchInterface
IsService true
Variation –
ModeGroup controlDTCSetting DcmControlDTCSetting
c()
8.8.7.6 Dcm_ResponseOnEventModeSwitchInterface
[SWS_Dcm_91030] d
Name ResponseOnEvent_{RoeEventID}
Comment A SW-C that wants to get informed about a Response On Event mode requires the ModeSwitch
Interface Dcm_ResponseOnEventModeSwitchInterface
IsService true
Variation RoeEventID = {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspRoe/DcmDspRoe
Event.SHORT-NAME)}
ModeGroup responseOnEvent DcmResponseOnEvent
c()
8.8.7.7 Dcm_SecurityAccessModeSwitchInterface
[SWS_Dcm_91032] d
Name Dcm_SecurityAccessModeSwitchInterface
Comment A SW-C that wants to get informed about the current Security Level requires the ModeSwitch
Interface Dcm_SecurityAccessModeSwitchInterface
IsService true
Variation {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSecurity/DcmDspSecurityRow.SHORT-NAME)}
ModeGroup securityAccess DcmSecurityAccess
c()
8.8.7.8 Dcm_AuthenticationStateModeSwitchInterface
[SWS_Dcm_91074] d
Name Dcm_AuthenticationStateModeSwitchInterface_{Connection}
Comment –
IsService true
Variation Connection = Dcm/DcmConfigSet/DcmDsl/DcmDslProtocol/DcmDslProtocolRow/DcmDsl
Connection/DcmDslMainConnection.Short-Name
ModeGroup authenticationState DcmAuthenticationState
c()
8.9.1 <Module>_<DiagnosticService>
[SWS_Dcm_00763] d
Service Name <Module>_<DiagnosticService>
Syntax Std_ReturnType <Module>_<DiagnosticService> (
Dcm_ExtendedOpStatusType OpStatus,
Dcm_MsgContextType* pMsgContext,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Parameters (in) OpStatus DCM_INITIAL DCM_PENDING DCM_CANCEL DCM_FORCE_
RCRRP_OK DCM_POS_RESPONSE_SENT DCM_POS_
RESPONSE_FAILED DCM_NEG_RESPONSE_SENT DCM_
NEG_RESPONSE_FAILED
Parameters (inout) pMsgContext Message-related information for one diagnostic protocol identifier.
The pointers in pMsgContext shall point behind the SID.
Parameters (out) ErrorCode If the operation <Module>_<DiagnosticService> returns value E_
NOT_OK, the Dcm module shall send a negative response with
NRC code equal to the parameter ErrorCode parameter value.
Return value Std_ReturnType E_OK: Request was successful
E_NOT_OK: Request was not successful
DCM_E_PENDING: Request is not yet finished
DCM_E_FORCE_RCRRP: Application requests the transmission
of a response Response Pending (NRC 0x78)
Description Callout function. The Dcm shall call this callout function as soon as valid message is received
on relevant DcmDslProtocolRxPduId on SID level. The usecase of multiple diagnostic protocols
will be possible by using different arguments and the function shall be programmed in a way
that it is reentrant. Caller is responsible for the lifetime of the argument pMsgContext. The
name of the callout is defined within parameter DcmDsdSidTabFnc
Available via Dcm_Externals.h
c()
8.9.2 <Module>_<DiagnosticService>_<SubService>
[SWS_Dcm_00764] d
Service Name <Module>_<DiagnosticService>_<SubService>
Syntax Std_ReturnType <Module>_<DiagnosticService>_<SubService> (
Dcm_ExtendedOpStatusType OpStatus,
Dcm_MsgContextType* pMsgContext,
Dcm_NegativeResponseCodeType* ErrorCode
)
4
Description Callout function. If a DcmDsdSubServiceFnc is configured for the received subservice, the Dcm
shall call this callout function as soon as this subservice is requested. The usecase of multiple
diagnostic protocols will be possible by using different arguments and the function shall be
programmed in a way that it is reentrant. Caller is responsible for the lifetime of the argument p
MsgContext. The name of the callout is defined within parameter DcmDsdSubServiceFnc.
Available via Dcm_Externals.h
c()
8.10.1 DslInternal_SetSecurityLevel
1 void
2 DslInternal_SetSecurityLevel(Dcm_SecLevelType SecurityLevel)
This function sets a new security level value in the Dcm module. NOTE: for the definition
of the parameter, refer to Dcm_GetSecurityLevel.
8.10.2 DslInternal_SetSesCtrlType
1 void
2 DslInternal_SetSesCtrlType(Dcm_SesCtrlType SesCtrlType)
This function sets a new session control type value in the Dcm module. NOTE: for the
definition of the parameter, refer to the Dcm_GetSesCtrlType.
8.10.3 DspInternal_DcmConfirmation
1 void
2 DspInternal_DcmConfirmation(Dcm_IdContextType idContext,
3 uint16 ConnectionId
4 Dcm_ConfirmationStatusType status)
1 Dcm_StatusType
2 DslInternal_ResponseOnOneEvent(const Dcm_MsgType MsgPtr,
3 Dcm_MsgLenType MsgLen,
4 uint16 ConnectionId)
This API executes the processing of one event, requested internally in the DCM.
8.10.5 DslInternal_ResponseOnOneDataByPeriodicId
1 Dcm_StatusType
2 DslInternal_ResponseOnOneDataByPeriodicId(uint8 PeriodicId)
This API provides the processing of one periodic ID event, requested internally in the
DCM. The frequency of calling this function depends on the rate given in the original
ReadDataByPeriodicID request (parameter transmissionMode).
8.10.6 DsdInternal_StartPagedProcessing
1 void
2 DsdInternal_StartPagedProcessing(const Dcm_MsgContextType* pMsgContext)
With this API, the DSP submodule gives the complete response length to the Dcm mod-
ule and starts paged-buffer handling. This API starts no transmission!
8.10.7 DspInternal_CancelPagedBufferProcessing
1 void
2 DspInternal_CancelPagedBufferProcessing()
Dcm informs DSP, that processing of paged-buffer was cancelled due to errors. Upon
this call, DSP is not allowed to process further on paged-buffer handling.
8.10.8 DsdInternal_ProcessPage
1 void
2 DsdInternal_ProcessPage(Dcm_MsgLenType FilledPageLen)
9 Sequence diagrams
9.1 Overview
For clarification, the following sequence diagrams don’t represent the full communica-
tion mechanism between the Dcm module and the PduR module. This is to keep the
sequence diagrams simple. Before the Dcm_TpRxIndication call, the PduR mod-
ule will ask the Dcm module for a buffer by calling Dcm_StartOfReception and
Dcm_CopyRxData. This exchange is not shown on the next sequence diagrams. Af-
ter a PduR_DcmTransmit() request from the Dcm module to the PduR module, data
exchanges with Dcm_CopyTxData service, are not shown in the sequence diagrams.
The function Xxx_StartProtocol() shall be called with the very first diagnostic request.
Dcm_TpRxIndication(PduIdType, Std_ReturnType)
Xxx_StartProtocol(Std_ReturnType, Dcm_ProtocolType,
uint16, uint16)
Dcm_StartProtocol()
Data_Indication_functionality()
[E_PROTOCOL_NOT_ALLOWED]
Dcm_TpRxIndication()
Figure 9.1
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Data_Indication_functionality() Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Data_Indication_functionality()
Dcm_TpRxIndication()
alt response?
PduR_DcmTransmit(Std_ReturnType, PduIdType,
const PduInfoType*): Std_ReturnType
PduR_DcmTransmit()
PduR_DcmTransmit(Std_ReturnType, PduIdType,
const PduInfoType*): Std_ReturnType
PduR_DcmTransmit()
[positive response]
Dcm_TpTxConfirmation(PduIdType,
NotifResultType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.2
Internally, the DSL submodule calculates the time to response the tester. In the
case that the external module processing the request doesn’t close the request
by returning E_OK or E_NOT_OK to <Module>_<DiagnosticService>() or <Mod-
ule>_<DiagnosticService>_<SubService>() APIs call (in case of normal response han-
dling) or DsdInternal_ProcessPage() (in case of paged-buffer handling) during the
P2ServerMax and/or P2*ServerMax, the DSL submodule sends a negative response
(requestCorectlyReceived-ResponsePending) independently.
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confimation_functionality()
Dcm_TpTxConfirmation()
Figure 9.3
The DSL submodule resets session control value to default, if in a non-default ses-
sion S3server timeout occurs. S3server timeout timer will be started with every data
confirmation from the PduR module.
ref
Receive a request message ... - synchronous
ref
Receive a request message ... - asynchronous
! "
#! # ! $ %
& DslInternal_ResponseOnOneDataByPeriodicId(uint8)
Data_Indication_functionality()
DspInternal_DcmReadDataByIdentifier()
Data_Indication_functionality()
DslInternal_ResponseOnOneDataByPeriodicId()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.4
The DSP submodule requests sampling and transmission of Periodic Identifier data,
when an event to Periodic Identifier occurs (i. e. a given time period is over). The DSP
submodule initiates the sending of one periodic identifier calling the function Respon-
seOnOneDataByPeriodicId() provided by the DSL submodule.
Within this function the DSL submodule simulates a "ReadDataByIdentifier" request
for the given PeriodicId. The High byte of the DataIdentifier shall be set to 0xF2 as
specified in [18]) and the low byte is set to value of the PeriodicId.
The ReadData interfaces of the corresponding Datas of the DID are called to get the
DID value. The Dcm module is not able to receive for the same periodic identifier
another event request from the DSP submodule, unless the confirmation of the current
transmission is received.
ref
Receive a request message ... - synchronous
ref
Receive a request message ... - asynchronous
DspInternal_DcmReadDataByIdentifier()
Data_Indication_functionality()
DslInternal_ResponseOnOneEvent()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType, PduIdType,
Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.5
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
Stop_Protocol_functionality()
Xxx_StopProtocol
(Std_ReturnType,
Dcm_ProtocolType, uint16,
uint16) Dcm_StopProtocol()
Stop_Protocol_functionality()
Data_Indication_functionality()
PduR_DcmCancelTransmitRequest()
PduR_DcmTransmit(Std_ReturnType,
PduIdType, const PduInfoType*):
Std_ReturnType
PduR_DcmTransmit()
Dcm_TpRxIndication()
<Module>_<DiagnosticService>()
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
!
Figure 9.6
• If the Dcm is not able to switch fast enough from non OBD to OBD protocol, the DSL
submodule responses with a negative response "BusyRepeatRequest" (NRC
0x21) to OBD tester. It is in the responsibility of the system designer to ensure
that the legislative timings are satisfied.
As long as the external module processing the request is not fin-
ished (finish is indicated by returning E_OK or E_NOT_OK to <Mod-
ule>_<DiagnosticService>()/<Module>_<DiagnosticService>_<SubService>() API
call) or no timeout occurs, the DSL submodule responses with negative response
"BusyRepeatRequest".
With receiving E_OK or E_NOT_OK from the external module to <Mod-
ule>_<DiagnosticService>()/<Module>_<DiagnosticService>_<SubService>() API
call, the DSL submodule will not transmit a response to old request. There will also
not given any negative response to inform first tester about preemption of diagnostic
request.
If the external module processing the request never returns E_OK or E_NOT_OK
to <Module>_<DiagnosticService>()/<Module>_<DiagnosticService>_<SubService>()
API call, the DSL submodule runs into timeout and switches directly to further process-
ing of preempting protocol.
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
ComM_DCM_ActiveDiagnostic(NetworkHandleType)
ComM_DCM_ActiveDiagnostic()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Dcm_TpRxIndication()
DspInternal_DcmConfirmation()
ComM_DCM_InactiveDiagnostic(NetworkHandleType)
ComM_DCM_InactiveDiagnostic()
Dcm_TpTxConfirmation()
Figure 9.7
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
DspInternal_DcmConfirmation()
Dcm_TpTxConfirmation()
Figure 9.8
«module» «module»
Dsl ComM
ComM_DCM_ActiveDiagnostic(NetworkHandleType)
ComM_DCM_ActiveDiagnostic()
ComM_DCM_InactiveDiagnostic(NetworkHandleType)
ComM_DCM_InactiveDiagnostic()
Figure 9.9
«module» «module»
ComM Dcm
Dcm_ComM_SilentComModeEntered
(uint8)
Figure 9.10
DSD (Diagnostic Service Dispatcher) Receive a request message and transmit a posi-
tive response message - synchronous transmission
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType,
NotifResultType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.11
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType,
NotifResultType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.12
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality() <Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
Data_Indication_functionality()
Dcm_TpRxIndication()
Figure 9.13
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
<Module>_<DiagnosticService>(Std_ReturnType,
Dcm_ExtendedOpStatusType,
Dcm_MsgContextType**,
Dcm_NegativeResponseCodeType**)
<Module>_<DiagnosticService>()
Data_Indication_functionality()
Dcm_RxIndication()
Dcm_TpTxConfirmation(PduIdType,
NotifResultType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.14
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
service interpreter call()
DsdInternal_StartPagedProcessing(const
Dcm_MsgContextType*)
DspInternal_DcmUpdatePage(Dcm_MsgType, Dcm_MsgLenType)
DspInternal_DcmUpdatePage()
DspInternal_StartPagedProcessing()
DsdInternal_ProcessPage(Dcm_MsgLenType)
PduR_DcmTransmit(Std_ReturnType,
Transmit_functionality()
PduIdType, const PduInfoType*):
Std_ReturnType
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Dcm_CopyTxData=BUFREQ_E_BUSY()
loop transmit
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Data_Confirmation_functionality()
DspInternal_DcmUpdatePage(Dcm_MsgType,
Dcm_MsgLenType)
DsdInternal_ProcessPage(Dcm_MsgLenType)
Transmit_functionality()
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Dcm_CopyTxData=BUFREQ_OK()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
Figure 9.15
The following flow is processed in case no error occurs on the Application side:
Start of process:
4) DsdInternal_StartPagedProcessing(): With this API, the DSP submodule gives the
complete response length to the Dcm module and starts paged-buffer handling. This
API starts no transmission!
5) UpdatePage(): The Dcm module requests data to be transmitted.
6) DsdInternal_ProcessPage(): With this API, the DSP submodule requests transmis-
sion of the current page.
8) PduR_DcmTransmit(): The Dcm module requests transmission to the lower layers.
9) Dcm_CopyTxData: The buffer is filled and the Dcm module shall return
"BUFREQ_OK"(10).
The Dcm module reacts in the following described way, when the DSP submodule starts
paged-buffer handling, but is not able to process further on filling the response data.
E.g. there are problems to access data from an EEPROM device. When providing
the Pagebuffer to the DSP submodule (13: UpdatePage()), and getting a negative Tx
confirmation from underlying Transport Layers, the following error handling is carried
out in the Dcm module:
• The Dcm module stops further processing of paged-buffer (item 15),
• The Dcm module requests the DSP submodule (14: DspInter-
nal_CancelPagedBufferProcessing()) to stop further processing of PagedBuffer.
Dcm_TpRxIndication
(PduIdType, Std_ReturnType)
Data_Indication_functionality()
DspInternal_Dcm<DiagnosticService>(Dcm_MsgContextType)
DspInternal_DcmUpdatePage(Dcm_MsgType, Dcm_MsgLenType)
DspInternal_DcmUpdatePage()
DsdInternal_StartPagedProcessing()
DspInternal_Dcm<DiagnosticServices>()
DsdInternal_ProcessPage(Dcm_MsgLenType)
PduR_DcmTransmit(Std_ReturnType,
Transmit_functionality()
PduIdType, const PduInfoType*):
Std_ReturnType
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Dcm_CopyTxData=BUFREQ_OK()
loop transmit
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Data_Confirmation_functionality() DspInternal_DcmUpdatePage(Dcm_MsgType,
Dcm_MsgLenType)
Dcm_CopyTxData=BUFREQ_E_BUSY()
DspInternal_DcmCancelPagedBufferProcessing()
Data_Failed_Functionality()
Dcm_CopyTxData(BufReq_ReturnType, PduIdType,
PduInfoType*, RetryInfoType*, PduLengthType*)
Dcm_CopyTxData=BUFREQ_E_NOT_OK()
Figure 9.16
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
DiagnosticSessionControl service
interpreter()
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType,
Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType,
PduIdType, Dcm_ConfirmationStatusType)
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
Figure 9.17
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
TesterPresent service
interpreter()
TesterPresent service
interpreter()
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
TesterPresent service
interpreter()
TesterPresent service
interpreter()
Data_Indication_functionality()
Dcm_TpRxIndication()
Figure 9.18
Data_Indication_functionality()
SecurityAccess service
interpreter()
GetSeed()
Data_Indication_functionality()
SecurityAccess service
interpreter()
CompareKey(Std_ReturnType,
uint8*, Dcm_OpStatusType)
Dcm_CompareKey()
Dcm_SetSecurityLevel(Dcm_SecLevelType)
Dcm_SetSecurityLevel()
Figure 9.19
To get the security access, the DSD submodule has to call the DSP submodule to get
the seed value from the application. If no error is detected, the seed value is sent in
the positive response.
In a second step, the DSP submodule gets the key calculated by the tester and requests
the application to compare this key with the internal calculated key. If no error occurs,
the new access type is set in the DSL submodule and a positive response is sent.
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
ResponseOnEvent service
interpreter()
ResponseOnEvent service
Data_Indication_functionality() interpreter()
Dcm_TpRxIndication()
Configure Event()
Data_Indication_functionality()
ResponseOnEvent service
interpreter()
ResponseOnEvent service
Data_Indication_functionality() interpreter()
Internal activation of DTC
Dcm_TpRxIndication() status supervision()
Dcm_DemTriggerOnDTCStatus()
Data_Indication_functionality()
ReadDTCInformation
service interpreter()
Dcm_DemTriggerOnDTCStatus()
[FALSE]
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Internal deactivation of
DTC status supervision()
Figure 9.20
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
ResponseOnEvent service
interpreter()
ResponseOnEvent service
Data_Indication_functionality() interpreter()
Dcm_TpRxIndication()
Configure Event()
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
ResponseOnEvent service
interpreter()
ResponseOnEvent service
interpreter()
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TriggerOnEvent(Eventid)
Data_Indication_functionality()
DspInternal_DcmReadDataByIdentifier(pMsgContext)
Xxx_ReadData()
Xxx_ReadData()
Dcm_TriggerOnEvent()
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality() ResponseOnEvent service
interpreter()
Data_Indication_functionality() ResponseOnEvent service
Dcm_TpRxIndication() interpreter()
Figure 9.21
Dcm_TpRxIndication(PduIdType,
Std_ReturnType)
Data_Indication_functionality()
DiagnosticSessionControl service
interpreter()
DiagnosticSessionControl service
interpreter()
Data_Indication_functionality()
Dcm_TpRxIndication()
Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)
Data_Confirmation_functionality()
DspInternal_DcmConfirmation(Dcm_IdContextType, PduIdType,
Dcm_ConfirmationStatusType)
Dcm_SetProgConditions()
Dcm_SetProgConditions()
DspInternal_DcmConfirmation()
Data_Confirmation_functionality()
Dcm_TpTxConfirmation()
[FALSE]
Figure 9.22
10 Configuration specification
In general, this chapter defines configuration parameters and their clustering into con-
tainers. In order to support the specification Chapter 10.1 describes fundamentals.
It also specifies a template (table) you shall use for the parameter specification. 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 module
<MODULE_ABBREVIATION>.
Chapter 10.4 specifies published information of the module <MOD-
ULE_ABBREVIATION>.
AUTOSARParameterDefinition:
EcucDefinitionCollection
+module
Dcm: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
+container +container
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDsd:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDsl:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmPageBufferCfg:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDsp:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmProcessingConditions:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.1 Dcm
10.2.2 DcmConfigSet
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDsd 1 These parameters configure the Diagnostic Service
Dispatcher submodule.
DcmDsl 1 These parameters configure the Diagnostic Session
Layer submodule.
DcmDsp 0..1 These parameters apply to Diagnostic Service
Processing. There will always be one set of these
parameters per Dcm. Please note: Although the
multiplicity is set to 0..1. It can be expected that this
container exists in any valid DCM configuration.
DcmPageBufferCfg 1 This container contains the configuration (parameters)
for Page Buffer handling
DcmProcessing 0..1 This container contains the configuration for mode
Conditions arbitration functionality of the Dcm
10.2.2.1 DcmPageBufferCfg
No Included Containers
DcmPageBufferCfg: DcmPagedBufferEnabled:
EcucParamConfContainerDef EcucBooleanParamDef
+parameter
lowerMultiplicity = 1 upperMultiplicity = 1
upperMultiplicity = 1 lowerMultiplicity = 1
10.2.2.2 DcmProcessingConditions
Included Containers
Container Name Multiplicity Scope / Dependency
DcmModeCondition 1..* This container contains the configuration of a mode
condition or an environmental conditions which can be
used as argument in DcmModeRules.
DcmProcessingConditions:
EcucParamConfContainerDef +subContainer DcmLogicalOperator:
DcmModeRule: EcucParamConfContainerDef EcucEnumerationParamDef
lowerMultiplicity = 0 +parameter
lowerMultiplicity = 1 lowerMultiplicity = 0
upperMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
+destination +literal
DCM_OR:
EcucEnumerationLiteralDef
+literal
+reference DCM_AND:
+parameter EcucEnumerationLiteralDef
DcmArgumentRef: DcmModeRuleNrcValue:
+subContainer EcucChoiceReferenceDef EcucIntegerParamDef
DCM_EQUALS:
EcucEnumerationLiteralDef
+literal
DCM_GREATER_THAN:
EcucEnumerationLiteralDef
+literal
DCM_EQUALS_NOT:
EcucEnumerationLiteralDef
+literal
DCM_LESS_THAN:
EcucEnumerationLiteralDef
+literal
DCM_LESS_OR_EQUAL:
EcucEnumerationLiteralDef
+literal
DCM_GREATER_OR_EQUAL: +literal
EcucEnumerationLiteralDef DcmConditionType: EcucEnumerationParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
+parameter
DcmModeConditionCertificateCompareElementRef: KeyMCertificateElement:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 65535
requiresSymbolicNameValue = true
(from KeyM)
DcmModeCondition: DcmSwcSRDataElementRef:
EcucParamConfContainerDef EcucChoiceReferenceDef DcmDspPidService01ExternalSRDataElementClass:
+destination
+reference EcucChoiceContainerDef
lowerMultiplicity = 1 upperMultiplicity = 1
upperMultiplicity = * lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspPidService01:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
DcmDspExternalSRDataElementClass: DcmDspData:
EcucChoiceContainerDef +subContainer EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = *
+subContainer
DcmSwcDataElementPrimitive:
DcmSwcDataElementValue: EcucParamConfContainerDef +parameter DcmSwcDataElementPrimitiveValue:
+choice
EcucChoiceContainerDef EcucIntegerParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmSwcDataElementArray:
+choice EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer DcmSwcDataElementArrayElementIndex:
EcucIntegerParamDef
+parameter
DcmSwcDataElementArrayElement:
EcucParamConfContainerDef
lowerMultiplicity = 0 +parameter
upperMultiplicity = * DcmSwcDataElementArrayElementValue:
EcucIntegerParamDef
+reference
DcmBswModeRef: EcucInstanceReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
destinationType = MODE-DECLARATION
destinationContext = MODE-DECLARATION-GROUP-PROTOTYPE
+reference
DcmSwcModeRef: EcucInstanceReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
destinationType = MODE-DECLARATION
destinationContext = ROOT-SW-COMPOSITION-PROTOTYPE SW-COMPONENT-PROTOTYPE P-PORT-PROTOTYPE MODE-DECLARATION-GROUP-PROTOTYPE
10.2.3 DcmDsd
10.2.3.1 DcmDsd
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDsdServiceRequest 0..* The name of this container is used to define the name of
ManufacturerNotification the R-Port through which the DCM accesses the
interface ServiceRequestNotification. The R-Port is
named
ServiceRequestManufacturerNotification_{Name} where
{Name} is the name of the container
DcmDsdServiceRequestManufacturerNotification.
DcmDsd:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+subContainer
DcmDsdSidTabId:
DcmDsdServiceTable: EcucIntegerParamDef
EcucParamConfContainerDef +parameter
max = 255
upperMultiplicity = 256 min = 0
lowerMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 1
DcmDsdServiceRole: DcmDsdServiceUsed:
EcucIntegerParamDef EcucBooleanParamDef
min = 0 upperMultiplicity = 1
max = 4294967295 lowerMultiplicity = 1
lowerMultiplicity = 0 defaultValue = true
upperMultiplicity = 1
+parameter
+parameter
+parameter
+subContainer
DcmDsdService: EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
+parameter +parameter
DcmDspSessionLevel: DcmDspSecurityLevel:
EcucIntegerParamDef EcucIntegerParamDef
+container DcmDsdServiceRequestSupplierNotification:
+subContainer EcucParamConfContainerDef
DcmConfigSet: EcucParamConfContainerDef +subContainer
requiresIndex = true
upperMultiplicity = *
lowerMultiplicity = 0
10.2.3.2 DcmDsdService
The possible service identifiers are defined in ISO 14229-1 and ISO
15031-5.
Multiplicity 1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDsdSubService 0..* This container contains the configuration (DSD
parameters) for a subservice of a service. Only those
services may have subservices, which have the
DcmDsdSidTabSubfuncAvail configured as TRUE.
10.2.3.3 DcmDsdServiceRequestManufacturerNotification
Attributes:
requiresIndex=true
Configuration Parameters
No Included Containers
10.2.3.4 DcmDsdServiceRequestSupplierNotification
Attributes:
requiresIndex=true
Configuration Parameters
No Included Containers
10.2.3.5 DcmDsdServiceTable
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDsdService 1..* This container contains the configuration (DSD
parameters) for a Service.
Note : The Dcm internal interaction with the DSP is implementation specific and there-
fore not explicitly configured.
10.2.3.6 DcmDsdSubService
The possible subservice identifiers are defined in ISO 14229-1 and ISO
15031-5.
Multiplicity 1
Type EcucIntegerParamDef
Range 0 .. 127
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
DcmDsdServiceTable:
EcucParamConfContainerDef
upperMultiplicity = 256
lowerMultiplicity = 1
DcmDsdSubServiceRole:
+subContainer EcucIntegerParamDef
min = 0
DcmDsdService: max = 4294967295
EcucParamConfContainerDef lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
lowerMultiplicity = 1
+parameter
+subContainer
DcmDsdSubService: EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+parameter +parameter
DcmDspSessionLevel: DcmDspSecurityLevel:
EcucIntegerParamDef EcucIntegerParamDef
10.2.4 DcmDsl
10.2.4.1 DcmDsl
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDslBuffer 1..256 This container contains the configuration of a diagnostic
buffer.
DcmDslCallbackDCM 0..* Each DcmDslCallbackDCMRequestService container
RequestService defines an R-Port with the
CallbackDCMRequestServices interface which the Dcm
uses to ask permission for protocol changes from the
application software. The R-Port has the name
CallbackDCMRequestServices_<SWC> where <SWC>
is the name of this container.
DcmDslDiagResp 1 This container contains the configuration of the
automatic requestCorrectlyReceivedResponsePending
response management in the Dcm.
DcmDslProtocol 1 This container contains the configurations of the
diagnostic protocols used in Dcm.
DcmDslProtocol: DcmDslBuffer:
EcucParamConfContainerDef EcucParamConfContainerDef
+subContainer +subContainer
upperMultiplicity = 1 upperMultiplicity = 256
lowerMultiplicity = 1 lowerMultiplicity = 1
DcmDslDiagResp:
EcucParamConfContainerDef
+subContainer
upperMultiplicity = 1
lowerMultiplicity = 1
DcmDslCallbackDCMRequestService:
EcucParamConfContainerDef
+subContainer
lowerMultiplicity = 0
upperMultiplicity = *
10.2.4.2 DcmDslBuffer
For a linear buffer the size shall be as large as the longest diagnostic
message (request or response).
No Included Containers
Dcm: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
10.2.4.3 DcmDslCallbackDCMRequestService
No Included Containers
10.2.4.4 DcmDslDiagResp
No Included Containers
10.2.4.5 DcmDslProtocol
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDslProtocolRow 1..* This container contains the configuration of one
particular diagnostic protocol used in Dcm.
+subContainer
DcmTimStrP2StarServerAdjust: DcmDspProtocolEcuAddr: DcmDslProtocolMaximumResponseSize:
EcucFloatParamDef EcucIntegerParamDef EcucIntegerParamDef
DcmDslProtocolRow: EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
+parameter
DemClient:
EcucParamConfContainerDef DcmDsdServiceTable:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 255 upperMultiplicity = 256
lowerMultiplicity = 1
+parameter
DcmDsdSidTabId:
EcucIntegerParamDef
max = 255
min = 0
upperMultiplicity = 1
lowerMultiplicity = 1
10.2.4.6 DcmDslProtocolRow
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDslConnection 1..* This container contains the configuration of a
communication channel for one particular protocol.
DcmDslProtocolType:
+literal DCM_OBD_ON_CAN:
EcucEnumerationParamDef
EcucEnumerationLiteralDef
lowerMultiplicity = 1
upperMultiplicity = 1
+literal DCM_UDS_ON_CAN:
symbolicNameValue = true
EcucEnumerationLiteralDef
+literal DCM_UDS_ON_FLEXRAY:
EcucEnumerationLiteralDef
+literal DCM_ROE_ON_CAN:
EcucEnumerationLiteralDef
+literal DCM_ROE_ON_FLEXRAY:
EcucEnumerationLiteralDef
+literal DCM_PERIODICTRANS_ON_CAN:
EcucEnumerationLiteralDef
+literal DCM_PERIODICTRANS_ON_FLEXRAY:
EcucEnumerationLiteralDef
+literal DCM_OBD_ON_FLEXRAY:
EcucEnumerationLiteralDef
+literal DCM_ROE_ON_IP:
EcucEnumerationLiteralDef
+literal DCM_OBD_ON_IP:
EcucEnumerationLiteralDef
+literal DCM_PERIODICTRANS_ON_IP:
EcucEnumerationLiteralDef
+literal DCM_UDS_ON_IP:
EcucEnumerationLiteralDef
+literal DCM_UDS_ON_LIN:
EcucEnumerationLiteralDef
DCM_SUPPLIER_1:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_2:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_3:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_4:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_5:
+literal EcucEnumerationLiteralDef DCM_SUPPLIER_6:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_7:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_8:
+literal EcucEnumerationLiteralDef DCM_SUPPLIER_9:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_10:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_11:
+literal EcucEnumerationLiteralDef DCM_SUPPLIER_12:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_13:
+literal EcucEnumerationLiteralDef
DCM_SUPPLIER_14:
+literal EcucEnumerationLiteralDef DCM_SUPPLIER_15:
EcucEnumerationLiteralDef
+literal
10.2.4.7 DcmDslConnection
Container Choices
Container Name Multiplicity Scope / Dependency
DcmDslMainConnection 0..1 This container contains the configuration for a main
connection of a diagnostic protocol. Additionally it may
contain references to ROE and Periodic connections if
the protocol type or protocol transmission type needs
them.
DcmDslPeriodic 0..1 This container contains the configuration of a periodic
Transmission transmission connection.
DcmDslResponseOn 0..1 This container contains the configuration of a
Event ResponseOnEvent connection.
Dcm: EcucModuleDef
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDsl:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+subContainer
DcmDslProtocol:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 1
+subContainer
DcmDslProtocolRow:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1
+subContainer
DcmDslConnection: EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
10.2.4.8 DcmDslMainConnection
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDslProtocolRx 1..* This container contains the configuration parameters of
a reception channel in a diagnostic connection.
DcmDslConnection:
EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
+choice
DcmDslMainConnection: EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+reference
+destination +choice +destination
DcmDslProtocolTxPduRef:
EcucReferenceDef DcmDslResponseOnEvent: DcmDslPeriodicTransmission: +choice
+subContainer
+reference
DcmDslProtocolRx: EcucParamConfContainerDef
upperMultiplicity = * DcmDslProtocolComMChannelRef:
lowerMultiplicity = 1 EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
+reference requiresSymbolicNameValue = true
+parameter
+parameter
DcmDslProtocolRxPduRef: DcmDslProtocolRxPduId: +destination
EcucReferenceDef EcucIntegerParamDef DcmDslProtocolRxAddrType:
EcucEnumerationParamDef
ComMChannel:
lowerMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 1 EcucParamConfContainerDef
upperMultiplicity = 1 upperMultiplicity = 1
min = 0 upperMultiplicity = 1
lowerMultiplicity = 1
symbolicNameValue = true upperMultiplicity = 256
max = 65535
+destination
+literal +literal
Pdu: EcucParamConfContainerDef
DCM_PHYSICAL_TYPE: DCM_FUNCTIONAL_TYPE:
+destination lowerMultiplicity = 0
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
upperMultiplicity = *
10.2.4.9 DcmDslProtocolRx
The PDU referenced by this reception channel can consume meta data
items of type SOURCE_ADDRESS_16 and TARGET_ADDRESS_16.
Configuration Parameters
No Included Containers
10.2.4.10 DcmDslProtocolTx
No Included Containers
10.2.4.11 DcmDslPeriodicTransmission
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDslPeriodic 0..255 This container contains the configuration of a
Connection transmission channel for a periodic transmission
connection.
DcmDslConnection:
EcucChoiceContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
+choice
DcmDslPeriodicTransmission: DcmDslPeriodicConnection:
EcucParamConfContainerDef EcucParamConfContainerDef DcmDslPeriodicTxConfirmationPduId:
EcucIntegerParamDef
lowerMultiplicity = 0 requiresIndex = true
upperMultiplicity = 1 lowerMultiplicity = 0 +parameter min = 0
upperMultiplicity = 255 max = 65535
symbolicNameValue = true
lowerMultiplicity = 1
upperMultiplicity = 1
+subContainer
DcmDslPeriodicTxPduRef:
+reference EcucReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
+destination
Pdu: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.4.12 DcmDslPeriodicConnection
Attributes:
requiresIndex=true
Configuration Parameters
No Included Containers
10.2.4.13 DcmDslResponseOnEvent
No Included Containers
DcmDslResponseOnEvent: DcmDslRoeTxConfirmationPduId:
EcucParamConfContainerDef EcucIntegerParamDef
DcmDslRoeTxPduRef:
+reference
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
Pdu: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.5 DcmDsp
true: Dcm module shall check the session, security and mode
dependencies per source DIDs with a ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF
false: Dcm module shall not check the session, security and mode
dependencies per source DIDs with a ReadDataByIdentifier (0x22)
with DID in the range 0xF200 to 0xF3FF
Multiplicity 0..1
Type EcucBooleanParamDef
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspAuthentication 0..1 This container contains the configuration for the UDS
service Authentication (0x29).
DcmDspClearDTC 0..1 This container contains the configuration for the Clear
DTC service.
DcmDspComControl 0..1 Provides the configuration of the CommunicationControl
mechanism.
DcmDspCommon 0..* This container contains the configuration (parameters)
Authorization for the common Authorization being equal for several
services / sub-services.
DcmDspControlDTC 0..1 Provide the configuration of the ControlDTCSetting
Setting mechanism.
DcmDspData 0..* This container contains the configuration (parameters)
of a Data belonging to a DID
DcmDspDataInfo 0..* This container contains the configuration (parameters)
of one Data.
DcmDspDid 0..* This container contains the configuration (parameters)
of the DID.
DcmDspDidInfo 0..* This container contains the configuration (parameters)
of the DID’s Info
DcmDspDidRange 0..* This container defines the DID Range
DcmDspEcuReset 0..1 This container contains the configuration for
DcmDspEcuReset service
DcmDspMemory 0..1 This container contains the configuration of the memory
access.
DcmDspMemoryTransfer 0..1 This container contains the configuration of the memory
transfer.
DcmDspPeriodic 0..1 This container contains the configuration (parameters)
Transmission for Periodic Transmission Scheduler.
DcmDspPid 0..* This container defines the availability of a PID to the
DCM.
DcmDspReadDTC 0..1 This container contains the configuration for the UDS
Information service ReadDTCInformation (0x19).
DcmDspRequestControl 0..* This container contains the configuration (parameters)
of the "Request control of on-board system, test or
component" service (Service $08). The DCM will
request the control using an R-Port requiring a
PortInteface RequestControlServices_{Tid}. The R-Port
is named RequestControlServices_{Tid} where {Tid} is
the name of the container DcmDspRequestControl.
DcmDspRequestFile 0..1 This container contains the configuration for
Transfer RequestFileTransfer. This container only exists if
RequestFileTransfer is configured.
DcmDspRoe 0..1 Provide the configuration of the ResponseOnEvent
mechanism.
DcmDspPowerDownTime:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 255
DcmDspMaxDidToRead:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
min = 1
max = 65535
DcmDspRoutine:
+subContainer EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspRequestFileTransfer:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDid: EcucParamConfContainerDef
+subContainer
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspDidInfo:
+subContainer EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspSession:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspSecurity:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspPid: EcucParamConfContainerDef
+subContainer
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspVehInfo:
+subContainer EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer DcmDspRequestControl:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspRoe:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspComControl:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidRange:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
DcmDspDDDIDcheckPerSourceDID:
+parameter EcucBooleanParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
+literal
BIG_ENDIAN:
EcucEnumerationLiteralDef
DcmDspClearDTC:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDspEnableObdMirror:
EcucBooleanParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
defaultValue = false
10.2.5.1 DcmDspReadDTCInformation
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspReadDTC 0..255 This container contains the configuration for user
InformationUserDefined defined fault memories in DcmDspReadDTCInformation.
FaultMemory
10.2.5.2 DcmDspReadDTCInformationUserDefinedFaultMemory
Name DcmDspReadDTCInformationUserDefinedFaultMemoryId
[ECUC_Dcm_01149]
Parent Container DcmDspReadDTCInformationUserDefinedFaultMemory
Description Identifier used by external tester to identify the User defined event
Memory.
Multiplicity 1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
Name DcmDspReadDTCInformationUserDefinedFaultMemoryRole
[ECUC_Dcm_01150]
Parent Container DcmDspReadDTCInformationUserDefinedFaultMemory
Description Bitfield were each bit represents one dedicated role. A user defined
fault memory is granted access if the bit value is 1. If a bit value is 0, it
is not allowed for that role.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 4294967295
Default Value
Post-Build Variant true
Multiplicity
Post-Build Variant true
Value
No Included Containers
10.2.5.3 DcmDspAuthentication
Default Value
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
Name DcmDspAuthenticationWhiteListMemorySelectionMaxSize
[ECUC_Dcm_01157]
Parent Container DcmDspAuthentication
Description Defines the maximum size in bytes for the white list element within a
certificate.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 255
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
Name DcmDspAuthenticationWhiteListServicesMaxSize
[ECUC_Dcm_01154]
Parent Container DcmDspAuthentication
Description Defines the maximum size in bytes for the white list element within a
certificate.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 1 .. 255
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: ECU
Name DcmDspAuthenticationGeneralNRCModeRuleRef
[ECUC_Dcm_01158]
Parent Container DcmDspAuthentication
Description Mode rule that defines if the general NRC shall be send for all failures
due to invalid certificate or content.
Multiplicity 0..1
Type Reference to DcmModeRule
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
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspAuthentication 0..* This container contains the authentication configuration
Connection use for a dsl connection.
10.2.5.4 DcmDspAuthenticationConnection
Name DcmDspAuthenticationCertificatePublicKeyStoreJobRef
[ECUC_Dcm_01176]
Parent Container DcmDspAuthenticationConnection
Description Reference to a CsmJob used to store the public key within the Csm.
Multiplicity 1
Type Symbolic name reference to CsmJob
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
Name DcmDspAuthenticationClientChallengeSignJobRef
[ECUC_Dcm_01174]
Parent Container DcmDspAuthenticationConnection
Description Reference to a job used to sign the client challenge.
Multiplicity 1
Type Symbolic name reference to CsmJob
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
Name DcmDspAuthenticationConnectionMainConnectionRef
[ECUC_Dcm_01163]
Parent Container DcmDspAuthenticationConnection
Description Reference to the dsl diagnostic connection that uses this
authentication configuration.
Multiplicity 1
Type Reference to DcmDslMainConnection
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
Name DcmDspAuthenticationECUCertificateKeyElementRef
[ECUC_Dcm_01178]
Parent Container DcmDspAuthenticationConnection
Description Reference to a CryptoKeyElement used as server certificate during
bi-directional authentication.
Multiplicity 0..1
Type Symbolic name reference to CryptoKeyElement
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
Name DcmDspAuthenticationTargetIdentificationModeRuleRef
[ECUC_Dcm_01172]
Parent Container DcmDspAuthenticationConnection
Description Reference to a mode rule that is used to evaluate the target
identification.
Multiplicity 0..1
Type Reference to DcmModeRule
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Name DcmDspAuthenticationVerifyProofOfOwnerShipClientJobRef
[ECUC_Dcm_01175]
Parent Container DcmDspAuthenticationConnection
Description Reference to a CsmJob used to verify the proof of ownership client in
the Csm.
Multiplicity 1
Type Symbolic name reference to CsmJob
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
Name DcmDspAuthenticationWhiteListMemorySelectionElementRef
[ECUC_Dcm_01171]
Parent Container DcmDspAuthenticationConnection
Description Reference to a certificate data element with the white list for user
defined memory selection in the certificate.
Multiplicity 0..1
Type Symbolic name reference to KeyMCertificateElement
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
Name DcmDspAuthenticationWhiteListServicesElementRef
[ECUC_Dcm_01168]
Parent Container DcmDspAuthenticationConnection
Description Reference to a certificate data element with the white list in the
certificate.
Multiplicity 1
Type Symbolic name reference to KeyMCertificateElement
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.5.5.1 DcmDspComControl
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspComControlAll 0..* Collection of ComM channels which shall be controlled if
Channel all networks are addressed.
DcmDspComControl 0..1 Provide the configuration of the Communication control.
Setting
DcmDspComControl 0..* Assigns subnet number to ComM channel which will be
SpecificChannel controlled.
DcmDspComControlSub 0..65535 This container gives information about the node
Node identification number and the ComM channel used to
address a sub-network.
DcmDsp:
EcucParamConfContainerDef
DcmDspAllComMChannelRef: EcucReferenceDef
lowerMultiplicity = 0
DcmDspComControlAllChannel: lowerMultiplicity = 1
upperMultiplicity = 1 +reference
EcucParamConfContainerDef upperMultiplicity = 1
requiresSymbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = *
+subContainer
DcmDspComControl:
EcucParamConfContainerDef +subContainer +destination
lowerMultiplicity = 0 ComMChannel:
upperMultiplicity = 1 EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 256
+parameter
DcmDspComControlAllChannelUsed:
+destination
EcucBooleanParamDef
upperMultiplicity = 1 +parameter
lowerMultiplicity = 1
defaultValue = true ComMChannelId:
EcucIntegerParamDef
symbolicNameValue = true
max = 255
min = 0
DcmDspComControlSpecificChannel: DcmDspSpecificComMChannelRef:
EcucParamConfContainerDef EcucReferenceDef
+reference
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
requiresSymbolicNameValue = true
DcmDspSubnetNumber:
+subContainer EcucIntegerParamDef
+parameter
min = 1
max = 14
lowerMultiplicity = 1
upperMultiplicity = 1
+parameter
DcmDspComControlSpecificChannelUsed:
EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1
defaultValue = true
DcmDspComControlSetting:
EcucParamConfContainerDef
+subContainer
lowerMultiplicity = 0
upperMultiplicity = 1
+reference
DcmDspComControlCommunicationReEnableModeRuleRef: DcmModeRule:
EcucReferenceDef EcucParamConfContainerDef
+destination
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
10.2.5.5.2 DcmDspComControlAllChannel
Configuration Parameters
No Included Containers
10.2.5.5.3 DcmDspComControlSetting
Name DcmDspComControlCommunicationReEnableModeRuleRef
[ECUC_Dcm_00944]
Parent Container DcmDspComControlSetting
Description Reference to DcmModeRule Mode rule which controls re-enabling of
communication by DCM. [ref. SWS_Dcm_00753]
Multiplicity 0..1
Type Reference to DcmModeRule
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X VARIANT-PRE-COMPILE,
Configuration Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
10.2.5.5.4 DcmDspComControlSpecificChannel
No Included Containers
10.2.5.5.5 DcmDspComControlSubNode
No Included Containers
DcmDspComControl:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspComControlSubNodeId:
EcucIntegerParamDef
+parameter
max = 65535
min = 1
upperMultiplicity = 1
lowerMultiplicity = 1
DcmDspComControlSubNodeUsed:
EcucBooleanParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
defaultValue = true
10.2.5.6 DcmDspCommonAuthorization
No Included Containers
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspCommonAuthorizationSessionRef: DcmDspSessionRow:
EcucReferenceDef EcucParamConfContainerDef
+reference +destination
lowerMultiplicity = 0 upperMultiplicity = 31
upperMultiplicity = * lowerMultiplicity = 0
DcmDspCommonAuthorizationModeRuleRef: DcmModeRule:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
10.2.5.7 DIDs
10.2.5.7.1 DcmDspDid
Attributes:
requiresIndex=true
Multiplicity 0..*
Type Reference to DcmDspDid
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X VARIANT-PRE-COMPILE,
Configuration Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspDidSignal 0..* This container defines the reference to 1 DcmDspData
container and position relevant for this DID.
DcmDspDidSupportInfo 0..1 This container defines the support information to declare
the usability of the data bytes within the DIDs
DcmDsp:
EcucParamConfContainerDef
DcmDspData:
lowerMultiplicity = 0 EcucParamConfContainerDef
upperMultiplicity = 1 +subContainer
lowerMultiplicity = 0
upperMultiplicity = *
+destination
DcmDspDidDataRef:
EcucReferenceDef USE_ATOMIC_SENDER_RECEIVER_INTERFACE:
EcucEnumerationLiteralDef
lowerMultiplicity = 1
+reference upperMultiplicity = 1 +literal
DcmDspDidSignal:
EcucParamConfContainerDef USE_ATOMIC_NV_DATA_INTERFACE:
+parameter DcmDspDidByteOffset: EcucEnumerationLiteralDef
lowerMultiplicity = 0 EcucIntegerParamDef
upperMultiplicity = * +literal
lowerMultiplicity = 1
upperMultiplicity = 1
+subContainer USE_ATOMIC_BNDM:
+subContainer min = 0
max = 65535 EcucEnumerationLiteralDef
DcmDspDid:
EcucParamConfContainerDef +subContainer +literal
upperMultiplicity = * DcmDspDidInfoRef: DcmDspDidInfo:
lowerMultiplicity = 0 EcucReferenceDef +destination EcucParamConfContainerDef
+reference
lowerMultiplicity = 1 upperMultiplicity = *
upperMultiplicity = 1 lowerMultiplicity = 0
+destination DcmDspDidRef:
+literal
EcucReferenceDef
lowerMultiplicity = 0 USE_DATA_ELEMENT_SPECIFIC_INTERFACES:
+reference upperMultiplicity = * EcucEnumerationLiteralDef
requiresIndex = true +literal
USE_ATOMIC_SENDER_RECEIVER_INTERFACE_AS_SERVICE:
DcmDspDidUsed: EcucEnumerationLiteralDef
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 1 DcmDspDidSupportInfoPos:
EcucIntegerParamDef
min = 0
DcmDspDidSupportInfo: +parameter max = 255
EcucParamConfContainerDef lowerMultiplicity = 1 DcmDspDidSupportInfoLen:
+subContainer upperMultiplicity = 1 EcucIntegerParamDef
lowerMultiplicity = 0
upperMultiplicity = 1 min = 0
max = 255
+parameter lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspDidSize:
EcucIntegerParamDef
+parameter BndMBlockIdentifier: EcucIntegerParamDef
min = 0
max = 65535 min = 0
lowerMultiplicity = 0 max = 65535
upperMultiplicity = 1 symbolicNameValue = true
+parameter
DcmDspDidBndMBlockIdRef:
EcucReferenceDef BndMBlockDescriptor:
+destination EcucParamConfContainerDef
+reference lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
requiresSymbolicNameValue = true upperMultiplicity = *
10.2.5.7.2 DcmDspDidInfo
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspDidControl 0..1 This container contains the configuration (parameters)
of the DID control.
DcmDspDidRead 0..1 This container contains the configuration (parameters)
of the DID read.
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspDidInfo: DcmDspDidRead:
EcucParamConfContainerDef EcucParamConfContainerDef
+subContainer
upperMultiplicity = * upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
DcmDspDidWrite:
EcucParamConfContainerDef
+subContainer
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDspDidControl:
EcucParamConfContainerDef
+subContainer
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDspDidDynamicallyDefined:
EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
DcmDspDDDIDMaxElements:
EcucIntegerParamDef
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
min = 1
max = 255
10.2.5.7.3 DcmDspDidRead
No Included Containers
DcmDspDidInfo:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspDidReadModeRuleRef: DcmModeRule:
EcucReferenceDef EcucParamConfContainerDef
+reference +destination
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
DcmDspDidReadRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.7.4 DcmDspDidSignal
No Included Containers
10.2.5.7.5 DcmDspDidSupportInfo
No Included Containers
10.2.5.7.6 DcmDspDidRange
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
DcmDspDidRange: EcucParamConfContainerDef DcmDspDidRangeIdentifierLowerLimit:
+parameter EcucIntegerParamDef
lowerMultiplicity = 0
upperMultiplicity = * min = 0
max = 65535
DcmDspDidRangeIdentifierUpperLimit:
+parameter EcucIntegerParamDef
min = 0
max = 65535
DcmDspDidRangeMaxDataLength:
+parameter EcucIntegerParamDef
min = 0
max = 65535
+parameter DcmDspDidRangeHasGaps:
EcucBooleanParamDef
+parameter DcmDspDidRangeUsePort:
EcucBooleanParamDef
DcmDspDidRangeIsDidAvailableFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidRangeReadDataLengthFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidRangeReadDidFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidRangeWriteDidFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidRangeInfoRef: DcmDspDidInfo:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
10.2.5.7.7 DcmDspDidWrite
No Included Containers
DcmDspDidInfo:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspDidWriteModeRuleRef: DcmModeRule:
EcucReferenceDef EcucParamConfContainerDef
+reference +destination
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
DcmDspDidWriteRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.8 DcmDspControlDTCSetting
Name DcmDspControlDTCSettingReEnableModeRuleRef
[ECUC_Dcm_00936]
Parent Container DcmDspControlDTCSetting
Description Reference to DcmModeRule
No Included Containers
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmSupportDTCSettingControlOptionRecord:
+parameter EcucBooleanParamDef
upperMultiplicity = 1
lowerMultiplicity = 0
defaultValue = false
10.2.5.9.1 DcmDspData
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspDiagnosis 0..1 This container contains the configuration (parameters)
Scaling of an alternative Diagnosis Representation. Out if this
the scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
DcmDspDidDataSupport 0..1 This container defines the supported information.
Info
DcmDspExternalSRData 0..1 This container defines the source of data in a provided
ElementClass port which shall be read respectively the target of data in
a required port which shall be written.
DcmDspDataResetToDefaultFnc:
+parameter EcucFunctionNameDef
DcmDspDataWriteFnc:
lowerMultiplicity = 0 EcucFunctionNameDef
upperMultiplicity = 1
lowerMultiplicity = 0
+parameter upperMultiplicity = 1
DcmDspDataByteSize:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1 DcmDspDataReadFnc:
min = 0 EcucFunctionNameDef
max = 65535 A
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDataReadDataLengthFnc:
+parameter EcucFunctionNameDef
DcmDspDataFreezeCurrentStateFnc:
lowerMultiplicity = 0 EcucFunctionNameDef
upperMultiplicity = 1
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDataGetScalingInfoFnc:
+parameter EcucFunctionNameDef
DcmDspDataEcuSignal:
lowerMultiplicity = 0 EcucFunctionNameDef
upperMultiplicity = 1
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDataConditionCheckReadFncUsed:
+parameter EcucBooleanParamDef DcmDspDataReadEcuSignal:
EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0
+parameter
upperMultiplicity = 1
DcmDspDidDataSupportInfo: DcmDspDidDataSupportInfoBit:
+subContainer EcucParamConfContainerDef +parameter EcucIntegerParamDef
lowerMultiplicity = 0 min = 0
upperMultiplicity = 1 max = 255
lowerMultiplicity = 1
upperMultiplicity = 1
+reference
DcmDspDidSupportInfo:
DcmDspDidDataSupportInfoRef: EcucParamConfContainerDef
EcucReferenceDef +destination
lowerMultiplicity = 0
lowerMultiplicity = 1 upperMultiplicity = 1
upperMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1 +literal
USE_DATA_ASYNCH_CLIENT_SERVER:
EcucEnumerationLiteralDef
+literal
USE_DATA_SENDER_RECEIVER:
EcucEnumerationLiteralDef
+literal
USE_DATA_SENDER_RECEIVER_AS_SERVICE:
EcucEnumerationLiteralDef
+literal
USE_DATA_SYNCH_FNC:
EcucEnumerationLiteralDef
+parameter
+literal
USE_BLOCK_ID:
EcucEnumerationLiteralDef
+literal
USE_ECU_SIGNAL:
EcucEnumerationLiteralDef
+literal USE_DATA_ASYNCH_FNC:
EcucEnumerationLiteralDef
+literal USE_DATA_ASYNCH_FNC_ERROR:
EcucEnumerationLiteralDef
+literal USE_DATA_ASYNCH_CLIENT_SERVER_ERROR:
EcucEnumerationLiteralDef
BOOLEAN:
+literal EcucEnumerationLiteralDef
DcmDspDataType:
EcucEnumerationParamDef +literal UINT8:
EcucEnumerationLiteralDef
lowerMultiplicity = 1
upperMultiplicity = 1 +literal SINT8:
EcucEnumerationLiteralDef
+literal UINT16:
EcucEnumerationLiteralDef
+literal SINT16:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+literal SINT16_N:
EcucEnumerationLiteralDef
UINT32_N:
+literal EcucEnumerationLiteralDef
+literal SINT32_N:
EcucEnumerationLiteralDef
UINT8_DYN:
+literal EcucEnumerationLiteralDef
+literal FLOAT:
EcucEnumerationLiteralDef
FLOAT_N:
+literal EcucEnumerationLiteralDef
DcmDspData: lowerMultiplicity = 1
upperMultiplicity = 1 +literal UINT8:
EcucParamConfContainerDef
EcucEnumerationLiteralDef
lowerMultiplicity = 0
+literal SINT8:
upperMultiplicity = *
EcucEnumerationLiteralDef
+literal UINT16:
+parameter EcucEnumerationLiteralDef
+literal SINT16:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
DcmDspDataByteSize:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
DcmDspDataEndianness: +literal LITTLE_ENDIAN: max = 65535 A
EcucEnumerationParamDef EcucEnumerationLiteralDef
lowerMultiplicity = 0
+parameter upperMultiplicity = 1 +literal OPAQUE:
EcucEnumerationLiteralDef
+literal
BIG_ENDIAN:
EcucEnumerationLiteralDef DcmDspOdxDataDescription:
EcucAddInfoParamDef
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
DcmDataElement: EcucForeignReferenceDef
DcmDspAlternativeDataInterface:
EcucParamConfContainerDef +reference lowerMultiplicity = 1
+subContainer upperMultiplicity = 1
lowerMultiplicity = 0 destinationType = VARIABLE-DATA-PROTOTYPE
+choice
DcmDspDiagnosisScaling: upperMultiplicity = 1
EcucChoiceContainerDef
DcmDspDiagnosisRepresentationDataValue:
EcucIntegerParamDef
DcmDspDiagnosticDataElementRef:
EcucForeignReferenceDef lowerMultiplicity = 1
upperMultiplicity = 1 A
lowerMultiplicity = 1
upperMultiplicity = 1
destinationType = DIAGNOSTIC-DATA-ELEMENT +parameter
+reference
DcmDspAlternativeDataType: DcmDspTextTableMapping:
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
+choice
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = *
+choice
+reference
DcmDspAlternativeDiagnosticDataElement:
EcucParamConfContainerDef
DcmApplicationDataType:
lowerMultiplicity = 0 EcucForeignReferenceDef
upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
destinationType = APPLICATION-DATA-TYPE
DcmDspData: DcmDspExternalSRDataElementClass:
EcucParamConfContainerDef EcucChoiceContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
+subContainer
DcmSubElementInDataElementInstance:
+choice EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+choice +choice
DcmDataElementInstance: DcmSubElementInImplDataElementInstance:
EcucParamConfContainerDef EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 1
+reference
DcmDataElementInstanceRef: EcucInstanceReferenceDef
lowerMultiplicity = 1
upperMultiplicity = 1
destinationContext = ROOT-SW-COMPOSITION-PROTOTYPE SW-COMPONENT-PROTOTYPE PORT-PROTOTYPE
destinationType = AUTOSAR-DATA-PROTOTYPE
+reference
DcmSubElementInImplDataElementInstanceRef: EcucInstanceReferenceDef
+reference
DcmSubElementInDataElementInstanceRef: EcucInstanceReferenceDef
10.2.5.9.2 DcmDspDiagnosisScaling
Container Choices
Container Name Multiplicity Scope / Dependency
DcmDspAlternativeData 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.5.9.3 DcmDspArgumentScaling
Container Choices
Container Name Multiplicity Scope / Dependency
DcmDspAlternative 0..1 This container contains the configuration (parameters)
ArgumentData of an alternative Diagnosis Representation by the
means of a ArgumentDataPrototype.
DcmDspAlternativeData 0..1 This container contains the configuration (parameters)
Type of an alternative Diagnosis Representation by the
means of an ApplicationDataType.
DcmDspStartRoutineInSignal: DcmDspArgumentScaling:
EcucParamConfContainerDef EcucChoiceContainerDef
+subContainer
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 1 upperMultiplicity = 1
requiresIndex = true
DcmDspStartRoutineOutSignal: DcmDspAlternativeArgumentData:
EcucParamConfContainerDef EcucParamConfContainerDef
+choice
+subContainer
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 1 upperMultiplicity = 1
requiresIndex = true
DcmDspStopRoutineInSignal: +reference
EcucParamConfContainerDef
+subContainer DcmDataElement: EcucForeignReferenceDef
upperMultiplicity = *
lowerMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
requiresIndex = true
destinationType = ARGUMENT-DATA-PROTOTYPE
DcmDspStopRoutineOutSignal:
EcucParamConfContainerDef DcmDspAlternativeDataType:
+subContainer
+choice EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 1 lowerMultiplicity = 0
requiresIndex = true upperMultiplicity = 1
DcmDspRequestRoutineResultsInSignal: DcmDspAlternativeDiagnosticDataElement:
EcucParamConfContainerDef EcucParamConfContainerDef
+subContainer +choice
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 1 upperMultiplicity = 1
requiresIndex = true
DcmDspRequestRoutineResultsOutSignal:
EcucParamConfContainerDef +reference
+subContainer
upperMultiplicity = * DcmDspDiagnosticDataElementRef:
lowerMultiplicity = 1 EcucForeignReferenceDef
requiresIndex = true
lowerMultiplicity = 1
upperMultiplicity = 1
destinationType = DIAGNOSTIC-DATA-ELEMENT
10.2.5.9.4 DcmDspAlternativeArgumentData
No Included Containers
10.2.5.9.5 DcmDspTextTableMapping
No Included Containers
10.2.5.9.6 DcmDspAlternativeDataInterface
No Included Containers
10.2.5.9.7 DcmDspAlternativeDataType
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspTextTable 0..* The purpose of the DcmDspTextTableMapping is to
Mapping associate a texttable value defined in the context of the
Dcm 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.5.9.8 DcmDspAlternativeDiagnosticDataElement
No Included Containers
10.2.5.9.9 DcmDataElementInstance
No Included Containers
10.2.5.9.10 DcmDspExternalSRDataElementClass
Container Choices
Container Name Multiplicity Scope / Dependency
DcmDataElement 0..1 Instance Reference to the primitive data in a port where
Instance the data element is typed with an
ApplicationPrimitveDataType or an
ImplementationDataType.
10.2.5.9.11 DcmSubElementInDataElementInstance
Note: One or more class attributes are too long to display. Please refer
to diagram INTERNAL_DcmDspSRData for the class attributes.
Multiplicity 1
Type Instance reference to APPLICATION-COMPOSITE-ELEMENT-DATA-
PROTOTYPE context: ROOT-SW-COMPOSITION-PROTOTYPE SW-
COMPONENT-PROTOTYPE PORT-PROTOTYPE AUTOSAR-DATA-P
ROTOTYPE APPLICATION-COMPOSITE-ELEMENT-DATA-PROTOT
YPE*
false
Post-Build Variant
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency
No Included Containers
10.2.5.9.12 DcmSubElementInImplDataElementInstance
Note: One or more class attributes are too long to display. Please refer
to diagram INTERNAL_DcmDspSRData for the class attributes.
Multiplicity 1
Type Instance reference to IMPLEMENTATION-DATA-TYPE-ELEMENT
context: ROOT-SW-COMPOSITION-PROTOTYPE SW-COMPONENT-
PROTOTYPE PORT-PROTOTYPE AUTOSAR-DATA-PROTOTYPE I
MPLEMENTATION-DATA-TYPE-ELEMENT*
false
Post-Build Variant
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency
No Included Containers
10.2.5.9.13 DcmDspDidDataSupportInfo
No Included Containers
10.2.5.9.14 DcmDspDataInfo
No Included Containers
DcmConfigSet:
EcucParamConfContainerDef
+subContainer
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspDataInfo: DcmDspDataScalingInfoSize:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
min = 0
max = 4294967295
10.2.5.10 DcmDspDidControl
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspDidControl 0..32 The shortname of the container value defines the
EnableMask symbol of the controlMask.
DcmDspDidInfo:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspDidControlSessionRef: DcmDspSessionRow:
EcucReferenceDef EcucParamConfContainerDef
+reference +destination
lowerMultiplicity = 0 upperMultiplicity = 31
upperMultiplicity = * lowerMultiplicity = 0
DcmDspDidResetToDefault:
EcucBooleanParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspDidFreezeCurrentState:
EcucBooleanParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1 DcmDspDidControlRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
DcmDspDidShortTermAdjustment: lowerMultiplicity = 0
+parameter EcucBooleanParamDef upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspDidControlMaskBitPosition: EcucIntegerParamDe
DcmDspDidControlEnableMask: lowerMultiplicity = 1
+subContainer EcucParamConfContainerDef upperMultiplicity = 1
+parameter min = 0
upperMultiplicity = 32 max = 31
lowerMultiplicity = 0
+literal DCM_CONTROLMASK_NO:
EcucEnumerationLiteralDef
DcmDspDidControlMaskSize: EcucIntegerParamDef
lowerMultiplicity = 0
upperMultiplicity = 1
min = 1
+parameter max = 4294967294
10.2.5.11 DcmDspDidControlEnableMask
No Included Containers
10.2.5.12.1 DcmDspEcuReset
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspEcuResetRow 1..* This container contains the configuration for each
DcmDspEcuReset subservice.
DcmDsp:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspEcuReset:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspEcuResetRow: DcmDspEcuResetId:
EcucParamConfContainerDef EcucIntegerParamDef
lowerMultiplicity = 1 +parameter
min = 0
upperMultiplicity = * max = 127
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.5.12.2 DcmDspEcuResetRow
No Included Containers
10.2.5.13 Memory
10.2.5.13.1 DcmDspMemory
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspAddressAnd 0..1 This container contains the configuration of the
LengthFormatIdentifier supported AddressAndLengthFormatIdentifiers for
memory access.
DcmDspMemoryIdInfo 1..* Provides the value of memory identifier used to select
the desired memory device
10.2.5.13.2 DcmDspMemoryTransfer
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspAddressAnd 0..1 This container contains the configuration of the
LengthFormatIdentifier supported AddressAndLengthFormatIdentifiers for
memory access.
DcmDspMemoryTransfer 1..* Provides the value of memory identifier used to select
IdInfo the desired memory device
10.2.5.13.3 DcmDspAddressAndLengthFormatIdentifier
Name DcmDspSupportedAddressAndLengthFormatIdentifier
[ECUC_Dcm_00964]
Parent Container DcmDspAddressAndLengthFormatIdentifier
Description This parameter defines the supported
AddressAndLengthFormatIdentifier of the request message.
Multiplicity 1..*
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Multiplicity
No Included Containers
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspMemory:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspAddressAndLengthFormatIdentifier:
EcucParamConfContainerDef
lowerMultiplicity = 0
DcmDspSupportedAddressAndLengthFormatIdentifier:
upperMultiplicity = 1
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = *
min = 0
max = 255 A
10.2.5.13.4 DcmDspMemoryIdInfo
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspReadMemory 0..* Provides a memory range allowed for reading via labels
RangeByLabelInfo (lower and higher address configured as strings).
DcmDspReadMemory 0..* Provides the range of memory address allowed for
RangeInfo reading
DcmDspWriteMemory 0..* Provides a memory range allowed for writing via labels
RangeByLabelInfo (lower and higher address configured as strings).
DcmDspWriteMemory 0..* Provides the range of memory address allowed for
RangeInfo writting.
DcmDsp:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspMemory:
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspMemoryIdInfo:
EcucParamConfContainerDef DcmDspMemoryIdValue: EcucIntegerParamDef
DcmDspReadMemoryRangeInfo:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
DcmDspWriteMemoryRangeInfo:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
DcmDspReadMemoryRangeByLabelInfo:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
DcmDspWriteMemoryRangeByLabelInfo:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = *
10.2.5.13.5 DcmDspMemoryTransferIdInfo
No Included Containers
10.2.5.13.6 DcmDspReadMemoryRangeByLabelInfo
Mode rule which controls read access on this memory address. If there
is no reference, no check of the mode rule shall be done.
Multiplicity 0..1
Type Reference to DcmModeRule
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X VARIANT-PRE-COMPILE,
Configuration Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: ECU
No Included Containers
10.2.5.13.7 DcmDspReadMemoryRangeInfo
Mode rule which controls read access on this memory address. If there
is no reference, no check of the mode rule shall be done.
Multiplicity 0..1
Type Reference to DcmModeRule
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
No Included Containers
10.2.5.13.8 DcmDspWriteMemoryRangeByLabelInfo
No Included Containers
DcmDspReadMemoryRangeByLabelLow:
DcmDsp: DcmDspReadMemoryRangeByLabelInfo: EcucStringParamDef
EcucParamConfContainerDef EcucParamConfContainerDef
+parameter lowerMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0 upperMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = * regularExpression = [a-zA-Z0-9_]([a-zA-Z0-9\._])*
A
+subContainer DcmDspReadMemoryRangeByLabelHigh:
EcucStringParamDef
DcmDspMemory: +parameter
lowerMultiplicity = 1
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0 regularExpression = [a-zA-Z0-9_]([a-zA-Z0-9\._])*
upperMultiplicity = 1 A
+subContainer DcmDspReadMemoryRangeSecurityLevelRef:
EcucReferenceDef
DcmDspMemoryIdInfo: +reference
EcucParamConfContainerDef lowerMultiplicity = 0
upperMultiplicity = *
lowerMultiplicity = 1
upperMultiplicity = * +subContainer
+reference DcmDspReadMemoryRangeModeRuleRef:
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+reference
DcmDspReadMemoryRangeSessionLevelRef:
EcucReferenceDef
DcmModeRule: +destination
lowerMultiplicity = 0
upperMultiplicity = * EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = *
+destination +destination
+destination
DcmDspSessionRow:
EcucParamConfContainerDef +destination DcmDspSecurityRow:
EcucParamConfContainerDef
upperMultiplicity = 31
lowerMultiplicity = 0 upperMultiplicity = 31
lowerMultiplicity = 0
+destination
DcmDspWriteMemoryRangeByLabelInfo: DcmDspWriteMemoryRangeSessionLevelRef:
EcucParamConfContainerDef EcucReferenceDef
+reference lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = *
+subContainer
DcmDspWriteMemoryRangeModeRuleRef:
EcucReferenceDef
+reference
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspWriteMemoryRangeSecurityLevelRef:
EcucReferenceDef
+reference
lowerMultiplicity = 0
upperMultiplicity = *
+parameter
DcmDspWriteMemoryRangeByLabelHigh:
DcmDspWriteMemoryRangeByLabelLow: +parameter EcucStringParamDef
EcucStringParamDef
lowerMultiplicity = 1
lowerMultiplicity = 1 upperMultiplicity = 1
upperMultiplicity = 1 regularExpression = [a-zA-Z0-9_]([a-zA-Z0-9\._])*
regularExpression = [a-zA-Z0-9_]([a-zA-Z0-9\._])*
A
A
10.2.5.13.9 DcmDspWriteMemoryRangeInfo
No Included Containers
DcmDspMemory:
EcucParamConfContainerDef DcmDsp: DcmDspReadMemoryRangeLow:
+subContainer EcucParamConfContainerDef EcucIntegerParamDef
lowerMultiplicity = 0
upperMultiplicity = 1 lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 +parameter upperMultiplicity = 1
min = 0
max = 4294967294 A
+subContainer
DcmDspMemoryIdInfo: DcmDspReadMemoryRangeHigh:
DcmDspReadMemoryRangeInfo: EcucIntegerParamDef
EcucParamConfContainerDef
EcucParamConfContainerDef
lowerMultiplicity = 1 lowerMultiplicity = 1
lowerMultiplicity = 0 +parameter upperMultiplicity = 1
upperMultiplicity = *
upperMultiplicity = * min = 0
max = 4294967294 A
+subContainer
DcmDspReadMemoryRangeSessionLevelRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = *
+reference
DcmDspReadMemoryRangeSecurityLevelRef:
EcucReferenceDef
+reference
lowerMultiplicity = 0
DcmDspReadMemoryRangeModeRuleRef: upperMultiplicity = *
EcucReferenceDef
lowerMultiplicity = 0
upperMultiplicity = 1
+destination
+destination
DcmDspSessionRow:
EcucParamConfContainerDef
DcmModeRule:
EcucParamConfContainerDef upperMultiplicity = 31
lowerMultiplicity = 0
lowerMultiplicity = 1 +destination
upperMultiplicity = *
+destination
+subContainer +destination
DcmDspWriteMemoryRangeInfo:
EcucParamConfContainerDef
DcmDspSecurityRow:
lowerMultiplicity = 0 EcucParamConfContainerDef
upperMultiplicity = * +destination
upperMultiplicity = 31
lowerMultiplicity = 0
DcmDspWriteMemoryRangeHigh:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 4294967294 A DcmDspWriteMemoryRangeModeRuleRef:
+reference EcucReferenceDef
lowerMultiplicity = 0
DcmDspWriteMemoryRangeLow: upperMultiplicity = 1
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1 DcmDspWriteMemoryRangeSecurityLevelRef:
min = 0 EcucReferenceDef
max = 4294967294 A +reference
lowerMultiplicity = 0
upperMultiplicity = *
DcmDspWriteMemoryRangeSessionLevelRef:
EcucReferenceDef
+reference
lowerMultiplicity = 0
upperMultiplicity = *
10.2.5.14 PIDs
10.2.5.14.1 DcmDspPid
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspPidData 1..* This container defines the parameter for a Signal in the
PID.
DcmDspPidSupportInfo 0..* This container defines the support information (typically
byte A) to declare the usability of the data bytes within
the so-called packeted PIDs (e.g. PID$68).
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPidUsed: EcucBooleanParamDef
upperMultiplicity = 1
+subContainer +parameter lowerMultiplicity = 1
DcmDspPid:
EcucParamConfContainerDef
lowerMultiplicity = 1
upperMultiplicity = 1
+parameter min = 0
max = 255
DcmDspPidSupportInfo: DcmDspPidSupportInfoPos:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
min = 0
max = 255
+subContainer
DcmDspPidSupportInfoLen:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 255
+destination
DcmDspPidDataSupportInfoRef:
EcucReferenceDef
+reference DcmDspPidDataSupportInfo:
lowerMultiplicity = 1 EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPidDataSupportInfoBit:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 255
+literal DCM_SERVICE_01_02:
EcucEnumerationLiteralDef
DcmDspPid: DcmDspPidDataSupportInfo:
EcucParamConfContainerDef EcucParamConfContainerDef
upperMultiplicity = * lowerMultiplicity = 0
lowerMultiplicity = 0 upperMultiplicity = 1
+subContainer
+subContainer
DcmDspPidDataDemRef:
DcmDspPidData: DcmDspPidService02: EcucReferenceDef
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef +reference
lowerMultiplicity = 0
lowerMultiplicity = 1 lowerMultiplicity = 0 upperMultiplicity = 1
upperMultiplicity = * upperMultiplicity = 1
+destination
DcmDspPidByteOffset: DemPidDataElement:
EcucIntegerParamDef EcucParamConfContainerDef
+parameter
min = 0 upperMultiplicity = 255
max = 255 lowerMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1 (from Dem)
+parameter DcmDspPidDataByteSize:
EcucIntegerParamDef
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspPidService01: DcmDspPidService01ExternalSRDataElementClass:
EcucParamConfContainerDef +subContainer EcucChoiceContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 1
DcmDspDiagnosisScaling: EcucChoiceContainerDef
+subContainer lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPidDataReadFnc: EcucFunctionNameDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
+literal USE_DATA_SYNCH_CLIENT_SERVER:
EcucEnumerationLiteralDef
+parameter
+literal USE_DATA_SENDER_RECEIVER:
EcucEnumerationLiteralDef
+literal USE_DATA_SYNCH_FNC:
EcucEnumerationLiteralDef
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 +parameter upperMultiplicity = 1
+literal OPAQUE: EcucEnumerationLiteralDef
+parameter
+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
10.2.5.14.2 DcmDspPidSupportInfo
No Included Containers
10.2.5.14.3 DcmDspPidData
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspPidDataSupport 0..1 This container defines the supported information.
Info
DcmDspPidService01 0..1 Contains specific configuration parameter of PID for
service $01. This container exists only if
DcmDspPidService is set to DCM_SERVICE_01 or
DCM_SERVICE_01_02.
DcmDspPidService02 0..1 Contains specific configuration parameter of PID for
service $02. This container exists only if
DcmDspPidService is set to DCM_SERVICE_02 or
DCM_SERVICE_01_02.
10.2.5.14.4 DcmDspPidService01
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspDiagnosis 0..1 This container contains the configuration (parameters)
Scaling of an alternative Diagnosis Representation. Out if this
the scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
DcmDspPidService01 0..1 This container defines the source of data in a provided
ExternalSRDataElement port which shall be read respectively the target of data in
Class a required port which shall be written.
10.2.5.14.5 DcmDspPidService02
Description Contains specific configuration parameter of PID for service $02. This
container exists only if DcmDspPidService is set to
DCM_SERVICE_02 or DCM_SERVICE_01_02.
Configuration Parameters
No Included Containers
10.2.5.14.6 DcmDspPidDataSupportInfo
No Included Containers
10.2.5.15 DcmDspRequestControl
No Included Containers
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspRequestControl: DcmDspRequestControlTestId:
EcucParamConfContainerDef EcucIntegerParamDef
DcmDspRequestControlInBufferSize:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 255
DcmDspRequestControlOutBufferSize:
EcucIntegerParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
min = 0
max = 255
DcmDspRequestControlInfoByte:
EcucIntegerParamDef
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 255
10.2.5.16 DcmDspRequestFileTransfer
Name DcmRequestFileTransferFileSizeOrDirInfoParameterLength
[ECUC_Dcm_01035]
Parent Container DcmDspRequestFileTransfer
Description Defines the length (number of bytes, i.e. the value of
fileSizeOrDirInfoParameterLength) of the
fileSizeUncompressedOrDirInfoLength and fileSizeCompressed in the
response of RequestFileTransfer.
Multiplicity 1
Type EcucIntegerParamDef
Range 1 .. 4
Default Value 4
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
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspRequestFileTransfer: DcmRequestFileTransferFileSizeOrDirInfoParameterLength:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter min = 1
lowerMultiplicity = 0
upperMultiplicity = 1 max = 4
defaultValue = 4
lowerMultiplicity = 1
upperMultiplicity = 1
DcmRequestFileTransferLengthFormatIdentifier:
EcucIntegerParamDef
+parameter min = 1
max = 4
defaultValue = 4
lowerMultiplicity = 1
upperMultiplicity = 1
DcmRequestFileTransferMaxFileAndDirName:
EcucIntegerParamDef
+parameter min = 1
max = 65535
defaultValue = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DcmRequestFileTransferUsePort:
+parameter EcucBooleanParamDef
defaultValue = false
lowerMultiplicity = 1
upperMultiplicity = 1
10.2.5.17.1 DcmDspRoe
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRoeEvent 1..255 This container contains a list of all supported Roe
eventTypeRecords which are accepted by this ECU.
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+literal
DcmDspRoeEventWindowTime: DCM_ROE_EVENT_WINDOW_INFINITE:
EcucEnumerationParamDef EcucEnumerationLiteralDef
upperMultiplicity = 1
+subContainer lowerMultiplicity = 1
DCM_ROE_EVENT_WINDOW_CURRENT_AND_FOLLOWING_CYCLE:
EcucEnumerationLiteralDef
DcmDspRoeEventWindowTime:
+subContainer EcucParamConfContainerDef
DcmDspRoeInterMessageTime:
lowerMultiplicity = 1
EcucFloatParamDef
upperMultiplicity = *
min = 0
lowerMultiplicity = 1
+parameter upperMultiplicity = 1
max = 5
DcmDspRoeEvent:
EcucParamConfContainerDef
+subContainer DCM_ROE_CLEARED:
lowerMultiplicity = 1 EcucEnumerationLiteralDef
upperMultiplicity = 255
+literal
+parameter DcmDspRoeInitialEventStatus:
+parameter EcucEnumerationParamDef
DcmDspRoeEventId: upperMultiplicity = 1
EcucIntegerParamDef lowerMultiplicity = 1
+subContainer
defaultValue = DCM_ROE_CLEARED
lowerMultiplicity = 1
DcmDspRoeEventProperties:
upperMultiplicity = 1
EcucChoiceContainerDef
min = 0
lowerMultiplicity = 1 max = 254
upperMultiplicity = 1 symbolicNameValue = true A
+literal
DCM_ROE_STOPPED:
EcucEnumerationLiteralDef
+choice +subContainer
+choice
DcmDspRoeDTCStatusMask:
DcmDspRoeOnDTCStatusChange:
EcucIntegerParamDef
EcucParamConfContainerDef
+parameter min = 0
lowerMultiplicity = 0
max = 255
upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
A
10.2.5.17.2 DcmDspRoeEvent
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRoeEvent 1 This container contains the properties of Roe
Properties eventTypeRecords.
10.2.5.17.3 DcmDspRoeEventProperties
Container Choices
Container Name Multiplicity Scope / Dependency
DcmDspRoeOnChange 0..1 This container contains the eventTypeRecord supported
OfDataIdentifier for onChangeOfDataIdentifier eventType.
DcmDspRoeOnDTC 0..1 This container contains the eventTypeRecord supported
StatusChange for onDTCStatusChange eventType.
10.2.5.17.4 DcmDspRoeOnChangeOfDataIdentifier
No Included Containers
10.2.5.17.5 DcmDspRoeOnDTCStatusChange
No Included Containers
10.2.5.17.6 DcmDspRoeEventWindowTime
Configuration Parameters
No Included Containers
10.2.5.18 Routines
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspRoutineUsed: EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 1
DcmDspStartRoutine: EcucParamConfContainerDef
+subContainer
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspStopRoutine: EcucParamConfContainerDef
+subContainer
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDspRequestRoutineResults:
+subContainer EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
DcmDspRequestControl:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
DcmDspRoutineInfoByte: EcucIntegerParamDef
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
min = 0
max = 255
10.2.5.18.1 DcmDspRoutine
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRequestRoutine 0..1 Provides the configuration of RequestResult subservice
Results for RoutineControl service. Existence indicates that the
RequestRoutineResults in the RoutineControl is
supported.
DcmDspStartRoutine 0..1 Provides the configuration of Start subservice for
RoutineControl service.
DcmDspStopRoutine 0..1 Provides the configuration of Stop subservice for
RoutineControl service. Existence indicates that the
StopRoutine in the RoutineControl is supported.
10.2.5.18.2 DcmDspRequestRoutineResults
Name DcmDspRequestRoutineResultsConfirmationEnabled
[ECUC_Dcm_01091]
Parent Container DcmDspRequestRoutineResults
Description Allows to enable/disable the confirmation function to indicate the
transmission of a response to a RequestRoutineResults request
Multiplicity 0..1
Type EcucBooleanParamDef
Default Value false
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
Name DcmDspRequestRoutineResultsCommonAuthorizationRef
[ECUC_Dcm_01054]
Parent Container DcmDspRequestRoutineResults
Description Reference to DcmDspCommonAuthorization
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRequestRoutine 0..1 Provide description of input parameter of RequestResult
ResultsIn subservice for RoutineControl service.
DcmDspRoutine:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspRequestRoutineResultsOutSignal:
DcmDspRequestRoutineResults: DcmDspRequestRoutineResultsOut:
EcucParamConfContainerDef
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef +subContainer
upperMultiplicity = *
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
requiresIndex = true
DcmDspRequestRoutineResultsIn: DcmDspRequestRoutineResultsInSignal:
+subContainer EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
upperMultiplicity = 1 upperMultiplicity = *
lowerMultiplicity = 0 lowerMultiplicity = 1
requiresIndex = true
DcmDspRequestRoutineResultsCommonAuthorizationRef: DcmDspCommonAuthorization:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1 lowerMultiplicity = 0
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspRequestRoutineResultsRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
DcmDspRequestRoutineResultsConfirmationEnabled:
lowerMultiplicity = 0
EcucBooleanParamDef
+parameter upperMultiplicity = 1
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = FALSE
DcmDspRequestRoutineResultsConfirmationFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspRoutineInterfaceArgumentIntegrity:
EcucBooleanParamDef
+parameter
defaultValue = false
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.3 DcmDspRequestRoutineResultsIn
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRequestRoutine 1..* Provides description of a routine signal used in
ResultsInSignal RoutineControl service.
10.2.5.18.4 DcmDspRequestRoutineResultsInSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataIn_n elements in the
XXX_RequestResult function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.18.5 DcmDspRequestRoutineResultsOut
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspRequestRoutine 1..* Provides description of a routine signal used in
ResultsOutSignal RoutineControl service.
10.2.5.18.6 DcmDspRequestRoutineResultsOutSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataOutN elements in the
XXX_RequestResult function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.18.7 DcmDspStartRoutine
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStartRoutineIn 0..1 Provide description of input parameter of Start
subservice for RoutineControl service
DcmDspStartRoutineOut 0..1 Provide description of output parameter of Start
subservice for RoutineControl service.
DcmDspRoutine:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspStartRoutineInSignal:
DcmDspStartRoutine: DcmDspStartRoutineIn:
EcucParamConfContainerDef
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef
+subContainer
upperMultiplicity = *
lowerMultiplicity = 0 upperMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1 lowerMultiplicity = 0
requiresIndex = true
DcmDspStartRoutineOutSignal:
DcmDspStartRoutineOut:
EcucParamConfContainerDef
+subContainer EcucParamConfContainerDef +subContainer
upperMultiplicity = *
upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 0
requiresIndex = true
DcmDspStartRoutineCommonAuthorizationRef: DcmDspCommonAuthorization:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1 lowerMultiplicity = 0
DcmDspStartRoutineFnc: EcucFunctionNameDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1 DcmDspStartRoutineRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
lowerMultiplicity = 0
DcmDspStartRoutineConfirmationEnabled:
upperMultiplicity = 1
EcucBooleanParamDef
+parameter
defaultValue = false
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspStartRoutineConfirmationFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspRoutineInterfaceArgumentIntegrity:
EcucBooleanParamDef
+parameter
defaultValue = false
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.8 DcmDspStartRoutineIn
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStartRoutineIn 1..* Provide description of a routine signal used in
Signal RoutineControl service.
+subContainer
UINT8_N:
BOOLEAN: +literal EcucEnumerationLiteralDef
DcmDspStartRoutineInSignal: EcucEnumerationLiteralDef
EcucParamConfContainerDef
upperMultiplicity = * SINT8_N:
+literal
lowerMultiplicity = 1 EcucEnumerationLiteralDef
requiresIndex = true +literal
DcmDspRoutineSignalType:
EcucEnumerationParamDef
SINT8:
lowerMultiplicity = 1
+literal EcucEnumerationLiteralDef
upperMultiplicity = 1
+literal UINT16:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+literal SINT16_N:
EcucEnumerationLiteralDef
+parameter
+literal SINT16:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal UINT32_N:
EcucEnumerationLiteralDef
+literal
SINT32_N:
EcucEnumerationLiteralDef
+literal
FLOAT:
EcucEnumerationLiteralDef
+literal +literal
FLOAT_N: VARIABLE_LENGTH:
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
LITTLE_ENDIAN:
+literal EcucEnumerationLiteralDef
DcmDspRoutineSignalEndianness:
+parameter EcucEnumerationParamDef
+literal OPAQUE:
lowerMultiplicity = 0 EcucEnumerationLiteralDef
upperMultiplicity = 1
+literal
BIG_ENDIAN:
DcmDspArgumentScaling: EcucEnumerationLiteralDef
+subContainer EcucChoiceContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.9 DcmDspStartRoutineInSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataInN elements in the XXX_Start
function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.18.10 DcmDspStartRoutineOut
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStartRoutineOut 1..* Provide description of a routine signal used in
Signal RoutineControl service.
DcmDspRoutineSignalType:
EcucEnumerationParamDef +literal SINT8_N:
EcucEnumerationLiteralDef
lowerMultiplicity = 1
upperMultiplicity = 1
+literal UINT16:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+literal SINT16:
EcucEnumerationLiteralDef
+parameter
+literal SINT16_N:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal UINT32_N:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal SINT32_N:
EcucEnumerationLiteralDef
+literal
VARIABLE_LENGTH:
+literal +literal EcucEnumerationLiteralDef
FLOAT: FLOAT_N:
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.11 DcmDspStartRoutineOutSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataOutN elements in the XXX_Start
function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.18.12 DcmDspStopRoutine
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStopRoutineIn 0..1 Provide description of input parameter of Stop
subservice for RoutineControl service.
DcmDspStopRoutineOut 0..1 Provide description of output parameter of Stop
subservice for RoutineControl service.
DcmDspRoutine:
EcucParamConfContainerDef
upperMultiplicity = *
lowerMultiplicity = 0
+subContainer
DcmDspStopRoutineInSignal:
DcmDspStopRoutine: DcmDspStopRoutineIn:
EcucParamConfContainerDef
EcucParamConfContainerDef +subContainer EcucParamConfContainerDef +subContainer
upperMultiplicity = *
upperMultiplicity = 1 upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 0 lowerMultiplicity = 0
requiresIndex = true
DcmDspStopRoutineOutSignal:
DcmDspStopRoutineOut:
EcucParamConfContainerDef
+subContainer EcucParamConfContainerDef +subContainer
upperMultiplicity = *
upperMultiplicity = 1
lowerMultiplicity = 1
lowerMultiplicity = 0
requiresIndex = true
DcmDspStopRoutineCommonAuthorizationRef: DcmDspCommonAuthorization:
+reference EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 upperMultiplicity = *
upperMultiplicity = 1 lowerMultiplicity = 0
DcmDspStopRoutineFnc: EcucFunctionNameDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspStopRoutineRole:
EcucIntegerParamDef
+parameter
min = 0
max = 4294967295
lowerMultiplicity = 0
DcmDspStopRoutineConfirmationEnabled: upperMultiplicity = 1
EcucBooleanParamDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1
defaultValue = FALSE
DcmDspStopRoutineConfirmationFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspRoutineInterfaceArgumentIntegrity:
+parameter EcucBooleanParamDef
defaultValue = false
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.13 DcmDspStopRoutineIn
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStopRoutineIn 1..* Provide description of a routine signal used in
Signal RoutineControl service.
+parameter +parameter
+subContainer
+subContainer
DcmDspStopRoutineInSignal:
EcucParamConfContainerDef
DcmDspRoutineSignalType:
EcucEnumerationParamDef +literal SINT8:
EcucEnumerationLiteralDef
lowerMultiplicity = 1
upperMultiplicity = 1
+literal SINT8_N:
EcucEnumerationLiteralDef
+literal UINT16:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+literal SINT16_N:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal UINT32_N:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal
SINT32_N:
+literal EcucEnumerationLiteralDef
FLOAT:
EcucEnumerationLiteralDef
+literal +literal
FLOAT_N: VARIABLE_LENGTH:
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
LITTLE_ENDIAN:
+literal EcucEnumerationLiteralDef
DcmDspRoutineSignalEndianness: OPAQUE:
EcucEnumerationParamDef +literal EcucEnumerationLiteralDef
+parameter
lowerMultiplicity = 0
upperMultiplicity = 1 +literal
BIG_ENDIAN:
EcucEnumerationLiteralDef
10.2.5.18.14 DcmDspStopRoutineInSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataInN elements in the XXX_Stop
function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.18.15 DcmDspStopRoutineOut
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspStopRoutineOut 1..* Provide description of a routine signal used in
Signal RoutineControl service.
DcmDspStopRoutineOut:
EcucParamConfContainerDef
upperMultiplicity = 1
lowerMultiplicity = 0
+subContainer
DcmDspStopRoutineOutSignal: DcmDspRoutineSignalPos:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = * lowerMultiplicity = 1 DcmDspRoutineParameterSize:
lowerMultiplicity = 1 upperMultiplicity = 1 EcucIntegerParamDef
requiresIndex = true min = 0
max = 65535 A lowerMultiplicity = 0
upperMultiplicity = 1
+parameter min = 0
max = 65535 A
+literal BOOLEAN:
DcmDspRoutineSignalType:
EcucEnumerationLiteralDef
EcucEnumerationParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
+literal UINT8:
EcucEnumerationLiteralDef
+literal UINT8_N:
EcucEnumerationLiteralDef
+literal SINT8:
EcucEnumerationLiteralDef
+literal SINT8_N:
EcucEnumerationLiteralDef
+literal UINT16:
EcucEnumerationLiteralDef
+literal UINT16_N:
EcucEnumerationLiteralDef
+parameter
+literal SINT16:
EcucEnumerationLiteralDef
+literal SINT16_N:
EcucEnumerationLiteralDef
+literal UINT32:
EcucEnumerationLiteralDef
+literal UINT32_N:
EcucEnumerationLiteralDef
+literal SINT32:
EcucEnumerationLiteralDef
+literal SINT32_N:
EcucEnumerationLiteralDef
+literal VARIABLE_LENGTH:
EcucEnumerationLiteralDef
+literal
FLOAT_N:
+literal EcucEnumerationLiteralDef
FLOAT:
EcucEnumerationLiteralDef
+literal BIG_ENDIAN:
EcucEnumerationLiteralDef
DcmDspArgumentScaling:
+subContainer EcucChoiceContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.18.16 DcmDspStopRoutineOutSignal
The ordering defined via the index attribute of the subcontainers in this
list represents the order of the dataOutN elements in the XXX_Stop
function call.
Attributes:
requiresIndex=true
Configuration Parameters
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspArgument 0..1 This container contains the configuration (arguments) of
Scaling an alternative Diagnosis Representation. Out if this the
scaling between Diagnosis and ECU internal
representation and vice versa can be calculated.
10.2.5.19.1 DcmDspSecurity
Name DcmDspSecurityMaxAttemptCounterReadoutTime
[ECUC_Dcm_01101]
Parent Container DcmDspSecurity
Description Delay, in seconds, from startup (measured from the first call of the
Dcm_MainFunction()), allowed for all AttemptCounter values to be
obtained from the Application. Must be a multiple of the DcmTaskTime.
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspSecurityRow 0..31 Definition of a single Row of configuration for security
level configuration (per security level) The name of this
container is used to define the name of the R-Port
through which the DCM accesses the interface
SecurityAccess_{SecurityLevel}. The R-Port is named
SecurityAccess_{SecurityLevel} where {SecurityLevel} is
the name of the container DcmDspSecurityRow. If there
is no reference, no check of security level shall be done.
DcmDspSecurityKeySize:
+container EcucIntegerParamDef
+parameter
DcmConfigSet: max = 4294967295
EcucParamConfContainerDef min = 1
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspSecurityADRSize:
+subContainer EcucIntegerParamDef
+parameter
DcmDsp: lowerMultiplicity = 0
EcucParamConfContainerDef upperMultiplicity = 1
min = 1
lowerMultiplicity = 0 max = 4294967295
upperMultiplicity = 1
DcmDspSecurityUsePort: +literalUSE_ASYNCH_CLIENT_SERVER:
+parameter EcucEnumerationParamDef EcucEnumerationLiteralDef
+subContainer lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspSecurity:
USE_ASYNCH_FNC:
EcucParamConfContainerDef +literal
EcucEnumerationLiteralDef
lowerMultiplicity = 1 +subContainer
upperMultiplicity = 1
DcmDspSecurityGetAttemptCounterFnc:
EcucFunctionNameDef
+parameter
+parameter lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspSecurityMaxAttemptCounterReadoutTime:
EcucFloatParamDef
min = 0
max = 65535 DcmDspSecuritySetAttemptCounterFnc:
lowerMultiplicity = 1 EcucFunctionNameDef
upperMultiplicity = 1 +parameter
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspSecurityAttemptCounterEnabled:
+parameter EcucBooleanParamDef
DcmDspSecurityLevel: upperMultiplicity = 1
EcucIntegerParamDef lowerMultiplicity = 1
max = 63 +parameter
min = 1
lowerMultiplicity = 1 DcmDspSecurityGetSeedFnc:
upperMultiplicity = 1 EcucFunctionNameDef
+parameter
symbolicNameValue = true
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspSecurityNumAttDelay:
EcucIntegerParamDef
+parameter DcmDspSecurityCompareKeyFnc:
min = 1 +parameter EcucFunctionNameDef
max = 255
lowerMultiplicity = 0 lowerMultiplicity = 0
upperMultiplicity = 1 upperMultiplicity = 1
DcmDspSecurityDelayTime: DcmDspSecurityDelayTimeOnBoot:
EcucFloatParamDef EcucFloatParamDef
+parameter +parameter
min = 0 min = 0
lowerMultiplicity = 1 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = 1
max = 65535 max = 65535
10.2.5.19.2 DcmDspSecurityRow
Type: Dcm_SecLevelType
Multiplicity 1
Type EcucIntegerParamDef (Symbolic Name generated for this parameter)
Range 1 .. 63
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
No Included Containers
10.2.5.19.3 DcmDspSession
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspSessionRow 0..31 This container holds all parameters needed to configure
a single session
Name DcmDspSecurityMaxAttemptCounterReadoutTime
[ECUC_Dcm_01101]
Parent Container DcmDspSecurity
Description Delay, in seconds, from startup (measured from the first call of the
Dcm_MainFunction()), allowed for all AttemptCounter values to be
obtained from the Application. Must be a multiple of the DcmTaskTime.
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspSecurityRow 0..31 Definition of a single Row of configuration for security
level configuration (per security level) The name of this
container is used to define the name of the R-Port
through which the DCM accesses the interface
SecurityAccess_{SecurityLevel}. The R-Port is named
SecurityAccess_{SecurityLevel} where {SecurityLevel} is
the name of the container DcmDspSecurityRow. If there
is no reference, no check of security level shall be done.
+subContainer
DcmDspSessionP2StarServerMax:
DcmDspSession:
EcucFloatParamDef
EcucParamConfContainerDef
+parameter
+subContainer min = 0
lowerMultiplicity = 1
lowerMultiplicity = 1
upperMultiplicity = 1
upperMultiplicity = 1
max = 100
DcmDspSessionP2ServerMax:
EcucFloatParamDef
+parameter
min = 0
lowerMultiplicity = 1
upperMultiplicity = 1
max = 1
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
+literal DCM_OEM_BOOT:
EcucEnumerationLiteralDef
+literal DCM_SYS_BOOT:
EcucEnumerationLiteralDef
+literal DCM_OEM_BOOT_RESPAPP:
EcucEnumerationLiteralDef
+literal DCM_SYS_BOOT_RESPAPP:
EcucEnumerationLiteralDef
10.2.5.19.4 DcmDspSessionRow
No Included Containers
10.2.5.19.5 DcmModeCondition
Please note that the Dcm acts as well as mode manager. Therefore
the references DcmSwcModeRef or one DcmBswModeRef. might
point to provided ModeDeclarationGroupPrototypes of the Dcm itself
as well as to provided ModeDeclarationGroupPrototypes of other Bsw
Modules or software components.
Name DcmModeConditionCertificateCompareElementRef
[ECUC_Dcm_01179]
Parent Container DcmModeCondition
Description Reference to a certificate data element that provides the compare
value.
Multiplicity 0..1
Type Symbolic name reference to KeyMCertificateElement
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
Included Containers
Container Name Multiplicity Scope / Dependency
DcmSwcDataElement 1 This container contains the configuration of a compare
Value value.
10.2.5.19.6 DcmSwcDataElementValue
Container Choices
Container Name Multiplicity Scope / Dependency
DcmSwcDataElement 0..1 This container contains the configuration of a array
Array compare value.
DcmSwcDataElement 0..1 This container contains the configuration of a primitive
Primitive compare value.
10.2.5.19.7 DcmSwcDataElementPrimitive
No Included Containers
10.2.5.19.8 DcmSwcDataElementArray
Included Containers
Container Name Multiplicity Scope / Dependency
DcmSwcDataElement 0..* This container contains the configuration of a array
ArrayElement element compare value.
10.2.5.19.9 DcmSwcDataElementArrayElement
No Included Containers
10.2.5.19.10 DcmModeRule
Attributes:
requiresIndex=true
Multiplicity 1..*
Type Choice reference to [DcmModeCondition,DcmModeRule]
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: local
No Included Containers
DcmDspComControlCommunicationReEnableModeRuleRef: DcmModeRule:
EcucReferenceDef +destination EcucParamConfContainerDef
lowerMultiplicity = 0 lowerMultiplicity = 1
upperMultiplicity = 1 upperMultiplicity = *
DcmDspCommonAuthorizationModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspWriteMemoryRangeModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidReadModeRuleRef: EcucReferenceDef
+destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDsdSidTabModeRuleRef: EcucReferenceDef
+destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspControlDTCSettingReEnableModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspReadMemoryRangeModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspClearDTCModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidWriteModeRuleRef: EcucReferenceDef
+destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspDidControlModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDsdSubServiceModeRuleRef:
EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.20 DcmDspVehInfo
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: local
Included Containers
Container Name Multiplicity Scope / Dependency
DcmDspVehInfoData 1..* Data Item of an InfoType; ShortName is post-fix of the
port interface name.
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspVehInfo: DcmDspVehInfoInfoType:
EcucParamConfContainerDef EcucIntegerParamDef
+parameter
upperMultiplicity = * lowerMultiplicity = 1
lowerMultiplicity = 0 upperMultiplicity = 1
min = 0
max = 255
DcmDspVehInfoDataReadFnc:
DcmDspVehInfoData: +parameter EcucFunctionNameDef
EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = * upperMultiplicity = 1
lowerMultiplicity = 1
DcmDspVehInfoDataSize:
EcucIntegerParamDef
+parameter lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
+subContainer max = 255
DcmDspVehInfoDataOrder:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 0
max = 255
DcmDspVehInfoDataUsePort:
+parameter EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1
DcmDspVehInfoNODIProvResp:
EcucBooleanParamDef
+parameter
upperMultiplicity = 1
lowerMultiplicity = 0
defaultValue = false
10.2.5.21 DcmDspVehInfoData
When this parameter is set to false, the DCM calls the function defined
in DcmDspVehInfoDataReadFnc.
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: ECU
No Included Containers
10.2.5.22 DcmDspPeriodicTransmission
Default Value
Post-Build Variant false
Value
Value Configuration Pre-compile time X VARIANT-PRE-COMPILE,
Class VARIANT-POST-BUILD
Link time X VARIANT-LINK-TIME
Post-build time –
Scope / Dependency scope: local
Name DcmDspPeriodicTransmissionMaxPeriodicFastTransmissions
[ECUC_Dcm_01182]
Parent Container DcmDspPeriodicTransmission
Description Defines the maximum number of periodic connections used for fast
transmission.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Name DcmDspPeriodicTransmissionMaxPeriodicMediumTransmissions
[ECUC_Dcm_01181]
Parent Container DcmDspPeriodicTransmission
Description Defines the maximum number of periodic connections used for
medium transmission.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Value Configuration Pre-compile time X All Variants
Class
Link time –
Post-build time –
Scope / Dependency scope: local
Name DcmDspPeriodicTransmissionMaxPeriodicSlowTransmissions
[ECUC_Dcm_01183]
Parent Container DcmDspPeriodicTransmission
Description Defines the maximum number of periodic connections used for slow
transmission.
Multiplicity 0..1
Type EcucIntegerParamDef
Range 0 .. 255
Default Value
Post-Build Variant false
Multiplicity
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
DcmDsp: EcucParamConfContainerDef DcmDspPeriodicTransmission:
DcmDspPeriodicTransmissionSlowRate:
EcucParamConfContainerDef
lowerMultiplicity = 0 EcucFloatParamDef
upperMultiplicity = 1 lowerMultiplicity = 0 +parameter
min = 0.0001
upperMultiplicity = 1
max = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPeriodicTransmissionMediumRate:
EcucFloatParamDef
+parameter
min = 0.0001
max = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPeriodicTransmissionFastRate:
EcucFloatParamDef
+parameter
min = 0.0001
max = 1
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspMaxPeriodicDidScheduler:
EcucIntegerParamDef
+parameter
lowerMultiplicity = 1
upperMultiplicity = 1
min = 1
max = 255
+subContainer
DcmDspPeriodicTransmissionSchedulerType:
EcucEnumerationParamDef
+literal +literal
SCHEDULER_TYPE2: SCHEDULER_TYPE1:
EcucEnumerationLiteralDef EcucEnumerationLiteralDef
DcmDspPeriodicTransmissionMaxPeriodicFastTransmissions:
EcucIntegerParamDef
+parameter
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
DcmDspPeriodicTransmissionMaxPeriodicMediumTransmissions:
EcucIntegerParamDef
+parameter
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
+parameter
DcmDspPeriodicTransmissionMaxPeriodicSlowTransmissions:
EcucIntegerParamDef
min = 0
max = 255
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.5.23 DcmDspClearDTC
No Included Containers
DcmDsp: EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
+subContainer
DcmDspClearDTCCheckFnc:
+parameter EcucFunctionNameDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.6 DcmGeneral
true: DDDID are stored non-volatile false: DDDID are only maintained
volatile
Multiplicity 0..1
Type EcucBooleanParamDef
Default Value false
Post-Build Variant false
Multiplicity
Post-Build Variant false
Value
Multiplicity Pre-compile time X All Variants
Configuration Class
Link time –
Post-build time –
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
Tags:
atp.Status=draft
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: ECU
Included Containers
Container Name Multiplicity Scope / Dependency
DcmSecurityEventRefs 0..1 Container for the references to IdsMEvent elements
representing the security events that the Dcm module
shall report to the IdsM in case the coresponding
security related event occurs (and if
DcmEnableSecurityEventReporting is set to "true"). The
standardized security events in this container can be
extended by vendor-specific security events.
Tags:
atp.Status=draft
DcmDspDid: EcucParamConfContainerDef
DcmRespondAllRequest: EcucBooleanParamDef
upperMultiplicity = * +parameter
lowerMultiplicity = 0 upperMultiplicity = 1
lowerMultiplicity = 1
+parameter DcmEnableSecurityEventReporting:
EcucBooleanParamDef
defaultValue = false
DcmSecurityEventRefs:
+subContainer EcucParamConfContainerDef
lowerMultiplicity = 0
upperMultiplicity = 1
10.2.6.1 DcmSecurityEventRefs
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 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_COMMUNICATION_CONTROL_SWITCHED_OFF
[ECUC_Dcm_01191]
Parent Container DcmSecurityEventRefs
Description ECU communication was switched off with service
CommunicationControl.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_INCORRECT_MESSAGE_LENGTH_OR_FORMAT
[ECUC_Dcm_01194]
Parent Container DcmSecurityEventRefs
Description Received request message does not match the specified length or the
format of the parameters is different from the specified ones for that
service. NRC 0x13 (incorrectMessageLengthOrInvalidFormat) was
returned.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_NUMBER_OF_FAILED_AUTHENTICATION_ATTEMPTS
_EXCEEDED [ECUC_Dcm_01208]
Parent Container DcmSecurityEventRefs
Description Number of failed authentication attempts - OEM specific
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_REQUESTED_ACTIONS_REQUIRES_AUTHENTICATIO
N [ECUC_Dcm_01204]
Parent Container DcmSecurityEventRefs
Description A diagnostic request was received while the required authentication to
execute this service is not given. NRC 0x34 (authenticationRequired)
was returned.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_SECURITY_ACCESS_INVALID_KEY
[ECUC_Dcm_01206]
Parent Container DcmSecurityEventRefs
Description Security Access failed because the tester has sent an invalid key to the
server. An NRC 0x35 (invalidKey) was returned.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_SECURITY_ACCESS_NUMBER_OF_ATTEMPTS_EXCE
EDED [ECUC_Dcm_01205]
Parent Container DcmSecurityEventRefs
Description Security Access failed and the number of invalid attempts has been
exceeded. NRC 0x36 (exceedNumberOfAttempts) was returned.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_SECURITY_ACCESS_REQUIRED_TIME_DELAY_NOT_
EXPIRED [ECUC_Dcm_01207]
Parent Container DcmSecurityEventRefs
Description A further attempt to unlock the ECU was taken before the delay time
had expired. NRC 0x37 (requiredTimeDelayNotExpired) was sent.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Name DIAG_SEV_SUBFUNCTION_NOT_SUPPORTED
[ECUC_Dcm_01193]
Parent Container DcmSecurityEventRefs
Description A subfunction of a diagnostic service was requested that is not
supported for the requested service.
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
Tags:
atp.Status=draft
Multiplicity 0..1
Type Symbolic name reference to IdsMEvent
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: local
No Included Containers
DcmGeneral:
EcucParamConfContainerDef +parameter DcmEnableSecurityEventReporting:
EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1 defaultValue = false
+subContainer
DIAG_SEV_SECURITY_ACCESS_DENIED: EcucReferenceDef
+reference lowerMultiplicity = 0 +destination
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_COMMUNICATION_CONTROL_SWITCHED_OFF:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_SERVICE_NOT_SUPPORTED: EcucReferenceDef
+reference +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_SUBFUNCTION_NOT_SUPPORTED:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_INCORRECT_MESSAGE_LENGTH_OR_FORMAT:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_REQUEST_SEQUENCE_ERROR:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
(from IdsM)
DcmGeneral:
EcucParamConfContainerDef +parameter DcmEnableSecurityEventReporting:
EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1 defaultValue = false
+subContainer
DIAG_SEV_REQUESTED_ACTIONS_REQUIRES_AUTHENTICATION:
EcucReferenceDef +destination
+reference
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_SECURITY_ACCESS_NUMBER_OF_ATTEMPTS_EXCEEDED:
EcucReferenceDef +destination
+reference
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_SECURITY_ACCESS_INVALID_KEY: EcucReferenceDef
+reference +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_SECURITY_ACCESS_REQUIRED_TIME_DELAY_NOT_EXPIRED:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_NUMBER_OF_FAILED_AUTHENTICATION_ATTEMPTS_EXCEEDED:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_CERTIFICATE_FAILURE: EcucReferenceDef
+reference +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
(from IdsM)
DcmGeneral:
EcucParamConfContainerDef +parameter DcmEnableSecurityEventReporting:
EcucBooleanParamDef
lowerMultiplicity = 1
upperMultiplicity = 1 defaultValue = false
+subContainer
DIAG_SEV_AUTHENTICATION_SUCCESSFUL:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_CLEAR_DTC_SUCCESSFUL:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_ECU_RESET: EcucReferenceDef
+reference lowerMultiplicity = 0 +destination
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_WRITE_DATA: EcucReferenceDef
+reference +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_REQUEST_DOWNLOAD:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
DIAG_SEV_DTC_SETTING_SWITCHED_OFF:
+reference EcucReferenceDef +destination
lowerMultiplicity = 0
upperMultiplicity = 1
requiresSymbolicNameValue = true
(from IdsM)
Figure 10.63: Examples of protocol configuration with focus on buffer / DcmPduId set-
tings
Above example shows protocol configuration at the use cases examples OBD and UDS
(used for customer enhanced diagnosis). It is assumed that for UDS communication,
there are functional and physical requests. There will be separate DcmPduRxIds for
functional and physical reception.
Concerning buffer configuration it is proposed to use a separate buffer for the func-
tional requests. This in correspondence to support the keep alive logic with functional
addressed TesterPresent commands.
It is also proposed to use a separate receive buffer for the OBD commands. This in
reference to support the protocol switch functionality.
It is allowed to share for both protocols the transmit buffer. Please note: The DcmDsl-
ProtocolRx has two possible configurations:
• functional
• physical
The physical shall have a 1:1 (or 1:0) dependency to the DcmDslMain-
Connection. (which means: DcmDslProtocolRxPduRef in combination
DCM_PROTOCOL_RX_ADDR_TYP = physical can exist only once per "Mod-
ule") The functional shall have a 1:n dependency to the DcmDslMain-
Connection. (which means: DcmDslProtocolRxPduRef in combination
DCM_PROTOCOL_RX_ADDR_TYP = functional can exist several times per "Module")
The DcmDslProtocolTx shall exist only once per "Module"