Позволяет приложениям выполнять связанный со статусом мониторинг, устранение дребезга и опрос DTC для диагностических событий.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2f3253efefb6ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет приложениям выполнять связанный со статусом мониторинг, устранение дребезга и опрос DTC для диагностических событий.
Класс ara::diag::Event в AUTOSAR Adaptive предоставляет операции для мониторинга диагностических событий, а также их статуса устранения дребезга (дебаунсинга) и статуса ошибок. Приложения инстанцируют объект через InstanceSpecifier, регистрируют опциональные уведомления об изменениях и асинхронно запрашивают диагностическую информацию и информацию о DTC [SWS_DM_00647]. Ключевым граничным условием является то, что экземпляр не поддерживает ни копирование, ни перемещение, а большинство методов запроса из-за отсутствия потокобезопасности требуют синхронизации на стороне приложения при конкурентном доступе [SWS_DM_00649].
Контекст
Класс ara::diag::Event служит в AUTOSAR Adaptive Platform основным интерфейсом для взаимодействия с диагностическими событиями. Он выступает связующим звеном между прикладным программным обеспечением и центральным управлением диагностикой. Через этот интерфейс приложения отслеживают текущий статус диагностики и дебаунсинга события либо получают уведомления об изменениях статуса.
Во взаимодействии в системном контексте участвуют в основном три стороны:
Прикладное программное обеспечение: инстанцирует класс, инициирует запросы статуса и принимает асинхронные обновления статуса.
ara::diag::Event: инкапсулирует типизированный диагностический порт (PortPrototype для DiagnosticEventInterface) и предоставляет методы запроса, работающие между потоками и процессами.
Diagnostic Management (DM): выполняет на стороне сервера обнаружение ошибок, сопоставление DTC и устранение дребезга (дебаунсинг).
Контекстная диаграмма: размещение класса Event между прикладным программным обеспечением и Diagnostic Management. Источники: [SWS_DM_00647], [SWS_DM_00653]
Жизненный цикл
Инстанцирование осуществляется явно путем передачи ara::core::InstanceSpecifier[SWS_DM_00647]. Идентификатор должен ссылаться на PortPrototype, типизированный через DiagnosticEventInterface. Конструктор является exception-safe и thread-safe [SWS_DM_00647].
С точки зрения владения ara::diag::Event определен как некопируемый и неперемещаемый единичный экземпляр: как конструктор копирования [SWS_DM_01681], так и конструктор перемещения [SWS_DM_01682], а также соответствующие операторы присваивания ([SWS_DM_01679], [SWS_DM_01680]) явно удалены (=delete). Один InstanceSpecifier не допускается инстанцировать в процессе многократно [SWS_DM_00647].
Уничтожение выполняется через деструктор ~Event()[SWS_DM_00648]. В отличие от конструктора, деструктор не является потокобезопасным. Остальные функции-члены (за исключением GetDTCNumber) также специфицированы как непотокобезопасные, поэтому параллельные вызовы для одного и того же экземпляра должны синхронизироваться на стороне приложения. В релизе R25-11 терминология по этому вопросу была гармонизирована с Reentrancy на Concurrency AUTOSAR_AP_SWS_Diagnostics §1 «Change History».
Путь использования
Типичный вариант использования подразделяется на следующие вызовы:
Инициализация: приложение создает экземпляр через свой InstanceSpecifier[SWS_DM_00647]. Связывание во время инициализации, вероятно, устанавливает соединение с демоном диагностики. Вопрос Q-78e4462a0d147cfb (открытый)
Регистрация нотификатора: для мониторинга через SetEventStatusChangedNotifier опционально регистрируется функция обратного вызова [SWS_DM_00650]. Последующий вызов перезаписывает ранее установленный нотификатор.
Запросы состояния: во время работы приложение асинхронно запрашивает диагностические данные через ara::core::Future:
GetEventStatus() определяет текущий байт статуса [SWS_DM_00649].
GetDebouncingStatus() возвращает текущее состояние дебаунсинга [SWS_DM_00654].
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticEventPortMapping needs to be typed by a DiagnosticEventInterface. 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 DiagnosticEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 07bc53ae711cПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Через метод [SWS_DM_00650] класса ara::diag::Event (заголовочный файл ara/diag/event.h) Adaptive Application регистрирует callback-функцию типа EventStatusByteNotifier. После успешной регистрации Diagnostic Management (DM) вызывает этот оповеститель при каждом изменении статуса соответствующего диагностического события [SWS_DM_01029]. Последовательный вызов метода перезаписывает ранее зарегистрированный оповеститель [SWS_DM_00650]. Функция имеет сигнатуру ara::core::Result<void> SetEventStatusChangedNotifier(EventStatusByteNotifier notifier) noexcept и в случае успеха возвращает пустой результат [SWS_DM_00650].
Если при обработке возникает ошибка, метод возвращает код ошибки DiagErrc::kInvalidArgument[SWS_DM_00650]. Интерфейс хотя и объявлен как исключениебезопасный (exception safe), однако явно считается непотокобезопасным (not thread-safe) [SWS_DM_00650]. Интерпретация: конкурирующие обращения к одному и тому же экземпляру должны синхронизироваться на стороне приложения; вероятно, поэтому регистрацию предпочтительно выполнять на этапе инициализации приложения. Вопрос Q-d8ed099eaed6b197 (открытый)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал