DEENESPTFRRUARHIKOZHNL

clase 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

Guía del usuarioGENERADO POR IA

Sirve como interfaz para el procesamiento de sesiones de descarga UDS con transferencia de datos y verificación de finalización.
GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 80e540367c50 Procedencia Preguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Sirve como interfaz para el procesamiento de sesiones de descarga UDS con transferencia de datos y verificación de finalización.

La clase abstracta ara::diag::DownloadService sirve como interfaz funcional para gestionar procesos de descarga UDS en la AUTOSAR Adaptive Platform ([SWS_DM_00787]). Tras la activación mediante Offer(), Diagnostic Management reenvía las solicitudes de diagnóstico de inicialización, transferencia de datos por bloques y verificación de finalización a la implementación específica de la aplicación ([SWS_DM_00792]). La instancia no es copiable ni trasladable y requiere, en el momento de la creación, una asignación unívoca de puerto, así como la definición del comportamiento de concurrencia. Todas las rutinas de transferencia devuelven futuros asíncronos, señalizándose los errores mediante Negative Response Codes.

Contexto

La clase abstracta ara::diag::DownloadService define la interfaz funcional de C++ para implementar servicios de descarga de diagnóstico en la AUTOSAR Adaptive Platform ([SWS_DM_00787]). Actúa como un manejador de servicio estandarizado al cual Diagnostic Management (DM) reenvía las solicitudes UDS entrantes según ISO 14229-1 ([SWS_DM_00792]). La vinculación con la arquitectura de software se realiza a través de un PortPrototype modelado de un DiagnosticDownloadInterface, el cual se resuelve en tiempo de ejecución a través de un ara::core::InstanceSpecifier ([SWS_DM_00787]). Un componente de diagnóstico específico de la aplicación hereda de esta interfaz e implementa la lógica de control concreta para el inicio, la transferencia de datos por bloques y la finalización ordenada de secuencias de descarga en la unidad de control ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

Ciclo de vida

La instanciación se realiza a través del constructor indicando un ara::core::InstanceSpecifier y un ConcurrencyType ([SWS_DM_00787]). Durante este proceso, la plataforma valida la integridad del modelo; asignaciones de puerto erróneas o el uso múltiple del mismo identificador en el proceso conducen a errores de tiempo de ejecución ([SWS_DM_00787]). Para garantizar una correspondencia unívoca con el puerto de diagnóstico, ara::diag::DownloadService está diseñado como una instancia única: tanto el constructor de copia ([SWS_DM_01649]) y el operador de asignación por copia ([SWS_DM_01647]) como el constructor de movimiento ([SWS_DM_01650]) y la asignación por movimiento ([SWS_DM_01648]) están eliminados (delete).

Tras su creación, la instancia se encuentra en estado inactivo. Solo mediante la llamada a Offer() se habilita el reenvío de solicitudes de diagnóstico por parte del DM ([SWS_DM_00792]). Mediante StopOffer() se puede volver a desactivar este reenvío ([SWS_DM_00793]). Tras la desactivación, probablemente debería ser admisible una nueva llamada a Offer() (interpretación) en caso de que el servicio deba reactivarse en el flujo de la aplicación. Pregunta Q-475cd8b8a6a86754 (abierta) El destructor virtual ~DownloadService() finaliza el ciclo de vida del manejador ([SWS_DM_00788]).

En cuanto a la seguridad para subprocesos, el constructor es seguro para subprocesos, mientras que Offer(), StopOffer() y el destructor no son seguros para subprocesos ([SWS_DM_00787], [SWS_DM_00788], [SWS_DM_00792], [SWS_DM_00793]). Que los métodos de servicio derivados deban procesarse de forma concurrente depende del ConcurrencyType (kConcurrent o kNotConcurrent) seleccionado en la llamada al constructor ([SWS_DM_00787], [SWS_DM_00789]).

DownloadServiceLifecycle NichtInit No inicializado Instanziiert Instanciado (no ofrecido) NichtInit->Instanziiert DownloadService() Instanziiert->NichtInit ~DownloadService() Angeboten Angeboten (Weiterleitung aktiv) Instanziiert->Angeboten Offer() Angeboten->Instanziiert StopOffer()

Diagrama de estados: ciclo de vida de una instancia de DownloadService desde la creación, pasando por el estado de oferta, hasta la destrucción. Fuentes: [SWS_DM_00787], [SWS_DM_00792], [SWS_DM_00793], [SWS_DM_00788]

Ruta de uso

Un proceso de descarga regular sigue una secuencia de tres etapas compuesta por inicialización, transferencia de datos y verificación de finalización:

  • Inicialización de la descarga: tras ofrecer el servicio mediante Offer() ([SWS_DM_00792]), el DM recibe una solicitud UDS de inicialización de descarga e invoca RequestDownload() ([SWS_DM_00789]). La aplicación verifica parámetros como dataFormatIdentifier, addressAndLengthFormatIdentifier, así como la dirección de destino y el tamaño de memoria en memoryAddressAndSize ([SWS_DM_00789]). Tras una verificación exitosa, el ara::core::Future<void> devuelto se resuelve positivamente ([SWS_DM_00789]).
  • Transferencia de datos: para mensajes TransferData posteriores, el DM invoca cíclicamente DownloadData() ([SWS_DM_00790]). El segmento transferRequestParameterRecord contiene los datos útiles y sigue siendo válido hasta que se cumple la promesa correspondiente o se cancela el procesamiento ([SWS_DM_00790]). El ara::core::Future<OperationOutput> devuelto proporciona datos de respuesta positiva que se sitúan detrás del contador de bloques en la respuesta UDS ([SWS_DM_00790]).
  • Finalización de la transferencia: una vez completada la transferencia de datos, el DM invoca RequestDownloadExit() ([SWS_DM_00791]). La aplicación procesa parámetros específicos del fabricante de transferRequestParameterRecord (p. ej., sumas de comprobación finales) y confirma la solicitud de forma asíncrona mediante un ara::core::Future<OperationOutput> ([SWS_DM_00791]).

El procesamiento de los bloques de datos útiles probablemente debería tener lugar típicamente en subprocesos de fondo asíncronos de la aplicación (interpretación), ya que la interfaz opera con ara::core::Future y en cada llamada se transfiere un cancellationHandler para la comprobación de cancelación ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). Pregunta Q-ba0fca00446cb679 (abierta) Una vez finalizadas todas las operaciones, la aplicación desregistra el servicio mediante StopOffer() ([SWS_DM_00793]).

Flujo típico de una sesión de descarga UDSDMDownloadServiceUse Case: DienstregistrierungOffer()Result<void> (Erfolg)Use Case: Download-InitialisierungRequestDownload(dataFormatIdentifier, addressAndLengthFormatIdentifier, memoryAddressAndSize, metaInfo, cancellationHandler)Future<void> (éxito o NRC)Use Case: Transmisión de datosloopPara cada bloque de datos (TransferData)DownloadData(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (éxito o NRC)Use Case: Finalización de la transferenciaRequestDownloadExit(transferRequestParameterRecord, metaInfo, cancellationHandler)Future<OperationOutput> (éxito o NRC)Use Case: DienstabmeldungStopOffer()

Diagrama de secuencia: flujo típico de una sesión de descarga UDS entre Diagnostic Management (DM) y DownloadService. Fuentes: [SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791], [SWS_DM_00792], [SWS_DM_00793]

Escenarios de error

Pueden producirse errores durante la configuración, durante el registro del servicio, así como en el flujo continuo del protocolo:

  • Infracciones de configuración: si el InstanceSpecifier no se puede resolver en el modelo o no apunta a un PortPrototype, se desencadena una InstanceSpecifierMappingIntegrityViolation ([SWS_DM_00787]). La falta de tipificación mediante un DiagnosticServiceGenericMapping conduce a una PortInterfaceMappingViolation ([SWS_DM_00787]). Además, las asignaciones de proceso faltantes (ProcessMappingViolation) o la reutilización de un identificador ya asignado (InstanceSpecifierAlreadyInUseViolation) dan lugar a errores de instanciación ([SWS_DM_00787]).
  • Errores de oferta: si se invoca Offer() cuando el servicio ya se está ofreciendo de forma activa, la llamada devuelve el código de error DiagOfferErrc::kAlreadyOffered en un ara::core::Result ([SWS_DM_00792]).
  • Respuestas negativas de diagnóstico: si falla el procesamiento en RequestDownload(), DownloadData() o RequestDownloadExit() (p. ej., debido a rangos de direcciones no válidos o errores de bloque), la aplicación concluye el ara::core::Future correspondiente con un código de error de DiagUdsNrcErrc de conformidad con ISO 14229-1 ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). A continuación, el DM genera el mensaje de respuesta negativa correspondiente.
  • Cancelación e interrupción: a través del objeto cancellationHandler, la aplicación puede verificar mediante IsCanceled() si la conversación de diagnóstico en curso fue interrumpida, o bien registrar mediante SetNotifier() una retrollamada para la interrupción ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]). En caso de cancelación, la validez de los datos de búfer transferidos expira de forma anticipada ([SWS_DM_00789], [SWS_DM_00790], [SWS_DM_00791]).

Esta guía fue generada por una IA sobre la base de la especificación AUTOSAR Adaptive Platform R25-11.

Mapa de miembros

Diagrama de clases

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 detalle

Selecciona una entrada en el índice.

Constructores y destructor

DownloadService función 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 función

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 función

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 función

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

void StopOffer () noexcept;

Operadores

operator= función 2

DownloadService shall be a single not assignable instance.

Sobrecargas = 2

Tipos anidados

Documentación de los métodos

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: bbbd97ebad00 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

El método [SWS_DM_00790] se llama para procesar datos para el servicio UDS TransferData (0x36) tras una petición de descarga iniciada previamente (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.1 «DownloadData»). La ejecución se realiza de forma asíncrona a través de ara::core::Future<OperationOutput>.

Como entradas se pasan un ara::core::Span<const std::uint8_t> con los datos que se van a transferir (transferRequestParameterRecord), datos de contexto vía MetaInfo, así como un CancellationHandler. Los datos útiles siguen siendo válidos hasta que se cumpla la promesa o se cancele la operación. En caso de conclusión con éxito, los datos de respuesta se almacenan en OperationOutput.responseData y se ubican detrás del contador correlativo de bloques en el mensaje de respuesta positiva [SWS_DM_00786].

Manejo de errores

Si se produce un error durante el procesamiento, la promesa se concluye con un ErrorCode adecuado procedente de DiagUdsNrcErrc (NRC según ISO 14229-1) como respuesta negativa UDS [SWS_DM_00790].

Concurrencia y restricciones

La función está declarada como noexcept. Si la implementación debe ejecutarse de forma segura frente a hilos se determina de manera condicional mediante el ConcurrencyType pasado en el constructor [SWS_DM_00790]. A través del CancellationHandler se puede consultar el estado de cancelación (IsCanceled) o registrar un callback de notificación vía SetNotifier.

Interacción

La operación materializa el procesamiento de TransferData [SWS_DM_00137] después de que previamente se haya iniciado la sesión de descarga mediante RequestDownload (0x34) [SWS_DM_00869]. Presumiblemente, la entrega de los bloques de datos se realiza de forma secuencial conforme al orden de la sesión UDS. Pregunta Q-fe18230bf7fcdf47 (abierta)

Esta nota de uso fue generada automáticamente a partir de la especificación de AUTOSAR.

Guía del implementador pendiente (complejidad 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#70838c75
Content hash
70838c75
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

función 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#38f8d232
Content hash
38f8d232
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

función 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#66fd20fa
Content hash
66fd20fa
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

función 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#ea65940a
Content hash
ea65940a
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

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: b7aed34fcbd4 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El método Offer de la clase ara::diag::DownloadService habilita el reenvío de solicitudes de descarga entrantes por parte del daemon de Diagnostic Management (DM) al handler específico [SWS_DM_00792]. La llamada se realiza de forma síncrona y sin parámetros, sin desencadenar excepciones de C++ (noexcept) [SWS_DM_00792]. Habitualmente, la puesta a disposición suele llamarse durante la fase de inicialización de la aplicación de procesamiento, antes de que lleguen solicitudes de diagnóstico externas. Pregunta Q-0180c707edea0eec (abierta)

Como valor de retorno, la función proporciona un ara::core::Result<void> [SWS_DM_00792]. Si el registro se realizó con éxito, el resultado está vacío. Si el servicio ya se había ofrecido al DM con anterioridad, la operación falla con el código de error DiagOfferErrc::kAlreadyOffered, garantizándose una semántica de reversión [SWS_DM_00792].

En cuanto a concurrencia y seguridad, se aplican las siguientes condiciones:

  • Seguridad frente a subprocesos: La función está clasificada como no segura para subprocesos (not thread-safe) [SWS_DM_00792]; las llamadas paralelas en la misma instancia del servicio deben sincronizarse por parte de la aplicación.
  • Seguridad frente a excepciones: La interfaz está especificada como segura frente a excepciones (exception safe) [SWS_DM_00792].

El patrón mediante Offer responde al procedimiento uniforme para servicios de diagnóstico en AUTOSAR Adaptive, tal y como se define análogamente también para UploadService [SWS_DM_00802], SecurityAccess [SWS_DM_00766] o servicios UDS genéricos [SWS_DM_00619]. A pesar de coincidir en el nombre con otros subsistemas, se trata de una implementación de diagnóstico específica AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».

Esta nota de uso se generó automáticamente a partir de la especificación AUTOSAR R25-11.

Guía del implementador pendiente (complejidad 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#ec06fd88
Content hash
ec06fd88
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

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 833b177db92d Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

El método RequestDownload de la clase ara::diag::DownloadService es llamado por la Diagnostic Server instance para procesar el servicio UDS 0x34 (RequestDownload) según [SWS_DM_00128] y [SWS_DM_00867]. Acepta dataFormatIdentifier, addressAndLengthFormatIdentifier, el rango de memoria memoryAddressAndSize, metaInfo así como un cancellationHandler [SWS_DM_00789]. El procesamiento se realiza de forma asíncrona y devuelve un ara::core::Future<void>; la validez de los datos en memoryAddressAndSize se mantiene hasta que se cumpla la promise asociada o se cancele el proceso [SWS_DM_00789].

Manejo de errores

En caso de éxito, el future se establece a void, lo que da lugar a una respuesta positiva, tras lo cual se notifica un evento de seguridad SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL al IdsM [SWS_DM_02031]. Si la solicitud falla, el future debe completarse con un código de error adecuado de DiagUdsNrcErrc según la norma ISO 14229-1 [SWS_DM_00789].

Concurrencia e interacción

El método está especificado como exception safe, mientras que la seguridad de hilos es condicional y depende del ConcurrencyType pasado en el constructor [SWS_DM_00789]. A través de cancellationHandler.IsCanceled() o de un notificador registrado mediante cancellationHandler.SetNotifier se puede procesar una cancelación de la conversación [SWS_DM_00789]. Tras la ejecución exitosa de RequestDownload se continúa típicamente con la transferencia de los datos mediante DownloadData [SWS_DM_00790]. Interpretación: Es de suponer que la aplicación implementadora valide la validez de la dirección y el tamaño de la memoria antes de cumplir el future, tal como sugiere el contexto para servicios UDS relacionados con la memoria AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.2 «Common service processing items». Pregunta Q-728d2e5f7d09e605 (abierta)

Esta nota de uso se basa en los documentos de especificación de AUTOSAR Adaptive R25-11.

Guía del implementador pendiente (complejidad 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#18c21b9f
Content hash
18c21b9f
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

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5b80145a92c9 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El método RequestDownloadExit de la clase ara::diag::DownloadService es llamado por la instancia del servidor de diagnóstico para procesar el servicio UDS RequestTransferExit (0x37) en el marco de una secuencia de descarga ([SWS_DM_00141], [SWS_DM_00871], SWS Diagnostics §7.3.2.8.19 «Service 0x37 – RequestTransferExit»).

En la llamada se pasan los siguientes parámetros ([SWS_DM_00791]):

  • transferRequestParameterRecord: Un ara::core::Span<const std::uint8_t> con parámetros específicos del fabricante del vehículo para dar soporte a la transferencia de datos. La validez de esta memoria se mantiene hasta que se cumpla la promise asociada o se cancele el procesamiento.
  • metaInfo: Metainformación sobre la solicitud de diagnóstico.
  • cancellationHandler: Sirve para consultar el estado mediante cancellationHandler.IsCanceled() así como para registrar una función de notificación a través de cancellationHandler.SetNotifier().

La función trabaja de forma asíncrona y devuelve un ara::core::Future<OperationOutput> ([SWS_DM_00791]). En caso de éxito, el future se cumple con OperationOutput; los datos contenidos en OperationOutput::responseData ([SWS_DM_00786]) se incrustan como transferResponseParameterRecord en la respuesta positiva tras el ID de servicio ([SWS_DM_00791]).

Si se produce un error, el future debe completarse con un código de error adecuado de DiagUdsNrcErrc (Negative Response Code según ISO 14229-1) ([SWS_DM_00791]). La interfaz está especificada como noexcept; su seguridad de hilos es condicional y se determina a través del ConcurrencyType en la creación del objeto ([SWS_DM_00791]).

Este texto ha sido generado por una IA y sirve para la documentación.

Guía del implementador pendiente (complejidad 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#c2dc0755
Content hash
c2dc0755
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

función StopOffer [SWS_DM_00793] Upstream: RS_Diag_04033

void StopOffer () noexcept;

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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 92aeeee277b1 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función StopOffer de la clase ara::diag::DownloadService (AUTOSAR_AP_SWS_Diagnostics §8.14.1.1.3.5 «StopOffer», [SWS_DM_00793]) sirve para desactivar el reenvío de mensajes de solicitud de diagnóstico entrantes desde Diagnostic Management (DM) a la instancia de servicio. La interfaz síncrona posee la firma void StopOffer () noexcept;, no recibe parámetros y no devuelve ningún valor ([SWS_DM_00793]). La llamada se realiza a través de la cabecera #include "ara/diag/download.h" ([SWS_DM_00793]).

Tratamiento de errores y concurrencia

En cuanto al tratamiento de errores, el método está declarado como seguro frente a excepciones (exception safe) y con noexcept; no se lanzan excepciones ni se generan códigos de error ([SWS_DM_00793]). En lo respectivo a la concurrencia, StopOffer no es seguro para hilos (not thread-safe) ([SWS_DM_00793]). Por consiguiente, las llamadas simultáneas desde varios hilos sobre la misma instancia deben sincronizarse del lado de la aplicación.

Interacción en el sistema de diagnóstico

La desactivación de servicios mediante StopOffer sigue un patrón uniforme dentro de AUTOSAR Adaptive: para los servicios de carga existe la contraparte funcional ara::diag::UploadService::StopOffer ([SWS_DM_00803]), así como métodos análogos para CommunicationControl ([SWS_DM_00810]), Authentication ([SWS_DM_01131]) y EcuResetRequest ([SWS_DM_01017]). La nomenclatura se basa en las convenciones de la plataforma, pero representa una implementación de diagnóstico independiente (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Interpretación: tras la llamada a StopOffer, es de suponer que el DM ya no reenvíe ni descarte las solicitudes de descarga UDS entrantes hasta que el servicio se ofrezca de nuevo. Pregunta Q-a45cc70b6ae09431 (abierta)

Esta nota de uso fue generada automáticamente sobre la base de la especificación AUTOSAR R25-11.

Guía del implementador pendiente (complejidad 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#2ea9185f
Content hash
2ea9185f
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

función 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#0808b6e9
Content hash
0808b6e9
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

función 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#4f58379d
Content hash
4f58379d
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

función ~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#f407b606
Content hash
f407b606
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