Позволяет отслеживать диагностические рабочие циклы, а также инициировать перезапуск цикла через смоделированные порты.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 3e8e62c1c567ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет отслеживать диагностические рабочие циклы, а также инициировать перезапуск цикла через смоделированные порты.
Класс ara::diag::OperationCycle предоставляет приложению функции для управления и отслеживания диагностических рабочих циклов [SWS_DM_00752]. Экземпляры привязываются к смоделированному порту через ara::core::InstanceSpecifier, не поддерживают ни копирование, ни перемещение и могут существовать в процессе только в единственном числе для каждого идентификатора. С помощью SetNotifier можно зарегистрировать уведомление об изменениях цикла, а с помощью RestartOperationCycle — инициировать перезапуск рабочего цикла [SWS_DM_01102]. За исключением потокобезопасного конструктора, все методы, а также деструктор не являются потокобезопасными и требуют синхронизации на стороне приложения при параллельном доступе.
Контекст
Класс ara::diag::OperationCycle реализует DiagnosticOperationCycleInterface в рамках диагностики AUTOSAR Adaptive и предоставляет функции для обработки рабочих циклов и управления ими. Он служит интерфейсом между адаптивным приложением и управлением диагностикой для отслеживания или целенаправленного сброса состояний рабочих циклов.
Подключение к общей системе осуществляется через ara::core::InstanceSpecifier, передаваемый при вызове конструктора [SWS_DM_00752]. Этот идентификатор ссылается на PortPrototype, определенный в модели. При этом модель предписывает однозначное сопоставление: PortPrototype, на который ссылается DiagnosticOperationCyclePortMapping, должен типизироваться с помощью DiagnosticOperationCycleInterface[SWS_DM_00752]. Помимо управления, класс взаимодействует через интерфейс обратного вызова типа ara::diag::OperationCycle::OperationCycleSetNotifier (определенный как std::function<void(void)>), через который в приложение передаются уведомления об изменении рабочего цикла [SWS_DM_02078], [SWS_DM_00755].
Жизненный цикл
Создание ara::diag::OperationCycle выполняется явно путем указания спецификации экземпляра порта через конструктор OperationCycle(const ara::core::InstanceSpecifier &specifier)[SWS_DM_00752]. Конструктор специфицирован как безопасный относительно исключений (exception safe) и потокобезопасный (thread-safe) [SWS_DM_00752].
С точки зрения семантики владения и копирования класс смоделирован как строгий одиночный объект, представляющий фиксированную привязку 1:1 к смоделированному порту. Копирование и перемещение полностью запрещены:
Конструктор копирования удален (delete), чтобы исключить дублирование [SWS_DM_01598].
Оператор присваивания с копированием удален (delete) [SWS_DM_01596].
Оператор присваивания с перемещением удален (delete) [SWS_DM_01597].
Кроме того, фреймворк запрещает множественное использование: InstanceSpecifier не может повторно использоваться для инстанцирования в рамках одного и того же процесса [SWS_DM_00752]. Освобождение происходит в деструкторе ~OperationCycle()[SWS_DM_00753]. В отличие от конструктора, деструктор не является потокобезопасным (not thread-safe), хотя и объявлен безопасным относительно исключений [SWS_DM_00753]. Другие методы класса, а также тип обратного вызова также не являются потокобезопасными [SWS_DM_00755], [SWS_DM_01102], [SWS_DM_02078], поэтому параллельный доступ к одному и тому же экземпляру должен синхронизироваться на стороне приложения.
Путь использования
Типичный сценарий использования включает инстанцирование, опциональную регистрацию обработчика изменений цикла, многократный запуск перезапуска цикла, а также освобождение:
Инстанцирование: приложение создает объект OperationCycle, передавая соответствующий InstanceSpecifier[SWS_DM_00752].
Регистрация нотификатора: с помощью метода SetNotifier приложение регистрирует функцию обратного вызова типа OperationCycleSetNotifier[SWS_DM_00755], [SWS_DM_02078]. Эта функция вызывается при изменении рабочего цикла. Последовательный вызов SetNotifier полностью перезаписывает ранее зарегистрированный нотификатор [SWS_DM_00755].
Перезапуск рабочего цикла: с помощью RestartOperationCycle() приложение инициирует перезапуск рабочего цикла [SWS_DM_01102]. Управление диагностикой обновляет цикл и при смене статуса уведомляет зарегистрированный обратный вызов [SWS_DM_00755]. При этом уведомление, по-видимому, происходит асинхронно в контексте управления диагностикой. Вопрос Q-7cd22debf6fa91d7 (открытый)
Уничтожение: при завершении работы программного компонента объект уничтожается с помощью деструктора [SWS_DM_00753].
Ошибки при инициализации сигнализируются фреймворком как нарушения (Violations), поскольку конструктор объявлен как noexcept[SWS_DM_00752]:
InstanceSpecifierMappingIntegrityViolation: InstanceSpecifier не удается разрешить в контексте исполняемого файла или он указывает на элемент, который не является PortPrototype[SWS_DM_00752].
PortInterfaceMappingViolation: PortPrototype, на который ссылается DiagnosticOperationCyclePortMapping, не типизирован с помощью DiagnosticOperationCycleInterface[SWS_DM_00752].
ProcessMappingViolation: хотя подходящая ссылка на экземпляр существует, подходящий смоделированный процесс для процесса времени выполнения не найден [SWS_DM_00752].
InstanceSpecifierAlreadyInUseViolation: конструктор был вызван с InstanceSpecifier, который уже используется в текущем процессе [SWS_DM_00752].
При штатной работе методы SetNotifier и RestartOperationCycle возвращают ara::core::Result<void>[SWS_DM_00755], [SWS_DM_01102]. Для обеих функций в стандарте не определены специфические коды ошибок («This function does not specify any standardized errors.») [SWS_DM_00755], [SWS_DM_01102]. Использование типа Result, по-видимому, служит в первую очередь для единообразного построения интерфейса и оставляет пространство для состояний ошибок, специфичных для реализации. Вопрос Q-2c59a287c0d5783a (открытый)
Данное руководство было сгенерировано системой ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Registering a notifier function which is called if the operation cycle 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 DiagnosticOperationCyclePortMapping needs to be typed by a DiagnosticOperationCycleInterface. 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 DiagnosticOperationCycleInterface.
Request a governed re-review of this record. The record is not changed immediately.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 3cc8bab8ea58ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член RestartOperationCycle класса ara::diag::OperationCycle (предоставляемая через #include "ara/diag/operation_cycle.h") служит для того, чтобы сообщить в Diagnostic Management (DM) о перезапуске рабочего цикла [SWS_DM_01102]. Рабочие циклы, такие как циклы зажигания («Ignition on/off»), циклы питания («Power up/power down») или накопленное время работы, управляются адаптивным приложением и оказывают прямое влияние на байт статуса UDS-DTC, а также на поведение памяти событий согласно ISO 14229-1 SWS Diagnostics §7.3.4.3 «Operation Cycles Management».
Вызов и семантика
Функция вызывается без параметров и возвращает ara::core::Result<void>[SWS_DM_01102]. Если DM в момент вызова еще не готов обработать сообщение о перезапуске, эта информация не теряется: DM временно буферизует событие (кэширование) и обрабатывает перезапуск цикла, как только соединение будет восстановлено [SWS_DM_01103].
Обработка ошибок и параллелизм
Для RestartOperationCycle стандартизированные коды ошибок не предусмотрены [SWS_DM_01102]. Функция специфицирована как безопасная относительно исключений (exception safe) и не генерирует исключений C++ (noexcept) [SWS_DM_01102]. Однако поскольку интерфейс явно указан как непотокобезопасный (not thread-safe) [SWS_DM_01102], одновременные обращения к одному и тому же экземпляру, вероятно, должны синхронизироваться вызывающим приложением. Вопрос Q-b3b258a20fd9db22 (открытый)
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Registering a notifier function which is called if the operation cycle is changed. A consecutive call of this method will overwrite the previous registered notifier.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4ba4d539945dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) служит для регистрации со стороны приложения функции обратного вызова типа OperationCycleSetNotifier. Эта функция-нотификатор вызывается Diagnostic Management (DM), как только изменяется состояние отслеживаемого рабочего цикла ([SWS_DM_00755]). Для использования метода необходимо подключить заголовочный файл ara/diag/operation_cycle.h ([SWS_DM_00755]).
Операция объявлена как noexcept и обеспечивает безопасность относительно исключений (exception safe) ([SWS_DM_00755]). В качестве синхронного возвращаемого значения предоставляется ara::core::Result<void>; однако специфические стандартизированные коды ошибок не определены ([SWS_DM_00755]). Любые состояния ошибок в объекте Result, следовательно, скорее всего, зависят от производителя или платформы. Вопрос Q-6799492164efd793 (открытый) В отношении конкурентности метод специфицирован как непотокобезопасный (not thread-safe) ([SWS_DM_00755]), поэтому параллельные вызовы для одного и того же экземпляра объекта обязательно должны синхронизироваться приложением.
Это указание по использованию было создано автоматически и основано на спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал