DEENESPTFRRUARHIKOZHNL

class ara::diag::DownloadService

[SWS_DM_00784] Upstream: RS_Diag_04033

class DownloadService {...};

Download service interface.

Header-Datei#include "ara/diag/download.h"
Forwarding-Header#include "ara/diag/diag_fwd.h"
Scopenamespace ara::diag

User GuideAI-GENERATED

Serves as an interface for processing UDS download sessions with data transfer and final verification.
AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 80e540367c50 Provenance Open questions (2)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

Serves as an interface for processing UDS download sessions with data transfer and final verification.

The abstract class ara::diag::DownloadService serves as a functional interface for handling UDS download operations on the AUTOSAR Adaptive Platform ([SWS_DM_00787]). After activation via Offer(), Diagnostic Management forwards the diagnostic requests for initialization, block-by-block data transfer, and final verification to the application-specific implementation ([SWS_DM_00792]). The instance is neither copyable nor movable and requires a unique port mapping as well as the definition of concurrency behavior upon creation. All transfer routines return asynchronous futures, with errors being signaled via Negative Response Codes.

Context

The abstract class ara::diag::DownloadService defines the functional C++ interface for implementing diagnostic download services in the AUTOSAR Adaptive Platform ([SWS_DM_00787]). It acts as a standardized service handler to which Diagnostic Management (DM) forwards incoming UDS requests according to ISO 14229-1 ([SWS_DM_00792]). Binding to the software architecture is achieved via a modeled PortPrototype of a DiagnosticDownloadInterface, which is resolved at runtime via an ara::core::InstanceSpecifier ([SWS_DM_00787]). An application-specific diagnostic component inherits from this interface and implements the concrete sequence logic for initiation, block-by-block data transfer, and the orderly termination of download sequences in the ECU ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

Lifecycle

Instantiation is performed via the constructor by specifying a ara::core::InstanceSpecifier and an ConcurrencyType ([SWS_DM_00787]). In doing so, the platform validates model integrity; incorrect port assignments or multiple use of the same identifier in the process result in runtime errors ([SWS_DM_00787]). To ensure unique mapping to the diagnostic port, ara::diag::DownloadService is designed as a single instance: both the copy constructor ([SWS_DM_01649]) and copy assignment operator ([SWS_DM_01647]) as well as the move constructor ([SWS_DM_01650]) and move assignment operator ([SWS_DM_01648]) are deleted (delete).

After creation, the instance is in the inactive state. Only by calling Offer() is the forwarding of diagnostic requests enabled by the DM ([SWS_DM_00792]). This forwarding can be deactivated again using StopOffer() ([SWS_DM_00793]). After deactivation, a renewed call to Offer() is likely permissible (interpretation) if the service is to be reactivated in the application sequence. Question Q-475cd8b8a6a86754 (open) The virtual destructor ~DownloadService() terminates the lifecycle of the handler ([SWS_DM_00788]).

Regarding thread safety, the constructor is thread-safe, whereas Offer(), StopOffer(), and the destructor are not thread-safe ([SWS_DM_00787], [SWS_DM_00788], [SWS_DM_00792], [SWS_DM_00793]). Whether the derived service methods must be processed concurrently depends on the ConcurrencyType (kConcurrent or kNotConcurrent) selected during the constructor call ([SWS_DM_00787], [SWS_DM_00789]).

DownloadServiceLifecycle NichtInit Not initialized Instanziiert Instantiated (not offered) NichtInit->Instanziiert DownloadService() Instanziiert->NichtInit ~DownloadService() Angeboten Angeboten (Weiterleitung aktiv) Instanziiert->Angeboten Offer() Angeboten->Instanziiert StopOffer()

State diagram: Lifecycle of a DownloadService instance from creation through offering status to destruction. Sources: [SWS_DM_00787], [SWS_DM_00792], [SWS_DM_00793], [SWS_DM_00788].

Usage Path

A regular download process follows a three-stage sequence of initialization, data transfer, and final verification:

  • Download initialization: After offering the service via Offer() ([SWS_DM_00792]), the DM receives a UDS request for download initialization and calls RequestDownload() ([SWS_DM_00789]). The application verifies parameters such as dataFormatIdentifier, addressAndLengthFormatIdentifier, as well as target address and memory size in memoryAddressAndSize ([SWS_DM_00789]). After successful verification, the returned ara::core::Future<void> is resolved positively ([SWS_DM_00789]).
  • Data transfer: For subsequent TransferData messages, the DM cyclically calls DownloadData() ([SWS_DM_00790]). The segment transferRequestParameterRecord contains the payload and remains valid until the associated promise is fulfilled or processing is canceled ([SWS_DM_00790]). The returned ara::core::Future<OperationOutput> provides positive response data, which is placed after the block counter in the UDS response ([SWS_DM_00790]).
  • Transfer termination: After complete data transfer, the DM calls RequestDownloadExit() ([SWS_DM_00791]). The application processes manufacturer-specific parameters from transferRequestParameterRecord (e.g., concluding checksums) and acknowledges the request asynchronously via a ara::core::Future<OperationOutput> ([SWS_DM_00791]).

Processing of the payload data blocks is likely to typically take place in asynchronous background threads of the application (interpretation), because the interface works with ara::core::Future and a cancellationHandler for cancellation checking is passed on every call ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). Question Q-ba0fca00446cb679 (open) After completion of all operations, the application unregisters the service via StopOffer() ([SWS_DM_00793]).

Typical sequence of a UDS download sessionDMDownloadServiceUse Case: DienstregistrierungOffer()Result<void> (Erfolg)Use Case: Download-InitialisierungRequestDownload(dataFormatIdentifier, addressAndLengthFormatIdentifier, memoryAddressAndSize, metaInfo, cancellationHandler)Future<void> (success or NRC)Use Case: Data transmissionloopFor each data block (TransferData)DownloadData(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (success or NRC)Use Case: Transfer completionRequestDownloadExit(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (success or NRC)Use Case: DienstabmeldungStopOffer()

Sequence diagram: Typical sequence of a UDS download session between Diagnostic Management (DM) and DownloadService. Sources: [SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791], [SWS_DM_00792], [SWS_DM_00793].

Error Scenarios

Errors can occur during configuration, during service registration, as well as during ongoing protocol execution:

  • Configuration violations: If the InstanceSpecifier cannot be resolved in the model or does not reference a PortPrototype, a InstanceSpecifierMappingIntegrityViolation is raised ([SWS_DM_00787]). A missing typing by a DiagnosticServiceGenericMapping leads to a PortInterfaceMappingViolation ([SWS_DM_00787]). In addition, missing process assignments (ProcessMappingViolation) or the reuse of an already assigned identifier (InstanceSpecifierAlreadyInUseViolation) result in instantiation errors ([SWS_DM_00787]).
  • Offering errors: If Offer() is called when the service is already actively offered, the call returns the error code DiagOfferErrc::kAlreadyOffered in a ara::core::Result ([SWS_DM_00792]).
  • Diagnostic negative responses: If processing in RequestDownload(), DownloadData(), or RequestDownloadExit() fails (e.g., due to invalid address ranges or block errors), the application completes the respective ara::core::Future with an error code from DiagUdsNrcErrc according to ISO 14229-1 ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). The DM then generates the corresponding negative response message.
  • Cancellation and abort: Via the object cancellationHandler, the application can check using IsCanceled() whether the ongoing diagnostic conversation has been canceled, or register a callback for cancellation via SetNotifier() ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). In the event of a cancellation, the validity of the passed buffer data expires prematurely ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

This guide was generated by an AI based on the specification AUTOSAR Adaptive Platform R25-11.

Member map

Class diagram

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__diag__DownloadService914 DownloadService + DownloadService() + operator=() + ~DownloadService() + DownloadData() + Offer() + RequestDownload() + RequestDownloadExit() + StopOffer()

Detail view

Select an entry in the outline.

Constructors and destructor

DownloadService function 3

Class for an DownloadService.

Overloads DownloadService 3
explicit DownloadService (const ara::core::InstanceSpecifier &specifier, ConcurrencyType concurrencyType) noexcept; SWS_DM_00787
DownloadService (DownloadService &)=delete; SWS_DM_01649
DownloadService (DownloadService &&) noexcept=delete; SWS_DM_01650

Destructor of class DownloadService.

virtual ~DownloadService () noexcept;

Methods

DownloadData function

Called for TransferData following a previous RequestDownload.

virtual ara::core::Future< OperationOutput > DownloadData (ara::core::Span< const std::uint8_t > transferRequestParameterRecord, const MetaInfo &metaInfo, CancellationHandler cancellationHandler) noexcept=0;
Offer function

This Offer will enable the DM to forward request messages to this handler.

ara::core::Result< void > Offer () noexcept;

Called for RequestDownload.

virtual ara::core::Future< void > RequestDownload (std::uint8_t data FormatIdentifier, std::uint8_t addressAndLengthFormatIdentifier, ara::core::Span< const std::uint8_t > memoryAddressAndSize, const Meta Info &metaInfo, CancellationHandler cancellationHandler) noexcept=0;

Called for RequestTransferExit.

virtual ara::core::Future< OperationOutput > RequestDownloadExit (ara::core::Span< const std::uint8_t > transferRequestParameterRecord, const MetaInfo &metaInfo, CancellationHandler cancellationHandler) noexcept=0;
StopOffer function

This StopOffer will disable the forwarding of request messages from DM.

void StopOffer () noexcept;

Operators

operator= function 2

DownloadService shall be a single not assignable instance.

Overloads = 2

Embedded types

Method documentation

function DownloadData [SWS_DM_00790] Upstream: RS_AP_00119, RS_AP_00138, RS_Diag_04033, RS_Diag_04170

virtual ara::core::Future< OperationOutput > DownloadData (ara::core::Span< const std::uint8_t > transferRequestParameterRecord, const MetaInfo &metaInfo, CancellationHandler cancellationHandler) noexcept=0;

Called for TransferData following a previous RequestDownload.

AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: bbbd97ebad00 Provenance Open questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

use

Method [SWS_DM_00790] is called to process data for the UDS service TransferData (0x36) following a previously initiated download request (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.1 “DownloadData”). Execution is asynchronous via ara::core::Future<OperationOutput>.

As inputs, a ara::core::Span<const std::uint8_t> with the data to be transferred (transferRequestParameterRecord), context data via MetaInfo, and a CancellationHandler are passed. The payload remains valid until the promise is satisfied or the operation is cancelled. Upon successful completion, response data is stored in OperationOutput.responseData and placed behind the block sequence counter in the positive response message [SWS_DM_00786].

Error handling

If an error occurs during processing, the promise is completed with an appropriate ErrorCode from DiagUdsNrcErrc (NRC in accordance with ISO 14229-1) as a negative UDS response [SWS_DM_00790].

Concurrency and Limitations

The function is declared as noexcept. Whether the implementation must be executed thread-safely is conditionally determined by the ConcurrencyType passed in the constructor [SWS_DM_00790]. Via the CancellationHandler, the cancellation status can be queried (IsCanceled) or a notification callback can be registered via SetNotifier.

Interaction

The operation implements the processing of TransferData [SWS_DM_00137] after the download session was previously started via RequestDownload (0x34) [SWS_DM_00869]. The transfer of the data blocks presumably occurs sequentially according to the UDS session order. Question Q-fe18230bf7fcdf47 (open)

This usage note was generated automatically based on the AUTOSAR specification.

Implementer's Guide to follow (complexity I1)

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitconditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor

Parameter (in)

ParameterBeschreibung
transferRequestParameterRecorddata to be transferred (copied/downloaded to the ECU/server) Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfoMetaInfo of the request.
cancellationHandlerThis parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.

Rückgabewert

TypBeschreibung
ara::core::Future<OperationOutput >A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.responseData will be placed after the blockSequenceCounter as transferResponseParameterRecord in the positive response.

Fehler

FehlercodeBeschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00790
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00790@rel:R25-11#805cae22
Content hash
805cae22
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00790
Status: valid/unmigrated Version: rel:R25-11#a7575344 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00790@rel:R25-11#a7575344
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#805cae222026-09-30
  • R19-11rel:R19-11#266301b32026-10-14
  • R20-11rel:R20-11#0ebd14d12026-10-14
  • R21-11rel:R21-11#3484339d2026-10-14
  • R22-11rel:R22-11#f928e1d22026-10-14
  • R23-11rel:R23-11#83a2741f2026-10-14
  • R24-11rel:R24-11#0b81b5b92026-10-14
  • R25-11rel:R25-11#a75753442026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function DownloadService [SWS_DM_00787] Upstream: RS_AP_00137, RS_Diag_04033, RS_AP_00170, RS_AP_00171, RS_AP_00172, RS_AP_00173

explicit DownloadService (const ara::core::InstanceSpecifier &specifier, ConcurrencyType concurrencyType) noexcept;

Class for an DownloadService.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe
Verletzungen (Violations)InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticDownloadInterface needs to be typed by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.

Parameter (in)

ParameterBeschreibung
specifierInstanceSpecifier to a PortPrototype of a DiagnosticDownloadInterface
concurrencyTypeSpecifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00787
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00787@rel:R25-11#ffed8390
Content hash
ffed8390
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00787
Status: valid/unmigrated Version: rel:R25-11#8657e8dc Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00787@rel:R25-11#8657e8dc
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#ffed83902026-09-30
  • R19-11rel:R19-11#798c93552026-10-14
  • R20-11rel:R20-11#8f95734d2026-10-14
  • R21-11rel:R21-11#8f95734d2026-10-14
  • R22-11rel:R22-11#36dbe1792026-10-14
  • R23-11rel:R23-11#94e653a32026-10-14
  • R24-11rel:R24-11#a6fa21eb2026-10-14
  • R25-11rel:R25-11#8657e8dc2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function DownloadService [SWS_DM_01649] Upstream: RS_AP_00147

DownloadService (DownloadService &)=delete;

DownloadService shall be a single not copy-able instance.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_01649
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01649@rel:R25-11#cb7ef79e
Content hash
cb7ef79e
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01649
Status: valid/unmigrated Version: rel:R25-11#fb906636 Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_01649@rel:R25-11#fb906636
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#cb7ef79e2026-09-30
  • R23-11rel:R23-11#582c174d2026-10-14
  • R24-11rel:R24-11#808329322026-10-14
  • R25-11rel:R25-11#fb9066362026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function DownloadService [SWS_DM_01650] Upstream: RS_AP_00147

DownloadService (DownloadService &&) noexcept=delete;

Move constructor of DownloadService.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_01650
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01650@rel:R25-11#88c77ae5
Content hash
88c77ae5
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01650
Status: valid/unmigrated Version: rel:R25-11#030ce002 Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_01650@rel:R25-11#030ce002
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#88c77ae52026-09-30
  • R23-11rel:R23-11#fc491d3e2026-10-14
  • R24-11rel:R24-11#030ce0022026-10-14
  • R25-11rel:R25-11#030ce0022026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function Offer [SWS_DM_00792] Upstream: RS_AP_00119, RS_AP_00139, RS_Diag_04033

ara::core::Result< void > Offer () noexcept;

This Offer will enable the DM to forward request messages to this handler.

AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: b7aed34fcbd4 Provenance Open questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

The method Offer of class ara::diag::DownloadService enables the forwarding of incoming download requests by the Diagnostic Management Daemon (DM) to the specific handler [SWS_DM_00792]. The call is made synchronously and without parameters without throwing C++ exceptions (noexcept) [SWS_DM_00792]. Typically, offering is likely to be called during the initialization phase of the processing application before external diagnostic requests arrive. Question Q-0180c707edea0eec (open)

The function returns a ara::core::Result<void> as return value [SWS_DM_00792]. If registration was successful, the result is empty. If the service was already offered to the DM previously, the operation fails with error code DiagOfferErrc::kAlreadyOffered, ensuring rollback semantics [SWS_DM_00792].

Regarding concurrency and safety, the following conditions apply:

  • Thread Safety: The function is classified as not thread-safe (not thread-safe) [SWS_DM_00792]; parallel calls on the same service instance must be synchronized on the application side.
  • Exception Safety: The interface is specified as exception safe (exception safe) [SWS_DM_00792].

The pattern via Offer corresponds to the uniform approach for diagnostic services in AUTOSAR Adaptive, as also analogously defined for UploadService [SWS_DM_00802], SecurityAccess [SWS_DM_00766], or generic UDS services [SWS_DM_00619]. Despite having the same name as other subsystems, it is a specific diagnostic implementation AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 “Monitors”.

This usage note was generated automatically based on the AUTOSAR R25-11 specification.

Implementer's Guide to follow (complexity I1)

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Rückgabewert

TypBeschreibung
ara::core::Result< void >Returns nothing or an error.

Fehler

FehlercodeBeschreibung
DiagOfferErrc::kAlreadyOfferedrollback_semantics The service is already offered.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00792
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00792@rel:R25-11#f711ba55
Content hash
f711ba55
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00792
Status: valid/unmigrated Version: rel:R25-11#b34b20a3 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00792@rel:R25-11#b34b20a3
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#f711ba552026-09-30
  • R19-11rel:R19-11#f492a0482026-10-14
  • R20-11rel:R20-11#887c43c62026-10-14
  • R21-11rel:R21-11#053e9e6c2026-10-14
  • R22-11rel:R22-11#746b90042026-10-14
  • R23-11rel:R23-11#dc45d0452026-10-14
  • R24-11rel:R24-11#15a7b4052026-10-14
  • R25-11rel:R25-11#b34b20a32026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function RequestDownload [SWS_DM_00789] Upstream: RS_AP_00119, RS_AP_00138, RS_Diag_04033, RS_Diag_04170

virtual ara::core::Future< void > RequestDownload (std::uint8_t data FormatIdentifier, std::uint8_t addressAndLengthFormatIdentifier, ara::core::Span< const std::uint8_t > memoryAddressAndSize, const Meta Info &metaInfo, CancellationHandler cancellationHandler) noexcept=0;

Called for RequestDownload.

AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 833b177db92d Provenance Open questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

use

The method RequestDownload of class ara::diag::DownloadService is called by the Diagnostic Server instance to process the UDS service 0x34 (RequestDownload) according to [SWS_DM_00128] and [SWS_DM_00867]. It takes dataFormatIdentifier, addressAndLengthFormatIdentifier, the memory range memoryAddressAndSize, metaInfo as well as a cancellationHandler [SWS_DM_00789]. Processing is performed asynchronously and returns a ara::core::Future<void>; the validity of the data in memoryAddressAndSize remains in effect until the corresponding promise is fulfilled or the operation is canceled [SWS_DM_00789].

Error handling

In case of success, the future is set to void, resulting in a positive response, whereupon a security event SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL is reported to the IdsM [SWS_DM_02031]. If the request fails, the future must be completed with an appropriate error code from DiagUdsNrcErrc according to ISO 14229-1 [SWS_DM_00789].

Concurrency and Interaction

The method is specified as exception safe, while thread safety is conditional and depends on the ConcurrencyType passed in the constructor [SWS_DM_00789]. Cancellation of the conversation can be processed via cancellationHandler.IsCanceled() or a notifier registered via cancellationHandler.SetNotifier [SWS_DM_00789]. After successful execution of RequestDownload, transfer of data via DownloadData typically follows [SWS_DM_00790]. Interpretation: The implementing application is likely to validate the validity of the memory address and size before fulfilling the future, as suggested by the context for memory-related UDS services AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.2 “Common service processing items”. Question Q-728d2e5f7d09e605 (open)

This usage note is based on the specification documents of AUTOSAR Adaptive R25-11.

Implementer's Guide to follow (complexity I1)

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitconditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor

Parameter (in)

ParameterBeschreibung
dataFormatIdentifierUDS dataFormat Identifier
addressAndLengthFormatIdentifierUDS addressAndLengthFormatIdentifier
memoryAddressAndSizememoryAddress and memorySize part of the request. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfoMetaInfo of the request.
cancellationHandlerThis parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.

Rückgabewert

TypBeschreibung
ara::core::Future< void >A Future, which either gets readied to void (for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message)

Fehler

FehlercodeBeschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00789
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00789@rel:R25-11#a74a1c18
Content hash
a74a1c18
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00789
Status: valid/unmigrated Version: rel:R25-11#ffbdbbd3 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00789@rel:R25-11#ffbdbbd3
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#a74a1c182026-09-30
  • R19-11rel:R19-11#f998977a2026-10-14
  • R20-11rel:R20-11#bc61ad7e2026-10-14
  • R21-11rel:R21-11#6fc3d75b2026-10-14
  • R22-11rel:R22-11#21fafce42026-10-14
  • R23-11rel:R23-11#c991e0422026-10-14
  • R24-11rel:R24-11#b09d04162026-10-14
  • R25-11rel:R25-11#ffbdbbd32026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function RequestDownloadExit [SWS_DM_00791] Upstream: RS_AP_00119, RS_AP_00138, RS_Diag_04033, RS_Diag_04170

virtual ara::core::Future< OperationOutput > RequestDownloadExit (ara::core::Span< const std::uint8_t > transferRequestParameterRecord, const MetaInfo &metaInfo, CancellationHandler cancellationHandler) noexcept=0;

Called for RequestTransferExit.

AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 5b80145a92c9 Provenance
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

The method RequestDownloadExit of class ara::diag::DownloadService is called by the Diagnostic Server instance to process the UDS service RequestTransferExit (0x37) within the scope of a download sequence ([SWS_DM_00141], [SWS_DM_00871], SWS Diagnostics §7.3.2.8.19 “Service 0x37 – RequestTransferExit”).

When called, the following parameters are passed ([SWS_DM_00791]):

  • transferRequestParameterRecord: A ara::core::Span<const std::uint8_t> containing vehicle-manufacturer-specific parameters to support the data transfer. The validity of this memory persists until the corresponding promise is fulfilled or processing is canceled.
  • metaInfo: Meta-information on the diagnostic request.
  • cancellationHandler: Serves for status queries by means of cancellationHandler.IsCanceled() as well as the registration of a notification function via cancellationHandler.SetNotifier().

The function operates asynchronously and returns a ara::core::Future<OperationOutput> ([SWS_DM_00791]). In case of success, the future is fulfilled with OperationOutput; the data contained in OperationOutput::responseData ([SWS_DM_00786]) are embedded after the service ID as transferResponseParameterRecord into the positive response ([SWS_DM_00791]).

If an error occurs, the future must be completed with an appropriate error code from DiagUdsNrcErrc (Negative Response Code according to ISO 14229-1) ([SWS_DM_00791]). The interface is specified as noexcept; its thread safety is conditional and is defined via the ConcurrencyType during object creation ([SWS_DM_00791]).

This text was generated by an AI and serves documentation purposes.

Implementer's Guide to follow (complexity I1)

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitconditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor

Parameter (in)

ParameterBeschreibung
transferRequestParameterRecordThis parameter record contains parameter(s), which are required by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfoMetaInfo of the request.
cancellationHandlerThis parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.

Rückgabewert

TypBeschreibung
ara::core::Future<OperationOutput >A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.responseData will be placed after SID as transferResponseParameterRecord in the positive response.

Fehler

FehlercodeBeschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00791
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00791@rel:R25-11#3e342a36
Content hash
3e342a36
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00791
Status: valid/unmigrated Version: rel:R25-11#21344e94 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00791@rel:R25-11#21344e94
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#3e342a362026-09-30
  • R19-11rel:R19-11#8e6663042026-10-14
  • R20-11rel:R20-11#54678f6b2026-10-14
  • R21-11rel:R21-11#2a0ccfbc2026-10-14
  • R22-11rel:R22-11#1e8b923b2026-10-14
  • R23-11rel:R23-11#c81ea4142026-10-14
  • R24-11rel:R24-11#6f5df7482026-10-14
  • R25-11rel:R25-11#21344e942026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function StopOffer [SWS_DM_00793] Upstream: RS_Diag_04033

void StopOffer () noexcept;

This StopOffer will disable the forwarding of request messages from DM.

AI-GENERATED unreviewed Model: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: 92aeeee277b1 Provenance Open questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original

Usage and Call Context

The function StopOffer of class ara::diag::DownloadService (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.5 “StopOffer”, [SWS_DM_00793]) serves to disable the forwarding of incoming diagnostic request messages from Diagnostic Management (DM) to the service instance. The synchronous interface has the signature void StopOffer () noexcept;, takes no parameters, and returns no value ([SWS_DM_00793]). The call is made via the header #include "ara/diag/download.h" ([SWS_DM_00793]).

Error Handling and Concurrency

Regarding error handling, the method is declared as exception safe (exception safe) and with noexcept; neither exceptions are thrown nor error codes generated ([SWS_DM_00793]). For concurrency, StopOffer is not thread-safe (not thread-safe) ([SWS_DM_00793]). Simultaneous calls from multiple threads on the same instance must thus be synchronized by the application.

Interaction in the Diagnostic System

Disabling services via StopOffer follows a uniform pattern within AUTOSAR Adaptive: For upload services, the functional counterpart ara::diag::UploadService::StopOffer exists ([SWS_DM_00803]), as do analogous methods for CommunicationControl ([SWS_DM_00810]), Authentication ([SWS_DM_01131]), and EcuResetRequest ([SWS_DM_01017]). The naming is modeled after the platform conventions, but represents an independent diagnostic implementation (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 “Monitors”). Interpretation: After calling StopOffer, the DM is expected to no longer forward or to discard incoming UDS download requests until the service is offered again. Question Q-a45cc70b6ae09431 (open)

This usage note was generated automatically based on the AUTOSAR specification R25-11.

Implementer's Guide to follow (complexity I2)

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Rückgabewert

TypBeschreibung
None

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00793
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00793@rel:R25-11#2738b0bc
Content hash
2738b0bc
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00793
Status: valid/unmigrated Version: rel:R25-11#1636e4f0 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00793@rel:R25-11#1636e4f0
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#2738b0bc2026-09-30
  • R19-11rel:R19-11#bc39bfa02026-10-14
  • R20-11rel:R20-11#268f9e722026-10-14
  • R21-11rel:R21-11#ac0a03612026-10-14
  • R22-11rel:R22-11#7903b38f2026-10-14
  • R23-11rel:R23-11#27bfc5a42026-10-14
  • R24-11rel:R24-11#93e117af2026-10-14
  • R25-11rel:R25-11#1636e4f02026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function operator= [SWS_DM_01647] Upstream: RS_AP_00147

DownloadService & operator= (DownloadService &)=delete;

DownloadService shall be a single not assignable instance.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_01647
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01647@rel:R25-11#2a6e089d
Content hash
2a6e089d
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01647
Status: valid/unmigrated Version: rel:R25-11#304074df Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_01647@rel:R25-11#304074df
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#2a6e089d2026-09-30
  • R23-11rel:R23-11#e243c4cf2026-10-14
  • R24-11rel:R24-11#ed6b07a12026-10-14
  • R25-11rel:R25-11#304074df2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function operator= [SWS_DM_01648] Upstream: RS_AP_00147

DownloadService & operator= (DownloadService &&)=delete;

Move assignment operator of DownloadService.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_01648
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01648@rel:R25-11#8eefcc8a
Content hash
8eefcc8a
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01648
Status: valid/unmigrated Version: rel:R25-11#490d7891 Versionshistorie & Revisions (1 transition, 4 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_01648@rel:R25-11#490d7891
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#8eefcc8a2026-09-30
  • R23-11rel:R23-11#65f181ef2026-10-14
  • R24-11rel:R24-11#490d78912026-10-14
  • R25-11rel:R25-11#490d78912026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

function ~DownloadService [SWS_DM_00788] Upstream: RS_AP_00134, RS_Diag_04033

virtual ~DownloadService () noexcept;

Destructor of class DownloadService.

Header-Datei#include "ara/diag/download.h"
Scopeclass ara::diag::DownloadService
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_DM_00788
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00788@rel:R25-11#b5d61024
Content hash
b5d61024
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00788
Status: valid/unmigrated Version: rel:R25-11#45cce01a Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_DM_00788@rel:R25-11#45cce01a
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#b5d610242026-09-30
  • R19-11rel:R19-11#47e107992026-10-14
  • R20-11rel:R20-11#af90c1862026-10-14
  • R21-11rel:R21-11#af90c1862026-10-14
  • R22-11rel:R22-11#987c3d212026-10-14
  • R23-11rel:R23-11#acfe51ff2026-10-14
  • R24-11rel:R24-11#5b94246d2026-10-14
  • R25-11rel:R25-11#45cce01a2026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill