Coordena notificações de Suspend-to-RAM para satélites e inicia o estado de suspensão do sistema operacional.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: c63fb68c31f7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Coordena notificações de Suspend-to-RAM para satélites e inicia o estado de suspensão do sistema operacional.
No State Management, a classe ara::sm::s2r::S2RHub coordena a entrada e a saída do estado Suspend-to-RAM para aplicações satélite registradas (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 «Interfaces for Suspend-to-Ram Notifications»). Ela permite que uma aplicação de controle solicite a preparação dos satélites antes de colocar o sistema operacional em estado de suspensão e os retorne à operação normal após o despertar ([SWS_SM_00701], [SWS_SM_81112]). O uso da API C++ exclui estritamente a abordagem interna de StateMachine e exige permissões de IAM verificadas ([SWS_SM_00684], [SWS_SM_00706]).
Contexto
A classe ara::sm::s2r::S2RHub constitui a interface central do State Management para a coordenação de transições de Suspend-to-RAM na Adaptive Platform (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 «Interfaces for Suspend-to-Ram Notifications»). Para otimizar o tempo de desligamento e inicialização da máquina, pode-se utilizar um Suspend-to-RAM em vez de uma reinicialização completa do sistema (AUTOSAR_AP_SWS_StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). A tarefa primária do hub consiste em acionar todas as instâncias satélite ativamente registradas (ara::sm::s2r::S2RSatellite) para iniciar uma preparação ordenada antes de colocar o sistema operacional no estado de suspensão e coordenar a retomada da operação após o despertar ([SWS_SM_00701], [SWS_SM_00703]).
Uma instância de ara::sm::s2r::S2RHub é criada explicitamente por meio de um ara::core::InstanceSpecifier ([SWS_SM_81103]). Durante a construção, ocorre uma verificação mandatória de permissão de IAM, na qual o contexto do processo chamador é validado em relação ao mapeamento do modelo (SuspendToRamHubMapping.process) ([SWS_SM_00706], [SWS_SM_00714]). Operações de cópia estão completamente desabilitadas para a classe ([SWS_SM_81107], [SWS_SM_81109]). No entanto, a classe suporta semântica de movimento via construtor de movimento e operador de atribuição por movimento ([SWS_SM_81106], [SWS_SM_81108]).
Em termos de concorrência, o construtor parametrizado e as operações de movimento são especificados como thread-safe ([SWS_SM_81103], [SWS_SM_81106], [SWS_SM_81108]). Por outro lado, o destrutor virtual ~S2RHub() e os métodos operacionais para coordenação de suspensão não são thread-safe ([SWS_SM_81105], [SWS_SM_81110], [SWS_SM_81111], [SWS_SM_81112]). Os chamadores devem, portanto, assegurar que a destruição e a execução das transições ocorram sequencialmente e sem chamadas concorrentes.
Caminho de utilização
O fluxo regular para o início e o término do Suspend-to-RAM divide-se em três fases sucessivas:
Preparação do estado de suspensão: Antes de suspender o sistema operacional, os grupos de funções com processos não suportados devem ser encerrados (AUTOSAR_AP_SWS_StateManagement §7.5). Em seguida, a aplicação de controle chama RequestToEnterSuspendMode() no hub ([SWS_SM_81110]). O hub notifica todos os satélites registrados via Offer por meio de EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00710], [SWS_SM_00711]). O método retorna um ara::core::Future<void>, que só é concluído quando todos os satélites endereçados tiverem respondido, se desregistrado ou entrado em timeout ([SWS_SM_00702], [SWS_SM_81110]).
Disparo da suspensão do sistema: Após o retorno bem-sucedido de todos os satélites, o chamador dispara o sistema operacional por meio da função síncrona EnterSuspendToRamOs() para colocar a máquina no modo Suspend-to-RAM ([SWS_SM_81112]).
Retomada após o wake-up: Assim que o sistema operacional desperta, a aplicação de controle inicia a retomada da operação regular via RequestToLeaveSuspendMode() ([SWS_SM_81111]). O hub solicita a todos os satélites ativos, por meio de sua função de callback, que saiam do modo de suspensão ([SWS_SM_00703], [SWS_SM_00711]). O future retornado é resolvido positivamente quando todos os satélites confirmam positivamente ou se desregistram via StopOffer ([SWS_SM_00707], [SWS_SM_81111]).
Condições de erro em S2RHub são sinalizadas, dependendo da fase, por meio de violações de arquitetura ou por códigos de erro no ara::core::Future:
Erros de construção e violações: Se a verificação de permissão do processo chamador falhar, a violação InsufficientPermissionsViolation e o evento de segurança SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED são disparados ([SWS_SM_00706], [SWS_SM_81103]). Outras violações definidas incluem InstanceSpecifierMappingIntegrityViolation (invalidade do identificador do modelo), PortInterfaceMappingViolation (tipo de interface incompatível), ProcessMappingViolation (atribuição de processo ausente), InstanceSpecifierAlreadyInUseViolation (uso múltiplo no mesmo processo) e AraNotInitializedViolation (inicialização ausente da Adaptive Platform) ([SWS_SM_81103]).
Erros ao entrar no estado de suspensão: Se a comunicação em camadas inferiores falhar, o future de RequestToEnterSuspendMode() falha com SmErrc::kCommunicationFailed ([SWS_SM_81110]). Se pelo menos um satélite não responder dentro da janela de tempo configurável (padrão: 1000 ms), isso resulta em SmErrc::kCommunicationTimeout ([SWS_SM_81110]). Ambos os erros possuem semântica de rollback. Se pelo menos um satélite reportar a rejeição da transição, o future retorna o erro SmErrc::kAtLeastOneRejected sem semântica de rollback ([SWS_SM_81110]).
Erros ao sair do estado de suspensão: De forma análoga, problemas de comunicação ou timeouts em RequestToLeaveSuspendMode() levam a SmErrc::kCommunicationFailed ou SmErrc::kCommunicationTimeout, respectivamente ([SWS_SM_00707], [SWS_SM_81111]). Se um satélite responder com kRejected, o future reporta o código de erro SmErrc::kAtLeastOneHadIssuesToLeave ([SWS_SM_00707], [SWS_SM_81111]).
Registro de satélite rejeitado: Tentativas de registro de satélites são rejeitadas pelo hub caso o contexto de processo deles não corresponda à configuração do modelo ([SWS_SM_00715]).
Este guia baseia-se nas especificações da AUTOSAR Adaptive Platform Release R25-11 e resume os requisitos para a classe S2RHub.
O método possui a assinatura void EnterSuspendToRamOs() noexcept;, não recebe parâmetros e não fornece valor de retorno ([SWS_SM_81112]). Tipicamente, ele não é chamado diretamente por aplicações de usuário, mas executado pelo State Management assim que um elemento de ação correspondente EnterSuspendToRamOs for acionado dentro de uma ActionList ([SWS_SM_00692]). O pré-requisito para isso é uma instância previamente criada de ara::sm::s2r::S2RHub ([SWS_SM_00690]).
Em relação à concorrência e às condições de contorno, aplica-se o seguinte:
Segurança para threads: A função está explicitamente classificada como não segura para threads (not-threadsafe) ([SWS_SM_81112]). Chamadas concorrentes na mesma instância devem ser evitadas.
Tratamento de erros: A operação está especificada como noexcept e exception safe ([SWS_SM_81112]); nenhum código de erro é retornado nem exceções são lançadas.
Ordem e contexto de execução: Dentro de ActionLists, os elementos de ação são iniciados sequencialmente na ordem configurada ([SWS_SM_00609]). Antes da suspensão do sistema operacional via EnterSuspendToRamOs, ações antecedentes (como EnterSuspendToRam) transferem as aplicações compatíveis com S2R para o modo de prontidão (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»). A ocorrência múltipla de EnterSuspendToRamOs dentro do mesmo estado de suspend de um controlador não está prevista, uma vez que uma repetição não traz benefício funcional e pode levar a conflitos (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»).
Este texto foi criado por uma IA e baseia-se exclusivamente nas especificações do Release R25-11.
Function to Request all S2R Satellite to enter suspend state.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 90177316c9e3Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função RequestToEnterSuspendMode da classe ara::sm::s2r::S2RHub solicita a todos os satélites registrados ativamente que mudem para o modo suspend [SWS_SM_81110]. No State Management, a execução é tipicamente disparada por um EnterSuspendToRam ActionListItem, sendo que a configuração maxActionItemDuration é passada como valor para o parâmetro timeout[SWS_SM_00689].
Uso e semântica: Após a chamada, o hub envia uma mensagem para todas as instâncias registradas de S2R Satellite, o que dispara seu callback ara::sm::s2r::S2RSatellite::EnterSuspendMode[SWS_SM_00701]. A função aceita o parâmetro inteiro timeout em milissegundos (valor padrão: 1000 ms) e retorna um ara::core::Future<void>[SWS_SM_81110]. A operação retorna assim que todos os satélites endereçados tiverem respondido, tiverem cancelado o registro ou tiver ocorrido um timeout [SWS_SM_00702]. Um cancelamento de registro por meio de StopOffer é considerado como uma resposta bem-sucedida [SWS_SM_00702].
Tratamento de erros: O resultado global é positivo se todos os satélites concordarem ou cancelarem o registro [SWS_SM_00702]. Se a comunicação falhar nas camadas inferiores, o erro SmErrc::kCommunicationFailed com semântica de rollback é retornado [SWS_SM_00702][SWS_SM_81110]. Se pelo menos um satélite não responder a tempo, isso resulta no erro SmErrc::kCommunicationTimeout com semântica de rollback [SWS_SM_00702][SWS_SM_81110]. Se um satélite reagir com kRejected, a função fornece SmErrc::kAtLeastOneRejected sem semântica de rollback [SWS_SM_00702][SWS_SM_81110].
Concorrência: O método está declarado como noexcept e é seguro contra exceções (exception safe), mas não é seguro para threads (not-threadsafe) [SWS_SM_81110].
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R25-11.
ara::core::Future< void > RequestToLeaveSuspendMode (int timeout=1000) noexcept; DIRECTION NOT timeout -- DEFINED
Function to request all registered S2R Satellite to leave suspend state.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 374258ce3ad7Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método RequestToLeaveSuspendMode da classe ara::sm::s2r::S2RHub coordena o despertar de aplicações após um estado de Suspend-to-RAM. De acordo com [SWS_SM_00703], a função envia uma mensagem para todas as instâncias de S2R Satellite ativamente registradas a fim de chamar nelas LeaveSuspendMode. No State Management, a chamada é executada automaticamente quando o ActionListItem LeaveSuspendToRam é disparado ([SWS_SM_00691]).
Por meio do parâmetro timeout (valor padrão 1000), define-se a duração do monitoramento para as respostas dos satélites ([SWS_SM_81111]). A função retorna um ara::core::Future<void>, que estará pronto assim que todos os satélites endereçados tiverem respondido, tiverem cancelado o registro ou tiver ocorrido um timeout ([SWS_SM_00707]). O resultado geral é considerado bem-sucedido se todos os satélites confirmarem positivamente ou cancelarem o registro regularmente através de StopOffer.
Tratamento de erros
Se ocorrer um erro durante a execução, o future disponibilizará os códigos de erro correspondentes de SmErrc ([SWS_SM_81111]):
SmErrc::kCommunicationTimeout: Pelo menos um satélite não respondeu a tempo dentro do timeout ([SWS_SM_00707]).
SmErrc::kCommunicationFailed: Ocorreu um erro interno de transmissão em camadas de comunicação inferiores ([SWS_SM_00707]).
SmErrc::kAtLeastOneHadIssuesToLeave: Pelo menos um satélite respondeu à solicitação negativamente com kRejected ([SWS_SM_00707]).
Simultaneidade e restrições
A interface está especificada como noexcept (exception safe), mas classificada como not-threadsafe ([SWS_SM_81111]). De acordo com a restrição de design [SWS_SM_CONSTR_00035], o ActionListItem desencadeador LeaveSuspendToRam não deve ser atribuído a estados de suspend, destinando-se exclusivamente a estados do controlador que gerenciam o encerramento do modo Suspend-to-RAM (SWS StateManagement §7.7 «ActionListItem»).
Esta nota de utilização foi gerada automaticamente com base na especificação da AUTOSAR R25-11.
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 · Original em alemão