Служит для выполнения диагностического мониторинга и передачи сообщений о статусе в Diagnostic Management.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 49f63d89472dПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для выполнения диагностического мониторинга и передачи сообщений о статусе в Diagnostic Management.
Класс ara::diag::Monitor предоставляет функциональный интерфейс для реализации функций диагностического мониторинга и их подключения к Diagnostic Management [SWS_DM_00548]. После привязки к прототипу порта приложение через Offer() сигнализирует о своей готовности к приему и непрерывно передает результаты тестирования через ReportMonitorAction()[SWS_DM_01088], [SWS_DM_00543]. Экземпляры монитора не могут ни копироваться, ни перемещаться, и все операции специфицированы как непотокобезопасные [SWS_DM_01685].
Контекст
Класс ara::diag::Monitor представляет собой стандартизированный C++-интерфейс для реализации функций диагностического мониторинга (мониторов) в Adaptive Platform [SWS_DM_00548]. Монитор отвечает за обнаружение и передачу сообщений о признаках неисправностей в функциональных программных компонентах и передает их состояния в модуль Diagnostic Management (DM).
Привязка к системной модели AUTOSAR осуществляется через ara::core::InstanceSpecifier, который обязательно должен ссылаться на PortPrototype, типизированный с помощью DiagnosticMonitorInterface[SWS_DM_00548]. В общем процессе в основном участвуют три компонента: прикладной функциональный мониторинг (Application), локальный экземпляр интерфейса ara::diag::Monitor, а также платформенный модуль Diagnostic Management (DM), который принимает события и запрашивает повторную инициализацию.
Создание экземпляра монитора определяется механизмом устранения дребезга (дебаунсинга), заданным в модели. Adaptive Platform предоставляет для этого четыре варианта конструктора:
Внутреннее устранение дребезга монитора с регистрацией обратного вызова InitMonitorNotifier и указателя на функцию для опроса Fault Detection Counter (std::function<std::int8_t()> getFaultDetectionCounter) [SWS_DM_00548].
Устранение дребезга на основе счетчика с передачей параметров типа CounterBased[SWS_DM_00549].
Устранение дребезга по времени с передачей параметров типа TimeBased[SWS_DM_00550].
Прямой мониторинг без алгоритма устранения дребезга [SWS_DM_01972].
Экземпляры ara::diag::Monitor жестко привязаны к своему исходному местоположению в памяти: конструктор копирования [SWS_DM_01685] и оператор присваивания с копированием [SWS_DM_01683] удалены (delete). Аналогично явно удалены конструктор перемещения [SWS_DM_01686] и присваивание с перемещением [SWS_DM_01684].
После создания экземпляр находится в состоянии Не предлагается (Unoffered). Только при явном вызове Offer() приложение объявляет о своей готовности принимать и обрабатывать диагностические вызовы (callouts), такие как initMonitor[SWS_DM_01088]. С помощью StopOffer() пересылка диагностических запросов из DM снова деактивируется [SWS_DM_01089]. После вызова StopOffer() последующее возобновление работы путем повторного вызова Offer(), вероятно, возможно. Вопрос Q-136565db34b28ae6 (открытый) Перед окончательным уничтожением объекта монитора приложению, вероятно, потребуется выполнить StopOffer() для надежного предотвращения ожидающих уведомлений.
С точки зрения параллелизма все функции-члены ara::diag::Monitor специфицированы как непотокобезопасные[SWS_DM_00548], [SWS_DM_01088], [SWS_DM_00543], [SWS_DM_01089]. Если к одному и тому же монитору обращаются несколько потоков прикладного программного обеспечения, синхронизация возлагается на приложение. Однако все методы объявлены как безопасные относительно исключений (noexcept) [SWS_DM_00548], [SWS_DM_01088], [SWS_DM_00543], [SWS_DM_01089].
Диаграмма состояний: состояния жизненного цикла и переходы при предоставлении службы ara::diag::Monitor. Источники: [SWS_DM_01088], [SWS_DM_01089]
Путь использования
Стандартный процесс мониторинга пути ошибки включает следующие шаги:
Создание экземпляра: приложение создает экземпляр Monitor с указанием InstanceSpecifier, обратного вызова initMonitor, а также любых необходимых параметров устранения дребезга или обратного вызова FDC [SWS_DM_00548], [SWS_DM_00549].
Предоставление службы: через Offer() монитор регистрируется в DM как готовый к приему [SWS_DM_01088].
Инициализация: Diagnostic Management информирует приложение через зарегистрированный обратный вызов InitMonitorNotifier о предстоящих событиях инициализации [SWS_DM_01088].
Циклическое/событийное оповещение: во время штатной работы приложение непрерывно сообщает статус пути мониторинга через ReportMonitorAction(action)[SWS_DM_00543]. Переданное действие содержит либо результаты теста (квалифицированные/неквалифицированные), либо команды для управления устранением дребезга или предварительного сохранения (prestorage). Если был сконфигурирован внутренний дебаунсинг монитора, DM при необходимости запрашивает значение локализации ошибки через зарегистрированный обратный вызов [SWS_DM_00548].
Завершение службы: перед завершением работы или при деактивации функции диагностики приложение вызывает StopOffer(), чтобы предотвратить входящие сообщения DM [SWS_DM_01089].
Ошибочные ситуации проявляются в ara::diag::Monitor на двух различных уровнях: в виде кода ошибки через ara::core::Result или в виде нарушений во время выполнения (violations) платформы.
Метод Offer() возвращает ara::core::Result<void>. Если монитор уже находится в предлагаемом состоянии, вызов завершается сбоем и возвращает код ошибки DiagOfferErrc::kAlreadyOffered[SWS_DM_01088].
Серьезные ошибки конфигурации или вызова вызывают определенные сообщения о нарушениях:
InstanceSpecifierMappingIntegrityViolation: InstanceSpecifier не может быть разрешен в контексте модели процесса или не ссылается на PortPrototype[SWS_DM_00548].
PortInterfaceMappingViolation: порт, на который указывает ссылка, не типизирован DiagnosticMonitorInterface[SWS_DM_00548].
ProcessMappingViolation: отсутствует подходящий смоделированный процесс для экземпляра времени выполнения [SWS_DM_00548].
InstanceSpecifierAlreadyInUseViolation: InstanceSpecifier уже используется другим монитором в рамках текущего процесса [SWS_DM_00548].
InvalidDebouncingAlgorithmViolation: механизм устранения дребезга, выбранный в конструкторе, отличается от метода устранения дребезга, смоделированного в описаниях диагностики DEXT [SWS_DM_00548], [SWS_DM_00549], [SWS_DM_00550].
UnexpectedMonitorActionHandlingViolation: методу ReportMonitorAction() передается значение действия, которое не поддерживается для сконфигурированного алгоритма устранения дребезга [SWS_DM_00543].
Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform версии 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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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.
InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
getFaultDetectionCounter
Possibility to register a function to get the current FDC for this event.
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceCounterBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for CounterBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceTimeBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for TimeBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
Request a governed re-review of this record. The record is not changed immediately.
With the Offer the application states that it is ready to receive and process initMonitor callouts.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2e8d03769af8Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Вызовом метода Offer Adaptive Application сигнализирует Diagnostic Management (DM) о готовности к приему и обработке коллаутов initMonitor[SWS_DM_01088]. Метод класса ara::diag::Monitor не имеет параметров и возвращает ara::core::Result<void>[SWS_DM_01088]. Хотя имя выбрано по аналогии с ara::com, речь идет о специфической реализации диагностического компонента, и ее нельзя путать с коммуникационными службами AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
В случае ошибки метод возвращает код ошибки DiagOfferErrc::kAlreadyOffered, если служба уже предлагалась ранее [SWS_DM_01088]. Это соответствует энумератору для оповещения об уже активных предложениях в диагностических доменах ошибок [SWS_DM_00514]. При успешном вызове возвращаемый объект не содержит ошибки.
Что касается параллелизма, метод специфицирован как not thread-safe, вследствие чего параллельные вызовы на одном и том же экземпляре должны синхронизироваться на стороне приложения [SWS_DM_01088]. Кроме того, функция объявлена как безопасная относительно исключений (exception safe) и с noexcept[SWS_DM_01088].
Function to report the status information being relevant for error monitoring paths.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8334da733b55Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод ReportMonitorAction класса ara::diag::Monitor сообщает информацию о состоянии и мониторинге диагностической проверки в службу мониторинга ошибок демона Diagnostic Management [SWS_DM_00543]. Через параметр action типа MonitorAction приложение передает либо квалифицированный или неквалифицированный результат теста, либо управляющие команды для управления устранением дребезга, а также для запуска предварительного сохранения (Prestorage) [SWS_DM_00543]. Функция не возвращает значения (void) и объявлена как noexcept, а также как бессбойная [SWS_DM_00543].
Если ReportMonitorAction вызывается со значением для action, которое не поддерживается сконфигурированным методом устранения дребезга диагностического события, Diagnostic Manager инициирует нарушение процесса [SWS_DM_01988]. Кроме того, система определяет внутренние коды ошибок в типе DiagErrc, например kReportIgnored для ситуаций, в которых условия разрешения не выполнены [SWS_DM_00514].
Для интеграции и параллелизма действуют следующие граничные условия:
Потокобезопасность: функция является непотокобезопасной (not thread-safe) [SWS_DM_00543]. Параллельные вызовы на одном и том же экземпляре монитора должны синхронизироваться на стороне вызывающего кода (в отличие от MultipleMonitor, где потокобезопасность настраивается через конструктор [SWS_DM_01698]).
Условия разрешения: если условие разрешения (Enable Condition), назначенное диагностическому событию, не выполнено, вызов ReportMonitorAction игнорируется SWS Diagnostics §7.3.4.1.4 «EnableConditions».
Устранение дребезга: переданные действия, такие как kPrefailed, изменяют внутренний счетчик устранения дребезга в соответствии со сконфигурированным размером шага [SWS_DM_00875], пока при достижении порогового значения ошибка не будет классифицирована как kFinallyDefective[SWS_DM_00024].
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR AP R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
UnexpectedMoni- ara::diag::Monitor::ReportMonitorAction is called with torActionHan- a parameter action value that is not supported by the used dlingViolation debouncing method.
Parameter (in)
Parameter
Beschreibung
action
Contains either the last (un-)qualified test result of the diagnostic monitor or commands to control the debouncing or to force a prestorage.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e17ef3becf1dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ara::diag::Monitor::StopOffer деактивирует пересылку запросов и сообщений из Diagnostic Management (DM) в соответствующий экземпляр монитора ([SWS_DM_01089]). Вызов выполняется синхронно, не требует входных параметров и не имеет возвращаемого значения ([SWS_DM_01089]). Операция служит дополнением к Offer и позволяет Adaptive Application приостанавливать активный мониторинг, если соответствующая часть системы временно не требует контроля (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Хотя идентификатор ориентирован на интерфейсы из ara::com, спецификация явно подчеркивает, что речь идёт о самостоятельной реализации ara::diag::Monitor (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
В отношении обработки ошибок функция объявлена как noexcept и считается исключениебезопасной (exception safe); специфических кодов ошибок или сообщений об ошибках не существует ([SWS_DM_01089]). Существенным ограничением является то, что StopOffer классифицирован как непотокобезопасный (not thread-safe) ([SWS_DM_01089]). Интерпретация: при параллельных обращениях к одному и тому же объекту монитора вызывающая сторона, вероятно, сама отвечает за надлежащую синхронизацию. Вопрос Q-3ead3049b4378083 (открытый)
В общей системе StopOffer встраивается в единый паттерн диагностического модуля: аналогичные интерфейсы для деактивации пересылки сообщений DM находятся, среди прочего, у GenericRoutine ([SWS_DM_00558]), CommunicationControl ([SWS_DM_00810]), EcuResetRequest ([SWS_DM_01017]), а также Authentication ([SWS_DM_01131]).
Это указание по использованию было сгенерировано автоматически и базируется на спецификациях AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал