Служит для предоставления статуса идентификации группы DoIP для Diagnostic Manager.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: dea27beb11bbПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для предоставления статуса идентификации группы DoIP для Diagnostic Manager.
Класс ara::diag::DoIPGroupIdentification служит абстрактным интерфейсом для адаптивных приложений, позволяя предоставлять актуальный статус идентификации группы DoIP для Diagnostic Management [SWS_DM_00724]. После инстанцирования с привязкой к порту приложение активирует пересылку запросов через Offer() и прекращает ее перед уничтожением объекта с помощью StopOffer()[SWS_DM_00725]. Экземпляр обработчика уникален, не подлежит ни копированию, ни перемещению и отвечает на запросы асинхронно через ara::core::Future.
Контекст
Класс ara::diag::DoIPGroupIdentification предоставляет функциональный интерфейс Diagnostic Management (AUTOSAR AP SWS Diagnostics с. 73), через который адаптивное приложение передает актуальный статус идентификации группы (GID-статус) для протокола DoIP [SWS_DM_00724]. В архитектуре платформы класс выступает в качестве посредника между двумя основными партнерами по взаимодействию: внутренним демоном Diagnostic Management Daemon (DM), обрабатывающим стандартизированные сообщения идентификации автомобиля и сообщения DoIP по сети, и специфичной для приложения реализацией, конкретизирующей чисто виртуальный метод GetGidStatus(). Предоставление сервиса и прием запросов управляются посредством явных предложений сервиса [SWS_DM_00725].
Жизненный цикл
Экземпляр DoIPGroupIdentification представляет уникальный диагностический порт. По этой причине класс спроектирован как объект с уникальным управлением: как конструктор копирования [SWS_DM_01641] и конструктор перемещения [SWS_DM_01642], так и соответствующие операторы присваивания [SWS_DM_01639], [SWS_DM_01640] явно удалены (=delete).
Создание обязательно выполняется через параметризованный конструктор с указанием ara::core::InstanceSpecifier, а также режима параллелизма ConcurrencyType[SWS_DM_00722]. Жизненный цикл делится на следующие фазы:
Не предлагается (Not Offered): после конструирования объект существует в адресном пространстве процесса, но еще не принимает запросы от DM.
Предлагается (Offered): посредством синхронного вызова Offer()[SWS_DM_00725] обработчик активируется в DM, так что входящие запросы статуса DoIP пересылаются.
Остановлен (Stopped): вызов StopOffer()[SWS_DM_00726] отзывает у DM право пересылки и переводит объект обратно в неактивное состояние.
Уничтожение осуществляется через виртуальный деструктор ~DoIPGroupIdentification()[SWS_DM_00723]. В отношении многопоточности конструктор является потокобезопасным, в то время как Offer(), StopOffer() и деструктор непотокобезопасны [SWS_DM_00722], [SWS_DM_00723], [SWS_DM_00725], [SWS_DM_00726]. Потокобезопасность функции запроса GetGidStatus() условно определяется выбранным в конструкторе ConcurrencyType[SWS_DM_00724]. Интерпретация: деструктор, по всей видимости, неявно прекращает текущие пересылки, если ранее не был вызван StopOffer(). Вопрос Q-50d70fb679462321 (открытый)
Путь использования
Типичное использование включает инициализацию, активацию, асинхронную обработку и деактивацию:
Конкретный диагностический класс наследуется от ara::diag::DoIPGroupIdentification и реализует метод GetGidStatus()[SWS_DM_00724].
Приложение создает объект с InstanceSpecifier сконфигурированного прототипа порта и задает, разрешено ли вызывать GetGidStatus() параллельно (kConcurrent) или нет (kNotConcurrent) [SWS_DM_00722].
С помощью Offer() приложение активирует обработчик для Diagnostic Management [SWS_DM_00725].
Как только поступают запросы DoIP, DM вызывает GetGidStatus(); приложение возвращает состояние GID асинхронно через ara::core::Future<GidStatus>[SWS_DM_00724].
Перед завершением сервиса или остановом компонента приложение вызывает StopOffer()[SWS_DM_00726] с последующим уничтожением объекта [SWS_DM_00723].
При использовании DoIPGroupIdentification определены условия ошибок на этапах конструирования и предоставления:
Ошибки модели и привязки (конструктор): если инстанцирование завершается сбоем, сообщается о стандартизированных нарушениях [SWS_DM_00722]:
InstanceSpecifierMappingIntegrityViolation: идентификатор не удается разрешить или он не указывает на прототип порта.
PortInterfaceMappingViolation: целевой порт не типизирован как DiagnosticDoIPGroupIdentificationInterface.
ProcessMappingViolation: контексту выполнения в модели не сопоставлен подходящий процесс.
InstanceSpecifierAlreadyInUseViolation: указанный идентификатор порта уже используется другим экземпляром в работающем процессе.
Ошибка предоставления сервиса (Offer()): метод возвращает ara::core::Result<void>. Если сервис для этого обработчика уже был успешно предложен, повторный вызов завершается с кодом ошибки DiagOfferErrc::kAlreadyOffered[SWS_DM_00725].
Ошибка при запросе состояния: интерфейс GetGidStatus() не определяет стандартизированных кодов ошибок [SWS_DM_00724]; внутренние ошибки приложения должны отображаться через объект результата возвращаемого объекта Future.
Настоящее руководство основано исключительно на спецификации AUTOSAR Adaptive R25-11.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is referenced by a pingViolation DiagnosticDoIpGroupIdentificationPortMapping needs to be typed by a DiagnosticDoIPGroupIdentificationInterface. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticDoIPGroupIdentificationInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
This Offer will enable the DM to forward request messages to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c580e08dd024Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронная функция-член Offer класса ara::diag::DoIPGroupIdentification сигнализирует Diagnostic Management (DM), что предоставляющее приложение Adaptive Application готово и запросы на идентификацию групп DoIP могут обрабатываться [SWS_DM_00725]. Только после этого вызова DM при необходимости может запросить ID группы через метод GetGidStatus, если отсутствует фиксированная конфигурация [SWS_DM_00813].
В отношении контекста вызова и параллелизма действуют следующие условия:
Сигнатура и семантика: вызов выполняется без параметров и синхронно возвращает ara::core::Result<void>[SWS_DM_00725]. Метод объявлен как noexcept и является исключения-безопасным (exception safe) [SWS_DM_00725].
Потокобезопасность: операция специфицирована как не потокобезопасная (not thread-safe) [SWS_DM_00725]. Вызовы для одного и того же экземпляра не должны производиться без защиты из конкурирующих потоков.
В случае ошибки результирующий объект возвращает код ошибки DiagOfferErrc::kAlreadyOffered с семантикой отката, если сервис для этого интерфейса уже был предложен [SWS_DM_00725].
Пока приложение ещё не выполнило Offer и DM должен отправить идентификацию групп DoIP, действует поведение по умолчанию: DM передаёт в качестве значения GID либо 0x00 0x00 0x00 0x00 0x00 0x00, либо 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF согласно ISO 13400-2 в качестве обозначения для «value not set» [SWS_DM_01527].
Это указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I1)
This StopOffer will disable the forwarding of request messages from DM to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: da4bfe9455e6ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод StopOffer класса ara::diag::DoIPGroupIdentification прекращает предоставление обработчика и деактивирует пересылку входящих сообщений-запросов (request messages) из Diagnostic Management (DM) этому экземпляру [SWS_DM_00726].
Использование и обработка ошибок
Операция, объявленная в заголовке ara/diag/doip_group_identification.h, имеет сигнатуру void StopOffer () noexcept;[SWS_DM_00726]. Она не принимает параметров, не возвращает значения и выполняется синхронно [SWS_DM_00726]. Метод специфицирован как исключениебезопасный (exception safe) и не генерирует исключений C++; отдельные коды ошибок или сообщения об ошибках для этой процедуры не предусмотрены [SWS_DM_00726].
Параллелизм и ограничения
Что касается параллелизма, StopOffer явно специфицирован как непотокобезопасный (not thread-safe) [SWS_DM_00726]. Поэтому вызывающие приложения, предположительно, должны самостоятельно следить за тем, чтобы на одном и том же экземпляре не происходило конкурирующих вызовов. Вопрос Q-3ac810ffb08cb197 (открытый)
Взаимодействие
Диагностический модуль единообразно использует шаблон StopOffer для различных функциональных интерфейсов, например для обобщенных процедур [SWS_DM_00558], управления связью [SWS_DM_00810], а также служб аутентификации [SWS_DM_01131]. Хотя обозначения функционально схожи с управлением службами в ara::com, речь идет о самостоятельной реализации диагностической архитектуры AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Это указание по использованию было сгенерировано ИИ и опирается исключительно на спецификацию AUTOSAR для R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал