Позволяет приложениям генерировать и проверять подтверждения близости для защищённых диагностических операций SOVD.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 7c7c088635a6ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет приложениям генерировать и проверять подтверждения близости для защищённых диагностических операций SOVD.
Интерфейсный класс служит в AUTOSAR Adaptive Platform для реализации проверок близости для операций SOVD в диагностическом окружении [SWS_DM_01481]. Приложения наследуются от этого класса, активируют пересылку через Diagnostic Management с помощью Offer() и асинхронно предоставляют запрошенный challenge, а также его последующую валидацию [SWS_DM_01478]. Конкурентные вызовы методов валидации определяются режимом конкурентности, выбранным при конструировании, тогда как регистрация и уничтожение не являются потокобезопасными.
Контекст
Класс ara::diag::SovdProximityChallenge[SWS_DM_01481] служит в AUTOSAR Adaptive Platform для реализации со стороны приложения интерфейса для подтверждений близости (Proximity Challenge) в контексте Service-Oriented Vehicle Diagnostics (SOVD). Он образует мост между AUTOSAR Diagnostic Management (DM или Diagnostic Server) и непосредственно приложением транспортного средства, которое предоставляет логику безопасности для физических или криптографических проверок близости AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Если для операции SOVD сконфигурировано требование подтверждения близости (атрибут proximityProofRequired имеет значение TRUE), Diagnostic Management при обработке диагностического запроса запрашивает challenge у приложения и передаёт полученный от клиента ответ на верификацию [SWS_DM_01398]. В этом взаимодействии участвуют три основные стороны: внешний SOVD-клиент, промежуточный Diagnostic Management и использующее приложение.
Инстанцирование класса обработчика выполняется через конструктор SovdProximityChallenge[SWS_DM_01480]. Он связывает экземпляр с ara::core::InstanceSpecifier, определённым в манифесте, и с помощью параметра ConcurrencyType задаёт, будет ли последующее выполнение конкурентным (kConcurrent) или последовательным (kNotConcurrent). Сам конструктор специфицирован как потокобезопасный [SWS_DM_01480]. После создания объекта обработчик изначально находится в пассивном состоянии. Только после явного вызова Offer()[SWS_DM_01478] Diagnostic Management авторизуется для пересылки запросов экземпляру приложения.
Пересылку можно отключить в любой момент с помощью StopOffer()[SWS_DM_01495]. Ни Offer(), StopOffer(), ни виртуальный деструктор ~SovdProximityChallenge()[SWS_DM_01479] не являются потокобезопасными. Интерпретация: перед уничтожением объекта, вероятно, потребуется вызвать StopOffer(), чтобы предотвратить пересылку запросов разрушаемому объекту. Вопрос Q-b4c66854163f433e (открытый) Кроме того, на практике экземпляр приложения обычно сохраняется на протяжении всего времени работы диагностического процесса для непрерывной защиты операций SOVD. Потокобезопасность непосредственно методов запроса и валидации GetChallenge()[SWS_DM_01494] и ValidateResponse()[SWS_DM_01493] управляется переданным в конструкторе ConcurrencyType.
Путь использования
После успешной инициализации и предоставления сервиса с помощью Offer()[SWS_DM_01478] класс реагирует на запросы Diagnostic Management. Если SOVD-клиент запрашивает защищённую операцию, DM вызывает чисто виртуальный метод GetChallenge()[SWS_DM_01494]. Приложение генерирует токен близости и возвращает его вместе со временем действия (valid_until) асинхронно через ara::core::Future<SovdProximityChallengeType>[SWS_DM_01494]. По умолчанию предполагается, что в каждый момент времени существует только один challenge, действительный для всех клиентов и операций, причём время его жизни обычно фиксировано (например, две минуты) AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge». Для более сложных сценариев приложение может анализировать переданный объект ara::diag::MetaInfo для выполнения проверок с учётом конкретного клиента или операции AUTOSAR_AP_SWS_Diagnostics §8.56 «Providing the SOVD operation proximity_challenge».
Diagnostic Management передаёт атрибут proximity_challenge в теле ответа клиенту [SWS_DM_01398]. Если клиент отвечает подтверждением близости, DM пересылает эти данные через ValidateResponse()[SWS_DM_01493]. Переданная область памяти proximityResponse остаётся действительной до тех пор, пока возвращённый ara::core::Future<ProximityChallengeValidationResultType> не будет выполнен или обработка не будет прервана [SWS_DM_01493]. Перед завершением процесса сервис отменяет регистрацию с помощью StopOffer()[SWS_DM_01495].
Уже при создании объекта через конструктор [SWS_DM_01480] фреймворк проверяет согласованность модели и может сообщать о следующих нарушениях: InstanceSpecifierMappingIntegrityViolation (идентификатор не удаётся разрешить или он не указывает на прототип порта), PortInterfaceMappingViolation (прототип порта не типизирован как DiagnosticSovdProximityChallengeInterface), ProcessMappingViolation (подходящий смоделированный процесс не найден) или InstanceSpecifierAlreadyInUseViolation (идентификатор уже используется в процессе) [SWS_DM_01480].
При вызове Offer()[SWS_DM_01478] результирующий ara::core::Result<void> в случае ошибки возвращает стандартизированные коды ошибок: DiagOfferErrc::kAlreadyOffered, если сервис для этого порта уже активно предлагается, или DiagOfferErrc::kConfigurationMismatch, если конфигурация монитора не совпадает с DEXT. Для GetChallenge()[SWS_DM_01494] и ValidateResponse()[SWS_DM_01493] стандартизированные коды ошибок не определены. Все функции-члены класса объявлены как noexcept и гарантируют безопасность исключений.
Настоящее руководство основано на спецификации AUTOSAR Adaptive Platform версии R25-11.
This Offer will enable the DM to forward request messages to this handler.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f009f89ccf76ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод Offer класса ara::diag::SovdProximityChallenge (определенный в #include "ara/diag/sovd_proximity_challenge.h") регистрирует обработчик в Diagnostic Management (DM) и позволяет ему пересылать входящие сообщения запроса (request messages) экземпляру обработчика [SWS_DM_01478]. Вызов выполняется без параметров и специфицирован как noexcept[SWS_DM_01478].
В качестве возвращаемого значения служит ara::core::Result<void>[SWS_DM_01478]. В случае ошибки метод возвращает специфический код ошибки с семантикой отката [SWS_DM_01478]:
DiagOfferErrc::kAlreadyOffered: служба уже была предложена через данный экземпляр [SWS_DM_01478].
DiagOfferErrc::kConfigurationMismatch: конфигурация обработчика не совпадает с данными DEXT [SWS_DM_01478].
Что касается безопасности выполнения, метод объявлен как exception safe, но явно считается not thread-safe[SWS_DM_01478]. Поэтому параллельные вызовы на одном и том же экземпляре должны синхронизироваться вызывающим приложением. Шаблон развертывания соответствует единому принципу активации обработчиков DM, как это применяется, среди прочего, и в ara::diag::GenericRoutine[SWS_DM_00557], ara::diag::GenericUDSService[SWS_DM_00619] и ara::diag::CommunicationControl[SWS_DM_00809]. Интерпретация: пока Offer не выполнен успешно, DM, предположительно, не пересылает запросы для проверки близости (proximity challenge) обработчику. Вопрос Q-320a80aca81ef460 (открытый)
Данное указание по использованию сгенерировано автоматически на основе AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
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 DiagnosticSovdProximityChallengePortMapping needs to be typed by a DiagnosticSovdProximityChallengeInterface. 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
instanceSpecifier
InstanceSpecifier to a PortPrototype of a DiagnosticSovdProximityChallengeInterface service instance in the manifest.
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 StopOffer will disable the forwarding of request messages from DM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d973f1eccf91ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод StopOffer класса ara::diag::SovdProximityChallenge деактивирует пересылку сообщений запроса из Diagnostic Management (DM) этому экземпляру службы ([SWS_DM_01495]). Интерфейс предоставляется через заголовочный файл ara/diag/sovd_proximity_challenge.h.
Использование и контекст выполнения
Функция вызывается синхронно, не принимает входных параметров и не возвращает значения ([SWS_DM_01495]). После выполнения DM прекращает пересылку дальнейших запросов на проверку близости (proximity challenge) приложению.
Обработка ошибок и безопасность исключений
Метод объявлен как noexcept и является полностью исключеннобезопасным (exception safe) ([SWS_DM_01495]). Состояния ошибок или специфические коды ошибок для этого вызова не предусмотрены.
Параллелизм и жизненный цикл
Что касается выполнения, StopOffer явно специфицирован как не потокобезопасный (not thread-safe) ([SWS_DM_01495]). Параллельные вызовы на одном и том же экземпляре должны синхронизироваться на стороне вызывающего кода. Интерпретация: вызов, как правило, должен происходить при завершении работы компонента или при временной приостановке проверки proximity challenge. Вопрос Q-7b8910a8d5f6dc05 (открытый)
This function validates the proximity response sent by the client.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0179eb4520d7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Чисто виртуальный метод ara::diag::SovdProximityChallenge::ValidateResponse служит для валидации переданного клиентом ответа близости [SWS_DM_01493]. Экземпляр Diagnostic Server вызывает данный метод, как только тело SOVD-запроса содержит атрибут proximity_response[SWS_DM_01395], как, например, при запросах на завершение выполнения операции [SWS_DM_01391]. Передаются диапазон байтов proximityResponse, а также объект контекста metaInfo[SWS_DM_01493]. Последний позволяет приложению при необходимости выполнять проверки, специфичные для клиента или операции SWS Diagnostics с. 215. Результат валидации предоставляется асинхронно через ara::core::Future<ProximityChallengeValidationResultType>[SWS_DM_01493].
Интерфейс объявлен как noexcept и исключениебезопасный (exception safe) [SWS_DM_01493]. Стандартизированные коды ошибок не заданы [SWS_DM_01493]. Интерпретация: сбой валидации близости, вероятно, отображается через возвращаемый тип ProximityChallengeValidationResultType или канал ошибок объекта Future. Вопрос Q-1be6378537b59f2b (открытый)
Что касается параллелизма, потокобезопасность является условной (conditional): то, должна ли реализация быть потокобезопасной, управляется через ConcurrencyType, заданный в конструкторе [SWS_DM_01493]. Переданные данные в буфере proximityResponse остаются действительными до тех пор, пока не будет выполнено соответствующее Promise или обработка не будет отменена через CancellationHandler [SWS_DM_01493].
Функция взаимодействует с предоставлением челленджа через GetChallenge[SWS_DM_01398]. Только после успешной валидации ответа близости сервер выполняет запрошенные действия, такие как завершение операции через Terminate на SovdOperationExecution[SWS_DM_02179].
Это указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал