Координирует уведомления Suspend-to-RAM для сателлитов и инициирует переход операционной системы в спящий режим.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c63fb68c31f7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Координирует уведомления Suspend-to-RAM для сателлитов и инициирует переход операционной системы в спящий режим.
Класс ara::sm::s2r::S2RHub координирует в State Management переход в состояние Suspend-to-RAM и выход из него для зарегистрированных сателлитных приложений (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 «Interfaces for Suspend-to-Ram Notifications»). Он позволяет управляющему приложению запросить подготовку сателлитов перед переводом операционной системы в спящий режим и вернуть их в штатный режим работы после пробуждения ([SWS_SM_00701], [SWS_SM_81112]). Использование C++-API строго исключает внутренний подход StateMachine и требует верифицированных полномочий IAM ([SWS_SM_00684], [SWS_SM_00706]).
Экземпляр ara::sm::s2r::S2RHub создается явно через ara::core::InstanceSpecifier ([SWS_SM_81103]). Во время конструирования выполняется обязательная проверка полномочий IAM, при которой контекст вызывающего процесса валидируется относительно сопоставления модели (SuspendToRamHubMapping.process) ([SWS_SM_00706], [SWS_SM_00714]). Операции копирования для класса полностью запрещены ([SWS_SM_81107], [SWS_SM_81109]). Однако класс поддерживает семантику перемещения с помощью конструктора перемещения и оператора присваивания с перемещением ([SWS_SM_81106], [SWS_SM_81108]).
Что касается параллелизма, параметризованный конструктор, а также операции перемещения специфицированы как потокобезопасные ([SWS_SM_81103], [SWS_SM_81106], [SWS_SM_81108]). Виртуальный деструктор ~S2RHub(), а также оперативные методы для координации ожидания, напротив, не являются потокобезопасными ([SWS_SM_81105], [SWS_SM_81110], [SWS_SM_81111], [SWS_SM_81112]). Поэтому вызывающие стороны должны гарантировать, что уничтожение и выполнение переходов происходят последовательно и без конкурирующих вызовов.
Путь использования
Штатная последовательность инициации и завершения Suspend-to-RAM подразделяется на три последовательные фазы:
Подготовка состояния ожидания: перед приостановкой операционной системы функциональные группы с неподдерживающими процессами должны быть остановлены (AUTOSAR_AP_SWS_StateManagement §7.5). Затем управляющее приложение вызывает RequestToEnterSuspendMode() на концентраторе ([SWS_SM_81110]). Концентратор уведомляет все зарегистрированные через Offer сателлиты через EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00710], [SWS_SM_00711]). Метод возвращает ara::core::Future<void>, завершающийся только после того, как все адресованные сателлиты ответят, отменят регистрацию или истечет таймаут ([SWS_SM_00702], [SWS_SM_81110]).
Запуск System-Suspend: после успешного ответа всех сателлитов вызывающая сторона через синхронную функцию EnterSuspendToRamOs() инициирует перевод машины операционной системой в режим Suspend-to-RAM ([SWS_SM_81112]).
Возобновление работы после пробуждения: как только операционная система снова пробуждается, управляющее приложение инициирует возобновление штатной работы через RequestToLeaveSuspendMode() ([SWS_SM_81111]). Концентратор запрашивает у всех активных сателлитов через их функцию обратного вызова выход из режима ожидания ([SWS_SM_00703], [SWS_SM_00711]). Возвращенный future разрешается положительно, если все сателлиты подтверждают операцию успешно или отменяют регистрацию через StopOffer ([SWS_SM_00707], [SWS_SM_81111]).
Условия ошибок сигнализируются в S2RHub в зависимости от фазы через нарушения архитектуры (violations) или коды ошибок в ara::core::Future:
Ошибки конструирования и нарушения: если проверка полномочий вызывающего процесса завершается неудачно, генерируются нарушение InsufficientPermissionsViolation и событие безопасности SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED ([SWS_SM_00706], [SWS_SM_81103]). Другие определенные нарушения включают InstanceSpecifierMappingIntegrityViolation (недействительность идентификатора модели), PortInterfaceMappingViolation (несовместимый тип интерфейса), ProcessMappingViolation (отсутствие привязки к процессу), InstanceSpecifierAlreadyInUseViolation (многократное использование в одном и том же процессе) и AraNotInitializedViolation (отсутствие инициализации Adaptive Platform) ([SWS_SM_81103]).
Ошибки при переходе в состояние ожидания: если связь на нижних уровнях нарушается, future метода RequestToEnterSuspendMode() завершается сбоем с SmErrc::kCommunicationFailed ([SWS_SM_81110]). Если хотя бы один сателлит не отвечает в течение конфигурируемого временного интервала (по умолчанию: 1000 мс), это приводит к SmErrc::kCommunicationTimeout ([SWS_SM_81110]). Обе ошибки обладают семантикой отката. Если хотя бы один сателлит сообщает об отклонении перехода, future возвращает ошибку SmErrc::kAtLeastOneRejected без семантики отката ([SWS_SM_81110]).
Ошибки при выходе из состояния ожидания: аналогично проблемы со связью или таймауты при RequestToLeaveSuspendMode() приводят к SmErrc::kCommunicationFailed или SmErrc::kCommunicationTimeout соответственно ([SWS_SM_00707], [SWS_SM_81111]). Если сателлит отвечает с kRejected, future сообщает код ошибки SmErrc::kAtLeastOneHadIssuesToLeave ([SWS_SM_00707], [SWS_SM_81111]).
Отклоненная регистрация сателлита: попытки регистрации сателлитов отклоняются концентратором, если их контекст процесса не совпадает с конфигурацией модели ([SWS_SM_00715]).
Настоящее руководство основано на спецификациях AUTOSAR Adaptive Platform Release R25-11 и обобщает требования к классу S2RHub.
Метод имеет сигнатуру void EnterSuspendToRamOs() noexcept;, не принимает параметров и не возвращает значения ([SWS_SM_81112]). Как правило, он вызывается не напрямую пользовательскими приложениями, а выполняется State Management, как только соответствующий элемент действия EnterSuspendToRamOs триггерится внутри ActionList ([SWS_SM_00692]). Необходимым условием для этого является предварительно созданный экземпляр ara::sm::s2r::S2RHub ([SWS_SM_00690]).
В отношении параллелизма и граничных условий действует следующее:
Потокобезопасность: функция явно классифицирована как непотокобезопасная (not-threadsafe) ([SWS_SM_81112]). Следует избегать параллельных вызовов на одном и том же экземпляре.
Обработка ошибок: операция специфицирована как noexcept и exception safe ([SWS_SM_81112]); коды ошибок не возвращаются и исключения не генерируются.
Порядок и контекст выполнения: внутри ActionLists элементы действий запускаются последовательно в настроенном порядке ([SWS_SM_00609]). Перед приостановкой операционной системы через EnterSuspendToRamOs предшествующие действия (такие как EnterSuspendToRam) переводят S2R-совместимые приложения в режим готовности (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»). Многократное появление EnterSuspendToRamOs в пределах одного и того же состояния приостановки контроллера не предусмотрено, поскольку повторение не приносит функциональной пользы и может привести к конфликтам (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»).
Этот текст был создан ИИ и основан исключительно на спецификациях релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Function to Request all S2R Satellite to enter suspend state.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 90177316c9e3Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция RequestToEnterSuspendMode класса ara::sm::s2r::S2RHub запрашивает у всех активно зарегистрированных сателлитов переход в режим Suspend [SWS_SM_81110]. Выполнение в State Management обычно инициируется через EnterSuspendToRam ActionListItem, при этом конфигурация maxActionItemDuration передаётся в качестве значения параметра timeout[SWS_SM_00689].
Использование и семантика: после вызова хаб отправляет сообщение всем зарегистрированным экземплярам S2R Satellite, что инициирует их обратный вызов ara::sm::s2r::S2RSatellite::EnterSuspendMode[SWS_SM_00701]. Функция принимает целочисленный параметр timeout в миллисекундах (значение по умолчанию: 1000 мс) и возвращает ara::core::Future<void>[SWS_SM_81110]. Операция возвращает управление, как только все адресованные сателлиты ответили, отменили регистрацию или истёк таймаут [SWS_SM_00702]. Отмена регистрации через StopOffer считается успешным откликом [SWS_SM_00702].
Обработка ошибок: общий результат является положительным, если все сателлиты соглашаются или отменяют регистрацию [SWS_SM_00702]. Если коммуникация на нижележащих уровнях завершается сбоем, возвращается ошибка SmErrc::kCommunicationFailed с семантикой отката (rollback) [SWS_SM_00702][SWS_SM_81110]. Если хотя бы один сателлит не отвечает вовремя, это приводит к ошибке SmErrc::kCommunicationTimeout с семантикой отката [SWS_SM_00702][SWS_SM_81110]. Если сателлит реагирует с kRejected, функция возвращает SmErrc::kAtLeastOneRejected без семантики отката [SWS_SM_00702][SWS_SM_81110].
Параллелизм: метод объявлен как noexcept и является безопасным относительно исключений (exception safe), однако непотокобезопасным (not-threadsafe) [SWS_SM_81110].
Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
ara::core::Future< void > RequestToLeaveSuspendMode (int timeout=1000) noexcept; DIRECTION NOT timeout -- DEFINED
Function to request all registered S2R Satellite to leave suspend state.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 374258ce3ad7Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод RequestToLeaveSuspendMode класса ara::sm::s2r::S2RHub координирует пробуждение приложений после состояния Suspend-to-RAM. Согласно [SWS_SM_00703], функция отправляет сообщение всем активно зарегистрированным экземплярам S2R Satellite для вызова там LeaveSuspendMode. В State Management вызов выполняется автоматически при срабатывании ActionListItem LeaveSuspendToRam ([SWS_SM_00691]).
С помощью параметра timeout (значение по умолчанию 1000) задаётся длительность контроля откликов сателлитов ([SWS_SM_81111]). Функция возвращает ara::core::Future<void>, который становится готов, как только все адресованные сателлиты ответят, будут разрегистрированы или перейдут в состояние таймаута ([SWS_SM_00707]). Общий результат считается успешным, если все сателлиты дают положительное подтверждение или штатно отменяют регистрацию через StopOffer.
Обработка ошибок
Если при выполнении возникает ошибка, Future предоставляет соответствующие коды ошибок из SmErrc ([SWS_SM_81111]):
SmErrc::kCommunicationTimeout: по меньшей мере один сателлит не ответил вовремя в пределах таймаута ([SWS_SM_00707]).
SmErrc::kCommunicationFailed: произошла внутренняя ошибка передачи на нижних коммуникационных уровнях ([SWS_SM_00707]).
SmErrc::kAtLeastOneHadIssuesToLeave: по меньшей мере один сателлит ответил на запрос отрицательно с kRejected ([SWS_SM_00707]).
Параллелизм и ограничения
Интерфейс специфицирован как noexcept (exception safe), однако классифицирован как not-threadsafe ([SWS_SM_81111]). Согласно проектному ограничению [SWS_SM_CONSTR_00035], инициирующий ActionListItem LeaveSuspendToRam не должен назначаться состояниям приостановки (suspend), а предназначен исключительно для состояний контроллера, управляющих выходом из режима Suspend-to-RAM (SWS StateManagement §7.7 «ActionListItem»).
Данное указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
InsufficientPer- Sent in case the caller had insufficient permissions for the missionsViolation requested operation. 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- The type of mapping does not match the expected type of Port pingViolation Interface: {portInterfaceTypeName} referenced by a {mappingType Name}. 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. AraNotInitialized- Violation message that is sent in case a constructor or function Violation checks for an initialized ara and identifies that ara is not initialized.
Parameter (in)
Parameter
Beschreibung
instance
instance specifier to the PPortPrototype of a SM...
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал