DEENESPTFRRUARHIKOZHNL

namespace apext::diag::uds_transport

Guide utilisateurGÉNÉRÉ PAR IA

Sert au raccordement et à la gestion standardisés de protocoles de transport UDS externes dans la gestion du diagnostic.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : ce8b113ec3f5 Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Sert au raccordement et à la gestion standardisés de protocoles de transport UDS externes dans la gestion du diagnostic.

L’espace de noms apext::diag::uds_transport fournit l’interface de transport C++ destinée à découpler la gestion générique du diagnostic des protocoles de transport UDS spécifiques AUTOSAR_AP_SWS_Diagnostics §7.1 « UDS Transport Layer ». Les greffons de protocole dérivent de la classe de base UdsTransportProtocolHandler et suivent un cycle de vie strict composé de la construction, de l’initialisation, du démarrage et de l’arrêt ordonné [SWS_DM_00329]. Les messages entrants sont signalés via IndicateMessage et reçoivent, en cas de capacités libres, un UdsMessagePtr à mémoire gérée pour la prise en charge des données utiles. Une contrainte centrale est qu’après l’arrêt, aucun autre appel ne doit être adressé à la gestion du diagnostic, à l’exception du message de confirmation.

Contexte

L’espace de noms apext::diag::uds_transport définit l’interface de transport C++ standardisée (Transport Protocol API) pour la gestion du diagnostic (DM) dans l’AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.1 « UDS Transport Layer ». L’architecture sépare fonctionnellement le cœur générique de la gestion du diagnostic des couches réseau et de transport concrètes. De cette manière, des protocoles standardisés tels que DoIP ainsi que des protocoles de transport futurs ou spécifiques aux constructeurs (par exemple pour CAN, CAN-FD ou FlexRay) peuvent être intégrés sous forme de greffons modulaires AUTOSAR_AP_SWS_Diagnostics §7.1 « UDS Transport Layer ».

L’instance de médiation centrale est constituée par la classe UdsTransportProtocolMgr, qui coordonne l’interaction entre les instances du Diagnostic Server et les protocoles de transport raccordés. Les greffons de protocole concrets dérivent de la classe de base abstraite UdsTransportProtocolHandler AUTOSAR_AP_SWS_Diagnostics §7.1.1 « Support of UDS Transport Layer » [SWS_DM_00315]. Les différentes instances de gestionnaire sont adressées via UdsTransportProtocolHandlerID [SWS_DM_00336], tandis que les canaux de communication sont identifiés via le type ChannelID [SWS_DM_00337]. Pour prendre en charge les interrogations périodiques de données selon le service ISO 0x2A, l’interface intègre en outre la classe UdsTransportProtocolPeriodicHandler.

Cycle de vie

La gestion du diagnostic pilote le cycle de vie de chaque instance de UdsTransportProtocolHandler selon un ordre strictement prédéfini [SWS_DM_00329] :

  1. Création : le DM instancie le greffon de protocole via le constructeur UdsTransportProtocolHandler::UdsTransportProtocolHandler [SWS_DM_00329].
  2. Initialisation : le DM appelle UdsTransportProtocolHandler::Initialize [SWS_DM_00329]. Hormis l’interrogation de GetPeriodicHandler, le DM ne doit appeler aucune autre méthode sur le gestionnaire avant le retour réussi de kInitializeOk [SWS_DM_01746].
  3. Démarrage et fonctionnement : après une initialisation réussie, le gestionnaire est activé avec UdsTransportProtocolHandler::Start. Ce n’est qu’après cet appel que le DM traite les notifications relatives aux canaux réactivés via UdsTransportProtocolMgr::ChannelReestablished [SWS_DM_01744].
  4. Terminaison : lorsque le DM passe à l’état ApplicationState.kTerminating, il appelle UdsTransportProtocolHandler::Stop pour tous les greffons actifs [SWS_DM_00333]. Après le retour de cet appel, le greffon ne doit appeler exclusivement que UdsTransportProtocolMgr::HandlerStopped [SWS_DM_01741]. Le DM attend activement cette confirmation [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() lors de kTerminating Gestoppt Gestoppt Stoppend->Gestoppt HandlerStopped()

Diagramme d’états : phases du cycle de vie et conditions de transition d’une implémentation de gestionnaire de protocole de transport. Sources : [SWS_DM_00329], [SWS_DM_00333], [SWS_DM_00340], [SWS_DM_01741], [SWS_DM_01744], [SWS_DM_01745], [SWS_DM_01746]

Parcours d'utilisation

En cours de fonctionnement, la transmission des messages de diagnostic entrants s’effectue via une interaction coordonnée entre le gestionnaire et le manager :

  1. Indication de message : lorsque le gestionnaire reçoit des données sur un canal (ChannelID [SWS_DM_00337]), il appelle UdsTransportProtocolMgr::IndicateMessage. Ce faisant, il peut transmettre des données utiles préliminaires dans payloadInfo ; il est recommandé de transmettre au moins les deux premiers octets pour la détection précoce des requêtes fonctionnelles AUTOSAR_AP_SWS_Diagnostics §7.1 « UDS Transport Layer ».
  2. Allocation de tampon : si le DM est prêt à recevoir, IndicateMessage répond avec un std::pair issu de IndicationResult::kIndicationOk et un pointeur intelligent valide UdsMessagePtr [SWS_DM_00309] [SWS_DM_00385]. L’objet UdsMessage référencé possède une capacité minimale d’un octet [SWS_DM_00385]. Le tampon est géré sous la forme d’un std::unique_ptr doté d’un délecteur spécifique du cœur de DM et n’est pas sûr vis-à-vis des threads [SWS_DM_00303]. Pour les accès en lecture, il existe l’équivalent constant UdsMessageConstPtr [SWS_DM_00304].
  3. Transfert de données : le gestionnaire écrit les données de diagnostic reçues dans le tampon mis à disposition, dont la séquence d’octets est typée via le type ByteSpan (alias pour ara::core::Span<ara::core::Byte> [SWS_DM_00338]). Vraisemblablement, la mise à disposition de la classe distincte UdsTransportProtocolPeriodicHandler via GetPeriodicHandler sert à découpler le service de transmission périodique 0x2A de la voie normale des messages UDS. Question Q-230ef0b7c384c594 (ouverte)
Déroulement de l’indication de message UDSHandlerUdsTransportProtocolMgrDM-KernIndicateMessage(channelId, payloadInfo)Vérifier l’état du serveur & les ressourcesaltDM bereitAllokiere UdsMessagereturn pair(kIndicationOk, UdsMessagePtr)Kopiere Nutzdaten in ByteSpanDM belegtreturn pair(kIndicationOccupied, nullptr)

Diagramme de séquence : déroulement de l’indication de message et de l’allocation de tampon entre le gestionnaire, le manager et le cœur de DM. Sources : AUTOSAR_AP_SWS_Diagnostics §7.1 « UDS Transport Layer », [SWS_DM_00303], [SWS_DM_00309], [SWS_DM_00385], [SWS_DM_00386]

Scénarios d'erreur

La spécification définit des états d’erreur concrets et des conditions préalables pour le raccordement de transport :

  • Échec de l’initialisation : si UdsTransportProtocolHandler::Initialize fournit le résultat kInitializeFailed, le DM interrompt immédiatement le processus d’initialisation pour ce gestionnaire et n’appelle plus aucune méthode sur lui [SWS_DM_01745].
  • Rejet en cas de cœur de diagnostic occupé : si le DM est bloqué par le traitement en cours d’un service de la même conversation Tester-Present et qu’il ne s’agit pas d’un Tester-Present fonctionnel avec payloadInfo 0x3E 0x80, IndicateMessage renvoie le résultat kIndicationOccupied conjointement avec un nullptr au lieu d’un tampon de message [SWS_DM_00386].
  • Appels non autorisés après la terminaison : si un greffon appelle une méthode de UdsTransportProtocolMgr autre que HandlerStopped après le retour de Stop, cela enfreint les directives du protocole [SWS_DM_01741]. De même, le DM ignore des signaux tels que ChannelReestablished s’ils parviennent avant l’appel réussi de Start [SWS_DM_01744].

Ce guide repose exclusivement sur les spécifications de l'AUTOSAR Adaptive Platform Release R25-11.

Carte des thèmes

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

Diagramme 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

Vue détaillée

Sélectionnez une entrée dans le plan.

Nachrichtendaten

UdsMessage classe

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

ByteSpan alias de type

This is the type of ByteSpan.

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

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 type

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 type

This is the identification of channel on which to transmit.

using ChannelID = std::uint32_t;

Alias de type

alias de type 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#0d56e331
Content hash
0d56e331
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 type 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#01499a83
Content hash
01499a83
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 type 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#1418fcff
Content hash
1418fcff
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 type 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#29763a9a
Content hash
29763a9a
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 type 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#506bc48b
Content hash
506bc48b
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