DEENESPTFRRUARHIKOZHNL

пространство имён apext::diag::uds_transport

Руководство пользователяСОЗДАНО ИИ

Служит для стандартизированного подключения и управления внешними транспортными протоколами UDS в управлении диагностикой.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ce8b113ec3f5 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Служит для стандартизированного подключения и управления внешними транспортными протоколами UDS в управлении диагностикой.

Пространство имен apext::diag::uds_transport предоставляет транспортный интерфейс C++ для разделения универсального управления диагностикой и конкретных транспортных протоколов UDS AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». Плагины протоколов наследуются от базового класса UdsTransportProtocolHandler и проходят строгий жизненный цикл, состоящий из конструирования, инициализации, запуска и упорядоченного останова [SWS_DM_00329]. Входящие сообщения регистрируются через IndicateMessage и при наличии свободных емкостей получают управляемый памятью UdsMessagePtr для приема полезных данных. Ключевым граничным условием является то, что после останова не допускаются никакие дальнейшие вызовы к управлению диагностикой, кроме сообщения с подтверждением.

Контекст

Пространство имен apext::diag::uds_transport определяет стандартизированный транспортный интерфейс C++ (Transport Protocol API) для управления диагностикой (DM) в AUTOSAR Adaptive Platform AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer». Архитектура функционально отделяет универсальное ядро управления диагностикой от конкретных сетевых и транспортных уровней. Таким образом, стандартизированные протоколы, такие как DoIP, а также будущие или специфические для производителя транспортные протоколы (например, для CAN, CAN-FD или FlexRay) могут быть интегрированы в виде модульных плагинов AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».

Центральным связующим звеном выступает класс UdsTransportProtocolMgr, который координирует взаимодействие между экземплярами Diagnostic Server и подключенными транспортными протоколами. Конкретные плагины протоколов наследуются от абстрактного базового класса UdsTransportProtocolHandler AUTOSAR_AP_SWS_Diagnostics §7.1.1 «Support of UDS Transport Layer» [SWS_DM_00315]. Отдельные экземпляры обработчиков адресуются через UdsTransportProtocolHandlerID [SWS_DM_00336], тогда как коммуникационные каналы идентифицируются через тип ChannelID [SWS_DM_00337]. Для поддержки периодических запросов данных в соответствии со службой ISO 0x2A интерфейс дополнительно подключает класс UdsTransportProtocolPeriodicHandler.

Жизненный цикл

Управление диагностикой управляет жизненным циклом каждого экземпляра UdsTransportProtocolHandler в строго заданной последовательности [SWS_DM_00329]:

  1. Создание: DM инстанцирует плагин протокола через конструктор UdsTransportProtocolHandler::UdsTransportProtocolHandler [SWS_DM_00329].
  2. Инициализация: DM вызывает UdsTransportProtocolHandler::Initialize [SWS_DM_00329]. За исключением запроса GetPeriodicHandler, DM не имеет права вызывать другие методы обработчика до успешного возврата kInitializeOk [SWS_DM_01746].
  3. Запуск и работа: после успешной инициализации обработчик активируется с помощью UdsTransportProtocolHandler::Start. Только после этого вызова DM обрабатывает сообщения о реактивированных каналах через UdsTransportProtocolMgr::ChannelReestablished [SWS_DM_01744].
  4. Завершение: если DM переходит в состояние ApplicationState.kTerminating, оно вызывает UdsTransportProtocolHandler::Stop для всех активных плагинов [SWS_DM_00333]. После возврата из этого вызова плагин имеет право вызывать исключительно UdsTransportProtocolMgr::HandlerStopped [SWS_DM_01741]. DM активно ожидает этого подтверждения [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() при kTerminating Gestoppt Gestoppt Stoppend->Gestoppt HandlerStopped()

Диаграмма состояний: фазы жизненного цикла и условия переходов реализации обработчика транспортного протокола. Источники: [SWS_DM_00329], [SWS_DM_00333], [SWS_DM_00340], [SWS_DM_01741], [SWS_DM_01744], [SWS_DM_01745], [SWS_DM_01746]

Путь использования

В процессе работы пересылка входящих диагностических сообщений осуществляется посредством скоординированного взаимодействия обработчика и менеджера:

  1. Индикация сообщения: если обработчик принимает данные на канале (ChannelID [SWS_DM_00337]), он вызывает UdsTransportProtocolMgr::IndicateMessage. При этом он может передать предварительные полезные данные в payloadInfo; рекомендуется передавать как минимум первые два байта для раннего распознавания функциональных запросов AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer».
  2. Выделение буфера: если DM готово к приему, IndicateMessage отвечает значением std::pair из IndicationResult::kIndicationOk и действительным интеллектуальным указателем UdsMessagePtr [SWS_DM_00309] [SWS_DM_00385]. Адресуемый объект UdsMessage имеет минимальную вместимость в один байт [SWS_DM_00385]. Буфер управляется как std::unique_ptr со специфическим делитором ядра DM и не является потокобезопасным [SWS_DM_00303]. Для операций чтения существует константный эквивалент UdsMessageConstPtr [SWS_DM_00304].
  3. Передача данных: обработчик записывает принятые диагностические данные в предоставленный буфер, байтовая последовательность которого типизирована через тип ByteSpan (псевдоним для ara::core::Span<ara::core::Byte> [SWS_DM_00338]). Предположительно, предоставление отдельного класса UdsTransportProtocolPeriodicHandler через GetPeriodicHandler служит для разделения службы периодической передачи 0x2A и стандартного тракта сообщений UDS. Вопрос Q-230ef0b7c384c594 (открытый)
Процесс индикации UDS-сообщенияHandlerUdsTransportProtocolMgrDM-KernIndicateMessage(channelId, payloadInfo)Проверить состояние сервера и ресурсыaltDM bereitAllokiere UdsMessagereturn pair(kIndicationOk, UdsMessagePtr)Kopiere Nutzdaten in ByteSpanDM belegtreturn pair(kIndicationOccupied, nullptr)

Диаграмма последовательности: процесс индикации сообщения и выделения буфера между обработчиком, менеджером и ядром DM. Источники: AUTOSAR_AP_SWS_Diagnostics §7.1 «UDS Transport Layer», [SWS_DM_00303], [SWS_DM_00309], [SWS_DM_00385], [SWS_DM_00386]

Сценарии ошибок

Спецификация определяет конкретные состояния ошибок и предварительные условия для транспортного подключения:

  • Неудачная инициализация: если UdsTransportProtocolHandler::Initialize возвращает результат kInitializeFailed, DM немедленно прерывает процесс инициализации для этого обработчика и больше не вызывает у него никаких методов [SWS_DM_01745].
  • Отклонение при занятом ядре диагностики: если DM заблокировано текущей обработкой службы той же сессии Tester-Present и речь идет не о функциональном Tester-Present с payloadInfo 0x3E 0x80, IndicateMessage возвращает результат kIndicationOccupied вместе с nullptr вместо буфера сообщений [SWS_DM_00386].
  • Недопустимые вызовы после завершения: если плагин после возврата из Stop вызывает другой метод UdsTransportProtocolMgr, кроме HandlerStopped, это нарушает требования протокола [SWS_DM_01741]. Точно так же DM игнорирует сигналы, такие как ChannelReestablished, если они поступают до успешного вызова Start [SWS_DM_01744].

Данное руководство основано исключительно на спецификациях AUTOSAR Adaptive Platform Release R25-11.

Карта тем

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

Диаграмма классов

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

Подробный вид

Выберите элемент в оглавлении.

Nachrichtendaten

UdsMessage класс

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

ByteSpan псевдоним типа

This is the type of ByteSpan.

using ByteSpan = ara::core::Span<ara::core::Byte>;
UdsMessageConstPtr псевдоним типа

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 псевдоним типа

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.

UdsTransportProtocolHandlerID псевдоним типа

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 псевдоним типа

This is the identification of channel on which to transmit.

using ChannelID = std::uint32_t;

Псевдонимы типов

псевдоним типа 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#1895228a
Content hash
1895228a
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

псевдоним типа 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#692fb813
Content hash
692fb813
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

псевдоним типа 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#68a54321
Content hash
68a54321
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

псевдоним типа 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#eda8ac7d
Content hash
eda8ac7d
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

псевдоним типа 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#b5b0832c
Content hash
b5b0832c
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