DEENESPTFRRUARHIKOZHNL

namespace apext::diag::uds_transport

Guia do utilizadorGERADO POR IA

Serve para a conexão e o gerenciamento padronizados de protocolos de transporte UDS externos no gerenciamento de diagnóstico.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ce8b113ec3f5 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Serve para a conexão e o gerenciamento padronizados de protocolos de transporte UDS externos no gerenciamento de diagnóstico.

O namespace apext::diag::uds_transport fornece a interface de transporte C++ para o desacoplamento do gerenciamento de diagnóstico genérico de protocolos de transporte UDS específicos AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». Plugins de protocolo derivam da classe base UdsTransportProtocolHandler e passam por um ciclo de vida estrito composto por construção, inicialização, início e parada ordenada [SWS_DM_00329]. Mensagens recebidas são reportadas via IndicateMessage e recebem, quando houver capacidade livre, um UdsMessagePtr gerenciado em memória para a aceitação de dados úteis. Uma condição de contorno central é que, após a parada, nenhuma outra chamada para o gerenciamento de diagnóstico deve ocorrer, exceto a mensagem de confirmação.

Contexto

O namespace apext::diag::uds_transport define a interface de transporte C++ padronizada (Transport Protocol API) para o gerenciamento de diagnóstico (DM) na AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». A arquitetura separa funcionalmente o núcleo genérico do gerenciamento de diagnóstico de camadas de rede e de transporte concretas. Dessa forma, protocolos padronizados como DoIP, bem como protocolos de transporte futuros ou específicos de fabricantes (por exemplo, para CAN, CAN-FD ou FlexRay), podem ser integrados como plugins modulares AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».

A instância de mediação central é formada pela classe UdsTransportProtocolMgr, que coordena a interação entre as instâncias do Diagnostic Server e os protocolos de transporte conectados. Plugins de protocolo concretos derivam da classe base abstrata UdsTransportProtocolHandler AUTOSAR_AP_SWS_Diagnostics §7.1.1 «Support of UDS Transport Layer» [SWS_DM_00315]. Instâncias individuais de manipulador são endereçadas via UdsTransportProtocolHandlerID [SWS_DM_00336], enquanto canais de comunicação são identificados por meio do tipo ChannelID [SWS_DM_00337]. Para dar suporte a consultas periódicas de dados de acordo com o serviço ISO 0x2A, a interface também incorpora a classe UdsTransportProtocolPeriodicHandler.

Ciclo de vida

O gerenciamento de diagnóstico controla o ciclo de vida de cada instância de UdsTransportProtocolHandler em uma sequência estritamente predefinida [SWS_DM_00329]:

  1. Criação: o DM instancia o plugin de protocolo por meio do construtor UdsTransportProtocolHandler::UdsTransportProtocolHandler [SWS_DM_00329].
  2. Inicialização: o DM chama UdsTransportProtocolHandler::Initialize [SWS_DM_00329]. À exceção da consulta de GetPeriodicHandler, o DM não deve chamar outros métodos no manipulador antes do retorno bem-sucedido de kInitializeOk [SWS_DM_01746].
  3. Início e operação: após a inicialização bem-sucedida, o manipulador é ativado com UdsTransportProtocolHandler::Start. Apenas após essa chamada o DM processa mensagens sobre canais reativados via UdsTransportProtocolMgr::ChannelReestablished [SWS_DM_01744].
  4. Terminação: se o DM transitar para o estado ApplicationState.kTerminating, ele chamará UdsTransportProtocolHandler::Stop para todos os plugins ativos [SWS_DM_00333]. Após o retorno dessa chamada, o plugin só poderá chamar UdsTransportProtocolMgr::HandlerStopped [SWS_DM_01741]. O DM aguarda ativamente por essa confirmação [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() em kTerminating Gestoppt Gestoppt Stoppend->Gestoppt HandlerStopped()

Diagrama de estados: fases do ciclo de vida e condições de transição de uma implementação de manipulador de protocolo de transporte. Fontes: [SWS_DM_00329], [SWS_DM_00333], [SWS_DM_00340], [SWS_DM_01741], [SWS_DM_01744], [SWS_DM_01745], [SWS_DM_01746]

Caminho de utilização

Durante a operação contínua, o encaminhamento de mensagens de diagnóstico recebidas ocorre por meio de uma interação coordenada entre o manipulador e o gerenciador:

  1. Indicação de mensagem: se o manipulador receber dados em um canal (ChannelID [SWS_DM_00337]), ele chama UdsTransportProtocolMgr::IndicateMessage. Ao fazer isso, ele pode passar dados úteis preliminares em payloadInfo; recomenda-se fornecer ao menos os dois primeiros bytes para a detecção precoce de requisições funcionais AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».
  2. Alocação de buffer: se o DM estiver pronto para recebimento, IndicateMessage responde com um std::pair de IndicationResult::kIndicationOk e um smart pointer válido UdsMessagePtr [SWS_DM_00309] [SWS_DM_00385]. O objeto UdsMessage referenciado possui uma capacidade mínima de um byte [SWS_DM_00385]. O buffer é gerenciado como std::unique_ptr com um deleter específico do núcleo do DM e não é thread-safe [SWS_DM_00303]. Para acessos de leitura, existe o equivalente constante UdsMessageConstPtr [SWS_DM_00304].
  3. Passagem de dados: o manipulador grava os dados de diagnóstico recebidos no buffer fornecido, cuja sequência de bytes é tipada pelo tipo ByteSpan (alias para ara::core::Span<ara::core::Byte> [SWS_DM_00338]). Presumivelmente, a disponibilização da classe separada UdsTransportProtocolPeriodicHandler via GetPeriodicHandler serve para desacoplar o serviço de transmissão periódica 0x2A do caminho regular de mensagens UDS. Pergunta Q-230ef0b7c384c594 (aberta)
Fluxo da indicação de mensagem UDSHandlerUdsTransportProtocolMgrDM-KernIndicateMessage(channelId, payloadInfo)Verificar estado do servidor & recursosaltDM bereitAllokiere UdsMessagereturn pair(kIndicationOk, UdsMessagePtr)Kopiere Nutzdaten in ByteSpanDM belegtreturn pair(kIndicationOccupied, nullptr)

Diagrama de sequência: fluxo de indicação de mensagem e alocação de buffer entre o manipulador, o gerenciador e o núcleo do DM. Fontes: AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer», [SWS_DM_00303], [SWS_DM_00309], [SWS_DM_00385], [SWS_DM_00386]

Cenários de erro

A especificação define estados de erro concretos e pré-condições para a conexão de transporte:

  • Falha na inicialização: se UdsTransportProtocolHandler::Initialize retornar o resultado kInitializeFailed, o DM aborta imediatamente o processo de inicialização para este manipulador e não chama mais nenhum método nele [SWS_DM_01745].
  • Rejeição com o núcleo de diagnóstico ocupado: se o DM estiver bloqueado por um processamento de serviço em andamento da mesma conversação de Tester Present e não se tratar de um Tester Present funcional com payloadInfo 0x3E 0x80, IndicateMessage retorna o resultado kIndicationOccupied juntamente com um nullptr em vez de um buffer de mensagem [SWS_DM_00386].
  • Chamadas não permitidas após a terminação: se um plugin chamar qualquer outro método de UdsTransportProtocolMgr além de HandlerStopped após o retorno de Stop, isso violará os requisitos do protocolo [SWS_DM_01741]. Da mesma forma, o DM ignora sinais como ChannelReestablished se eles chegarem antes da chamada bem-sucedida de Start [SWS_DM_01744].

Este guia baseia-se exclusivamente nas especificações da 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 classes

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 detalhes

Selecione uma entrada no índice.

Nachrichtendaten

UdsMessage classe

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;

Aliases 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