namespace ara::sm::s2r
Guia do utilizadorGERADO POR IA
Coordena a entrada e a saída do estado de Suspend-to-RAM para aplicações adaptativas.
Coordena a entrada e a saída do estado de Suspend-to-RAM para aplicações adaptativas.
O namespace ara::sm::s2r coordena o mecanismo de Suspend-to-RAM para otimização dos tempos de desligamento e inicialização na AUTOSAR Adaptive Platform (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Por meio do componente central S2RHub e de instâncias S2RSatellite registradas, os processos compatíveis com S2R são notificados antes da entrada no estado de suspensão do sistema operacional e reconduzidos à operação regular ao despertar. Como restrição essencial, o uso por meio da abordagem interna de StateMachine exclui estritamente o acesso via API C++, enquanto verificações de IAM protegem todos os contextos de processo envolvidos ([SWS_SM_00684]).
Contexto
O namespace ara::sm::s2r disponibiliza funcionalidades para a coordenação de Suspend-to-RAM (S2R) dentro do módulo State Management. O objetivo desse mecanismo é a otimização dos tempos de desligamento e inicialização da máquina, utilizando um estado de suspensão do sistema operacional baseado em RAM em vez de um desligamento completo e inicialização a frio (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). Antes da transição para o estado de suspensão do sistema operacional, entidades funcionais sem suporte a S2R devem ser desativadas e processos cujo executável esteja marcado como suspendToRamAware devem ser notificados a tempo (SWS StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»).
O ponto central de articulação é formado pela classe S2RHub, que controla a comunicação com instâncias da classe abstrata S2RSatellite (SWS StateManagement §7.5.1 «S2R Hub»). A orquestração do S2RHub pode ocorrer internamente pela abordagem de StateMachine do State Management ou externamente por meio de uma API C++ (por exemplo, em uma SMControlApplication); ambas as abordagens excluem-se mutuamente de forma estrita ([SWS_SM_00684], SWS StateManagement p. 96). Os acessos ao hub e o registro de satélites são protegidos por Identity and Access Management (IAM) ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).
Diagrama de contexto: interação entre State Management, S2RHub, S2RSatellite e IAM. Fontes: SWS StateManagement §7.5.1 «S2R Hub», [SWS_SM_00684], [SWS_SM_00715].
Ciclo de vida
A instanciação de ara::sm::s2r::S2RHub ocorre dependendo da abordagem de arquitetura: no modo StateMachine, a instância é criada automaticamente pelo State Management assim que os elementos de lista de ações EnterSuspendToRam, EnterSuspendToRamOS ou LeaveSuspendToRam forem finalizados ([SWS_SM_00690]). Ao chamar o construtor ara::sm::s2r::S2RHub::S2RHub, é verificado via IAM se o contexto de processo atual coincide com a configuração SuspendToRamHubMapping.process ([SWS_SM_00706]). Apenas processos autorizados podem realizar a instanciação ([SWS_SM_00714]).
Os satélites são inicializados por meio do método de fábrica ara::sm::s2r::S2RSatellite::Create ([SWS_SM_00716]). Como S2RSatellite é uma classe abstrata, presume-se que uma derivação específica da aplicação seja implementada para fornecer as reações concretas (interpretação). Pergunta Q-e4747345883235e0 (aberta) O registro no hub ocorre ativamente por meio da chamada de ara::sm::s2r::S2RSatellite::Offer ([SWS_SM_00710]). O hub valida o contexto de processo do satélite com base em SuspendToRamSatelliteMapping.process ([SWS_SM_00715]). Um satélite permanece no estado de registro ativo até cancelar seu registro por meio de ara::sm::s2r::S2RSatellite::StopOffer ([SWS_SM_00710], [SWS_SM_00713]).
Em relação ao ciclo de vida de máquinas de estados, aplica-se a restrição de que os estados responsáveis pelo estado de suspensão não devem ser configurados com o elemento da lista de ações LeaveSuspendToRam ([SWS_SM_CONSTR_00035]). Esse elemento é reservado exclusivamente para a fase de retorno durante o despertar (SWS StateManagement p. 98).
Caminho de utilização
O uso típico do namespace divide-se em registro, preparação do estado de repouso, suspensão do sistema operacional e posterior despertar:
- Registro: A aplicação compatível com S2R cria o seu satélite e chama
ara::sm::s2r::S2RSatellite::Offerpara se registrar no hub ([SWS_SM_00710]). Supõe-se que a notificação entre o hub e os satélites ocorra por meio de comunicação entre processos interna da plataforma (interpretação). Pergunta (aberta) - Solicitar suspensão: O nível de controle chama
ara::sm::s2r::S2RHub::RequestToEnterSuspendMode([SWS_SM_00701]). Na abordagemStateMachine, isso é disparado pelo elementoEnterSuspendToRam, sendo o seu valor de configuraçãomaxActionItemDurationtransmitido como parâmetro de timeout ([SWS_SM_00689]). - Notificar satélites: O hub endereça todos os satélites registrados e instrui a execução do callback
ara::sm::s2r::S2RSatellite::EnterSuspendMode([SWS_SM_00701], [SWS_SM_00711]).RequestToEnterSuspendModeretorna assim que todos os satélites tiverem reagido, cancelado o registro ou ocorrido um timeout ([SWS_SM_00702]). - Suspender sistema operacional: Por meio da chamada de
ara::sm::s2r::S2RHub::EnterSuspendToRamOs(ou através do elemento da lista de açõesEnterSuspendToRamOs), o estado de repouso propriamente dito do sistema operacional é iniciado ([SWS_SM_00692]). - Coordenar despertar: Após o reinício,
ara::sm::s2r::S2RHub::RequestToLeaveSuspendModeé chamado ([SWS_SM_00703], [SWS_SM_00691]). O hub instrui os satélites a executar o callbackara::sm::s2r::S2RSatellite::LeaveSuspendMode([SWS_SM_00703], [SWS_SM_00711]). - Cancelamento de registro: Caso um processo não deseje mais participar, ele cancela seu registro por meio de
ara::sm::s2r::S2RSatellite::StopOffer([SWS_SM_00710], [SWS_SM_00713]).
Diagrama de sequência: Ordem de chamadas para preparação e conclusão de Suspend-to-RAM. Fontes: [SWS_SM_00701], [SWS_SM_00702], [SWS_SM_00703], [SWS_SM_00707], [SWS_SM_00710], [SWS_SM_00711].
Cenários de erro
Na interação das classes ocorrem condições de erro específicas:
- Violação de IAM na criação do hub: Se o contexto de processo na chamada do construtor não coincidir com
SuspendToRamHubMapping.process, a violaçãoInsufficientPermissionsViolationé disparada e o evento de segurançaSEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED</a>é reportado ([SWS_SM_00706]). - Rejeição de satélites não autenticados: Se o contexto de
S2RSatellitedivergir do processo registrado emSuspendToRamSatelliteMapping, o hub rejeita o registro ([SWS_SM_00715]). - Requisito de autenticação no satélite: Caso a configuração Force IAM switch esteja ativada,
ara::sm::s2r::S2RSatellite::Createfalha com o código de errokAuthenticationRequired([SWS_SM_00716]). - Timeout de comunicação: Se um satélite endereçado não responder dentro do prazo
timeoutdurante a fase de suspensão ou de despertar, a operação retorna o código de errokCommunicationTimeout([SWS_SM_00707]). - Problemas ao sair do modo de suspensão: Se pelo menos um satélite responder negativamente com
kRejectedà solicitação para sair do modo de suspensão,RequestToLeaveSuspendModeconfirma o resultado geral comkAtLeastOneHadIssuesToLeave([SWS_SM_00707]). - Uso concorrente de API: O uso simultâneo da API C++ de
S2RHubparalelamente à abordagem internaStateMachineé proibido e leva a inconsistências ([SWS_SM_00684]).
Este guia baseia-se na especificação AUTOSAR_AP_SWS_StateManagement (Release R25-11).
Não há dados de elementos para esta versão
Classes
S2RHub class.
S2RSatellite abstract class.
Diagrama de classes
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-low· 2026-10-13 · Original em alemão