DEENESPTFRRUARHIKOZHNL

module ara::diag — Diagnostics

Spezifikation: AUTOSAR_AP_SWS_Diagnostics.pdf (R25-11) · 1055 API-Records

Module guideAI-GENERATED

Provides standardized diagnostic services, UDS and SOVD protocols, as well as centralized fault memory management.
AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 2d21a18c42f9 Provenance Open questions (1)
Causal anchor: R25-11 Valid from R25-11 Synthesized for this specification release.
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

Provides standardized diagnostic services, UDS and SOVD protocols, as well as centralized fault memory management.

In the AUTOSAR Adaptive Platform, the functional cluster Diagnostic Management provides the central infrastructure for classic UDS and modern SOVD vehicle diagnostics (AUTOSAR_AP_EXP_SWArchitecture p. 150). As a platform daemon, it terminates transport layers such as DoIP, controls protocol handlers, and forwards diagnostic requests via type-safe callback interfaces to Adaptive Applications ([SWS_DM_00311]). At the same time, the module handles error monitoring, time- and counter-based debouncing, and fault memory management. Applications enable service functions via a declarative offer model, keeping application logic and protocol handling cleanly separated.

The functional cluster Diagnostic Management (ara::diag) in the AUTOSAR Adaptive Platform provides the central, daemon-based infrastructure for handling vehicle-compatible diagnostic communication (AUTOSAR_AP_EXP_SWArchitecture p. 150). It decouples transport-specific protocol handlers (such as DoIP or CAN-TP) from the actual diagnostic core (UdsTransportProtocolMgr), thereby enabling uniform termination and forwarding of diagnostic requests (AUTOSAR_AP_EXP_SWArchitecture p. 164).

G Tester Diagnose-Client / Tester (UDS / SOVD) DM «aapFunctionalCluster» Diagnostic Management (daemon-based) Tester->DM SOVD REST / HTTP TPH «aapNativeInterface» UdsTransportProtocolHandler (DoIP / CAN-TP) Tester->TPH Transport Frames DM->TPH Transmit() AA Adaptive Application (Service Provider / Client) DM->AA Port Interfaces / Callbacks (Routine / DataIdentifier) SM «aapFunctionalCluster» State Management (Reset / Rapid Shutdown) DM->SM EcuResetRequest TPH->DM UdsMessage / HandleMessage() AA->DM Offer() / MonitorAction / DTCInformation

Context diagram: Embedding of the Diagnostic Management daemon between transport handlers, Adaptive Applications, and external testers. Sources: AUTOSAR_AP_EXP_SWArchitecture p. 150, AUTOSAR_AP_EXP_SWArchitecture p. 164, AUTOSAR_AP_EXP_SWArchitecture p. 168

For service processing, the module implements a declarative deployment model: the diagnostic daemon implements the port interfaces, while Adaptive Applications register service callbacks for DataIdentifiers, routines, or block-based transfers and control their availability via Offer() and StopOffer(), respectively ([SWS_DM_00557], AUTOSAR_AP_EXP_SWArchitecture p. 156). Incoming messages are processed in a fail-safe manner via two-stage indication and handover mechanisms (IndicateMessage and HandleMessage) ([SWS_DM_00309], [SWS_DM_00311]).

UDS request processing and forwarding to applicationDiagnosetesterTransport HandlerDiagnostic ManagementAdaptive ApplicationUDS Request FrameIndicateMessage(sourceAddr, targetAddr, ...)pair<kAccept, UdsMessagePtr>altUDS Request akzeptiertHandleMessage(UdsMessagePtr)Service Callback (z. B. Read / Start)Future<OperationOutput>Transmit(UdsMessageConstPtr, channelId)UDS Positive / Negative ResponseUDS Request abgelehnt / FehlerNotifyMessageFailure(UdsMessagePtr)

Sequence diagram: End-to-end control flow of a UDS request from the transport layer via the Diagnostic Manager to the applying application. Sources: [SWS_DM_00309], [SWS_DM_00311], [SWS_DM_00327], AUTOSAR_SWS_Diagnostics p. 130

In addition to classic UDS functions, the cluster manages diagnostic monitors, performs configured debouncings, and persists qualified faults in the primary fault memory (DTCInformation) ([SWS_DM_00664], SWS_Diagnostics p. 225). Extended standards such as ISO 13400-2 (DoIP) and ASAM SOVD (Service-Oriented Vehicle Diagnostics) are seamlessly integrated into the platform via specialized interfaces for activation lines, authentications, and hierarchical JSON payloads ([SWS_DM_00834], [SWS_DM_02370], AUTOSAR_AP_EXP_SWArchitecture p. 170).

Architectural Role and System Boundaries of Diagnostic Management

The functional cluster Diagnostic Management (ara::diag) forms the central control center for in-vehicle and external vehicle diagnostics in the AUTOSAR Adaptive Platform (Release R25-11) (AUTOSAR_AP_EXP_SWArchitecture p. 150). Architecturally, the module is designed as a daemon-based background service («aapFunctionalCluster» Diagnostic Management daemon-based). It terminates physical as well as logical diagnostic protocols, manages the global diagnostic context, and provides the middleware infrastructure through which individual Adaptive Applications can provide diagnostic-related data and routines (AUTOSAR_AP_EXP_SWArchitecture p. 156).

The interface landscape is primarily divided into two categories: modeled port interfaces, which are configured via the AUTOSAR manifest and bound to application processes, and native C++ runtime interfaces (AUTOSAR_AP_EXP_SWArchitecture p. 150). The native interfaces specifically include the class Conversation, through which applications can query current session states ([SWS_DM_00696]), determine security levels ([SWS_DM_00698]), or inspect active diagnostic conversations ([SWS_DM_00783]). Interpretation: The strict separation between the central diagnostic daemon and the consuming processes was presumably chosen to guarantee deterministic response times towards external testers even during process restarts of individual applications. Question Q-2e2ea8eb9d415fed (open)

G Tester Diagnose-Client / Tester (UDS / SOVD) DM «aapFunctionalCluster» Diagnostic Management (daemon-based) Tester->DM SOVD REST / HTTP TPH «aapNativeInterface» UdsTransportProtocolHandler (DoIP / CAN-TP) Tester->TPH Transport Frames DM->TPH Transmit() AA Adaptive Application (Service Provider / Client) DM->AA Port Interfaces / Callbacks (Routine / DataIdentifier) SM «aapFunctionalCluster» State Management (Reset / Rapid Shutdown) DM->SM EcuResetRequest TPH->DM UdsMessage / HandleMessage() AA->DM Offer() / MonitorAction / DTCInformation

Context diagram: Embedding of the Diagnostic Management daemon between transport handlers, Adaptive Applications, and external testers. Sources: AUTOSAR_AP_EXP_SWArchitecture p. 150, AUTOSAR_AP_EXP_SWArchitecture p. 164, AUTOSAR_AP_EXP_SWArchitecture p. 168

Transport Layer Connection and Lifecycle Control of Protocol Handlers

To operate independently of specific network technologies (such as Ethernet/DoIP or CAN/ISO-TP), Diagnostic Management decouples the protocol core via standardized transport interfaces (AUTOSAR_AP_EXP_SWArchitecture p. 164). The generic core implements the interface UdsTransportProtocolMgr, while transport-specific adapters are connected as UdsTransportProtocolHandler (AUTOSAR_AP_EXP_SWArchitecture p. 165). Each handler is identified via a unique identifier that can be queried via GetHandlerID() ([SWS_DM_00325]).

The lifecycle control of a transport handler is structured into deterministic operating phases (AUTOSAR_SWS_Diagnostics p. 128): During startup, Diagnostic Management initializes the handler via Initialize() ([SWS_DM_00319]) and subsequently activates message processing via Start() ([SWS_DM_00322]). During controlled shutdown, the manager requests the handler via Stop() to close open connections ([SWS_DM_00323]), whereupon the handler acknowledges completion via HandlerStopped() ([SWS_DM_00314]).

For long-lived diagnostic sessions, AUTOSAR also specifies a recovery mechanism across process lifecycles (AUTOSAR_SWS_Diagnostics p. 134). If a previously persisted channel can be re-established after a restart of the diagnostic manager, the transport handler reports this via NotifyReestablishment() ([SWS_DM_00326]). The manager synchronizes the state internally and confirms this by calling ChannelReestablished() ([SWS_DM_00313]).

Lifecycle of a UDS transport handlerDiagnostic Management (DM_Generic)UdsTransportProtocolHandlerUse Case: InitialisierungsphaseInitialize()kSuccessStart()Use Case: Betriebsphase (Run)UDS message processing and diagnostic communication activeUse Case: Terminierungsphase (Shutdown)Stop()HandlerStopped(handlerId)

Sequence diagram: Lifecycle control of a UDS transport handler by the generic diagnostic manager. Sources: [SWS_DM_00314], [SWS_DM_00319], [SWS_DM_00322], [SWS_DM_00323], AUTOSAR_SWS_Diagnostics p. 128

UDS Service Processing and Application-Specific Request Handling

Incoming UDS messages are processed step-by-step after protocol validation (AUTOSAR_SWS_Diagnostics p. 130). First, the transport handler announces an incoming message to the manager via IndicateMessage() in order to allocate resources and buffers ([SWS_DM_00309]). The message is encapsulated as UdsMessage, which provides the source address ([SWS_DM_00297]), target address ([SWS_DM_00298]), and addressing type ([SWS_DM_00299]). After complete reception, the handler hands over the data object via HandleMessage() to Diagnostic Management ([SWS_DM_00311]), where channel-specific meta-information is supplemented via AddMetaInfo() ([SWS_DM_00302]).

In Release R25-11, the interaction between the platform daemon and the application follows an inverted service provision model (AUTOSAR_AP_EXP_SWArchitecture p. 156): The platform daemon implements the service ports, while Adaptive Applications implement callback methods and explicitly activate their readiness for forwarding via Offer() ([SWS_DM_00557]) or suspend it via StopOffer() ([SWS_DM_00558]). This applies equally to generic routines (GenericRoutine [SWS_DM_00552]), typed routines (RoutineInterface [SWS_DM_00589] with Start [SWS_DM_00591]), data identifiers (GenericDataIdentifier [SWS_DM_00634] with Read [SWS_DM_00636] and Write [SWS_DM_00637]), and generic UDS services (GenericUDSService [SWS_DM_00616] with HandleMessage [SWS_DM_00618]).

Longer-running diagnostic transactions (such as block transfers via UploadService [SWS_DM_00797], DownloadService [SWS_DM_00787], or FileTransferService [SWS_DM_01325] according to AUTOSAR_AP_EXP_SWArchitecture p. 163) are processed asynchronously via ara::core::Future. To avoid resource blockages, application-specific handlers receive an instance of CancellationHandler (AUTOSAR_AP_EXP_SWArchitecture p. 152). Via IsCanceled(), the application can query for a cancellation ([SWS_DM_00614]) or register a notification function via SetNotifier() ([SWS_DM_00615]). For coordinated restarts, the interface EcuResetRequest is provided ([SWS_DM_01010]), which delegates reset requests to State Management (AUTOSAR_AP_EXP_SWArchitecture p. 162).

UDS request processing and forwarding to applicationDiagnosetesterTransport HandlerDiagnostic ManagementAdaptive ApplicationUDS Request FrameIndicateMessage(sourceAddr, targetAddr, ...)pair<kAccept, UdsMessagePtr>altUDS Request akzeptiertHandleMessage(UdsMessagePtr)Service Callback (z. B. Read / Start)Future<OperationOutput>Transmit(UdsMessageConstPtr, channelId)UDS Positive / Negative ResponseUDS Request abgelehnt / FehlerNotifyMessageFailure(UdsMessagePtr)

Sequence diagram: End-to-end control flow of a UDS request from the transport layer via the Diagnostic Manager to the applying application. Sources: [SWS_DM_00309], [SWS_DM_00311], [SWS_DM_00327], AUTOSAR_SWS_Diagnostics p. 130

Event Monitoring, Debouncing, and Fault Memory Management

For detecting and qualifying system faults, Diagnostic Management implements a hierarchical model of monitors and diagnostic events (SWS_Diagnostics p. 225). An application instantiates an Monitor object ([SWS_DM_00548]) and continuously reports test results via ReportMonitorAction() ([SWS_DM_00543]). The module supports both counter-based and time-based debouncing algorithms ([SWS_DM_00549], [SWS_DM_00550]). Via the interface Event, applications can determine the current UDS status byte value ([SWS_DM_00649]), check the debouncing status ([SWS_DM_00654]), or register status change callbacks ([SWS_DM_00650]).

To keep the port footprint low in complex systems, the platform provides bundled interfaces (AUTOSAR_AP_EXP_SWArchitecture p. 153): Via MultipleMonitor ([SWS_DM_01695]), MultipleEvent ([SWS_DM_01705]), and MultipleCondition ([SWS_DM_01727]), multiple monitoring channels can be addressed via a shared port interface. Enable management for monitors is performed via Condition objects ([SWS_DM_00712]), while OperationCycle ([SWS_DM_00752]) and Indicator ([SWS_DM_00742], SWS_Diagnostics p. 633) control operation cycles and signal indicator lamp requests.

The aggregated events lead into the fault memory management, which is exposed via DTCInformation ([SWS_DM_00664], AUTOSAR_AP_EXP_SWArchitecture p. 144). This interface allows reading out stored entries ([SWS_DM_00669]), selective or global clearing of DTCs ([SWS_DM_00671]), and activating DTC recording ([SWS_DM_00674]). If a capacity overflow of the primary memory occurs, the application is notified via SetEventMemoryOverflowNotifier() ([SWS_DM_00918], [SWS_DM_00919]).

G App Adaptive Application (Fehlererkennung) Mon ara::diag::Monitor ReportMonitorAction() App->Mon kPreFailed / kPrePassed Deb Debouncing (time- / counter-based) Mon->Deb Aktion melden Evt ara::diag::Event EventStatusByte Deb->Evt Entprellstatus qualifiziert (kTestFailed / kTestPassed) Mem DTCInformation Fehlerspeichereintrag Evt->Mem Status change / DTC active

State/activity diagram: Sequence from monitor action through debouncing to DTC qualification in fault memory. Sources: [SWS_DM_00543], [SWS_DM_00649], [SWS_DM_00664], SWS_Diagnostics p. 225

Extended Diagnostic Protocols: DoIP Integration and SOVD Services

For Ethernet-based vehicle networks, the module integrates dedicated DoIP functions (Diagnostic communication over Internet Protocol according to ISO 13400-2) (AUTOSAR_AP_EXP_SWArchitecture p. 166, AUTOSAR_AP_EXP_SWArchitecture p. 167). Platform extensions report the state of physical activation lines via DoIPActivationLine::UpdateActivationLineState() ([SWS_DM_00834], AUTOSAR_AP_TPS_ManifestSpecification p. 338). Based on this, vehicle announcement messages (Vehicle Announcement Messages) can be triggered via DoIPTriggerVehicleAnnouncement ([SWS_DM_00821], [SWS_DM_00822], AUTOSAR_AP_SWS_Diagnostics p. 108). Group and entity identification is queried dynamically via DoIPGroupIdentification ([SWS_DM_00722]) and DoIPEntityIdentification ([SWS_DM_01364], [SWS_DM_01366]).

DoIP activation line and announcement sequenceApplikation / Hardware-TreiberDoIPActivationLineDiagnostic Management (DoIP-Daemon)Netzwerk (Broadcast)UpdateActivationLineState(true)Signalisiere LeitungszustandoptisActivationLineDependent == trueGetActivationLineState()trueVehicle Announcement Message (UDP)

Sequence diagram: Interaction between application, activation line, and triggering of DoIP vehicle announcements. Sources: [SWS_DM_00822], [SWS_DM_00834], AUTOSAR_AP_SWS_Diagnostics p. 108

In addition to classic UDS services, Release R25-11 establishes native interfaces for SOVD (Service-Oriented Vehicle Diagnostics, ASAM SOVD / ISO 13170) (AUTOSAR_AP_EXP_SWArchitecture p. 168). Structured diagnostic data is modeled via DiagnosticSovdContentElementData ([SWS_DM_02370], AUTOSAR_AP_EXP_SWArchitecture p. 170). For manipulating complex JSON-analogous payloads, type-safe STL-like classes such as DiagnosticSovdArrayContentElementDataView ([SWS_DM_02245], AUTOSAR_AP_EXP_SWArchitecture p. 172) and DiagnosticSovdRecordContentElementDataView ([SWS_DM_02289], AUTOSAR_AP_EXP_SWArchitecture p. 174) are available.

For extended SOVD transactions and security measures, the module defines standardized roles: large volumes of data (such as traces or crash dumps) are transferred via SovdBulkData ([SWS_DM_01847], [SWS_DM_01854], AUTOSAR_AP_TPS_ManifestSpecification p. 321). Access control is performed via token and proximity checks via SovdAuthorization ([SWS_DM_01489]) and SovdProximityChallenge ([SWS_DM_01480], [SWS_DM_01493]), while service checks are authorized via SovdServiceValidation ([SWS_DM_01823], [SWS_DM_01827]).

Behavior in the event of an error

The error management of module diag is based on the AUTOSAR standard pattern ara::core::Result<T, ErrorCode> and completely excludes silent failure states. Errors are categorized according to their functional causes into five specialized error domains (ErrorDomain), which define both error codes and corresponding exception classes:

  • General diagnostic errors: The DiagErrorDomain ([SWS_DM_00520], [SWS_DM_00524]) and the associated DiagException ([SWS_DM_00516]) signal fundamental platform or configuration errors such as invalid arguments or uninitialized instances.
  • UDS Negative Response Codes (NRC): Specific protocol-related UDS rejections according to ISO 14229 are mapped via the DiagUdsNrcErrorDomain ([SWS_DM_00532], [SWS_DM_00536]) and DiagUdsNrcException ([SWS_DM_00528]).
  • Service provision errors: If the activation or deactivation of port interfaces fails, the DiagOfferErrorDomain ([SWS_DM_00992], [SWS_DM_01003]) takes effect with the DiagOfferException ([SWS_DM_00986]).
  • Event and monitor reporting errors: Errors during status reporting by monitors are indicated by the DiagReportingErrorDomain ([SWS_DM_00999], [SWS_DM_01004]) and DiagReportingException ([SWS_DM_00988]).
  • SOVD protocol errors: Errors in REST endpoints, JSON contents, or access control are reported via the DiagSovdErrorDomain ([SWS_DM_01812], [SWS_DM_01816]) and DiagSovdException ([SWS_DM_01808]).

At transport layer level, transmission aborts, buffer overflows, or connection drops are reported to Diagnostic Management by the callback NotifyMessageFailure() ([SWS_DM_00310]). This enables the module to immediately release allocated resources and, if necessary, initiate negative response messages to the tester.

G Core ara::core::Result<T, ErrorCode> DE DiagErrorDomain (Allgemeine Diagnosefehler) Core->DE NRC DiagUdsNrcErrorDomain (ISO 14229 Negative Response Codes) Core->NRC Offer DiagOfferErrorDomain (error during Offer / StopOffer) Core->Offer Rep DiagReportingErrorDomain (error during monitor reports) Core->Rep SOVD DiagSovdErrorDomain (SOVD REST- / Inhaltsfehler) Core->SOVD

Class diagram: Error domain architecture and mapping of standardized exception and error codes in Diagnostic Management. Sources: [SWS_DM_00520], [SWS_DM_00532], [SWS_DM_00992], [SWS_DM_00999], [SWS_DM_01812]

Further detailed evidence

The normative basis of the module diag relies on three central specifications of the AUTOSAR Adaptive Platform:

This module guide was generated on the basis of the AUTOSAR Adaptive specifications for Release R25-11. All normative requirements originate from the referenced SWS and architecture documents.

function: 755 variable: 102 class: 79 type alias: 45 struct: 39 enumeration: 35

Topic map

ara::diag

131
AuthenticationCancellationHandlerClientAuthenticationClientAuthenticationHandleCommunicationControlConditionConversationCounterBasedDataIdentifierConcurrencyTypeDataTransferReadByPullHandlerDataTransferReadByPushHandlerDataTransferReadSessionDataTransferReadSharedDataHandlerDataTransferWriteHandlerDataTransferWriteSessionDiagErrorDomainDiagExceptionDiagnosticServiceDynamicAccessListDiagnosticSovdArrayContentElementDataConstIteratorDiagnosticSovdArrayContentElementDataConstViewDiagnosticSovdArrayContentElementDataIteratorDiagnosticSovdArrayContentElementDataViewDiagnosticSovdContentDataDiagnosticSovdContentElementDataDiagnosticSovdContentElementDataWithKeyDiagnosticSovdRecordContentElementDataConstIteratorDiagnosticSovdRecordContentElementDataConstViewDiagnosticSovdRecordContentElementDataIteratorDiagnosticSovdRecordContentElementDataViewDiagOfferErrorDomainDiagOfferExceptionDiagReportingErrorDomainDiagReportingExceptionDiagSovdErrorDomainDiagSovdExceptionDiagUdsNrcErrorDomainDiagUdsNrcExceptionDoIPActivationLineDoIPEntityIdentificationDoIPGroupIdentificationDoIPPowerModeDoIPTriggerVehicleAnnouncementDownloadServiceDTCInformationDynamicAccessListDiagServiceBuilderEcuResetRequestEventEventStatusByteExternalAuthenticationFileTransferServiceGenericDataIdentifierGenericDiagnosticSovdContentGenericDiagnosticSovdOperationGenericRoutineGenericUDSServiceHttpRedirectIndicatorMetaInfoMonitorMultipleConditionMultipleEventMultipleMonitorOperationCycleReleaseHandlerSecurityAccessServiceValidationSovdAuthorizationSovdBulkDataSovdConfigurationSovdContentConcurrencyTypeSovdOperationExecutionSovdProximityChallengeSovdProximityChallengeTypeSovdServiceValidationSovdSwUpdateTimeBasedTransmitCertificateUploadServiceGetDiagDomainGetDiagOfferDomainGetDiagReportingDomainGetDiagSovdErrorDomainGetDiagUdsNrcDomainMakeErrorCodeActivityStatusTypeConcurrencyTypeConditionTypeConfirmationStatusTypeControlDtcStatusTypeDataTransferExitTypeDebouncingStateDiagErrcDiagnosticSovdContentElementDataTypeDiagnosticSovdPrimitiveContentValueTypeDiagOfferErrcDiagReportingErrcDiagSovdErrcDiagUdsNrcErrcDTCFormatTypeEventStatusBitIndicatorStatusTypeInitMonitorReasonKeyCompareResultTypeMonitorActionOperationExecutionCapabilityOperationExecutionStatusPowerModeTypeProximityChallengeResultTypeSovdRequestMethodSovdUpdatePhaseSovdUpdateStatusTerminateOperationExecutionReasonUdsDtcStatusBitTypeConditionHandleTypeEventHandleTypeEventStatusByteNotifierInitMonitorNotifierMonitorHandleTypeProximityChallengeValidationResultTypeResetRequestTypeSecurityLevelTypeSessionControlTypekCustomResetkDefaultSessionkExtendedDiagnosticSessionkHardResetkKeyOffOnResetkLockedkProgrammingSessionkSafetySystemDiagnosticSessionkSoftReset

Detail view

Select an entry in the outline.

<DataElement-Namespace>

DiagnosticDataElementInterface class

<DataIdentifier-Namespace>

DiagnosticDataIdentifierInterface class

<ExtendedDataRecord-Namespace>

DiagnosticExtendedDataRecordInterface class

<RoutineInterface-Namespace>

DiagnosticRoutineInterface class

apext::diag::uds_transport

class represents an UDS message exchanged between DM generic core (UdsTransport ProtocolMgr) and a specific implementation of UdsTransportPr

Abstract Class, which a specific UDS Transport Protocol (plugin) shall subclass.

The UdsTransportProtocolMgr class manages the interaction between the Diagnostic Server instance(s) and various UDS Transport Protocols (e.g

UdsTransportProtocolPeriodicHandler class to support 0x2A service from ISO.

ByteSpan type alias

This is the type of ByteSpan.

using ByteSpan = ara::core::Span<ara::core::Byte>;
ChannelID type alias

This is the identification of channel on which to transmit.

using ChannelID = std::uint32_t;

This is the unique_ptr for constant UdsMessages containing a custom deleter as provided by the generic/core DM part towards the UdsTransportLayer-Plugin.

using UdsMessageConstPtr = std::unique_ptr<const UdsMessage, std::function<void(const UdsMessage*)>>;
UdsMessagePtr type alias

This is the unique_ptr for UdsMessages containing a custom deleter as provided by the generic/ core DM part towards the UdsTransportLayer-Plugin.

using UdsMessagePtr = std::unique_ptr<UdsMessage, std::function<void(UdsMessage*)>>;

UdsTransportProtocolHandler are flexible "plugins", which need an identification.

using UdsTransportProtocolHandlerID = std::uint8_t;

ara::diag

Class to implement the Service Authentication interfaces to application.

CancellationHandler contains a shared state if the processing should be cancelled.

Interface for the application to inform the Diagnostic Server instance about the authentication states and the user roles that are currently

Definition of the ClientAuthenticationHandle which is returned to the application when an AuthenticationState is set by the application.

0x28 CommunicationControl interface

Condition class

DiagnosticConditionInterface.

Conversation interface.

Represents the parameters for counter-based debouncing.

Specifies the Concurrency type of a DataIdentifier related port.

Handles data transfers initiated by RequestReadFile/-Directory with data pulled by AraDiag from the implementation.

Handles data transfers initiated by RequestReadFile/-Directory with data pushed by the implementation.

Encapsulates all data transfer reading variants.

Handles data transfers initiated by RequestReadFile/-Directory with shared data from the implementation.

Handles data transfers initiated by AddFile, ResumeFile or ReplaceFile ModeOfOperation handling per requested RequestWriteFile.

Encapsulates all data transfer writing variants.

Error domain for diagnostic errors.

inherits from ara::core::ErrorDomain

Exception type thrown by Diag classes.

inherits from ara::core::Exception

Definition of the DiagnosticServiceDynamicAccessList class, which is used by the application to build a DynamicAccessList.

Const iterator for a DiagnosticSovdArrayContentElementData.

Const view on a DiagnosticSovdContentElementData with Array type.

Iterator for a DiagnosticSovdArrayContentElementData.

View on a DiagnosticSovdContentElementData with Array type.

The DiagnosticSovdContentData declaration.

Diagnostic SOVD Abstract Content Data.

A DiagnosticSovdContentElementData with associated key.

Const iterator for a DiagnosticSovdRecordContentElementData.

Const view on a DiagnosticSovdContentElementData with Record type.

Iterator for a DiagnosticSovdRecordContentElementData.

View on a DiagnosticSovdContentElementData with Record type.

Error domain for diagnostic offer errors.

inherits from ara::core::ErrorDomain

Exception type thrown by Diag classes.

inherits from ara::core::Exception

Error domain for diagnostic reporting errors.

inherits from ara::core::ErrorDomain

Exception type thrown by Diag classes.

inherits from ara::core::Exception

Error domain for errors originating from SOVD.

inherits from ara::core::ErrorDomain

Exception type for SOVD thrown by Diag classes.

inherits from ara::core::Exception

Error domain for errors originating from several diagnostic classes.

inherits from ara::core::ErrorDomain

Exception type thrown by Diag classes.

inherits from ara::core::Exception

DiagnosticDoIPActivationLineInterface.

DoIPEntityIdentification class to obtain the EID if required.

DoIPGroupIdentificationInterface.

DiagnosticDoIPPowerModeInterface.

DiagnosticDoIPTriggerVehicleAnnouncement.

Download service interface.

Class to implement operations on DTC informations per configured DiagnosticMemory Destination.

Definition of the DynamicAccessListDiagServiceBuilder class, which is used by the application to build a DynamicAccessList.

Service EcuReset Request interface.

Event class

Class to implement operations on diagnostic Events.

Current event status byte, bit-encoded.

Definition of the ExternalAuthentication class, which is used by the application to receive an instance of the ClientAuthentication Class re

File Transfer service interface.

Generic DataIdentifier interface.

Generic Diagnostic SOVD Content interface.

Generic Diagnostic SOVD Operation interface .

Generic Routine interface.

Generic UDS interface.

Definition of HTTP-Redirect

Indicator class

DiagnosticIndicatorInterface provides functionality for handling indicators.

MetaInfo class

Metainfo interface.

Monitor class

Class to implement operations on diagnostic Monitor interface.

Class for multiple condition operations.

Class to implement operations on diagnostic Events with the multiple event interfaces.

Class to implement monitor operations on the multiple monitor interfaces.

DiagnosticOperationCycleInterface provides functionality for handling of operation cycles.

ReleaseHandler contains a shared state if the processing should be cancelled.

DiagnosticSecurityAccessInterface.

DiagnosticServiceValidationInterface.

Class to implement the SOVD Authorization interfaces in the application.

Generic SOVD Bulk Data interface.

Generic SOVD Configuration interface.

Specifies the Concurrency type of a SOVD Content related port.

Interface to handle the SOVD Operation Execution .

Class to implement the SOVD proximity_challenge interfaces in the application.

Holds the data returned by the SovdProximityChallenge::GetChallenge()

Class to implement manufacturer-/supplier-specific checks for SOVD in the application.

Class to implement the SovdSwUpdate interface.

TimeBased class

Represents the parameters for time-based debouncing.

Class to implement the subfunction TransmitCertificate (29 04) of UDS service Authentication as interface to application

Upload service interface.

GetDiagDomain function

Obtain the reference to the single global DiagErrorDomain instance.

constexpr const ara::core::ErrorDomain & GetDiagDomain () noexcept;

Obtain the reference to the single global DiagErrorDomain instance.

constexpr const ara::core::ErrorDomain & GetDiagOfferDomain () noexcept;

Obtain the reference to the single global DiagReportingErrorDomain instance.

constexpr const ara::core::ErrorDomain & GetDiagReportingDomain () noexcept;

Obtain the reference to the single global DiagSovdErrorDomain instance.

constexpr const ara::core::ErrorDomain & GetDiagSovdErrorDomain () noexcept;

Obtain the reference to the single global DiagUdsNrcErrorDomain instance.

constexpr const ara::core::ErrorDomain & GetDiagUdsNrcDomain () noexcept;
MakeErrorCode function 5

Create a new ErrorCode for DiagErrorDomain with the given support data type.

Overloads MakeErrorCode 5
ActivityStatusType enumeration

Type for current activity status.

enum class ActivityStatusType : std::uint8_t {...};
ConcurrencyType enumeration

Specifies the Concurrency types.

enum class ConcurrencyType : std::uint8_t {...};
ConditionType enumeration

Type for Condition status.

enum class ConditionType : std::uint8_t {...};

Represents the status of the service processing.

enum class ConfirmationStatusType : std::uint8_t {...};

Type for ControlDTCStatus status as requested by UDS service 0x85 ControlDTCSetting.

enum class ControlDtcStatusType : std::uint8_t {...};

Determines transfer exit signal type.

enum class DataTransferExitType : ara::core::Byte {...};
DebouncingState enumeration

Debounce status of event.

enum class DebouncingState : std::uint8_t {...};
DiagErrc enumeration

Specifies the types of internal errors that can occur upon calling Offer or ReportMonitorAction.

enum class DiagErrc : ara::core::ErrorDomain::CodeType {...};

The type of the SOVD content data.

enum class DiagnosticSovdContentElementDataType : std::uint8_t {...};

The primitive content element value types.

enum class DiagnosticSovdPrimitiveContentValueType : std::uint8_t {...};
DiagOfferErrc enumeration

The DiagOfferErrc enumeration defines the error codes for the DiagOfferErrorDomain.

enum class DiagOfferErrc : ara::core::ErrorDomain::CodeType {...};
DiagReportingErrc enumeration

The DiagReportingErrc enumeration defines the error codes for the DiagReportingErrorDomain.

enum class DiagReportingErrc : ara::core::ErrorDomain::CodeType {...};
DiagSovdErrc enumeration

Specifies the types of errors that can occur in SOVD services.

enum class DiagSovdErrc : ara::core::ErrorDomain::CodeType {...};
DiagUdsNrcErrc enumeration

Specifies the types of internal errors that can occur upon calling Offer or ReportMonitorAction. The error codes described are defined in ISO 14229-1:2020 [1], Table A.1 "Negative Response Codes". In AUTOSAR, the three negative response code ranges, 0x00, 0x01-0x7F and 0x80-0xFF are respected, however, the value 0xFF is used to internally indicate, that there is no further processing and no response handling foreseen.

enum class DiagUdsNrcErrc : ara::core::ErrorDomain::CodeType {...};
DTCFormatType enumeration

Represents the type of the DTC format according to ISO 14229-1 [30].

enum class DTCFormatType : std::uint8_t {...};
EventStatusBit enumeration

Single event status bits.

enum class EventStatusBit : std::uint8_t {...};

Represents the state of an indicator.

enum class IndicatorStatusType : std::uint8_t {...};
InitMonitorReason enumeration

Represents the status information reported to AAs why the monitor may be re-initalized.

enum class InitMonitorReason : std::uint32_t {...};

Represents the status of the key compare.

enum class KeyCompareResultType : std::uint8_t {...};
MonitorAction enumeration

Represents the status information reported by AAs being relevant for error monitoring.

enum class MonitorAction : std::uint32_t {...};

The standard operation execution capabilities .

enum class OperationExecutionCapability : std::uint8_t {...};

The operation execution status .

enum class OperationExecutionStatus : std::uint8_t {...};
PowerModeType enumeration

PowerMode as defined in ISO 13400-2 [2].

enum class PowerModeType : std::uint8_t {...};

This is the type of ProximityChallengeResultType.

enum class ProximityChallengeResultType : std::uint8_t {...};
SovdRequestMethod enumeration

HTTP method used in the SOVD request.

enum class SovdRequestMethod : std::uint8_t {...};
SovdUpdatePhase enumeration

Phase type for a SOVD update.

enum class SovdUpdatePhase : std::uint8_t {...};
SovdUpdateStatus enumeration

Status type for a SOVD update .

enum class SovdUpdateStatus : std::uint8_t {...};

The Terminate Operation reason .

enum class TerminateOperationExecutionReason : std::uint8_t {...};

UDS DTC status bits according to ISO 14229-1.

enum class UdsDtcStatusBitType : std::uint8_t {...};

Type to identify a condition.

using ConditionHandleType = std::uint8_t;
EventHandleType type alias

Type to identify an event.

using EventHandleType = std::uint32_t;

Register a notifier function which is called if a diagnostic event is changed.

using EventStatusByteNotifier = std::function<void(EventStatusByte)>;

Notifier function which is called if the monitor needs to be re-initialized.

using InitMonitorNotifier = std::function<void(InitMonitorReason)>;

Type to identify an monitor .

using MonitorHandleType = std::uint32_t;

This is the type of ProximityChallengeValidationResultType.

using ProximityChallengeValidationResultType = ProximityChallenge ResultType;
ResetRequestType type alias

The type of the requested reset.

using ResetRequestType = std::uint8_t;

Type for the active security level. .

using SecurityLevelType = std::uint8_t;

Type for the active diagnostic session. .

using SessionControlType = std::uint8_t;
kCustomReset variable

kCustomReset

constexpr ResetRequestType kCustomReset = 3;

Default session according to IS0 14229-1.

constexpr SessionControlType kDefaultSession = 0x01;

Extended diagnostic session according to IS0 14229-1.

constexpr SessionControlType kExtendedDiagnosticSession = 0x03;
kHardReset variable

HardReset.

constexpr ResetRequestType kHardReset = 1;

KeyOffOnReset.

constexpr ResetRequestType kKeyOffOnReset = 2;
kLocked variable

Security level locked.

constexpr SecurityLevelType kLocked = 0x00;

Programming session according to IS0 14229-1.

constexpr SessionControlType kProgrammingSession = 0x02;

Safety system diagnostic session according to IS0 14229-1.

constexpr SessionControlType kSafetySystemDiagnosticSession = 0x04;
kSoftReset variable

SoftReset.

constexpr ResetRequestType kSoftReset = 0;

Namespaces

UML class diagram of the module

Abgerundete Rahmen = Namespaces; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = modulfremde bzw. externe Basisklassen. Klicken öffnet die Klassenseite.

G cluster_1 <DataElement-Namespace> cluster_2 <DataElement-Namespace>::<DataElementInterface> cluster_3 <DataIdentifier-Namespace> cluster_4 <DataIdentifier-Namespace>::<DataIdentifierInterface> cluster_5 <ExtendedDataRecord-Namespace> cluster_6 <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> cluster_7 <RoutineInterface-Namespace> cluster_8 <RoutineInterface-Namespace>::<RoutineInterface> cluster_9 apext::diag::uds_transport cluster_10 ara::diag cluster_11 ara::diag::CommunicationControl cluster_12 ara::diag::Conversation cluster_13 ara::diag::DTCInformation cluster_14 ara::diag::DoIPEntityIdentification cluster_15 ara::diag::DoIPGroupIdentification cluster_16 ara::diag::DownloadService cluster_17 ara::diag::DynamicAccessListDiagServiceBuilder cluster_18 ara::diag::FileTransferService cluster_19 ara::diag::GenericDataIdentifier cluster_20 ara::diag::GenericDiagnosticSovdOperation cluster_21 ara::diag::GenericRoutine cluster_22 ara::diag::GenericUDSService cluster_23 ara::diag::SovdAuthorization cluster_24 ara::diag::SovdBulkData cluster_25 ara::diag::SovdConfiguration cluster_26 ara::diag::SovdOperationExecution cluster_27 ara::diag::SovdSwUpdate cluster_28 ara::diag::UploadService n_DataElement_Namespace____DataElementInterface_750 <DataElementInterface> n_DataElement_Namespace____DataElementInterface____DataElement_ReadOutp608 «struct» <DataElement>ReadOutput n_DataIdentifier_Namespace____DataIdentifierInterface_960 <DataIdentifierInterface> n_DataIdentifier_Namespace____DataIdentifierInterface____DataIdentifier756 «struct» <DataIdentifier>ReadOutput n_ExtendedDataRecord_Namespace____ExtendedDataRecordElementInterface_765 <ExtendedDataRecordElementInterface> n_ExtendedDataRecord_Namespace____ExtendedDataRecordElementInterface___533 «struct» <ExtendedDataRecordElement>ReadOutput n_RoutineInterface_Namespace____RoutineInterface_950 <RoutineInterface> n_RoutineInterface_Namespace____RoutineInterface____RoutineInterface6_S811 «struct» <RoutineInterface6>StartOutput n_RoutineInterface_Namespace____RoutineInterface____RoutineInterface9_S410 «struct» <RoutineInterface9>StopOutput n_RoutineInterface_Namespace____RoutineInterface____RoutineInterface_Re625 «struct» <RoutineInterface>RequestResultOutput napext__diag__uds_transport__UdsMessage883 UdsMessage napext__diag__uds_transport__UdsTransportProtocolHandler1 UdsTransportProtocolHandler napext__diag__uds_transport__UdsTransportProtocolMgr247 UdsTransportProtocolMgr napext__diag__uds_transport__UdsTransportProtocolPeriodicHandler54 UdsTransportProtocolPeriodicHandler nara__diag__Authentication309 Authentication nara__diag__CancellationHandler489 CancellationHandler nara__diag__ClientAuthentication678 ClientAuthentication nara__diag__ClientAuthenticationHandle939 ClientAuthenticationHandle nara__diag__CommunicationControl599 CommunicationControl nara__diag__Condition778 Condition nara__diag__Conversation235 Conversation nara__diag__CounterBased25 «struct» CounterBased nara__diag__DataIdentifierConcurrencyType801 «struct» DataIdentifierConcurrencyType nara__diag__DataTransferReadByPullHandler313 DataTransferReadByPullHandler nara__diag__DataTransferReadByPushHandler95 DataTransferReadByPushHandler nara__diag__DataTransferReadSession318 DataTransferReadSession nara__diag__DataTransferReadSharedDataHandler544 DataTransferReadSharedDataHandler nara__diag__DataTransferWriteHandler871 DataTransferWriteHandler nara__diag__DataTransferWriteSession996 DataTransferWriteSession nara__diag__DiagErrorDomain167 DiagErrorDomain nara__core__ErrorDomain335 ara::core::ErrorDomain nara__diag__DiagErrorDomain167->nara__core__ErrorDomain335 nara__diag__DiagException942 DiagException nara__core__Exception792 ara::core::Exception nara__diag__DiagException942->nara__core__Exception792 nara__diag__DiagnosticServiceDynamicAccessList408 DiagnosticServiceDynamicAccessList nara__diag__DiagnosticSovdArrayContentElementDataConstIterator518 DiagnosticSovdArrayContentElementDataConstIterator nara__diag__DiagnosticSovdArrayContentElementDataConstView162 DiagnosticSovdArrayContentElementDataConstView nara__diag__DiagnosticSovdArrayContentElementDataIterator554 DiagnosticSovdArrayContentElementDataIterator nara__diag__DiagnosticSovdArrayContentElementDataView429 DiagnosticSovdArrayContentElementDataView nara__diag__DiagnosticSovdContentData509 «struct» DiagnosticSovdContentData nara__diag__DiagnosticSovdContentElementData188 DiagnosticSovdContentElementData nara__diag__DiagnosticSovdContentElementDataWithKey42 DiagnosticSovdContentElementDataWithKey nara__diag__DiagnosticSovdRecordContentElementDataConstIterator644 DiagnosticSovdRecordContentElementDataConstIterator nara__diag__DiagnosticSovdRecordContentElementDataConstView167 DiagnosticSovdRecordContentElementDataConstView nara__diag__DiagnosticSovdRecordContentElementDataIterator471 DiagnosticSovdRecordContentElementDataIterator nara__diag__DiagnosticSovdRecordContentElementDataView16 DiagnosticSovdRecordContentElementDataView nara__diag__DiagOfferErrorDomain584 DiagOfferErrorDomain nara__diag__DiagOfferErrorDomain584->nara__core__ErrorDomain335 nara__diag__DiagOfferException442 DiagOfferException nara__diag__DiagOfferException442->nara__core__Exception792 nara__diag__DiagReportingErrorDomain575 DiagReportingErrorDomain nara__diag__DiagReportingErrorDomain575->nara__core__ErrorDomain335 nara__diag__DiagReportingException911 DiagReportingException nara__diag__DiagReportingException911->nara__core__Exception792 nara__diag__DiagSovdErrorDomain991 DiagSovdErrorDomain nara__diag__DiagSovdErrorDomain991->nara__core__ErrorDomain335 nara__diag__DiagSovdException335 DiagSovdException nara__diag__DiagSovdException335->nara__core__Exception792 nara__diag__DiagUdsNrcErrorDomain838 DiagUdsNrcErrorDomain nara__diag__DiagUdsNrcErrorDomain838->nara__core__ErrorDomain335 nara__diag__DiagUdsNrcException343 DiagUdsNrcException nara__diag__DiagUdsNrcException343->nara__core__Exception792 nara__diag__DoIPActivationLine856 DoIPActivationLine nara__diag__DoIPEntityIdentification87 DoIPEntityIdentification nara__diag__DoIPGroupIdentification259 DoIPGroupIdentification nara__diag__DoIPPowerMode921 DoIPPowerMode nara__diag__DoIPTriggerVehicleAnnouncement193 DoIPTriggerVehicleAnnouncement nara__diag__DownloadService914 DownloadService nara__diag__DTCInformation53 DTCInformation nara__diag__DynamicAccessListDiagServiceBuilder245 DynamicAccessListDiagServiceBuilder nara__diag__EcuResetRequest662 EcuResetRequest nara__diag__Event255 Event nara__diag__EventStatusByte808 «struct» EventStatusByte nara__diag__ExternalAuthentication264 ExternalAuthentication nara__diag__FileTransferService20 FileTransferService nara__diag__GenericDataIdentifier357 GenericDataIdentifier nara__diag__GenericDiagnosticSovdContent32 GenericDiagnosticSovdContent nara__diag__GenericDiagnosticSovdOperation745 GenericDiagnosticSovdOperation nara__diag__GenericRoutine818 GenericRoutine nara__diag__GenericUDSService134 GenericUDSService nara__diag__HttpRedirect903 «struct» HttpRedirect nara__diag__Indicator648 Indicator nara__diag__MetaInfo769 MetaInfo nara__diag__Monitor586 Monitor nara__diag__MultipleCondition516 MultipleCondition nara__diag__MultipleEvent593 MultipleEvent nara__diag__MultipleMonitor546 MultipleMonitor nara__diag__OperationCycle125 OperationCycle nara__diag__ReleaseHandler678 ReleaseHandler nara__diag__SecurityAccess583 SecurityAccess nara__diag__ServiceValidation871 ServiceValidation nara__diag__SovdAuthorization23 SovdAuthorization nara__diag__SovdBulkData992 SovdBulkData nara__diag__SovdConfiguration627 SovdConfiguration nara__diag__SovdContentConcurrencyType404 «struct» SovdContentConcurrencyType nara__diag__SovdOperationExecution800 SovdOperationExecution nara__diag__SovdProximityChallenge981 SovdProximityChallenge nara__diag__SovdProximityChallengeType366 «struct» SovdProximityChallengeType nara__diag__SovdServiceValidation102 SovdServiceValidation nara__diag__SovdSwUpdate737 SovdSwUpdate nara__diag__TimeBased382 «struct» TimeBased nara__diag__TransmitCertificate785 TransmitCertificate nara__diag__UploadService152 UploadService nara__diag__CommunicationControl__ComCtrlRequestParamsType893 «struct» ComCtrlRequestParamsType nara__diag__Conversation__ConversationIdentifierType414 «struct» ConversationIdentifierType nara__diag__DTCInformation__SnapshotDataIdentifierType592 «struct» SnapshotDataIdentifierType nara__diag__DTCInformation__SnapshotDataRecordType1 «struct» SnapshotDataRecordType nara__diag__DTCInformation__SnapshotRecordUpdatedType973 «struct» SnapshotRecordUpdatedType nara__diag__DTCInformation__UdsDtcStatusByteType119 «struct» UdsDtcStatusByteType nara__diag__DoIPEntityIdentification__EntityId720 «struct» EntityId nara__diag__DoIPGroupIdentification__GidStatus478 «struct» GidStatus nara__diag__DownloadService__OperationOutput45 «struct» OperationOutput nara__diag__DynamicAccessListDiagServiceBuilder__ByteRange410 ByteRange nara__diag__FileTransferService__FileSizes857 «struct» FileSizes nara__diag__GenericDataIdentifier__OperationOutput669 «struct» OperationOutput nara__diag__GenericDiagnosticSovdOperation__StartAsynchronousExecutionR4 «struct» StartAsynchronousExecutionResponse nara__diag__GenericDiagnosticSovdOperation__StartSynchronousExecutionRe904 «struct» StartSynchronousExecutionResponse nara__diag__GenericRoutine__OperationOutput174 «struct» OperationOutput nara__diag__GenericUDSService__OperationOutput107 «struct» OperationOutput nara__diag__SovdAuthorization__ValidateAuthorizationOutput846 «struct» ValidateAuthorizationOutput nara__diag__SovdBulkData__BulkDataMetaDataDescriptor441 «struct» BulkDataMetaDataDescriptor nara__diag__SovdBulkData__DeleteByCategoryResult960 «struct» DeleteByCategoryResult nara__diag__SovdBulkData__DeletionError56 «struct» DeletionError nara__diag__SovdConfiguration__SovdConfigurationMetaInfo383 «struct» SovdConfigurationMetaInfo nara__diag__SovdOperationExecution__GetStatusResponse773 «struct» GetStatusResponse nara__diag__SovdSwUpdate__SubProgress643 «struct» SubProgress nara__diag__SovdSwUpdate__UpdatePackageDetails110 «struct» UpdatePackageDetails nara__diag__SovdSwUpdate__UpdatePackageStatus558 «struct» UpdatePackageStatus nara__diag__UploadService__OperationOutput307 «struct» OperationOutput