Disponibiliza domínio de erros e códigos de erro para o controle de estados do sistema e fluxos de Suspend-to-RAM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 83e4718c6e9fProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Disponibiliza domínio de erros e códigos de erro para o controle de estados do sistema e fluxos de Suspend-to-RAM.
O namespace ara::sm fornece o tratamento de erros específico de domínio e estruturas de coordenação para o State Management no AUTOSAR Adaptive (AUTOSAR_AP_SWS_StateManagement §7.5 p. 34). Ele define através de SmErrc, SmErrorDomain e MakeErrorCode mecanismos padronizados para o registro de erros de comunicação, timeouts e rejeições em transições de estado sincronizadas como Suspend-to-RAM ([SWS_SM_81240], [SWS_SM_81244]). Uma restrição determinante é a exclusão mútua entre o controle automatizado por máquina de estados e o acesso direto via API a instâncias de coordenação ([SWS_SM_00684]).
Contexto
O namespace ara::sm constitui a interface fundamental para o gerenciamento de estados (State Management) da AUTOSAR Adaptive Platform e fornece tipos para o tratamento de erros, bem como para o controle de configurações de estado em toda a máquina. Além do domínio de erros central SmErrorDomain e do respectivo tipo de exceção SmException, o módulo compreende mecanismos funcionais para a sincronização de estados do sistema, em especial no âmbito da funcionalidade Suspend-to-RAM conforme AUTOSAR_AP_SWS_StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality» p. 34. Entre os parceiros de interação determinantes encontram-se aplicações de controle, como a SMControlApplication, o controlador interno StateMachine do daemon de State Management, bem como processos conectados via satélites (AUTOSAR_AP_SWS_StateManagement §7.5.1 «S2R Hub» p. 35).
A arquitetura separa estritamente entre autômatos de estado declarativos e controle programático: se o sistema segue a abordagem StateMachine, a instância de controle integra a coordenação internamente, de modo que o acesso direto à C++-API de S2RHub é impedido para aplicações externas ([SWS_SM_00684]; AUTOSAR_AP_SWS_StateManagement §7.7.15 p. 96). Interações relevantes para a segurança estão adicionalmente sujeitas a verificações do Identity and Access Management (IAM), a fim de garantir que apenas processos autorizados possam efetuar registros ou solicitar alterações de estado ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).
O uso típico do namespace divide-se no registro de processos do lado da aplicação, no disparo de transições coordenadas e na avaliação dos códigos de erro resultantes. Para processos que dispõem de capacidades de Suspend-to-RAM, o ciclo inicia-se com a disponibilização de sua interface via Offer ([SWS_SM_00710]). Antes da transição do sistema operacional para o estado de suspensão, a instância de controle envia por meio de RequestToEnterSuspendMode uma solicitação a todos os satélites registrados, em resposta à qual o callback EnterSuspendMode deles é disparado ([SWS_SM_00701], [SWS_SM_00711]).
A função coordenadora bloqueia ou monitora a transição até que todos os satélites envolvidos tenham respondido ou tenham sido desregistrados ([SWS_SM_00702]). Ao despertar, ocorre de forma análoga a chamada de RequestToLeaveSuspendMode, a qual restaura a operação normal via LeaveSuspendMode ([SWS_SM_00703], [SWS_SM_00711]). Se ocorrerem interrupções na comunicação ou nas mudanças de estado, o módulo recorre à função livre MakeErrorCode ([SWS_SM_81244]) para gerar instâncias específicas de ara::core::ErrorCode com base na enumeração SmErrc e disponibilizá-las à aplicação chamadora.
O tratamento de erros em ara::sm é estritamente tipificado e baseia-se na enumeração SmErrc ([SWS_SM_81240]). Entre os códigos de erro definidos estão:
kOfferFailed: Não foi possível oferecer o serviço porque a comunicação com o daemon de State Management falhou ([SWS_SM_81240]).
kCommunicationFailed: Erro nas camadas de transporte inferiores durante a comunicação com satélites ([SWS_SM_81240]).
kCommunicationTimeout: Um satélite endereçado excedeu o tempo de resposta especificado ([SWS_SM_81240], [SWS_SM_00707]).
kAtLeastOneRejected: Ao menos um satélite não conseguiu assumir o estado de Suspend de forma adequada ([SWS_SM_81240]).
kAtLeastOneHadIssuesToLeave: Ao menos um satélite reportou kRejected ao sair do modo de Suspend ([SWS_SM_81240], [SWS_SM_00707]).
kAuthenticationRequired: A autenticação IAM é forçada e exige uma verificação de identidade explícita do satélite ([SWS_SM_81240], [SWS_SM_00716]).
A disponibilização do domínio de erros global via GetSmDomain ([SWS_SM_81251]) e a geração de códigos de erro via MakeErrorCode ([SWS_SM_81244]) são declaradas como noexcept e garantem segurança contra exceções e thread-safety. Interpretação: o lançamento de uma SmException deve encontrar aplicação primariamente quando os chamadores desejarem converter códigos de erro de SmErrorDomain em fluxos de controle baseados em exceções, enquanto interfaces funcionais retornam regularmente ara::core::ErrorCode em caso de erro. Pergunta Q-5afcc13f11bdf19b (aberta)
Este guia baseia-se na especificação 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.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9557f5fb3cd6Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
A função auxiliar MakeErrorCode serve, de acordo com [SWS_SM_81244] no namespace ara::sm, para a criação de um objeto ara::core::ErrorCode para o State Management. A função está declarada no arquivo de cabeçalho #include "ara/sm/sm_error_domain.h" e possui o status de documentação DRAFT (AUTOSAR_AP_SWS_StateManagement §8.1.2.1.2 «MakeErrorCode»).
Para a criação, a função síncrona recebe dois parâmetros de entrada:
code: o código de erro específico do tipo SmErrc como número do erro.
data: dados adicionais específicos do fabricante (tipo ara::core::ErrorDomain::SupportDataType) associados ao erro.
Como valor de retorno, a função devolve um objeto ara::core::ErrorCode completo ([SWS_SM_81244]). Devido à designação como constexpr, a avaliação já pode ocorrer em tempo de compilação, e a palavra-chave noexcept garante que nenhuma exceção seja disparada durante a execução.
Em termos de concorrência e confiabilidade, a função está especificada como thread-safe e exception safe ([SWS_SM_81244]). Ela pode, portanto, ser utilizada a partir de quaisquer contextos concorrentes de chamada sem sincronização adicional.
Este texto foi gerado por uma IA e serve como guia de orientação com base na especificação.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão