DEENESPTFRRUARHIKOZHNL

classe 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

Guia do utilizadorGERADO POR IA

Serve como interface para o processamento de sessões de download UDS com transferência de dados e verificação de conclusão.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 80e540367c50 Procedência Perguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Serve como interface para o processamento de sessões de download UDS com transferência de dados e verificação de conclusão.

A classe abstrata ara::diag::DownloadService serve como interface funcional para o processamento de procedimentos de download UDS na AUTOSAR Adaptive Platform ([SWS_DM_00787]). Após a ativação por meio de Offer(), o Diagnostic Management encaminha as requisições de diagnóstico de inicialização, transferência de dados em blocos e verificação de conclusão para a implementação específica da aplicação ([SWS_DM_00792]). A instância não é copiável nem movível e exige, no momento da criação, um mapeamento unívoco de porta, bem como a definição do comportamento de concorrência. Todas as rotinas de transmissão retornam futuros assíncronos, com erros sendo sinalizados por meio de Negative Response Codes.

Contexto

A classe abstrata ara::diag::DownloadService define a interface funcional em C++ para a realização de serviços de download de diagnóstico na AUTOSAR Adaptive Platform ([SWS_DM_00787]). Ela atua como um manipulador de serviço padronizado, para o qual o Diagnostic Management (DM) encaminha requisições UDS recebidas segundo a ISO 14229-1 ([SWS_DM_00792]). A vinculação à arquitetura de software é realizada por meio de um PortPrototype modelado de um DiagnosticDownloadInterface, o qual é resolvido em tempo de execução através de um ara::core::InstanceSpecifier ([SWS_DM_00787]). Um componente de diagnóstico específico da aplicação herda dessa interface e implementa a lógica de controle concreta para o início, a transferência de dados em blocos, bem como a conclusão ordenada de sequências de download na unidade de comando ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

Ciclo de vida

A instanciação ocorre por meio do construtor, com a especificação de um ara::core::InstanceSpecifier e de um ConcurrencyType ([SWS_DM_00787]). Durante isso, a plataforma valida a integridade do modelo; mapeamentos de porta incorretos ou o uso múltiplo do mesmo identificador no processo levam a erros em tempo de execução ([SWS_DM_00787]). Para garantir um mapeamento unívoco para a porta de diagnóstico, ara::diag::DownloadService foi concebido como uma instância única: tanto o construtor de cópia ([SWS_DM_01649]) e o operador de atribuição por cópia ([SWS_DM_01647]) quanto o construtor de movimento ([SWS_DM_01650]) e a atribuição por movimento ([SWS_DM_01648]) foram excluídos (delete).

Após a criação, a instância encontra-se no estado inativo. O encaminhamento de requisições de diagnóstico pelo DM só é habilitado por meio da chamada de Offer() ([SWS_DM_00792]). Por meio de StopOffer(), esse encaminhamento pode ser novamente desativado ([SWS_DM_00793]). Após a desativação, presume-se que uma nova chamada de Offer() seja permitida (interpretação), caso o serviço precise ser reativado no fluxo da aplicação. O destrutor virtual ~DownloadService() encerra o ciclo de vida do manipulador ([SWS_DM_00788]). Pergunta Q-475cd8b8a6a86754 (aberta)

Em relação à segurança de threads, o construtor é seguro para threads, enquanto Offer(), StopOffer() e o destrutor não são seguros para threads ([SWS_DM_00787], [SWS_DM_00788], [SWS_DM_00792], [SWS_DM_00793]). Se os métodos de serviço derivados precisam ser processados de forma concorrente, isso depende do ConcurrencyType selecionado na chamada do construtor (kConcurrent ou kNotConcurrent) ([SWS_DM_00787], [SWS_DM_00789]).

DownloadServiceLifecycle NichtInit Não inicializado Instanziiert Instanciado (não oferecido) NichtInit->Instanziiert DownloadService() Instanziiert->NichtInit ~DownloadService() Angeboten Angeboten (Weiterleitung aktiv) Instanziiert->Angeboten Offer() Angeboten->Instanziiert StopOffer()

Diagrama de estados: ciclo de vida de uma instância de DownloadService, desde a criação passando pelo status de oferta até a destruição. Fontes: [SWS_DM_00787], [SWS_DM_00792], [SWS_DM_00793], [SWS_DM_00788]

Caminho de utilização

Um processo regular de download segue uma sequência de três etapas composta por inicialização, transferência de dados e verificação de conclusão:

  • Inicialização do download: Após a disponibilização do serviço via Offer() ([SWS_DM_00792]), o DM recebe uma requisição UDS para inicialização do download e chama RequestDownload() ([SWS_DM_00789]). A aplicação verifica parâmetros como dataFormatIdentifier, addressAndLengthFormatIdentifier, bem como o endereço de destino e o tamanho da memória em memoryAddressAndSize ([SWS_DM_00789]). Após a verificação bem-sucedida, o ara::core::Future<void> retornado é resolvido positivamente ([SWS_DM_00789]).
  • Transferência de dados: Para mensagens TransferData subsequentes, o DM chama ciclicamente DownloadData() ([SWS_DM_00790]). O segmento transferRequestParameterRecord contém os dados úteis e permanece válido até que a promise associada seja cumprida ou o processamento seja cancelado ([SWS_DM_00790]). O ara::core::Future<OperationOutput> retornado disponibiliza dados de resposta positiva, que são posicionados atrás do contador de blocos na resposta UDS ([SWS_DM_00790]).
  • Conclusão da transferência: Após a transferência completa dos dados, o DM chama RequestDownloadExit() ([SWS_DM_00791]). A aplicação processa parâmetros específicos do fabricante a partir de transferRequestParameterRecord (por exemplo, somas de verificação finais) e confirma a requisição assincronamente por meio de um ara::core::Future<OperationOutput> ([SWS_DM_00791]).

O processamento dos blocos de dados úteis deve ocorrer tipicamente em threads de segundo plano assíncronas da aplicação (interpretação), visto que a interface trabalha com ara::core::Future e um cancellationHandler é passado a cada chamada para verificação de cancelamento ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). Pergunta Q-ba0fca00446cb679 (aberta) Após a conclusão de todos os procedimentos, a aplicação cancela o registro do serviço por meio de StopOffer() ([SWS_DM_00793]).

Fluxo típico de uma sessão de download UDSDMDownloadServiceUse Case: DienstregistrierungOffer()Result<void> (Erfolg)Use Case: Download-InitialisierungRequestDownload(dataFormatIdentifier, addressAndLengthFormatIdentifier, memoryAddressAndSize, metaInfo, cancellationHandler)Future<void> (sucesso ou NRC)Use Case: Transmissão de dadosloopPara cada bloco de dados (TransferData)DownloadData(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (sucesso ou NRC)Use Case: Conclusão da transferênciaRequestDownloadExit(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (sucesso ou NRC)Use Case: DienstabmeldungStopOffer()

Diagrama de sequência: fluxo típico de uma sessão de download UDS entre o Diagnostic Management (DM) e o DownloadService. Fontes: [SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791], [SWS_DM_00792], [SWS_DM_00793]

Cenários de erro

Podem ocorrer erros na configuração, no registro do serviço, bem como durante a execução do protocolo:

  • Violações de configuração: Se o InstanceSpecifier não puder ser resolvido no modelo ou não apontar para um PortPrototype, uma InstanceSpecifierMappingIntegrityViolation será disparada ([SWS_DM_00787]). Uma tipificação ausente por um DiagnosticServiceGenericMapping resulta em uma PortInterfaceMappingViolation ([SWS_DM_00787]). Além disso, atribuições de processo ausentes (ProcessMappingViolation) ou a reutilização de um identificador já ocupado (InstanceSpecifierAlreadyInUseViolation) resultam em erros de instanciação ([SWS_DM_00787]).
  • Erros de oferta: Se Offer() for chamado quando o serviço já estiver sendo ativamente oferecido, a chamada retornará o código de erro DiagOfferErrc::kAlreadyOffered em um ara::core::Result ([SWS_DM_00792]).
  • Respostas negativas de diagnóstico: Se o processamento em RequestDownload(), DownloadData() ou RequestDownloadExit() falhar (por exemplo, devido a faixas de endereços inválidas ou erros de bloco), a aplicação encerra a respectiva ara::core::Future com um código de erro de DiagUdsNrcErrc em conformidade com a ISO 14229-1 ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). O DM gera então a mensagem de resposta negativa correspondente.
  • Cancelamento e interrupção: Por meio do objeto cancellationHandler, a aplicação pode verificar via IsCanceled() se a conversação de diagnóstico em andamento foi interrompida, ou registrar um callback para a interrupção por meio de SetNotifier() ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). Em caso de cancelamento, a validade dos dados do buffer passados expira prematuramente ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

Este guia foi gerado por uma IA com base na especificação AUTOSAR Adaptive Platform R25-11.

Mapa de membros

Diagrama de classes

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

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

Vista de detalhes

Selecione uma entrada no índice.

Construtores e destrutor

DownloadService função 3

Class for an DownloadService.

Sobrecargas 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;

Métodos

DownloadData função

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 função

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 função

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

void StopOffer () noexcept;

Operadores

operator= função 2

DownloadService shall be a single not assignable instance.

Sobrecargas = 2

Tipos aninhados

Documentação dos métodos

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: bbbd97ebad00 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

O método [SWS_DM_00790] é chamado para processar dados para o serviço UDS TransferData (0x36) após uma solicitação de download iniciada anteriormente (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.1 «DownloadData»). A execução ocorre de forma assíncrona através de ara::core::Future<OperationOutput>.

Como entradas, são passados um ara::core::Span<const std::uint8_t> com os dados a serem transmitidos (transferRequestParameterRecord), dados de contexto via MetaInfo e um CancellationHandler. Os dados úteis permanecem válidos até que o Promise seja cumprido ou a operação seja cancelada. Em caso de conclusão bem-sucedida, os dados de resposta são armazenados em OperationOutput.responseData e posicionados após o contador de sequência de blocos na mensagem de resposta positiva [SWS_DM_00786].

Tratamento de erros

Se ocorrer um erro durante o processamento, o Promise é concluído com um ErrorCode apropriado de DiagUdsNrcErrc (NRC em conformidade com a ISO 14229-1) como resposta UDS negativa [SWS_DM_00790].

Simultaneidade e restrições

A função é declarada como noexcept. Se a implementação deve ser executada de forma segura para threads é determinado condicionalmente pelo ConcurrencyType passado no construtor [SWS_DM_00790]. Através do CancellationHandler, o estado de cancelamento pode ser consultado (IsCanceled) ou um callback de notificação pode ser registrado através de SetNotifier.

Interação

A operação implementa o processamento de TransferData [SWS_DM_00137] após a sessão de download ter sido iniciada previamente via RequestDownload (0x34) [SWS_DM_00869]. Provavelmente, a passagem dos blocos de dados ocorre sequencialmente de acordo com a ordem da sessão UDS. Pergunta Q-fe18230bf7fcdf47 (aberta)

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade 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#b0fe3056
Content hash
b0fe3056
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

função 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#48511e53
Content hash
48511e53
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

função 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#41f7981d
Content hash
41f7981d
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

função 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#9944b201
Content hash
9944b201
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

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: b7aed34fcbd4 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O método Offer da classe ara::diag::DownloadService habilita o encaminhamento de solicitações de download de entrada pelo Diagnostic Management Daemon (DM) para o manipulador específico [SWS_DM_00792]. A chamada ocorre de forma síncrona e sem parâmetros, sem disparar exceções C++ (noexcept) [SWS_DM_00792]. Tipicamente, a disponibilização deve ser chamada durante a fase de inicialização da aplicação de processamento, antes que solicitações de diagnóstico externas cheguem. Pergunta Q-0180c707edea0eec (aberta)

Como valor de retorno, a função fornece um ara::core::Result<void> [SWS_DM_00792]. Se o registro foi bem-sucedido, o resultado é vazio. Se o serviço já tiver sido oferecido ao DM anteriormente, a operação falha com o código de erro DiagOfferErrc::kAlreadyOffered, sendo assegurada uma semântica de reversão [SWS_DM_00792].

No que diz respeito à concorrência e à segurança, aplicam-se as seguintes condições:

  • Segurança de thread: a função é classificada como não segura para threads (not thread-safe) [SWS_DM_00792]; chamadas paralelas na mesma instância de serviço devem ser sincronizadas do lado da aplicação.
  • Segurança contra exceções: a interface é especificada como segura contra exceções (exception safe) [SWS_DM_00792].

O padrão via Offer corresponde ao procedimento uniforme para serviços de diagnóstico no AUTOSAR Adaptive, conforme definido de maneira análoga também para UploadService [SWS_DM_00802], SecurityAccess [SWS_DM_00766] ou serviços UDS genéricos [SWS_DM_00619]. Apesar da igualdade de nomes com outros subsistemas, trata-se de uma implementação de diagnóstico específica AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R25-11.

Guia do implementador em breve (complexidade 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#d08f3fe6
Content hash
d08f3fe6
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

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 833b177db92d Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

O método RequestDownload da classe ara::diag::DownloadService é chamado pela Diagnostic Server instance para processar o serviço UDS 0x34 (RequestDownload) de acordo com [SWS_DM_00128] e [SWS_DM_00867]. Recebe dataFormatIdentifier, addressAndLengthFormatIdentifier, o intervalo de memória memoryAddressAndSize, metaInfo bem como um cancellationHandler [SWS_DM_00789]. O processamento ocorre de forma assíncrona e devolve um ara::core::Future<void>; a validade dos dados em memoryAddressAndSize mantém-se até que a promise correspondente seja cumprida ou a operação seja cancelada [SWS_DM_00789].

Tratamento de erros

Em caso de sucesso, a future é definida como void, o que resulta numa resposta positiva, sendo em seguida reportado um evento de segurança SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL ao IdsM [SWS_DM_02031]. Se o pedido falhar, a future deve ser concluída com um código de erro adequado de DiagUdsNrcErrc conforme a ISO 14229-1 [SWS_DM_00789].

Concorrência e interação

O método está especificado como exception safe, enquanto a segurança de threads é condicional e depende do ConcurrencyType passado no construtor [SWS_DM_00789]. Através de cancellationHandler.IsCanceled() ou de um notificador registado via cancellationHandler.SetNotifier pode ser processado um cancelamento da conversação [SWS_DM_00789]. Após a execução bem-sucedida de RequestDownload, segue-se tipicamente a transferência dos dados através de DownloadData [SWS_DM_00790]. Interpretação: a aplicação implementadora deverá validar a validade do endereço de memória e do tamanho antes do cumprimento da future, tal como o contexto para serviços UDS relacionados com a memória sugere AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.2 «Common service processing items». Pergunta Q-728d2e5f7d09e605 (aberta)

Esta nota de utilização baseia-se nos documentos de especificação da AUTOSAR Adaptive R25-11.

Guia do implementador em breve (complexidade 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#45491a68
Content hash
45491a68
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

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5b80145a92c9 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O método RequestDownloadExit da classe ara::diag::DownloadService é chamado pela instância do Diagnostic Server para processar o serviço UDS RequestTransferExit (0x37) no âmbito de uma sequência de download ([SWS_DM_00141], [SWS_DM_00871], SWS Diagnostics §7.3.2.8.19 «Service 0x37 – RequestTransferExit»).

Na chamada, são passados os seguintes parâmetros ([SWS_DM_00791]):

  • transferRequestParameterRecord: Um ara::core::Span<const std::uint8_t> com parâmetros específicos do fabricante do veículo para suporte da transferência de dados. A validade desta memória mantém-se até que a promise correspondente seja cumprida ou o processamento seja cancelado.
  • metaInfo: Metainformações sobre o pedido de diagnóstico.
  • cancellationHandler: Serve para a consulta de estado por meio de cancellationHandler.IsCanceled() bem como para o registo de uma função de notificação através de cancellationHandler.SetNotifier().

A função opera de forma assíncrona e devolve um ara::core::Future<OperationOutput> ([SWS_DM_00791]). Em caso de sucesso, a future é cumprida com OperationOutput; os dados contidos em OperationOutput::responseData ([SWS_DM_00786]) são incorporados na resposta positiva a seguir ao ID de serviço como transferResponseParameterRecord ([SWS_DM_00791]).

Se ocorrer um erro, a future deve ser concluída com um código de erro adequado de DiagUdsNrcErrc (Negative Response Code segundo a ISO 14229-1) ([SWS_DM_00791]). A interface está especificada como noexcept; a sua segurança de threads é condicional e é definida através do ConcurrencyType aquando da criação do objeto ([SWS_DM_00791]).

Este texto foi gerado por uma IA e serve para fins de documentação.

Guia do implementador em breve (complexidade 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#10f0e04c
Content hash
10f0e04c
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

função StopOffer [SWS_DM_00793] Upstream: RS_Diag_04033

void StopOffer () noexcept;

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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 92aeeee277b1 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função StopOffer da classe ara::diag::DownloadService (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.5 «StopOffer», [SWS_DM_00793]) serve para desativar o encaminhamento de mensagens de pedido de diagnóstico recebidas do Diagnostic Management (DM) para a instância de serviço. A interface síncrona possui a assinatura void StopOffer () noexcept;, não recebe parâmetros e não fornece qualquer valor de retorno ([SWS_DM_00793]). A chamada é feita através do cabeçalho #include "ara/diag/download.h" ([SWS_DM_00793]).

Tratamento de erros e simultaneidade

Em relação ao tratamento de erros, o método é declarado como seguro contra exceções (exception safe) e com noexcept; não são lançadas exceções nem gerados códigos de erro ([SWS_DM_00793]). Quanto à concorrência, aplica-se que StopOffer não é seguro para threads (not thread-safe) ([SWS_DM_00793]). Chamadas simultâneas a partir de múltiplas threads para a mesma instância devem, portanto, ser sincronizadas pelo lado da aplicação.

Interação no sistema de diagnóstico

A desativação de serviços via StopOffer segue um padrão uniforme dentro do AUTOSAR Adaptive: para serviços de upload existe o equivalente funcional ara::diag::UploadService::StopOffer ([SWS_DM_00803]), bem como métodos análogos para CommunicationControl ([SWS_DM_00810]), Authentication ([SWS_DM_01131]) e EcuResetRequest ([SWS_DM_01017]). A nomenclatura baseia-se nas convenções da plataforma, mas representa uma implementação de diagnóstico independente (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Interpretação: após a chamada de StopOffer, o DM provavelmente não deverá mais encaminhar ou descartará solicitações de download UDS recebidas, até que o serviço seja oferecido novamente. Pergunta Q-a45cc70b6ae09431 (aberta)

Esta nota de utilização foi gerada automaticamente com base na especificação AUTOSAR R25-11.

Guia do implementador em breve (complexidade 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#5b5b7827
Content hash
5b5b7827
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

função 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#4f238d6c
Content hash
4f238d6c
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

função 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#adcb699c
Content hash
adcb699c
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

função ~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#2a5f669a
Content hash
2a5f669a
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