Служит для предоставления расширенных диагностических данных со стороны приложения для адаптивного Diagnostic Management.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0446a63ad449ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для предоставления расширенных диагностических данных со стороны приложения для адаптивного Diagnostic Management.
Класс <ExtendedDataRecordElementInterface> служит адаптивным приложениям в качестве интерфейса для предоставления расширенных диагностических данных в Diagnostic Management ([SWS_DM_02152]). После инстанцирования и активации через Offer() обработчик реализует асинхронное предоставление данных через чисто виртуальный метод Read() ([SWS_DM_02156]). Поскольку Diagnostic Manager сохраняет наборы данных в энергонезависимой памяти на постоянной основе, недоступные значения обязательно должны дополняться шаблоном заполнения. Интерфейс не поддерживает копирование и перемещение, а его деструктор не является потокобезопасным.
Контекст
Интерфейс <ExtendedDataRecordElementInterface> служит в диагностической подсистеме AUTOSAR Adaptive Platform для предоставления специфичных для приложения расширенных диагностических данных (Extended Data Records) для Diagnostic Management (DM) (AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). Запись Extended Data Record содержит дополнительные диагностические данные, такие как показания счетчиков или информация об окружении, привязанные к событию ошибки. Класс выступает в качестве абстрактного базового интерфейса для компонентов-обработчиков со стороны приложения. К партнерам по взаимодействию относятся Diagnostic Manager (DM), который запрашивает и координирует операции чтения, конкретная реализация обработчика внутри приложения, а также энергонезависимая память (Non-Volatile Memory, NVM), в которой DM сохраняет полученные данные на постоянной основе ([SWS_DM_02156]). Интерпретация: вызов Read(), вероятно, инициируется внутренней диагностической обработкой в DM, например, при наступлении события ошибки или при изменениях статуса диагностического кода неисправности (Diagnostic Trouble Code). Вопрос Q-f80be8c2bd5697fc (открытый)
Создание осуществляется через параметризованный конструктор с указанием ara::core::InstanceSpecifier, а также режима параллелизма ara::diag::ConcurrencyType ([SWS_DM_02158], AUTOSAR AP SWS Diagnostics §7.2 «DiagnosticExtendedDataRecordInterface»). Конструирование является потокобезопасным и исключебнобезопасным (exception safe). С помощью параметра concurrencyType определяется, разрешено ли обрабатывать вызовы интерфейса параллельно (kConcurrent) или последовательно (kNotConcurrent) ([SWS_DM_02158]). Операции копирования и перемещения полностью запрещены: конструктор копирования ([SWS_DM_02147]), копирующее присваивание ([SWS_DM_02148]), конструктор перемещения ([SWS_DM_02149]) и перемещающее присваивание ([SWS_DM_02150]) удалены (=delete). Таким образом, экземпляр обладает фиксированной идентичностью и не может быть ни дублирован, ни перенесен.
После инстанцирования объект изначально находится в неактивном состоянии. Только после вызова Offer() ([SWS_DM_02152]) сервис переводится в активный режим и DM начинает перенаправлять запросы обработчику. С помощью StopOffer() ([SWS_DM_02153]) это перенаправление можно остановить в любой момент. Уничтожение происходит через виртуальный деструктор ~<ExtendedDataRecordElementInterface>() ([SWS_DM_02151]). Хотя он и является исключебнобезопасным, но явно не является потокобезопасным (not thread-safe) ([SWS_DM_02151]). Интерпретация: StopOffer(), по-видимому, должен вызываться перед уничтожением объекта обработчика, чтобы гарантировать, что новые запросы не поступят во время освобождения объекта. Вопрос Q-c77dda63f0e8798a (открытый)
Путь использования
Стандартный рабочий процесс включает предоставление, асинхронный ответ на запросы чтения и деактивацию сервиса:
Инициализация: приложение инстанцирует производный класс с соответствующим идентификатором порта и конфигурацией параллелизма ([SWS_DM_02158]).
Предложение сервиса: вызовом Offer() активируется перенаправление запросов в DM ([SWS_DM_02152]). Метод возвращает ara::core::Result<void>.
Запрос данных: при поступлении запроса на чтение DM вызывает чисто виртуальный метод Read() ([SWS_DM_02156]). При этом передаются метаданные запроса (metaInfo) и cancellationHandler.
Обработка отмены и возврат: обработчик может через cancellationHandler.IsCanceled() проверить, была ли отменена сессия взаимодействия (Conversation), или зарегистрировать уведомление с помощью cancellationHandler.SetNotifier() ([SWS_DM_02156]). Результат возвращается асинхронно через ara::core::Future с объектом ReadOutput ([SWS_DM_02156], [SWS_DM_02154]).
Сохранение: DM принимает извлеченные данные и сохраняет их на постоянной основе в энергонезависимой памяти ([SWS_DM_02156]).
Отмена регистрации сервиса: перед завершением работы приложение вызывает StopOffer() ([SWS_DM_02153]), чтобы остановить перенаправление со стороны DM до того, как экземпляр будет уничтожен ([SWS_DM_02151]).
При использовании интерфейса необходимо учитывать ряд условий возникновения ошибок и предусловий:
Ошибки конструирования и нарушения модели: при вызове конструктора могут возникать ошибки моделирования ([SWS_DM_02158]). К ним относятся InstanceSpecifierMappingIntegrityViolation (идентификатор невозможно разрешить или он не ссылается на PortPrototype), PortInterfaceMappingViolation (отсутствие ссылки со стороны DiagnosticDataPortMapping), ProcessMappingViolation (в модели не найден подходящий процесс), а также InstanceSpecifierAlreadyInUseViolation (идентификатор уже используется в процессе) ([SWS_DM_02158]).
Многократное предложение: если Offer() вызывается, когда сервис уже активно предлагается, вызов завершается сбоем и возвращает код ошибки DiagOfferErrc::kAlreadyOffered ([SWS_DM_02152]).
Недоступные данные при запросах чтения: поскольку DM сохраняет данные в энергонезависимой памяти, при вызове Read() обязательно должно быть возвращено значение ([SWS_DM_02156]). Если данные на момент запроса недоступны, реализация обработчика обязана заполнить их определенным шаблоном заполнения, таким как 0xFF ([SWS_DM_02156]).
Ошибки приложения и диагностики: если предоставление данных полностью завершается сбоем, возвращаемый ara::core::Future может содержать соответствующий диагностический код ошибки NRC (DiagUdsNrcErrc) или ошибку, специфичную для приложения (ApApplicationError) ([SWS_DM_02156]).
Опасность при уничтожении: поскольку деструктор не является потокобезопасным ([SWS_DM_02151]), уничтожение объекта во время параллельно выполняемых вызовов или без предварительного StopOffer() ([SWS_DM_02153]) приводит к неопределенному поведению.
Данное руководство было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5f6f8ec51798ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и контекст вызова
Функция <ExtendedDataRecordElementInterface> служит конструктором для создания DataElement для интерфейса набора расширенных данных на основе ara::core::InstanceSpecifier[SWS_DM_02158]. Объявление находится в области видимости <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> и требует подключения заголовочного файла #include "<ExtendedDataRecordElementShortname>.h"AUTOSAR_AP_SWS_Diagnostics §8.49.2.2.1.6.
Синхронный вызов требует двух входных параметров [SWS_DM_02158]:
instanceSpec (ara::core::InstanceSpecifier): идентификатор конкретного экземпляра службы в модели AUTOSAR.
concurrencyType (ara::diag::ConcurrencyType): определяет, инстанцируется ли интерфейс потокобезопасным (kConcurrent) или непотокобезопасным (kNotConcurrent).
Параллелизм и безопасность ошибок
Сама функция-конструктор объявлена как noexcept и специфицирована как thread-safe, а также exception safe[SWS_DM_02158]. Интерпретация: поскольку функция определена как noexcept, ошибки моделирования и инициализации, вероятно, сигнализируются не через исключения C++, а через нарушения (Violations), определенные в Adaptive Framework [SWS_DM_02158]. Вопрос Q-9ce91764c3e8364e (открытый)
Обработка ошибок и нарушения модели
При некорректной конфигурации модели или недопустимых идентификаторах возникают специфические нарушения [SWS_DM_02158]:
InstanceSpecifierMappingIntegrityViolation: идентификатор не может быть разрешен в контексте процесса или не указывает на PortPrototype.
PortInterfaceMappingViolation: PortPrototype, типизированный через DiagnosticExtendedDataRecordInterface, не ссылается через DiagnosticDataPortMapping.
ProcessMappingViolation: подходящий InstanceRef существует, но подходящий смоделированный процесс для процесса времени выполнения не найден.
InstanceSpecifierAlreadyInUseViolation: конструктор был вызван с InstanceSpecifier, который уже используется в процессе.
Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Verletzungen (Violations)
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 DiagnosticExtendedDataRecordInterface needs to be referenced by a DiagnosticDataPortMapping.
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
instanceSpec
The specifier of a specific instance of a service.
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 · Температура: не регулируется · Промпт: e44e4ef775f3ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция Offer активирует пересылку диагностических требований демоном Diagnostic Management (DM) в соответствующий экземпляр обработчика [SWS_DM_02152]. Она вызывается без параметров и синхронно возвращает ara::core::Result<void>, объявлена как noexcept и специфицирована как exception-safe [SWS_DM_02152].
Для надлежащего использования и обработки ошибок действуют следующие требования:
Возвращаемое значение и ошибки: в случае успеха результат содержит пустое значение. Если служба уже была ранее зарегистрирована для этого экземпляра обработчика, вызов завершается ошибкой и возвращает код ошибки DiagOfferErrc::kAlreadyOffered с семантикой отката [SWS_DM_02152]. Родственные домены ошибок также определяют для этого состояния код ошибки kAlreadyOffered[SWS_DM_00514][SWS_DM_00560].
Параллелизм: в отличие от других обработчиков диагностики, которые часто объявляются непотокобезопасными (как, например, в [SWS_DM_00557]), этот метод явно определен как thread-safe [SWS_DM_02152].
Взаимодействие в системе: пока интерфейс еще не предоставлен приложением с помощью Offer, DM в зависимости от контекста реагирует заданными значениями по умолчанию или замещающими значениями, такими как, например, статус «Not ready» при запросах DoIP-PowerMode [SWS_DM_01525] или замещающие значения для идентификаторов групп [SWS_DM_01527]. Кроме того, спецификация подчеркивает, что функции предложения диагностики являются специфичными для ara::diag и их нельзя путать с ara::com::OfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
Интерпретация: синхронный характер обратной связи Offer, вероятно, обеспечивает полное завершение регистрации обработчика до приема последующих требований UDS. Вопрос Q-e6b2916cf4887164 (открытый)
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
• If successful: an ara::core::Result containing a ara:: core::Result::value_type • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: diag::DiagOfferErrc
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: fe834745387eПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и семантика
Чисто виртуальный метод Read вызывается модулем Diagnostic Management (DM) для извлечения данных ExtendedDataRecordElement из приложения ([SWS_DM_02156]). Поскольку DM постоянно сохраняет извлеченные данные в энергонезависимой памяти, метод всегда должен возвращать значение. Если данные недоступны на момент вызова, реализация должна заполнить их шаблоном заполнения, таким как 0xFF ([SWS_DM_02156]).
Выполнение происходит асинхронно и возвращает ara::core::Future, инкапсулирующий структуру ReadOutput в случае успеха ([SWS_DM_02154]). Вызов передает следующие параметры ([SWS_DM_02156]):
cancellationHandler: позволяет опрашивать отмену с помощью cancellationHandler.IsCanceled(), а также регистрировать функцию уведомления через cancellationHandler.SetNotifier().
Обработка ошибок
В случае ошибки Future предоставляет отрицательный код ответа UDS (DiagUdsNrcErrc) или специфическую для приложения ошибку (ApApplicationError) ([SWS_DM_02156], AUTOSAR_AP_SWS_Diagnostics §7.3.2.6.1 «NRCs created by application»). Если требуемый интерфейс службы еще не предоставляется или больше не предоставляется через offer(), DM отвечает с помощью NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). Кроме того, DiagOfferErrc::kAlreadyOffered сообщает, если служба уже предлагается ([SWS_DM_02156]).
Параллелизм и взаимодействие
Метод специфицирован как безопасный по исключениям (exception safe) ([SWS_DM_02156]). Потокобезопасность является условной и определяется реализацией (implementation defined) ([SWS_DM_02156]). Это отличает Read для записей расширенных данных от операций чтения регулярных элементов данных ([SWS_DM_00596]) или идентификаторов данных ([SWS_DM_00640]), которые явно не являются потокобезопасными.
Этот текст сгенерирован системой ИИ на основе спецификаций релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
conditional Thread safety is implementation defined
Parameter (in)
Parameter
Beschreibung
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
• If successful: an ara::core::Future containing an ReadOutput object as per [SWS_DM_02154] • If unsuccessful: an ara::core::Future containing a corresponding DiagUdsNrcErrc or ApApplicationError.
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
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 · Температура: не регулируется · Промпт: 7a0fc3b7b561ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и контекст вызова
Функция StopOffer вызывается на экземпляре интерфейса Extended Data Record (<ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>), который подключается через заголовочный файл #include "<ExtendedDataRecordElementShortname>.h"[SWS_DM_02153]. Вызов выполняется синхронно, не принимает параметров и не имеет возвращаемого значения (void).
Назначение метода — деактивировать пересылку входящих сообщений запросов из Diagnostic Management (DM) в соответствующий элемент Extended Data Record [SWS_DM_02153]. После выполнения DM больше не пересылает новые диагностические запросы в связанный обработчик.
Обработка ошибок и параллелизм
Функция объявлена с идентификатором noexcept и специфицирована как исключительной безопасности (exception safe) [SWS_DM_02153]. Специфические коды ошибок, возвращаемые значения или уведомления для средств мониторинга ошибок в полезной нагрузке не определены; в случае ошибки исключения не генерируются.
В отношении параллелизма метод явно классифицирован как потокобезопасный (thread-safe) [SWS_DM_02153]. Это представляет собой особенность, поскольку родственные интерфейсы StopOffer в ara::diag — как, например, для рутин [SWS_DM_00558], элементов данных [SWS_DM_00617] или мониторов [SWS_DM_01089] — специфицированы как непотокобезопасные. Запросы, уже находящиеся в обработке, вероятно, еще завершаются или отбрасываются до окончательной остановки. Вопрос Q-82e9d44f8ac1969d (открытый)
Взаимодействие в Diagnostic Management
Именование следует единому шаблону служб в AUTOSAR Adaptive, при котором функциональные блоки управляют своей доступностью через Offer и StopOfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors». Таким образом, данный элемент входит в число сопоставимых интерфейсов DM, таких как для обобщенных служб UDS [SWS_DM_00620], идентификаторов данных [SWS_DM_00600], безопасного доступа [SWS_DM_00767] или требований сброса ECU [SWS_DM_01017].
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал