Сообщает состояния разрешения, относящиеся к транспортному средству и системе, в Diagnostic Management для оценки диагностических условий.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 40db6d76454cПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Сообщает состояния разрешения, относящиеся к транспортному средству и системе, в Diagnostic Management для оценки диагностических условий.
Класс ara::diag::Condition предоставляет интерфейс DiagnosticConditionInterface, с помощью которого адаптивные приложения сообщают условия окружения и разрешения в Diagnostic Management ([SWS_DM_00712]). Diagnostic Server оценивает эти состояния для целенаправленного управления выполнением стандартизированных диагностических функций или операций удаления в транспортном средстве (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). Экземпляры жестко привязаны к прототипу порта и не являются ни копируемыми, ни перемещаемыми. При конкурентном использовании операции опроса и установки требуют внешней синхронизации, поскольку они не являются потокобезопасными.
Контекст
Класс ara::diag::Condition представляет собой программный интерфейс для диагностических условий (DiagnosticConditionInterface) в AUTOSAR Adaptive Platform ([SWS_DM_00712]). В системах диагностики транспортных средств определенные диагностические функции или службы UDS разрешено выполнять только тогда, когда транспортное средство находится в определенном состоянии окружения — например, при неподвижном транспортном средстве со скоростью, равной нулю (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). Согласно [SWS_DM_00111] Diagnostic Server выполняет соответствующие проверки окружения, если ISO 14229-1 предписывает проведение проверок условий, специфичных для службы, и в случае невыполнения отвечает сконфигурированным Negative Response Code (NRC).
В рамках архитектуры приложения ara::diag::Condition функционирует как связующее звено между адаптивным приложением и Diagnostic Management (DM). Приложение инстанцирует объект условия через порт, который в модели связан либо через DiagnosticEnableConditionPortMapping, либо через DiagnosticClearConditionPortMapping ([SWS_DM_00712]). Интерпретация: благодаря этому назначению порта определяется, служит ли сообщаемое состояние условием разрешения для регулярных диагностических процессов или критерием для удаления диагностических данных. Вопрос (открытый) Таким образом, объект инкапсулирует передачу состояния в Diagnostic Server, который оценивает условия для поступающих диагностических запросов ([SWS_DM_00111]).
Создание объекта ara::diag::Condition осуществляется явно путем передачи ara::core::InstanceSpecifier в конструктор ([SWS_DM_00712]). Этот идентификатор указывает на смоделированный прототип порта приложения. Конструктор объявлен как noexcept и гарантирует безопасность исключений, а также потокобезопасность ([SWS_DM_00712]).
Что касается отношений владения, класс спроектирован как строгий одиночный экземпляр: как конструктор копирования ([SWS_DM_01625]), так и оператор присваивания копированием ([SWS_DM_01623]) удалены (=delete). Точно так же конструктор перемещения ([SWS_DM_01626]) и оператор присваивания перемещением ([SWS_DM_01624]) удалены. Объект условия не может быть ни скопирован, ни перемещен, что обеспечивает жесткую привязку 1:1 к соответствующему порту.
В процессе работы методы SetCondition ([SWS_DM_00715]) и GetCondition ([SWS_DM_00714]) специфицированы как непотокобезопасные. При параллельном доступе из нескольких потоков вызывающее приложение должно обеспечить внешнюю синхронизацию. Жизненный цикл завершается деструктором ~Condition() ([SWS_DM_00713]), который является noexcept и безопасным относительно исключений, однако также не является потокобезопасным.
Путь использования
Типичный путь использования включает инициализацию, периодическое обновление состояния, а также опрос условия:
Инициализация: приложение инстанциирует ara::diag::Condition с указанием подходящего ara::core::InstanceSpecifier ([SWS_DM_00712]) для привязки к конфигурации модели.
Установка состояния: если определяющее состояние транспортного средства или системы изменяется, приложение обновляет условие через SetCondition(condition) ([SWS_DM_00715]). Вызов подтверждает принятие с помощью ara::core::Result<void>.
Опрос состояния: для проверки текущего состояния приложение вызывает GetCondition() ([SWS_DM_00714]). Результат предоставляется асинхронно через ara::core::Future<ConditionType>.
Серверная обработка: интерпретация: Diagnostic Server внутренне обращается к сохраненному состоянию для проверки ожидающих диагностических запросов ([SWS_DM_00111]). Вопрос Q-bbf48f735ef80e33 (открытый)
Завершение: при прекращении работы компонента объект освобождается через деструктор ([SWS_DM_00713]).
Состояния ошибок могут возникать как при инстанциации объекта, так и во время выполнения:
Нарушения конструктора: при создании ([SWS_DM_00712]) фреймворк проверяет конфигурацию на соответствие программной модели. Возможные нарушения включают:
InstanceSpecifierMappingIntegrityViolation: идентификатор не может быть разрешен в модели или не ссылается на PortPrototype ([SWS_DM_00712]).
PortInterfaceMappingViolation: PortPrototype хотя и типизирован с помощью DiagnosticConditionInterface, однако на него не ссылается ни DiagnosticEnableConditionPortMapping, ни DiagnosticClearConditionPortMapping ([SWS_DM_00712]).
ProcessMappingViolation: для ссылки на экземпляр во время выполнения не существует подходящего смоделированного процесса ([SWS_DM_00712]).
InstanceSpecifierAlreadyInUseViolation: идентификатор уже используется в том же процессе другим экземпляром ([SWS_DM_00712]).
Сбой базовых служб диагностики:GetCondition() ([SWS_DM_00714]) может завершиться сбоем через возвращаемый ara::core::Future с ошибкой DiagErrc::kServiceNotAvailable, если базовые функциональные возможности Diagnostic Management временно недоступны.
Безошибочное сохранение состояния: для SetCondition() ([SWS_DM_00715]) стандартизированные коды ошибок не определены; функция сообщает об успешном завершении напрямую через пустой ara::core::Result<void>.
Этот текст был создан ИИ. Все технические утверждения основаны исключительно на спецификациях AUTOSAR 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 typed by a pingViolation DiagnosticConditionInterface needs either to be referenced by a DiagnosticEnableConditionPortMapping or a DiagnosticClearConditionPortMapping. 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 DiagnosticConditionInterface.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал