Предоставляет домен ошибок и коды ошибок для управления состояниями системы и процессами Suspend-to-RAM.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 83e4718c6e9fПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет домен ошибок и коды ошибок для управления состояниями системы и процессами Suspend-to-RAM.
Пространство имен ara::sm предоставляет доменно-специфичную обработку ошибок и структуры координации для State Management в AUTOSAR Adaptive (AUTOSAR_AP_SWS_StateManagement §7.5 с. 34). Через SmErrc, SmErrorDomain и MakeErrorCode оно определяет стандартизированные механизмы фиксации коммуникационных ошибок, таймаутов и отказов при синхронизированных переходах между состояниями, таких как Suspend-to-RAM ([SWS_SM_81240], [SWS_SM_81244]). Важным граничным условием является взаимное исключение между автоматизированным управлением конечным автоматом состояний и прямым API-доступом к экземплярам координации ([SWS_SM_00684]).
Контекст
Пространство имен ara::sm формирует фундаментальный интерфейс для управления состояниями (State Management) в AUTOSAR Adaptive Platform и предоставляет типы для обработки ошибок, а также для управления общемашинными конфигурациями состояний. Помимо центрального домена ошибок SmErrorDomain и соответствующего типа исключения SmException, модуль содержит функциональные механизмы для синхронизации состояний системы, в частности в рамках функциональности Suspend-to-RAM согласно AUTOSAR_AP_SWS_StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality» с. 34. К ключевым партнерам по взаимодействию относятся управляющие приложения, такие как SMControlApplication, внутренний контроллер StateMachine демона State Management, а также процессы, подключенные через сателлиты (AUTOSAR_AP_SWS_StateManagement §7.5.1 «S2R Hub» с. 35).
Архитектура строго разграничивает декларативные автоматы состояний и программное управление: если система следует подходу StateMachine, управляющий экземпляр интегрирует координацию внутри себя, так что внешним приложениям закрыт прямой доступ к C++-API компонента S2RHub ([SWS_SM_00684]; AUTOSAR_AP_SWS_StateManagement §7.7.15 с. 96). Кроме того, важные с точки зрения безопасности взаимодействия подлежат проверкам со стороны Identity and Access Management (IAM), гарантирующим, что только авторизованные процессы имеют право выполнять регистрацию или запрашивать изменения состояний ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).
Типичное использование пространства имен делится на регистрацию прикладных процессов, инициирование скоординированных переходов и анализ результирующих кодов ошибок. Для процессов, обладающих возможностями Suspend-to-RAM, цикл начинается с предоставления их интерфейса через Offer ([SWS_SM_00710]). Перед переходом операционной системы в состояние покоя управляющий экземпляр с помощью RequestToEnterSuspendMode отправляет запрос всем зарегистрированным сателлитам, после чего срабатывает их обратный вызов EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00711]).
Координирующая функция блокирует или отслеживает переход до тех пор, пока все задействованные сателлиты не ответят либо не будут разрегистрированы ([SWS_SM_00702]). При пробуждении аналогично выполняется вызов RequestToLeaveSuspendMode, восстанавливающий штатный режим работы через LeaveSuspendMode ([SWS_SM_00703], [SWS_SM_00711]). Если при коммуникации или сменах состояний происходят сбои, модуль обращается к свободной функции MakeErrorCode ([SWS_SM_81244]), чтобы создать специфические экземпляры ara::core::ErrorCode на базе перечисления SmErrc и предоставить их вызывающему приложению.
kAtLeastOneRejected: как минимум один сателлит не смог должным образом перейти в состояние Suspend ([SWS_SM_81240]).
kAtLeastOneHadIssuesToLeave: как минимум один сателлит сообщил при выходе из режима Suspend kRejected ([SWS_SM_81240], [SWS_SM_00707]).
kAuthenticationRequired: аутентификация IAM принудительно активирована и требует явной проверки подлинности сателлита ([SWS_SM_81240], [SWS_SM_00716]).
Предоставление глобального домена ошибок через GetSmDomain ([SWS_SM_81251]) и формирование кодов ошибок через MakeErrorCode ([SWS_SM_81244]) объявлены как noexcept и гарантируют безопасность относительно исключений и потокобезопасность. Интерпретация: генерация исключения SmException, предположительно, находит применение прежде всего тогда, когда вызывающие компоненты хотят перевести коды ошибок из SmErrorDomain в потоки управления на основе исключений, тогда как функциональные интерфейсы в случае сбоя штатно возвращают ara::core::ErrorCode. Вопрос Q-5afcc13f11bdf19b (открытый)
Данное руководство основано на спецификации AUTOSAR Adaptive R25-11.
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9557f5fb3cd6Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Вспомогательная функция MakeErrorCode согласно [SWS_SM_81244] служит в пространстве имен ara::sm для создания объекта ara::core::ErrorCode для State Management. Функция объявлена в заголовочном файле #include "ara/sm/sm_error_domain.h" и имеет статус документации DRAFT (AUTOSAR_AP_SWS_StateManagement §8.1.2.1.2 «MakeErrorCode»).
Для создания синхронная функция принимает два входных параметра:
code: конкретный код ошибки типа SmErrc в качестве номера ошибки.
data: специфичные для производителя дополнительные данные (тип ara::core::ErrorDomain::SupportDataType), связанные с ошибкой.
В качестве возвращаемого значения функция возвращает полный объект ara::core::ErrorCode ([SWS_SM_81244]). Благодаря маркировке constexpr вычисление может выполняться уже во время компиляции, а ключевое слово noexcept гарантирует, что при выполнении исключения не генерируются.
С точки зрения параллелизма и надежности функция специфицирована как thread-safe, а также exception safe ([SWS_SM_81244]). Таким образом, ее можно использовать без дополнительной синхронизации из любых параллельных контекстов вызова.
Этот текст сгенерирован ИИ и служит ориентиром на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал