Позволяет осуществлять мониторинг активных диагностических каналов, а также контроль диагностического сеанса и уровня безопасности.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1824b6dbecd2ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет осуществлять мониторинг активных диагностических каналов, а также контроль диагностического сеанса и уровня безопасности.
Класс ara::diag::Conversation представляет собой диагностический канал связи для мониторинга статуса активности, диагностического сеанса и уровня безопасности, а также для сброса к стандартному сеансу [SWS_DM_00692][SWS_DM_00701]. Приложения получают экземпляры исключительно в виде ссылок через статические функции поиска, поскольку собственная инстанциация, а также операции копирования и перемещения удалены [SWS_DM_02090]. В то время как операции чтения статуса могут выполняться потокобезопасно, регистрация функций обратного вызова и сброс сеанса требуют внешней синхронизации.
Контекст
Класс ara::diag::Conversation представляет интерфейс к каналу связи между внешним диагностическим тестером и Adaptive Platform SWS Diagnostics §8.2 «Conversation». Он служит связующим звеном между приложением и внутренним Diagnostic Management (DM) для отслеживания текущих диагностических активностей и управления ими. Через его экземпляры адаптивные приложения получают доступ к информации о текущем состоянии соединения [SWS_DM_00694], активном диагностическом сеансе [SWS_DM_00696], уровне безопасности [SWS_DM_00698], а также идентификационных признаках канала [SWS_DM_00700].
Экземпляры ara::diag::Conversation полностью создаются и управляются демоном Diagnostic Management Daemon. Ручное создание, копирование или перемещение приложением исключено: как конструктор копирования [SWS_DM_02090] и конструктор перемещения [SWS_DM_02092], так и операторы присваивания [SWS_DM_02091][SWS_DM_02093] удалены (=delete). Время жизни указываемых объектов, предположительно, напрямую связано с состоянием среды выполнения диагностической подсистемы. Вопрос Q-f8deca481d5b76e1 (открытый)
Доступ к существующим экземплярам осуществляется исключительно через статические функции запроса. С помощью GetAllConversations() можно получить ссылки на все сконфигурированные соединения [SWS_DM_00782], в то время как GetCurrentActiveConversations() возвращает список всех текущих активных каналов, статус активности которых соответствует kActive[SWS_DM_00783]. Кроме того, с помощью GetConversation(metaInfo) можно разрешить конкретное соединение на основе метаданных текущего диагностического запроса [SWS_DM_00692].
Что касается многопоточности, все операции чтения статуса и идентификаторов специфицированы как потокобезопасные [SWS_DM_00694][SWS_DM_00696][SWS_DM_00698]. Регистрация callback-функций уведомлений, а также сброс сеанса, напротив, считаются непотокобезопасными (not thread-safe) [SWS_DM_00695][SWS_DM_00701] и требуют синхронизации на стороне приложения.
Путь использования
Типичный сценарий использования включает определение соединения, регистрацию функций уведомления, а также целенаправленный мониторинг состояния сеанса или манипулирование им:
Получение ссылки: при поступлении диагностического запроса соответствующий экземпляр получается с помощью GetConversation(metaInfo)[SWS_DM_00692].
Запрос статуса: текущее состояние можно определить синхронно с помощью GetDiagnosticSession()[SWS_DM_00696] или GetDiagnosticSecurityLevel()[SWS_DM_00698]. С помощью GetDiagnosticSessionShortName()[SWS_DM_00707] и GetDiagnosticSecurityLevelShortName()[SWS_DM_00708] перечисления можно преобразовать в читаемые короткие обозначения.
Сброс сеанса: если логика требует прерывания или возврата в исходное состояние, ResetToDefaultSession() переводит канал обратно в стандартный сеанс [SWS_DM_00701].
Методы ara::diag::Conversation сигнализируют об ошибках через ara::core::Result. Если базовая функциональность Diagnostic Management временно недоступна, вызовы GetConversation(), GetActivityStatus(), GetDiagnosticSession(), GetDiagnosticSecurityLevel() и GetConversationIdentifier() завершаются сбоем с кодом ошибки DiagErrc::kServiceNotAvailable[SWS_DM_00692][SWS_DM_00694][SWS_DM_00696][SWS_DM_00698][SWS_DM_00700]. При этом вызовы следуют семантике отката и остаются без побочных эффектов.
В функциях строкового преобразования GetDiagnosticSessionShortName()[SWS_DM_00707] и GetDiagnosticSecurityLevelShortName()[SWS_DM_00708] передача неизвестного или недействительного значения перечисления приводит к ошибке DiagErrc::kInvalidArgument. Для методов регистрации уведомителей, а также для ResetToDefaultSession() стандартизированные коды ошибок в спецификации не определены [SWS_DM_00701].
Настоящее руководство основано исключительно на спецификации AUTOSAR Adaptive R25-11.
Register a notifier function which is called if the activity is changed. A consecutive call of this method will overwrite the previous registered notifier.
Register a notifier function which is called if the Session is changed. A consecutive call of this method will overwrite the previous registered notifier.
Register a notifier function which is called if the SecurityLevel is changed. A consecutive call of this method will overwrite the previous registered notifier.
Represents the current active diagnostic SecurityLevel of an active conversation.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a38bce94acc6ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод GetDiagnosticSecurityLevel класса ara::diag::Conversation служит для синхронного определения текущего активного уровня безопасности диагностического сеанса связи (AUTOSAR_AP_SWS_Diagnostics §8.9.3.2.2.6 «GetDiagnosticSecurityLevel», [SWS_DM_00698]). Он предоставляется через заголовочный файл #include "ara/diag/conversation.h", не принимает входных параметров и объявлен со спецификатором noexcept.
В качестве возвращаемого типа функция предоставляет ara::core::Result<SecurityLevelType>. В случае успеха этот объект непосредственно содержит значение перечисления текущего состояния безопасности активного соединения [SWS_DM_00698].
Обработка ошибок и параллелизм
Если запрос завершается сбоем, метод возвращает ara::core::Result с кодом ошибки DiagErrc::kServiceNotAvailable[SWS_DM_00698]. Это сигнализирует с применением семантики отката, что существенные функции Diagnostic Management (DM) недоступны в момент вызова. С точки зрения безопасности выполнения GetDiagnosticSecurityLevel классифицирован как потокобезопасный (thread-safe), а также исключительно безопасный (exception-safe) [SWS_DM_00698] и тем самым допускает параллельные вызовы из различных потоков.
Взаимодействие
Интерпретация: вызов обычно может выполняться перед выполнением защищенных диагностических действий, чтобы сопоставить наличие требуемого уровня полномочий. Вопрос Q-8c056d4c5199524d (открытый) Для дальнейшей обработки или диагностического вывода определенный SecurityLevelType может быть преобразован с помощью метода GetDiagnosticSecurityLevelShortName (AUTOSAR_AP_SWS_Diagnostics §8.9.3.2.2.7 «GetDiagnosticSecurityLevelShortName», [SWS_DM_00708]) в соответствующее символическое короткое имя (shortName как ara::core::StringView).
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Converts the given diagnostic SecurityLevel into the ShortName.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 384b6d7f7a21ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод ara::diag::Conversation::GetDiagnosticSecurityLevelShortName из заголовочного файла ara/diag/conversation.h преобразует переданный уровень безопасности типа SecurityLevelType в идентификатор сконфигурированного короткого имени (DiagnosticSecurityLevel.shortName) [SWS_DM_00708]. Вызов возвращает результат в виде ara::core::Result<ara::core::StringView>.
Обработка ошибок
В случае ошибки функция возвращает код ошибки DiagErrc::kInvalidArgument[SWS_DM_00708]. При этом экземпляр Diagnostic Server валидирует значение параметра на основе двух условий:
Если в качестве аргумента securityLevel передается заблокированное состояние kLocked, Diagnostic Server обязательно должен вернуть kInvalidArgument[SWS_DM_01259].
Если переданное значение не соответствует ни одной сконфигурированной записи после вычисления ((DiagnosticSecurityAccess.requestSeedId + 1) / 2) в DiagnosticContributionSet, вызов также завершается ошибкой с kInvalidArgument[SWS_DM_01260].
Параллелизм и ограничения
Метод объявлен как noexcept, а также специфицирован как исключительно безопасный (exception safe) и потокобезопасный (thread-safe) [SWS_DM_00708]. Благодаря специфицированной потокобезопасности вызов должен быть безопасным даже при параллельных диагностических действиях без синхронизации мьютексами со стороны приложения. Вопрос Q-b851a473c2d836b7 (открытый) Перед обращением к ссылаемой строке приложение должно проверить, содержит ли ara::core::Result ошибку.
Этот указание по использованию было создано автоматически. Все подтверждающие ссылки взяты из спецификаций платформы AUTOSAR Adaptive для релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Method to reset the current session to default session.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 040cba85c191ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ara::diag::Conversation::ResetToDefaultSession позволяет Adaptive Application явно сбросить диагностическую сессию взаимодействия в стандартный сеанс (Default Session) [SWS_DM_00701].
Использование
Вызов выполняется без параметров на экземпляре ara::diag::Conversation через заголовочный файл #include "ara/diag/conversation.h"[SWS_DM_00701]. При вызове метода экземпляр Diagnostic Server сначала завершает текущий запрос и только после этого переключает диагностический сеанс сессии взаимодействия в Default Session [SWS_DM_00842].
Обработка ошибок и параллелизм
Возвращаемое значение и ошибки: функция возвращает ara::core::Result<void>[SWS_DM_00701]. Стандартизированные коды ошибок не заданы; интерпретация: возможные ошибки в Result, вероятно, отражают специфичные для поставщика проблемы при обработке задачи сервером Diagnostic Server. Вопрос Q-9f780f4ef7991bf4 (открытый)
Потокобезопасность: функция является безопасной к исключениям (noexcept), но специфицирована как непотокобезопасная (not thread-safe) [SWS_DM_00701]. Поэтому параллельные вызовы на одном и том же объекте сессии взаимодействия должны координироваться вызывающим приложением.
Взаимодействие
Метод дополняет информативный характер интерфейса сессии взаимодействия целенаправленным управлением состоянием AUTOSAR_AP_SWS_Diagnostics §7 «Diagnostic Conversation Interface». Он гарантирует корректное завершение существующих диагностических запросов до того, как состояние сессии взаимодействия будет изменено [SWS_DM_00842].
Это указание по использованию было сгенерировано автоматически и основано исключительно на документах спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Register a notifier function which is called if the activity is changed. A consecutive call of this method will overwrite the previous registered notifier.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 49e9828acc72ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод ara::diag::Conversation::SetActivityNotifier служит для регистрации функции уведомления (notifier), которая вызывается каждый раз при изменении состояния активности диагностической сессии взаимодействия [SWS_DM_00695]. Объявление выполняется через заголовочный файл #include "ara/diag/conversation.h" в области видимости класса ara::diag::ConversationAUTOSAR_AP_SWS_Diagnostics §8.9.3.2.2.11 «SetActivityNotifier». Повторный или последовательный вызов для одного и того же экземпляра полностью перезаписывает ранее зарегистрированный уведомитель [SWS_DM_00695], [SWS_DM_01355].
Обработка ошибок и параллелизм
Возвращаемое значение типизировано как ara::core::Result<void> и сообщает об успехе или состоянии ошибки; однако интерфейс не специфицирует стандартизированных кодов ошибок [SWS_DM_00695]. Метод объявлен как noexcept и безопасный к исключениям (exception safe).
Что касается потокобезопасности, функция классифицирована как непотокобезопасная (not thread-safe) [SWS_DM_00695]. Если обращение к одному и тому же экземпляру сессии взаимодействия выполняется из нескольких потоков, вызов регистрации должен синхронизироваться на стороне приложения.
Взаимодействие в жизненном цикле
Экземпляры сессии взаимодействия предоставляются Diagnostic Server, при этом максимальное количество параллельных сессий взаимодействия настраивается через maxConversations[SWS_DM_00840]. Когда жизненный цикл диагностической сессии взаимодействия завершается, Diagnostic Server устанавливает состояние активности в kInactive[SWS_DM_00843]. Это, вероятно, сигнализирует зарегистрированному уведомителю об окончании активной диагностической коммуникации. Вопрос Q-93c30267eb100ed7 (открытый)
Этот текст был сгенерирован системой ИИ и прошел редакционную проверку.
Руководство разработчика реализации в подготовке (сложность I2)
Register a notifier function which is called if the Session is changed. A consecutive call of this method will overwrite the previous registered notifier.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b40c717f1178ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция SetDiagnosticSessionNotifier принадлежит классу ara::diag::Conversation и предоставляется через заголовочный файл #include "ara/diag/conversation.h"[SWS_DM_00697]. Она позволяет приложениям регистрировать функцию-уведомитель, которая срабатывает при каждой смене диагностического сеанса.
В качестве возвращаемого значения интерфейс возвращает ara::core::Result<void>, которое либо подтверждает успешную регистрацию, либо содержит объект ошибки [SWS_DM_00697]. Спецификация не определяет стандартизированных кодов ошибок для этого вызова; возникающие ошибки, следовательно, вероятно, обусловлены специфичными для реализации валидациями. Вопрос Q-1ac7eebee90e3c22 (открытый)
Параллелизм и ограничения
Потокобезопасность: метод специфицирован как непотокобезопасный (not thread-safe) [SWS_DM_00697]. Поэтому параллельные вызовы для одного и того же экземпляра сессии взаимодействия должны синхронизироваться на стороне приложения.
Безопасность исключений: функция объявлена как noexcept и считается безопасной к исключениям (exception safe) [SWS_DM_00697].
Register a notifier function which is called if the SecurityLevel is changed. A consecutive call of this method will overwrite the previous registered notifier.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f0130e1f2bdeПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод ara::diag::Conversation::SetSecurityLevelNotifier служит для регистрации функции обратного вызова, которая уведомляется, как только изменяется уровень безопасности (SecurityLevel) диагностической сессии взаимодействия [SWS_DM_00699]. Он объявляется через заголовочный файл ara/diag/conversation.hAUTOSAR_AP_SWS_Diagnostics §8.9.3.2.2.13 «SetSecurityLevelNotifier». В качестве параметра он принимает вызываемую функцию notifier. Повторный вызов метода полностью перезаписывает ранее зарегистрированную функцию-уведомитель [SWS_DM_00699].
Семантика и возвращаемое значение
Функция определена как noexcept и специфицирована как безопасная к исключениям (exception safe) [SWS_DM_00699]. В качестве возвращаемого типа она предоставляет ara::core::Result<void>, которое возвращает либо пустое значение, либо возникшую ошибку [SWS_DM_00699].
Обработка ошибок
Спецификация не определяет стандартизированных кодов ошибок для SetSecurityLevelNotifier[SWS_DM_00699]. Возможные ошибки, возвращаемые в ara::core::Result, следовательно, вероятно, обусловлены спецификой поставщика или базовой средой выполнения платформы. Вопрос Q-c8dd53e9d661cc78 (открытый)
Параллелизм и ограничения
Что касается потокобезопасности, метод явно классифицирован как not thread-safe[SWS_DM_00699]. Таким образом, параллельные обращения к одному и тому же экземпляру ara::diag::Conversation должны синхронизироваться на стороне вызывающего компонента. Кроме того, определение API в текущем состоянии документации имеет статус DRAFTAUTOSAR_AP_SWS_Diagnostics §8.9.3.2.2.13 «SetSecurityLevelNotifier».
Данное указание по использованию основано на спецификации AUTOSAR Adaptive Platform Release R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал