DEENESPTFRRUARHIKOZHNL

namespace apext::diag::uds_transport

Guía del usuarioGENERADO POR IA

Sirve para la conexión y gestión estandarizadas de protocolos de transporte UDS externos en la gestión de diagnóstico.
GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ce8b113ec3f5 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Sirve para la conexión y gestión estandarizadas de protocolos de transporte UDS externos en la gestión de diagnóstico.

El espacio de nombres apext::diag::uds_transport proporciona la interfaz de transporte en C++ para desacoplar la gestión genérica de diagnóstico de los protocolos de transporte UDS específicos AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». Los complementos de protocolo se derivan de la clase base UdsTransportProtocolHandler y pasan por un ciclo de vida estricto compuesto por construcción, inicialización, inicio y detención ordenada [SWS_DM_00329]. Los mensajes entrantes se notifican mediante IndicateMessage y, si hay capacidad disponible, reciben un UdsMessagePtr con memoria administrada para asumir los datos útiles. Una condición marginal fundamental es que, tras la detención, no deben realizarse más llamadas a la gestión de diagnóstico con excepción del mensaje de confirmación.

Contexto

El espacio de nombres apext::diag::uds_transport define la interfaz de transporte estandarizada en C++ (Transport Protocol API) para la gestión de diagnóstico (DM) en la AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». La arquitectura separa funcionalmente el núcleo genérico de la gestión de diagnóstico de las capas de transporte y de red concretas. De este modo, se pueden integrar como complementos modulares protocolos estandarizados como DoIP, así como protocolos de transporte futuros o específicos del fabricante (por ejemplo, para CAN, CAN-FD o FlexRay) AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».

La instancia mediadora central la constituye la clase UdsTransportProtocolMgr, que coordina la interacción entre las instancias del Diagnostic Server y los protocolos de transporte conectados. Los complementos de protocolo concretos se derivan de la clase base abstracta UdsTransportProtocolHandler AUTOSAR_AP_SWS_Diagnostics §7.1.1 «Support of UDS Transport Layer» [SWS_DM_00315]. Las instancias individuales de los gestores se direccionan mediante UdsTransportProtocolHandlerID [SWS_DM_00336], mientras que los canales de comunicación se identifican mediante el tipo ChannelID [SWS_DM_00337]. Para admitir consultas periódicas de datos según el servicio ISO 0x2A, la interfaz incorpora adicionalmente la clase UdsTransportProtocolPeriodicHandler.

Ciclo de vida

La gestión de diagnóstico controla el ciclo de vida de cada instancia de UdsTransportProtocolHandler en un orden estrictamente predeterminado [SWS_DM_00329]:

  1. Creación: El DM instancia el complemento de protocolo a través del constructor UdsTransportProtocolHandler::UdsTransportProtocolHandler [SWS_DM_00329].
  2. Inicialización: El DM invoca UdsTransportProtocolHandler::Initialize [SWS_DM_00329]. A excepción de la consulta de GetPeriodicHandler, el DM no debe invocar ningún otro método en el gestor antes del retorno exitoso de kInitializeOk [SWS_DM_01746].
  3. Inicio y funcionamiento: Tras una inicialización correcta, el gestor se activa con UdsTransportProtocolHandler::Start. Solo después de esta llamada el DM procesa notificaciones sobre canales reactivados mediante UdsTransportProtocolMgr::ChannelReestablished [SWS_DM_01744].
  4. Terminación: Si el DM pasa al estado ApplicationState.kTerminating, invoca UdsTransportProtocolHandler::Stop para todos los complementos activos [SWS_DM_00333]. Tras el retorno de esta llamada, el complemento solo debe invocar UdsTransportProtocolMgr::HandlerStopped [SWS_DM_01741]. El DM espera activamente esta confirmación [SWS_DM_00340].
handler_lifecycle NichtInitialisiert NichtInitialisiert Initialisierend Initialisierend NichtInitialisiert->Initialisierend Konstruktor Initialisiert Initialisiert Initialisierend->Initialisiert Initialize() -> kInitializeOk Fehlgeschlagen Fehlgeschlagen Initialisierend->Fehlgeschlagen Initialize() -> kInitializeFailed Gestartet Gestartet Initialisiert->Gestartet Start() Stoppend Stoppend Gestartet->Stoppend Stop() en caso de kTerminating Gestoppt Gestoppt Stoppend->Gestoppt HandlerStopped()

Diagrama de estados: Fases del ciclo de vida y condiciones de transición de una implementación del gestor de protocolos de transporte. Fuentes: [SWS_DM_00329], [SWS_DM_00333], [SWS_DM_00340], [SWS_DM_01741], [SWS_DM_01744], [SWS_DM_01745], [SWS_DM_01746]

Ruta de uso

Durante el funcionamiento continuo, el reenvío de mensajes de diagnóstico entrantes se lleva a cabo mediante una interacción coordinada entre el gestor y el administrador:

  1. Indicación de mensaje: Si el gestor recibe datos en un canal (ChannelID [SWS_DM_00337]), invoca UdsTransportProtocolMgr::IndicateMessage. Al hacerlo, puede transferir datos útiles preliminares en payloadInfo; se recomiendan al menos los dos primeros bytes para una detección temprana de solicitudes funcionales AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».
  2. Asignación de búfer: Si el DM está listo para la recepción, IndicateMessage responde con un std::pair compuesto por IndicationResult::kIndicationOk y un puntero inteligente válido UdsMessagePtr [SWS_DM_00309] [SWS_DM_00385]. El objeto UdsMessage referenciado posee una capacidad mínima de un byte [SWS_DM_00385]. El búfer se administra como std::unique_ptr con un eliminador específico del núcleo del DM y no es seguro para subprocesos [SWS_DM_00303]. Para accesos de lectura existe el equivalente constante UdsMessageConstPtr [SWS_DM_00304].
  3. Transferencia de datos: El gestor escribe los datos de diagnóstico recibidos en el búfer proporcionado, cuya secuencia de bytes está tipada mediante el tipo ByteSpan (alias para ara::core::Span<ara::core::Byte> [SWS_DM_00338]). Presumiblemente, la provisión de la clase separada UdsTransportProtocolPeriodicHandler a través de GetPeriodicHandler sirve para desacoplar el servicio de transmisión periódica 0x2A de la ruta habitual de mensajes UDS. Pregunta Q-230ef0b7c384c594 (abierta)
Secuencia de indicación de mensajes UDSHandlerUdsTransportProtocolMgrDM-KernIndicateMessage(channelId, payloadInfo)Comprobar estado del servidor y recursosaltDM bereitAllokiere UdsMessagereturn pair(kIndicationOk, UdsMessagePtr)Kopiere Nutzdaten in ByteSpanDM belegtreturn pair(kIndicationOccupied, nullptr)

Diagrama de secuencia: Flujo de indicación de mensaje y asignación de búfer entre el gestor, el administrador y el núcleo del DM. Fuentes: AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer», [SWS_DM_00303], [SWS_DM_00309], [SWS_DM_00385], [SWS_DM_00386]

Escenarios de error

La especificación define estados de error y condiciones previas concretos para la conexión de transporte:

  • Inicialización fallida: Si UdsTransportProtocolHandler::Initialize devuelve el resultado kInitializeFailed, el DM cancela inmediatamente el proceso de inicialización para este gestor y no invoca más métodos en él [SWS_DM_01745].
  • Rechazo por núcleo de diagnóstico ocupado: Si el DM está bloqueado debido al procesamiento en curso de un servicio de la misma conversación Tester-Present y no se trata de un Tester-Present funcional con payloadInfo 0x3E 0x80, IndicateMessage devuelve el resultado kIndicationOccupied junto con un nullptr en lugar de un búfer de mensajes [SWS_DM_00386].
  • Llamadas no permitidas tras la terminación: Si un complemento invoca un método de UdsTransportProtocolMgr distinto de HandlerStopped tras el retorno de Stop, esto infringe las especificaciones del protocolo [SWS_DM_01741]. Asimismo, el DM ignora señales como ChannelReestablished si se reciben antes de la llamada exitosa a Start [SWS_DM_01744].

Esta guía se basa exclusivamente en las especificaciones de la AUTOSAR Adaptive Platform Release R25-11.

Mapa de temas

KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.

Diagrama de clases

Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.

G cluster_ns apext::diag::uds_transport napext__diag__uds_transport__UdsMessage UdsMessage napext__diag__uds_transport__UdsTransportProtocolHandler UdsTransportProtocolHandler napext__diag__uds_transport__UdsTransportProtocolMgr UdsTransportProtocolMgr napext__diag__uds_transport__UdsTransportProtocolPeriodicHandler UdsTransportProtocolPeriodicHandler

Vista de detalle

Selecciona una entrada en el índice.

Nachrichtendaten

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

ByteSpan alias de tipo

This is the type of ByteSpan.

using ByteSpan = ara::core::Span<ara::core::Byte>;
UdsMessageConstPtr alias de tipo

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

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

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

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

Protokoll-Plugins

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

UdsTransportProtocolPeriodicHandler class to support 0x2A service from ISO.

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

using UdsTransportProtocolHandlerID = std::uint8_t;

Protokollverwaltung

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

ChannelID alias de tipo

This is the identification of channel on which to transmit.

using ChannelID = std::uint32_t;

Alias de tipo

alias de tipo ByteSpan [SWS_DM_00338] Upstream: RS_Diag_04147

using ByteSpan = ara::core::Span<ara::core::Byte>;

This is the type of ByteSpan.

Header-Datei#include "apext/diag/uds_transport/protocol_types.h"
Scopenamespace apext::diag::uds_transport
SymbolByteSpan

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

Record
AUTOSAR/AP/record/SWS_DM_00338
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00338@rel:R25-11#3cd9afea
Content hash
3cd9afea
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00338
Status: valid/unmigrated Version: rel:R25-11#1a041728 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_00338@rel:R25-11#1a041728
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#3f6b4b552026-09-30
  • R19-11rel:R19-11#87b9aa052026-10-14
  • R20-11rel:R20-11#280ab9cb2026-10-14
  • R21-11rel:R21-11#280ab9cb2026-10-14
  • R22-11rel:R22-11#21aad9862026-10-14
  • R23-11rel:R23-11#a3af51d32026-10-14
  • R24-11rel:R24-11#1a0417282026-10-14
  • R25-11rel:R25-11#1a0417282026-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

alias de tipo ChannelID [SWS_DM_00337] Upstream: RS_Diag_04147

using ChannelID = std::uint32_t;

This is the identification of channel on which to transmit.

Header-Datei#include "apext/diag/uds_transport/protocol_types.h"
Scopenamespace apext::diag::uds_transport
SymbolChannelID

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

Record
AUTOSAR/AP/record/SWS_DM_00337
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00337@rel:R25-11#6b0aede5
Content hash
6b0aede5
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00337
Status: valid/unmigrated Version: rel:R25-11#1d8116d5 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_00337@rel:R25-11#1d8116d5
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#a89726192026-09-30
  • R19-11rel:R19-11#a09308352026-10-14
  • R20-11rel:R20-11#6bf394982026-10-14
  • R21-11rel:R21-11#6bf394982026-10-14
  • R22-11rel:R22-11#1855826a2026-10-14
  • R23-11rel:R23-11#3d08977c2026-10-14
  • R24-11rel:R24-11#1d8116d52026-10-14
  • R25-11rel:R25-11#1d8116d52026-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

alias de tipo UdsMessageConstPtr [SWS_DM_00304] Upstream: RS_Diag_04147

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

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

Header-Datei#include "apext/diag/uds_transport/uds_message.h"
Scopenamespace apext::diag::uds_transport
SymbolUdsMessageConstPtr
Thread-Sicherheitnot thread-safe
Hinweise: How the exact typedef for UdsMessageConstPtr looks like, is up to the DM product vendor. I.e. how f.i. the deleter signature looks like ... basically the minimal agreement is: UdsMessage ConstPtr shall behave like a std::unique_ptr<const UdsMessage>!

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

Record
AUTOSAR/AP/record/SWS_DM_00304
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00304@rel:R25-11#146a4c3d
Content hash
146a4c3d
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00304
Status: valid/unmigrated Version: rel:R25-11#cbe7d8ab 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_00304@rel:R25-11#cbe7d8ab
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#8e4075282026-09-30
  • R19-11rel:R19-11#f70a6f152026-10-14
  • R20-11rel:R20-11#70977a452026-10-14
  • R21-11rel:R21-11#70977a452026-10-14
  • R22-11rel:R22-11#3632365b2026-10-14
  • R23-11rel:R23-11#ee76163c2026-10-14
  • R24-11rel:R24-11#6389682c2026-10-14
  • R25-11rel:R25-11#cbe7d8ab2026-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

alias de tipo UdsMessagePtr [SWS_DM_00303] Upstream: RS_Diag_04147

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

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

Header-Datei#include "apext/diag/uds_transport/uds_message.h"
Scopenamespace apext::diag::uds_transport
SymbolUdsMessagePtr
Thread-Sicherheitnot thread-safe
Hinweise: How the exact typedef for UdsMessagePtr looks like, is up to the DM product vendor. I.e. how f.i. the deleter signature looks like ... basically the minimal agreement is: UdsMessagePtr shall behave like a std::unique_ptr<UdsMessage>!

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

Record
AUTOSAR/AP/record/SWS_DM_00303
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00303@rel:R25-11#3ec2b649
Content hash
3ec2b649
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00303
Status: valid/unmigrated Version: rel:R25-11#6be645e6 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_00303@rel:R25-11#6be645e6
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#b75a0d132026-09-30
  • R19-11rel:R19-11#401203282026-10-14
  • R20-11rel:R20-11#a5dd04072026-10-14
  • R21-11rel:R21-11#a5dd04072026-10-14
  • R22-11rel:R22-11#812335462026-10-14
  • R23-11rel:R23-11#057e29102026-10-14
  • R24-11rel:R24-11#fb6c8d462026-10-14
  • R25-11rel:R25-11#6be645e62026-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

alias de tipo UdsTransportProtocolHandlerID [SWS_DM_00336] Upstream: RS_Diag_04147, RS_Diag_04168

using UdsTransportProtocolHandlerID = std::uint8_t;

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

Header-Datei#include "apext/diag/uds_transport/protocol_types.h"
Scopenamespace apext::diag::uds_transport
SymbolUdsTransportProtocolHandlerID

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

Record
AUTOSAR/AP/record/SWS_DM_00336
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00336@rel:R25-11#be7b2d23
Content hash
be7b2d23
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00336
Status: valid/unmigrated Version: rel:R25-11#dbbb3100 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_00336@rel:R25-11#dbbb3100
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#44559d542026-09-30
  • R19-11rel:R19-11#d727dd482026-10-14
  • R20-11rel:R20-11#7d7439fe2026-10-14
  • R21-11rel:R21-11#7d7439fe2026-10-14
  • R22-11rel:R22-11#c079e14d2026-10-14
  • R23-11rel:R23-11#d98d683b2026-10-14
  • R24-11rel:R24-11#dbbb31002026-10-14
  • R25-11rel:R25-11#dbbb31002026-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