Coordina las notificaciones de Suspend-to-RAM para satélites e inicia el estado de reposo del sistema operativo.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: c63fb68c31f7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Coordina las notificaciones de Suspend-to-RAM para satélites e inicia el estado de reposo del sistema operativo.
En State Management, la clase ara::sm::s2r::S2RHub coordina la entrada y salida del estado Suspend-to-RAM para aplicaciones satélite registradas (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 «Interfaces for Suspend-to-Ram Notifications»). Permite que una aplicación de control solicite la preparación de los satélites antes de poner el sistema operativo en estado de reposo y que los devuelva a la operación normal tras el despertar ([SWS_SM_00701], [SWS_SM_81112]). El uso de la API de C++ excluye estrictamente el enfoque interno de StateMachine y requiere permisos de IAM verificados ([SWS_SM_00684], [SWS_SM_00706]).
Contexto
La clase ara::sm::s2r::S2RHub constituye la interfaz central de State Management para coordinar transiciones de Suspend-to-RAM en la Adaptive Platform (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 «Interfaces for Suspend-to-Ram Notifications»). Para optimizar temporalmente el apagado y el arranque de la máquina, se puede utilizar un Suspend-to-RAM en lugar de un reinicio completo del sistema (AUTOSAR_AP_SWS_StateManagement §7.5 «Interaction with Suspend-to-RAM Functionality»). La tarea principal del hub consiste en dirigirse a todas las instancias de satélite registradas activamente (ara::sm::s2r::S2RSatellite) para iniciar una preparación ordenada antes de poner el sistema operativo en estado de suspensión y coordinar la reanudación del funcionamiento tras el despertar ([SWS_SM_00701], [SWS_SM_00703]).
Una instancia de ara::sm::s2r::S2RHub se crea explícitamente a través de un ara::core::InstanceSpecifier ([SWS_SM_81103]). Durante la construcción se realiza una comprobación obligatoria de permisos de IAM, en la cual el contexto del proceso invocador se valida frente al mapeo del modelo (SuspendToRamHubMapping.process) ([SWS_SM_00706], [SWS_SM_00714]). Las operaciones de copia están completamente impedidas para la clase ([SWS_SM_81107], [SWS_SM_81109]). Sin embargo, la clase admite semántica de movimiento mediante constructor de movimiento y operador de asignación por movimiento ([SWS_SM_81106], [SWS_SM_81108]).
En lo relativo a la concurrencia, el constructor parametrizado y las operaciones de movimiento están especificados como seguros para subprocesos ([SWS_SM_81103], [SWS_SM_81106], [SWS_SM_81108]). Por el contrario, el destructor virtual ~S2RHub() y los métodos operativos para la coordinación de la suspensión no son seguros para subprocesos ([SWS_SM_81105], [SWS_SM_81110], [SWS_SM_81111], [SWS_SM_81112]). Por lo tanto, los invocadores deben asegurarse de que la destrucción y la ejecución de las transiciones se lleven a cabo de forma secuencial y sin llamadas concurrentes.
Ruta de uso
La secuencia regular para el inicio y la finalización del Suspend-to-RAM se divide en tres fases sucesivas:
Preparación del estado de suspensión: antes de suspender el sistema operativo, deben detenerse los grupos de funciones con procesos no compatibles (AUTOSAR_AP_SWS_StateManagement §7.5). A continuación, la aplicación de control llama a RequestToEnterSuspendMode() en el hub ([SWS_SM_81110]). El hub notifica a todos los satélites registrados a través de Offer mediante EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00710], [SWS_SM_00711]). El método devuelve un ara::core::Future<void> que solo se completa en cuanto todos los satélites direccionados han respondido, se han cancelado su registro o han alcanzado un tiempo de espera ([SWS_SM_00702], [SWS_SM_81110]).
Activación de la suspensión del sistema: tras la confirmación satisfactoria de todos los satélites, el invocador dispara el sistema operativo a través de la función síncrona EnterSuspendToRamOs() para poner la máquina en el modo Suspend-to-RAM ([SWS_SM_81112]).
Reanudación tras el despertar: en cuanto el sistema operativo vuelve a despertar, la aplicación de control inicia la reanudación del funcionamiento regular a través de RequestToLeaveSuspendMode() ([SWS_SM_81111]). El hub solicita a todos los satélites activos, a través de su función de retrollamada, que abandonen el modo de suspensión ([SWS_SM_00703], [SWS_SM_00711]). El future devuelto se resuelve positivamente cuando todos los satélites confirman positivamente o cancelan su registro mediante StopOffer ([SWS_SM_00707], [SWS_SM_81111]).
Las condiciones de error se señalan en S2RHub en función de la fase mediante violaciones de arquitectura o mediante códigos de error en el ara::core::Future:
Errores de construcción y violaciones: si la comprobación de permisos del proceso invocador falla, se desencadenan la violación InsufficientPermissionsViolation así como el evento de seguridad SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED ([SWS_SM_00706], [SWS_SM_81103]). Otras violaciones definidas incluyen InstanceSpecifierMappingIntegrityViolation (invalidez del identificador del modelo), PortInterfaceMappingViolation (tipo de interfaz incompatible), ProcessMappingViolation (asignación de proceso faltante), InstanceSpecifierAlreadyInUseViolation (uso múltiple en el mismo proceso) y AraNotInitializedViolation (falta de inicialización de la Adaptive Platform) ([SWS_SM_81103]).
Errores al entrar en el estado de suspensión: si la comunicación en las capas inferiores falla, el future de RequestToEnterSuspendMode() falla con SmErrc::kCommunicationFailed ([SWS_SM_81110]). Si al menos un satélite no responde dentro de la ventana de tiempo configurable (por defecto: 1000 ms), esto da como resultado SmErrc::kCommunicationTimeout ([SWS_SM_81110]). Ambos errores poseen semántica de reversión. Si al menos un satélite notifica el rechazo de la transición, el future devuelve el error SmErrc::kAtLeastOneRejected sin semántica de reversión ([SWS_SM_81110]).
Errores al salir del estado de suspensión: de forma análoga, los problemas de comunicación o los tiempos de espera agotados en RequestToLeaveSuspendMode() dan lugar a SmErrc::kCommunicationFailed o bien a SmErrc::kCommunicationTimeout ([SWS_SM_00707], [SWS_SM_81111]). Si un satélite responde con kRejected, el future notifica el código de error SmErrc::kAtLeastOneHadIssuesToLeave ([SWS_SM_00707], [SWS_SM_81111]).
Registro de satélite rechazado: los intentos de registro de satélites son rechazados por el hub si su contexto de proceso no coincide con la configuración del modelo ([SWS_SM_00715]).
Esta guía se basa en las especificaciones de AUTOSAR Adaptive Platform Release R25-11 y resume los requisitos para la clase S2RHub.
El método posee la firma void EnterSuspendToRamOs() noexcept;, no acepta parámetros y no devuelve ningún valor ([SWS_SM_81112]). Por lo general, no lo invocan directamente las aplicaciones de usuario, sino que lo ejecuta State Management tan pronto como se activa un elemento de acción correspondiente EnterSuspendToRamOs dentro de una ActionList ([SWS_SM_00692]). El requisito previo para ello es una instancia creada previamente de ara::sm::s2r::S2RHub ([SWS_SM_00690]).
En lo relativo a la concurrencia y las condiciones de contorno, se aplica lo siguiente:
Seguridad para subprocesos: la función está catalogada explícitamente como no segura para subprocesos (not-threadsafe) ([SWS_SM_81112]). Deben evitarse las llamadas concurrentes sobre la misma instancia.
Tratamiento de errores: la operación está especificada como noexcept y exception safe ([SWS_SM_81112]); no se devuelven códigos de error ni se lanzan excepciones.
Orden y contexto de ejecución: dentro de ActionLists, los elementos de acción se inician secuencialmente en el orden configurado ([SWS_SM_00609]). Antes de la suspensión del sistema operativo mediante EnterSuspendToRamOs, las acciones previas (como EnterSuspendToRam) transfieren las aplicaciones compatibles con S2R al modo de espera (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»). No está prevista la presencia múltiple de EnterSuspendToRamOs dentro del mismo estado de suspensión de un controlador, ya que una repetición no aporta ninguna utilidad funcional y puede provocar conflictos (AUTOSAR_AP_SWS_StateManagement §7.7 «Trigger EnterSuspendState»).
Este texto ha sido elaborado por una IA y se basa exclusivamente en las especificaciones del release R25-11.
Function to Request all S2R Satellite to enter suspend state.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 90177316c9e3Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función RequestToEnterSuspendMode de la clase ara::sm::s2r::S2RHub solicita a todos los satélites registrados activamente que pasen al modo de suspensión [SWS_SM_81110]. En State Management, la ejecución es desencadenada típicamente por un EnterSuspendToRam ActionListItem, pasando la configuración maxActionItemDuration como valor para el parámetro timeout[SWS_SM_00689].
Uso y semántica: tras la llamada, el concentrador envía un mensaje a todas las instancias de S2R Satellite registradas, lo que desencadena su devolución de llamada ara::sm::s2r::S2RSatellite::EnterSuspendMode[SWS_SM_00701]. La función acepta el parámetro entero timeout en milisegundos (valor predeterminado: 1000 ms) y devuelve un ara::core::Future<void>[SWS_SM_81110]. La operación regresa tan pronto como todos los satélites direccionados hayan respondido, se hayan dado de baja o se haya producido un tiempo de espera agotado [SWS_SM_00702]. Una desregistración mediante StopOffer se considera una respuesta exitosa [SWS_SM_00702].
Tratamiento de errores: el resultado global es positivo si todos los satélites dan su conformidad o se desregistran [SWS_SM_00702]. Si la comunicación en las capas inferiores falla, se devuelve el error SmErrc::kCommunicationFailed con semántica de reversión (rollback) [SWS_SM_00702][SWS_SM_81110]. Si al menos un satélite no responde a tiempo, esto da como resultado el error SmErrc::kCommunicationTimeout con semántica de reversión [SWS_SM_00702][SWS_SM_81110]. Si un satélite responde con kRejected, la función devuelve SmErrc::kAtLeastOneRejected sin semántica de reversión [SWS_SM_00702][SWS_SM_81110].
Concurrencia: el método está declarado como noexcept y es seguro frente a excepciones (exception safe), pero no seguro para subprocesos (not-threadsafe) [SWS_SM_81110].
Esta nota de uso se generó automáticamente a partir de la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 374258ce3ad7Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método RequestToLeaveSuspendMode de la clase ara::sm::s2r::S2RHub coordina la reactivación de aplicaciones tras un estado de Suspend-to-RAM. De acuerdo con [SWS_SM_00703], la función envía un mensaje a todas las instancias registradas activamente de S2R Satellite para invocar allí LeaveSuspendMode. En State Management, la llamada se ejecuta automáticamente cuando se dispara el ActionListItem LeaveSuspendToRam ([SWS_SM_00691]).
Mediante el parámetro timeout (valor predeterminado 1000) se define la duración de supervisión para las respuestas de los satélites ([SWS_SM_81111]). La función devuelve un ara::core::Future<void>, el cual está disponible tan pronto como todos los satélites direccionados hayan respondido, se hayan dado de baja o hayan incurrido en un tiempo de espera agotado ([SWS_SM_00707]). El resultado global se considera exitoso si todos los satélites confirman positivamente o se desregistran de forma regular mediante StopOffer.
Manejo de errores
Si se produce un error durante la ejecución, el futuro proporciona los códigos de error correspondientes de SmErrc ([SWS_SM_81111]):
SmErrc::kCommunicationTimeout: al menos un satélite no ha respondido a tiempo dentro del plazo de espera ([SWS_SM_00707]).
SmErrc::kCommunicationFailed: se ha producido un error de transmisión interno en capas de comunicación inferiores ([SWS_SM_00707]).
SmErrc::kAtLeastOneHadIssuesToLeave: al menos un satélite ha respondido negativamente a la solicitud con kRejected ([SWS_SM_00707]).
Concurrencia y restricciones
La interfaz está especificada como noexcept (exception safe), pero clasificada como not-threadsafe ([SWS_SM_81111]). De acuerdo con la restricción de diseño [SWS_SM_CONSTR_00035], el ActionListItem LeaveSuspendToRam desencadenante no debe asignarse a estados de suspensión, sino que está previsto exclusivamente para estados del controlador que gestionan la finalización del modo Suspend-to-RAM (SWS StateManagement §7.7 «ActionListItem»).
Esta nota de uso se ha generado automáticamente a partir de la especificación de 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 en alemán