Proporciona el dominio de errores y los códigos de error para el control de estados del sistema y flujos de Suspend-to-RAM.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 83e4718c6e9fProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Proporciona el dominio de errores y los códigos de error para el control de estados del sistema y flujos de Suspend-to-RAM.
El namespace ara::sm proporciona el tratamiento de errores específico del dominio y las estructuras de coordinación para State Management en AUTOSAR Adaptive (AUTOSAR_AP_SWS_StateManagement §7.5 p. 34). Define a través de SmErrc, SmErrorDomain y MakeErrorCode mecanismos estandarizados para registrar errores de comunicación, tiempos de espera agotados (timeouts) y rechazos en transiciones de estado sincronizadas como Suspend-to-RAM ([SWS_SM_81240], [SWS_SM_81244]). Una condición de contorno fundamental es la exclusión mutua entre el control automatizado de la máquina de estados y el acceso directo por API a las instancias de coordinación ([SWS_SM_00684]).
Contexto
El namespace ara::sm constituye la interfaz fundamental para la gestión de estados (State Management) de la AUTOSAR Adaptive Platform y proporciona tipos para el tratamiento de errores, así como para el control de configuraciones de estado en toda la máquina. Además del dominio de errores central SmErrorDomain y del tipo de excepción correspondiente SmException, el módulo incluye mecanismos funcionales para sincronizar estados del sistema, especialmente en el marco de la funcionalidad Suspend-to-RAM según AUTOSAR_AP_SWS_StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality» p. 34. Entre los interlocutores clave se encuentran aplicaciones de control como la SMControlApplication, el controlador interno StateMachine del demonio de State Management, así como procesos conectados mediante satélites (AUTOSAR_AP_SWS_StateManagement §7.5.1 «S2R Hub» p. 35).
La arquitectura distingue estrictamente entre autómatas de estado declarativos y control programático: si el sistema sigue el enfoque StateMachine, la instancia de control integra la coordinación internamente, de modo que a las aplicaciones externas se les deniega el acceso directo a la API de C++ del S2RHub ([SWS_SM_00684]; AUTOSAR_AP_SWS_StateManagement §7.7.15 p. 96). Las interacciones relevantes para la seguridad están sujetas además a comprobaciones de Identity and Access Management (IAM) para garantizar que solo los procesos autorizados puedan realizar registros o solicitar cambios de estado ([SWS_SM_00706], [SWS_SM_00714], [SWS_SM_00715]).
El uso típico del namespace se divide en el registro de procesos del lado de la aplicación, el desencadenamiento de transiciones coordinadas y la evaluación de los códigos de error resultantes. Para los procesos que disponen de capacidades de Suspend-to-RAM, el ciclo comienza con la puesta a disposición de su interfaz a través de Offer ([SWS_SM_00710]). Antes de la transición del sistema operativo al estado de reposo, la instancia de control envía mediante RequestToEnterSuspendMode una solicitud a todos los satélites registrados, tras lo cual se desencadena su callback EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00711]).
La función coordinadora bloquea o supervisa la transición hasta que todos los satélites involucrados hayan respondido o hayan cancelado su registro ([SWS_SM_00702]). Al despertar, de manera análoga se produce la llamada de RequestToLeaveSuspendMode, la cual restablece el funcionamiento normal a través de LeaveSuspendMode ([SWS_SM_00703], [SWS_SM_00711]). Si se producen interrupciones en la comunicación o en los cambios de estado, el módulo recurre a la función libre MakeErrorCode ([SWS_SM_81244]) para crear instancias específicas de ara::core::ErrorCode sobre la base de la enumeración SmErrc y ponerlas a disposición de la aplicación invocadora.
El tratamiento de errores en ara::sm está estrictamente tipado y se basa en la enumeración SmErrc ([SWS_SM_81240]). Entre los códigos de error definidos se encuentran:
kOfferFailed: el servicio no se pudo ofrecer debido a que falló la comunicación con el demonio de State Management ([SWS_SM_81240]).
kCommunicationFailed: error en las capas de transporte inferiores durante la comunicación con los satélites ([SWS_SM_81240]).
kCommunicationTimeout: un satélite interpelado ha superado el tiempo de respuesta predefinido ([SWS_SM_81240], [SWS_SM_00707]).
kAtLeastOneRejected: al menos un satélite no pudo adoptar debidamente el estado de suspensión ([SWS_SM_81240]).
kAtLeastOneHadIssuesToLeave: al menos un satélite notificó kRejected al salir del modo de suspensión ([SWS_SM_81240], [SWS_SM_00707]).
kAuthenticationRequired: se fuerza la autenticación IAM y se exige una verificación explícita de la identidad del satélite ([SWS_SM_81240], [SWS_SM_00716]).
La puesta a disposición del dominio de errores global a través de GetSmDomain ([SWS_SM_81251]) y la generación de códigos de error mediante MakeErrorCode ([SWS_SM_81244]) están declaradas como noexcept y garantizan la seguridad frente a excepciones y entre hilos. Interpretación: el lanzamiento de una SmException probablemente tenga aplicación principalmente cuando los invocadores deseen transferir códigos de error de la SmErrorDomain a flujos de control basados en excepciones, mientras que las interfaces funcionales devuelven regularmente ara::core::ErrorCode en caso de error. Pregunta Q-5afcc13f11bdf19b (abierta)
Esta guía se basa en la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9557f5fb3cd6Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función auxiliar MakeErrorCode sirve, de acuerdo con [SWS_SM_81244], en el espacio de nombres ara::sm para crear un objeto ara::core::ErrorCode para State Management. La función está declarada en el archivo de cabecera #include "ara/sm/sm_error_domain.h" y posee el estado de documentación DRAFT (AUTOSAR_AP_SWS_StateManagement §8.1.2.1.2 «MakeErrorCode»).
Para su creación, la función síncrona acepta dos parámetros de entrada:
code: el código de error específico de tipo SmErrc como número de error.
data: datos adicionales específicos del fabricante (tipo ara::core::ErrorDomain::SupportDataType) que están asociados al error.
Como valor de retorno, la función devuelve un objeto ara::core::ErrorCode completo ([SWS_SM_81244]). Gracias a la designación como constexpr, la evaluación puede llevarse a cabo ya en tiempo de compilación, y la palabra clave noexcept garantiza que no se lancen excepciones durante la ejecución.
En cuanto a la concurrencia y la fiabilidad, la función está especificada como thread-safe y exception safe ([SWS_SM_81244]). Por lo tanto, puede utilizarse sin sincronización adicional desde cualquier contexto de llamada concurrente.
Este texto ha sido generado por una IA y sirve como guía orientativa basada en la especificación.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán