DEENESPTFRRUARHIKOZHNL

clase apext::diag::uds_transport::UdsTransportProtocolHandler

[SWS_DM_00315] Upstream: RS_Diag_04147, RS_Diag_04168

class UdsTransportProtocolHandler {...};

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

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Forwarding-Header#include "apext/diag/diag_fwd.h"
Scopenamespace apext::diag::uds_transport

Guía del usuarioGENERADO POR IA

Sirve como clase base abstracta para plugins de transporte UDS para la transmisión y el reenvío de mensajes de diagnóstico.
GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 8b34a053e223 Procedencia Preguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Sirve como clase base abstracta para plugins de transporte UDS para la transmisión y el reenvío de mensajes de diagnóstico.

La clase abstracta sirve a los plugins de transporte UDS como interfaz base para la conexión estandarizada a la gestión de diagnóstico adaptativa (AUTOSAR_AP_SWS_Diagnostics §7.1.1 «Support of UDS Transport Layer»). Una implementación derivada reenvía los mensajes de diagnóstico recibidos al gestor de protocolos y transmite los mensajes de respuesta generados a través de canales específicos de red hacia el tester de diagnóstico. El ciclo de vida está sujeto a una secuencia estricta compuesta por creación, inicialización separada, inicio asíncrono y parada ordenada ([SWS_DM_00329]). Tras la instanciación, las llamadas a métodos operativos no son seguras para subprocesos (thread-safe) y requieren un control coordinado por parte del núcleo de diagnóstico.

Contexto

La clase apext::diag::uds_transport::UdsTransportProtocolHandler es una clase base abstracta dentro del módulo diag de AUTOSAR Adaptive Platform. Define la interfaz estandarizada a través de la cual se conectan plugins de transporte UDS propietarios o específicos de protocolo a la gestión de diagnóstico adaptativa (DM) (AUTOSAR_AP_SWS_Diagnostics §7.1.1 «Support of UDS Transport Layer», [SWS_DM_00315]). Cada protocolo de transporte concreto —por ejemplo, para diagnóstico a través de medios de red de automoción— implementa esta interfaz como subclase derivada. Es de suponer que el DM posea y gestione en exclusiva la respectiva instancia de manejador a lo largo de todo su ciclo de vida operativo. Pregunta Q-ef308265bfdf6cec (abierta) La interacción entre el núcleo de diagnóstico y el plugin se realiza a través de la referencia transportprotocolManager de tipo UdsTransportProtocolMgr&, que se pasa en el constructor y se almacena de forma protegida ([SWS_DM_09015], [SWS_DM_09025]). Cada manejador se identifica mediante un UdsTransportProtocolHandlerID numérico, que puede consultarse mediante GetHandlerID() ([SWS_DM_00325]).

Ciclo de vida

El ciclo de vida de un manejador de protocolo de transporte UDS está controlado por el DM de forma estrictamente secuencial ([SWS_DM_00329]). Tras la instanciación mediante el constructor UdsTransportProtocolHandler ([SWS_DM_09015]), el método Initialize() separa la inicialización real del protocolo de la creación del objeto ([SWS_DM_00319]). A excepción de una consulta opcional mediante GetPeriodicHandler(), el DM no debe llamar a ningún método en el manejador antes del retorno exitoso de InitializationResult::kInitializeOk ([SWS_DM_01746], [SWS_DM_09017]). Tras una inicialización exitosa, la llamada a Start() pone el manejador en el estado de procesamiento activo ([SWS_DM_00322]). Para minimizar el tiempo de arranque, Start() está concebida como una operación asíncrona; es de suponer que el DM coordine internamente el inicio en paralelo de varios manejadores. Pregunta Q-66e5a53d55e6d812 (abierta) Si el DM pasa al estado ApplicationState.kTerminating durante el apagado, indica al manejador que finalice mediante Stop() ([SWS_DM_00323], [SWS_DM_00333]). El DM espera a la finalización, la cual el manejador confirma mediante la llamada a UdsTransportProtocolMgr::HandlerStopped() ([SWS_DM_00340]). Tras el retorno de Stop(), se prohíbe al plugin cualquier llamada a métodos del gestor excepto HandlerStopped() ([SWS_DM_01741]). La liberación de recursos se realiza finalmente a través del destructor virtual ([SWS_DM_09016]). Mientras que el constructor es seguro para subprocesos (thread-safe), los métodos de interfaz operativos están declarados como no seguros para subprocesos.

lebenszyklus Erzeugt Erzeugt Initialisiert Initialisiert Erzeugt->Initialisiert Initialize() == kInitializeOk InitialisierungFehlgeschlagen InitialisierungFehlgeschlagen Erzeugt->InitialisierungFehlgeschlagen Initialize() == kInitializeFailed Gestartet Gestartet Initialisiert->Gestartet Start() Stoppend Stoppend Gestartet->Stoppend Stop() Gestoppt Gestoppt Stoppend->Gestoppt HandlerStopped()

Diagrama de estados: fases del ciclo de vida y transiciones de estado de un manejador de transporte UDS. Fuentes: [SWS_DM_00319], [SWS_DM_00322], [SWS_DM_00323], [SWS_DM_00329], [SWS_DM_01745], [SWS_DM_01746]

Ruta de uso

En el funcionamiento regular de diagnóstico, el manejador procesa mensajes entrantes y transmite respuestas. Tan pronto como en la interfaz de red se disponga al menos de dirección de origen, dirección de destino, tipo de dirección (física o funcional), longitud total del mensaje y, en caso de datos útiles de varios bytes, los dos primeros bytes (payloadInfo), la implementación notifica la solicitud al gestor a través de UdsTransportProtocolMgr::IndicateMessage() ([SWS_DM_00342], AUTOSAR_AP_SWS_Diagnostics §7.1.1.3 «UDS message transmission on a UDS TransportLayer»). Cada solicitud está asignada a un canal único (AUTOSAR_AP_SWS_Diagnostics §7.1.1.4 «Channel Notifications»). Para responder, el DM transfiere la respuesta de diagnóstico al mismo manejador y canal mediante Transmit(message, channelId) ([SWS_DM_00327], [SWS_DM_00348]). Tras la transmisión física, el manejador devuelve el objeto de mensaje entregado al gestor a través de UdsTransportProtocolMgr::TransmitConfirmation() ([SWS_DM_00327], [SWS_DM_00351]). Una ruta de uso especializada concierne a los reinicios de unidades de control (servicio UDS 0x11) con respuesta positiva tras el reinicio: aquí, antes del reinicio, el DM solicita a través de NotifyReestablishment(channelId) que el manejador guarde de forma no volátil la información de conexión; tras el reinicio y un nuevo Start(), el manejador notifica la restauración del mismo canal mediante ChannelReestablished() ([SWS_DM_00326], [SWS_DM_01744]).

Indicación de mensaje UDS y transmisión de respuestaDiagnosetesterUdsTransportProtocolHandlerUdsTransportProtocolMgrDiagnostic ManagementUDS-Anfrage empfangenIndicateMessage(globalChannelId, ...)Diagnoseanfrage weiterleitenDiagnoseanfrage verarbeitenTransmit(message, channelId)UDS-Antwort an Netzwerk sendenTransmitConfirmation(message, result)

Diagrama de secuencia: flujo de indicación de mensajes UDS y transmisión de respuestas. Fuentes: [SWS_DM_00327], [SWS_DM_00342], [SWS_DM_00348], [SWS_DM_00351]

Escenarios de error

Si la inicialización de la capa de transporte falla y Initialize() devuelve el estado InitializationResult::kInitializeFailed, el DM cancela de inmediato el proceso de arranque de este protocolo y no invoca más métodos en esta instancia ([SWS_DM_01745], [SWS_DM_09017]). Si las transmisiones periódicas no son compatibles con el protocolo de transporte, la llamada a GetPeriodicHandler() proporciona un ara::core::Result con el código de error kConfigurationMismatch ([SWS_DM_01068]). Si no se puede garantizar la restauración del canal solicitada para un reinicio de la ECU, NotifyReestablishment() falla y señaliza esto mediante el valor de retorno false ([SWS_DM_00326]). Por último, si el proceso de envío de una respuesta de diagnóstico falla en la capa de red, el manejador debe comunicarlo al gestor en la confirmación configurando el argumento result en TransmitConfirmation() con el valor kTransmitFailed ([SWS_DM_00351]).

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

Mapa de miembros

Diagrama de clases

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

G napext__diag__uds_transport__UdsTransportProtocolHandler1 UdsTransportProtocolHandler + transportprotocolManager + ~UdsTransportProtocolHandler() + UdsTransportProtocolHandler() + GetHandlerID() + GetPeriodicHandler() + Initialize() + NotifyReestablishment() + Start() + Stop() + Transmit()

Vista de detalle

Selecciona una entrada en el índice.

Constructores y destructor

Constructor of UdsTransportProtocolHandler.

explicit UdsTransportProtocolHandler (const UdsTransportProtocol HandlerID handlerId, UdsTransportProtocolMgr &transportProtocolMgr) noexcept;

Destructor of UdsTransportProtocolHandler.

virtual ~UdsTransportProtocolHandler () noexcept=default;

Métodos

GetHandlerID función

Return the UdsTransportProtocolHandlerID, which was given to the implementation during construction (ctor call).

virtual UdsTransportProtocolHandlerID GetHandlerID () const noexcept;

Returns the corresponding periodic Transport Protocol handler.

virtual ara::core::Result< UdsTransportProtocolPeriodicHandler & > Get PeriodicHandler () noexcept;
Initialize función

Initializes UDS Transport Protocol handler. This methods needs to be called before a call of Start(). It is meant to separate the actual initialization of the UDS Transport Protocol handler from the constructor.

virtual InitializationResult Initialize () noexcept=0;

Tells the UdsTransportProtocolHandler, to notify the DM core via UdsTransportProtocol Mgr::ChannelReestablished() if the given channel has been re-established after next Uds TransportProtocolHandler::Start(). The main purpose of this method is to allow the DM to provide an ECU-Reset (0x11 service), with configuration option "positive response AFTER reset". In this scenario, the request for 0x11 will be received on a certain channel (GlobalChannel Identifier), then the ECU-Reset takes place and after ECU-Restart, all UdsProtocol Handlers/-plugins get restarted via call to UdsTransportProtocolHandler::Start().

virtual bool NotifyReestablishment (ChannelID channelId) noexcept=0;
Start función

Start processing the UDS Transport Protocol. Within the implementation there might be some stack specific implementation. The method is asynchronous to allow the DM to start multiple UdsTransportProtocolHandler in parallel to reduce startup time.

virtual void Start () noexcept=0;
Stop función

Method to indicate that this UdsTransportProtocolHandler should terminate. If UdsTransportProtocolHandler has stopped, it shall call UdsTransportProtocolMgr:: HandlerStopped(UdsTransportProtocolHandlerID).

virtual void Stop () noexcept=0;
Transmit función

Transmit a UDS message via the underlying UDS Transport Protocol channel.

virtual void Transmit (UdsMessageConstPtr message, ChannelID channel Id) noexcept=0;

Enumeraciones

Result of Initialize handler.

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

Constantes

The UdsTransportProtocolMgr used/provided by the DM.

UdsTransportProtocolMgr& transportprotocolManager;

Documentación de los métodos

función GetHandlerID [SWS_DM_00325] Upstream: RS_Diag_04147, RS_Diag_04168

virtual UdsTransportProtocolHandlerID GetHandlerID () const noexcept;

Return the UdsTransportProtocolHandlerID, which was given to the implementation during construction (ctor call).

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Rückgabewert

TypBeschreibung
UdsTransportProtocolHandlerIDUdsTransportProtocolHandlerID.

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

Record
AUTOSAR/AP/record/SWS_DM_00325
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00325@rel:R25-11#fa3e32ee
Content hash
fa3e32ee
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00325
Status: valid/unmigrated Version: rel:R25-11#98596bd3 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_00325@rel:R25-11#98596bd3
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#ba13d0a62026-09-30
  • R19-11rel:R19-11#47151ef62026-10-14
  • R20-11rel:R20-11#8d4acd5c2026-10-14
  • R21-11rel:R21-11#7170c6052026-10-14
  • R22-11rel:R22-11#a8caf4042026-10-14
  • R23-11rel:R23-11#5baf09172026-10-14
  • R24-11rel:R24-11#13e886b82026-10-14
  • R25-11rel:R25-11#98596bd32026-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 GetPeriodicHandler [SWS_DM_01068] Upstream: RS_Diag_04215

virtual ara::core::Result< UdsTransportProtocolPeriodicHandler & > Get PeriodicHandler () noexcept;

Returns the corresponding periodic Transport Protocol handler.

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Rückgabewert

TypBeschreibung
ara::core::Result< UdsTransportProtocolPeriodicHandler & >If periodic transmissions are supported on this transport protocol, a reference to UdsTransportProtocolPeriodicHandler is returned, and if not supported, an error (kConfigurationMismatch).

Fehler

FehlercodeBeschreibung
kConfigurationMismatch

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

Record
AUTOSAR/AP/record/SWS_DM_01068
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_01068@rel:R25-11#703b27cf
Content hash
703b27cf
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_01068
Status: valid/unmigrated Version: rel:R25-11#ab56dcd2 Versionshistorie & Revisions (1 transition, 7 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_01068@rel:R25-11#ab56dcd2
Point-in-Time History:
Recorded Revisions (7):
  • R25-11rel:R25-11#331116142026-09-30
  • R20-11rel:R20-11#846d3b552026-10-14
  • R21-11rel:R21-11#49b00e832026-10-14
  • R22-11rel:R22-11#1ddbb3d62026-10-14
  • R23-11rel:R23-11#f5d366552026-10-14
  • R24-11rel:R24-11#4fcfe9bb2026-10-14
  • R25-11rel:R25-11#ab56dcd22026-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 Initialize [SWS_DM_00319] Upstream: RS_Diag_04147, RS_Diag_04168

virtual InitializationResult Initialize () noexcept=0;

Initializes UDS Transport Protocol handler. This methods needs to be called before a call of Start(). It is meant to separate the actual initialization of the UDS Transport Protocol handler from the constructor.

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

El método virtual puro Initialize sirve para la inicialización explícita de una instancia de apext::diag::uds_transport::UdsTransportProtocolHandler y separa formalmente este proceso de la construcción del objeto [SWS_DM_00319]. El Diagnostic Manager (DM) lo llama de forma síncrona y sin parámetros, no lanza excepciones (noexcept) y devuelve un InitializationResult [SWS_DM_00319] [SWS_DM_09017].

Ciclo de vida y concurrencia

La llamada está integrada en la gestión del ciclo de vida de la capa de transporte UDS AUTOSAR_AP_SWS_Diagnostics §7.1.1.1 «Initialization, Starting and Stopping of a UDS TransportLayer». El DM debe gestionar las fases en un orden fijo: construcción, llamada a Initialize, inicio a través de Start y finalización a través de Stop [SWS_DM_00329]. El método está especificado como no seguro para subprocesos (not thread-safe) [SWS_DM_00319]; por lo tanto, es de suponer que el DM lo ejecute en el marco de una fase de inicialización síncrona sin accesos paralelos. Pregunta Q-06180f9d8fe99092 (abierta)

Tratamiento de errores e interacción

El método señaliza el resultado a través del enumerador InitializationResult::kInitializeOk o InitializationResult::kInitializeFailed [SWS_DM_09017]. El comportamiento posterior del DM depende directamente del valor de retorno:

  • En caso de un retorno exitoso con kInitializeOk, el DM puede invocar los métodos posteriores del manejador; antes de este valor de retorno exitoso, no se permite ninguna otra llamada a métodos, con la excepción de GetPeriodicHandler [SWS_DM_01746].
  • Si el manejador devuelve kInitializeFailed, el DM cancela por completo el proceso de inicialización de este protocolo de transporte y no vuelve a invocar ningún otro método en la instancia afectada [SWS_DM_01745].

Este texto ha sido generado por una IA basándose en AUTOSAR R25-11.

Guía del implementador pendiente (complejidad I1)

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Rückgabewert

TypBeschreibung
InitializationResultkInitializeOk, in case, the initialization was successful, else kInitializeFailed is returned.

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

Record
AUTOSAR/AP/record/SWS_DM_00319
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00319@rel:R25-11#7e1cface
Content hash
7e1cface
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00319
Status: valid/unmigrated Version: rel:R25-11#a9abbec3 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_00319@rel:R25-11#a9abbec3
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#6d238b482026-09-30
  • R19-11rel:R19-11#24dcf7ab2026-10-14
  • R20-11rel:R20-11#4d518db32026-10-14
  • R21-11rel:R21-11#4d518db32026-10-14
  • R22-11rel:R22-11#2a8e1b2b2026-10-14
  • R23-11rel:R23-11#79c84e752026-10-14
  • R24-11rel:R24-11#a9655bf92026-10-14
  • R25-11rel:R25-11#a9abbec32026-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 NotifyReestablishment [SWS_DM_00326] Upstream: RS_Diag_04147, RS_Diag_04168

virtual bool NotifyReestablishment (ChannelID channelId) noexcept=0;

Tells the UdsTransportProtocolHandler, to notify the DM core via UdsTransportProtocol Mgr::ChannelReestablished() if the given channel has been re-established after next Uds TransportProtocolHandler::Start(). The main purpose of this method is to allow the DM to provide an ECU-Reset (0x11 service), with configuration option "positive response AFTER reset". In this scenario, the request for 0x11 will be received on a certain channel (GlobalChannel Identifier), then the ECU-Reset takes place and after ECU-Restart, all UdsProtocol Handlers/-plugins get restarted via call to UdsTransportProtocolHandler::Start().

Now there are two expectations, when this method has been called before and returned "TRUE": If the same remote client connects to the UdsProtocolHandler, it shall get a channel identification with the same identifying as the last time. It consecutively calls UdsTransportProtocolMgr::ChannelReestablished(Global ChannelIdentifier).

The detection/decision, whether the "same" client reconnects as before is an UdsProtocol Handler implementation specific decision.

The general expectation is:

If the channel is set up from exactly the same remote network-endpoint, it typically gets the same ChannelID. To support this functionality, the implementation at least has to store non-volatile, that this notification has to be done. Further it might be needed to store some additional connection specific info non-volatile to make sure, that the same ChannelID can be reassigned. This is the case if the mapping of protocol specific channel info -> channelID isn’t a

stable bijective mapping!

Small example:

The underlying network protocol, which UdsProtocolHandler implements is based on TCP. At the point in time, where the 0x11 Service Identifier request is received on channel identified by the DM calls UdsTransportProtocolHandler::NotifyReestablishment() on this ChannelID.

Now the implementation of UdsProtocolHandler stores non-volatile in the context of this call:

• NetworkEndpoint (IP-address and port number) of the channel. • NetworkEndpoint (IP-address and port number) of the local port (because in this example, the UdsTransportProtocolHandler listens on/supports different ports). • ChannelID it has currently assigned. After restart this ChannelID is only reused for a channel with exactly the same Network Endpoint addresses as stored non-volatile.

If this ChannelID then gets reassigned, then UdsTransportProtocolMgr::Channel Reestablished() has to be called.

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

El método NotifyReestablishment es llamado de forma síncrona por el Diagnostic Manager (DM) cuando, en el marco de un reinicio de la unidad de control (servicio UDS 0x11), se debe enviar una respuesta positiva únicamente después de haberse efectuado el reinicio ([SWS_DM_00326], [SWS_DM_00360]). A través del parámetro channelId se transfiere el canal de transporte que se va a supervisar ([SWS_DM_00326]).

Con la llamada, se ordena a la implementación del protocolo de transporte que guarde de forma persistente la solicitud de supervisión ([SWS_DM_00359]). Tras el reinicio del sistema y el nuevo arranque de los manejadores, el manejador de protocolo notifica de forma asíncrona la nueva disponibilidad del canal al DM mediante [SWS_DM_00313] ([SWS_DM_00358]). El valor de retorno booleano indica con true que la solicitud de notificación fue aceptada y puede cumplirse; de lo contrario, se devuelve false ([SWS_DM_00326]).

En cuanto a la concurrencia y el tratamiento de errores, se aplica lo siguiente:

Esta indicación de uso fue creada por una IA sobre la base de la especificación.

Guía del implementador pendiente (complejidad I2)

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Parameter (in)

ParameterBeschreibung
channelIdThe channelID, whose re-establishment shall be notified to Uds TransportProtocolMgr

Rückgabewert

TypBeschreibung
boolTRUE, if notification request is accepted and can be fulfilled, else FALSE
Hinweise: The UdsTransportProtocolHandler will call UdsTransportProtocolMgr::Channel Reestablished() after UdsTransportProtocolHandler::Start() is called and as soon as it detects that the remote client/tester is reachable again.

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

Record
AUTOSAR/AP/record/SWS_DM_00326
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00326@rel:R25-11#f493be2a
Content hash
f493be2a
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00326
Status: valid/unmigrated Version: rel:R25-11#71ce018e 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_00326@rel:R25-11#71ce018e
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#eaebfef42026-09-30
  • R19-11rel:R19-11#c295123d2026-10-14
  • R20-11rel:R20-11#3a65f3fb2026-10-14
  • R21-11rel:R21-11#318d3d1b2026-10-14
  • R22-11rel:R22-11#ce8e0b802026-10-14
  • R23-11rel:R23-11#30993c3a2026-10-14
  • R24-11rel:R24-11#a15ad2ab2026-10-14
  • R25-11rel:R25-11#71ce018e2026-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 Start [SWS_DM_00322] Upstream: RS_Diag_04147, RS_Diag_04168

virtual void Start () noexcept=0;

Start processing the UDS Transport Protocol. Within the implementation there might be some stack specific implementation. The method is asynchronous to allow the DM to start multiple UdsTransportProtocolHandler in parallel to reduce startup time.

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

El método Start de la interfaz apext::diag::uds_transport::UdsTransportProtocolHandler inicia el procesamiento de protocolo de un plugin de transporte UDS en el Diagnostic Management (DM) según [SWS_DM_00322]. No recibe parámetros y no devuelve ningún valor. La ejecución está diseñada de forma asíncrona para que el DM pueda iniciar múltiples instancias en paralelo y reducir así el tiempo de arranque del sistema global ([SWS_DM_00322]). Dado que la firma declara void, es de prever que el procesamiento asíncrono se gestione de forma específica de la pila mediante mecanismos internos en segundo plano. Pregunta Q-d1023a05a1f3e2ab (abierta)

En lo relativo al ciclo de vida (SWS Diagnostics §7.1.1.1 «Initialization, Starting and Stopping of a UDS TransportLayer», [SWS_DM_00329]), se aplican condiciones de orden estrictas:

  • Precondiciones: antes de la llamada, la inicialización mediante Initialize ([SWS_DM_00319]) debe haberse completado obligatoriamente con el resultado kInitializeOk ([SWS_DM_01746]). Si, por el contrario, la inicialización devuelve kInitializeFailed, el DM cancela el proceso y no debe invocar Start ([SWS_DM_01745]).
  • Postcondiciones: solo una vez realizada la llamada a Start, el DM puede iniciar funciones posteriores como Transmit o Stop en el manejador ([SWS_DM_01743]). Además, el DM procesa las notificaciones mediante ChannelReestablished ([SWS_DM_00313]) exclusivamente si se ejecutó Start con anterioridad ([SWS_DM_01744]), lo que resulta esencial, entre otros, para escenarios de restablecimiento de la ECU con reconexión ([SWS_DM_00326]).

El método está declarado como noexcept y, por tanto, es seguro frente a excepciones, pero está especificado explícitamente como no seguro para subprocesos (not thread-safe) ([SWS_DM_00322]). Por consiguiente, los emisores de llamadas deben asegurarse de que las llamadas a instancias se realicen de forma sincronizada.

Esta nota de uso fue generada automáticamente a partir de los datos de especificación.

Guía del implementador pendiente (complejidad I2)

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
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_00322
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00322@rel:R25-11#e7afcdaa
Content hash
e7afcdaa
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00322
Status: valid/unmigrated Version: rel:R25-11#0b2689e0 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_00322@rel:R25-11#0b2689e0
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#13806c572026-09-30
  • R19-11rel:R19-11#e7bc57b82026-10-14
  • R20-11rel:R20-11#967d60892026-10-14
  • R21-11rel:R21-11#967d60892026-10-14
  • R22-11rel:R22-11#5752c1402026-10-14
  • R23-11rel:R23-11#9e58e6f32026-10-14
  • R24-11rel:R24-11#dd7836172026-10-14
  • R25-11rel:R25-11#0b2689e02026-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 Stop [SWS_DM_00323] Upstream: RS_Diag_04147, RS_Diag_04168

virtual void Stop () noexcept=0;

Method to indicate that this UdsTransportProtocolHandler should terminate. If UdsTransportProtocolHandler has stopped, it shall call UdsTransportProtocolMgr:: HandlerStopped(UdsTransportProtocolHandlerID).

After return from Stop(), the handler-plugin shall NOT call to UdsTransportProtocolMgr with any other method but UdsTransportProtocolMgr::HandlerStopped().

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

El método Stop de la interfaz apext::diag::uds_transport::UdsTransportProtocolHandler señaliza a una instancia del protocolo de transporte UDS que debe terminar [SWS_DM_00323]. La llamada la activa Diagnostic Management (DM) tan pronto como este cambia al estado ApplicationState.kTerminating [SWS_DM_00333]. La función no tiene parámetros, no tiene valor de retorno, está declarada como noexcept y especificada como segura contra excepciones (exception safe) [SWS_DM_00323].

Para el contexto de llamada y la concurrencia se aplican las siguientes condiciones:

La interacción con el DM se produce de forma asíncrona: una vez que el manejador ha cerrado sus conexiones de red y liberado los recursos, debe notificar al DM a través de apext::diag::uds_transport::UdsTransportProtocolMgr::HandlerStopped transmitiendo su handlerId [SWS_DM_00314]. Tras la llamada a Stop, el DM espera obligatoriamente esta retrollamada de confirmación antes de finalizar definitivamente el proceso [SWS_DM_00340].

Este texto se ha generado de forma automatizada sobre la base de la especificación AUTOSAR Adaptive R25-11.

Guía del implementador pendiente (complejidad I1)

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
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_00323
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00323@rel:R25-11#0ed9d223
Content hash
0ed9d223
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00323
Status: valid/unmigrated Version: rel:R25-11#ddd9ac23 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_00323@rel:R25-11#ddd9ac23
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#59af1a9d2026-09-30
  • R19-11rel:R19-11#53424cef2026-10-14
  • R20-11rel:R20-11#fe2b5e9c2026-10-14
  • R21-11rel:R21-11#7d886f392026-10-14
  • R22-11rel:R22-11#c94b081a2026-10-14
  • R23-11rel:R23-11#a61d25202026-10-14
  • R24-11rel:R24-11#838592342026-10-14
  • R25-11rel:R25-11#ddd9ac232026-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 Transmit [SWS_DM_00327] Upstream: RS_Diag_04147, RS_Diag_04168

virtual void Transmit (UdsMessageConstPtr message, ChannelID channel Id) noexcept=0;

Transmit a UDS message via the underlying UDS Transport Protocol channel.

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

Se invoca el método Transmit para enviar un mensaje UDS de diagnóstico a la red a través de un canal específico del protocolo de transporte ([SWS_DM_00327], SWS Diagnostics §7.1.1.3 «UDS message transmission on a UDS TransportLayer»). Implementa el servicio T_Data.req según la norma ISO 14229-2 ([SWS_DM_00327]). El emisor de la llamada pasa el mensaje que se va a enviar como UdsMessageConstPtr con el estilo de propiedad de un unique_ptr, así como el channelId, que debe coincidir con el canal de la solicitud recibida con anterioridad ([SWS_DM_00327], [SWS_DM_00348], SWS Diagnostics §7.1.1.4 «Channel Notifications»).

En relación con el orden y el ciclo de vida, el Diagnostic Manager solo puede llamar a Transmit una vez que la inicialización del manejador haya concluido con kInitializeOk ([SWS_DM_01746]) y se haya invocado el método Start ([SWS_DM_01743]). Dado que la operación está especificada como not thread-safe y exception safe ([SWS_DM_00327]), según la interpretación, la coordinación de órdenes de envío paralelas debería tener que realizarse del lado del emisor en el Diagnostic Manager. Pregunta Q-6edd917928b60e55 (abierta)

La función no proporciona ningún valor de retorno de forma síncrona. El manejador de transporte está obligado a devolver el puntero del mensaje al Diagnostic Manager de forma asíncrona a través de apext::diag::uds_transport::UdsTransportProtocolMgr::TransmitConfirmation tras la transmisión ([SWS_DM_00327], [SWS_DM_00312]). Si el envío en la capa de red se realiza con éxito, se notifica el resultado kTransmitOk; de lo contrario, kTransmitFailed ([SWS_DM_00351]).

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

Guía del implementador pendiente (complejidad I1)

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitnot thread-safe

Parameter (in)

ParameterBeschreibung
messageThe message to be transmitted as a UdsMessage::Ptr (unique_ptr style). UdsTransportProtocolHandler has to give back this Uds Message::Ptr via UdsTransportProtocolMgr::Transmit Confirmation() to signal, that it is done with this message.
channelIdIdentification of channel on which to transmit.

Rückgabewert

TypBeschreibung
None
Hinweise: This transmit API covers T_Data.req of ISO 14229-2[25] Figure 2.

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

Record
AUTOSAR/AP/record/SWS_DM_00327
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_00327@rel:R25-11#7361ed47
Content hash
7361ed47
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_00327
Status: valid/unmigrated Version: rel:R25-11#476973a2 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_00327@rel:R25-11#476973a2
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#b90d03092026-09-30
  • R19-11rel:R19-11#000cf4a42026-10-14
  • R20-11rel:R20-11#34d3b7782026-10-14
  • R21-11rel:R21-11#34d3b7782026-10-14
  • R22-11rel:R22-11#24d7a0a92026-10-14
  • R23-11rel:R23-11#a439d8b92026-10-14
  • R24-11rel:R24-11#b3938b682026-10-14
  • R25-11rel:R25-11#476973a22026-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 UdsTransportProtocolHandler [SWS_DM_09015] Upstream: RS_Diag_04147, RS_Diag_04168

explicit UdsTransportProtocolHandler (const UdsTransportProtocol HandlerID handlerId, UdsTransportProtocolMgr &transportProtocolMgr) noexcept;

Constructor of UdsTransportProtocolHandler.

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
handlerIdThe handler ID used by DM to identify this handler. This is just a number/identification given by the DM core, when instantiating a UdsTransportProtocolHandler instance, to be able to distinguish it from other handler-plugins or built-in UdsTransportProtocolHandler implementation(s).
transportProtocolMgrReference to UdsTransportProtocolMgr owned by this DM, with which UdsTransportProtocolHandler instance shall interact.

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

Record
AUTOSAR/AP/record/SWS_DM_09015
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_09015@rel:R25-11#923867d3
Content hash
923867d3
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_09015
Status: valid/unmigrated Version: rel:R25-11#a9ed45a3 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_09015@rel:R25-11#a9ed45a3
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#caee19702026-09-30
  • R19-11rel:R19-11#986eae482026-10-14
  • R20-11rel:R20-11#b8cc07892026-10-14
  • R21-11rel:R21-11#809c79d52026-10-14
  • R22-11rel:R22-11#a76b2d802026-10-14
  • R23-11rel:R23-11#f807b8cb2026-10-14
  • R24-11rel:R24-11#949b6e802026-10-14
  • R25-11rel:R25-11#a9ed45a32026-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 ~UdsTransportProtocolHandler [SWS_DM_09016] Upstream: RS_Diag_04147, RS_Diag_04168

virtual ~UdsTransportProtocolHandler () noexcept=default;

Destructor of UdsTransportProtocolHandler.

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
Exception-Sicherheitexception safe

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

Record
AUTOSAR/AP/record/SWS_DM_09016
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_09016@rel:R25-11#98166988
Content hash
98166988
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_09016
Status: valid/unmigrated Version: rel:R25-11#84d4080f 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_09016@rel:R25-11#84d4080f
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#698b1dff2026-09-30
  • R19-11rel:R19-11#0e5d954f2026-10-14
  • R20-11rel:R20-11#a89192a82026-10-14
  • R21-11rel:R21-11#a89192a82026-10-14
  • R22-11rel:R22-11#e44075962026-10-14
  • R23-11rel:R23-11#6adb5bb12026-10-14
  • R24-11rel:R24-11#5417259f2026-10-14
  • R25-11rel:R25-11#84d4080f2026-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

Documentación de las enumeraciones

enumeración InitializationResult [SWS_DM_09017] Upstream: RS_Diag_04147, RS_Diag_04168

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

Result of Initialize handler.

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Forwarding-Header#include "apext/diag/diag_fwd.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
SymbolInitializationResult
Basistypstd::uint8_t

Werte

EnumeratorBeschreibung
kInitializeOk=0 Initialization ok.
kInitializeFailed=1 Initialization failed.

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

Record
AUTOSAR/AP/record/SWS_DM_09017
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_09017@rel:R25-11#2df96678
Content hash
2df96678
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_09017
Status: valid/unmigrated Version: rel:R25-11#95d25f6f 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_09017@rel:R25-11#95d25f6f
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#6e3b57b42026-09-30
  • R19-11rel:R19-11#1a1547832026-10-14
  • R20-11rel:R20-11#b70ecaf32026-10-14
  • R21-11rel:R21-11#b70ecaf32026-10-14
  • R22-11rel:R22-11#b70ecaf32026-10-14
  • R23-11rel:R23-11#fa76aad12026-10-14
  • R24-11rel:R24-11#86bf32092026-10-14
  • R25-11rel:R25-11#95d25f6f2026-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

Documentación de las constantes / variables

variable transportprotocolManager [SWS_DM_09025] Upstream: RS_Diag_04147, RS_Diag_04168

UdsTransportProtocolMgr& transportprotocolManager;

The UdsTransportProtocolMgr used/provided by the DM.

Header-Datei#include "apext/diag/uds_transport/protocol_handler.h"
Scopeclass apext::diag::uds_transport::UdsTransportProtocolHandler
SymboltransportprotocolManager
TypUdsTransportProtocolMgr &
Sichtbarkeitprotected

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

Record
AUTOSAR/AP/record/SWS_DM_09025
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_DM_09025@rel:R25-11#d765c6b0
Content hash
d765c6b0
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Diagnostics.pdf#nameddest=SWS_DM_09025
Status: valid/unmigrated Version: rel:R25-11#8f6915d3 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_09025@rel:R25-11#8f6915d3
Point-in-Time History:
Recorded Revisions (4):
  • R25-11rel:R25-11#d765c6b02026-09-30
  • R23-11rel:R23-11#a4f7fad02026-10-14
  • R24-11rel:R24-11#3b6191932026-10-14
  • R25-11rel:R25-11#8f6915d32026-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