Coordonne les notifications de Suspend-to-RAM pour les satellites et initie l'état de veille du système d'exploitation.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : c63fb68c31f7ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Coordonne les notifications de Suspend-to-RAM pour les satellites et initie l'état de veille du système d'exploitation.
Dans State Management, la classe ara::sm::s2r::S2RHub coordonne l'entrée et la sortie de l'état Suspend-to-RAM pour les applications satellites enregistrées (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 « Interfaces for Suspend-to-Ram Notifications »). Elle permet à une application de commande de demander la préparation des satellites avant de faire passer le système d'exploitation en veille, puis de les ramener en fonctionnement normal après le réveil ([SWS_SM_00701], [SWS_SM_81112]). L'utilisation de l'API C++ exclut strictement l'approche interne StateMachine et nécessite des droits IAM vérifiés ([SWS_SM_00684], [SWS_SM_00706]).
Contexte
La classe ara::sm::s2r::S2RHub constitue l'interface centrale de State Management pour la coordination des transitions Suspend-to-RAM sur l'Adaptive Platform (AUTOSAR_AP_EXP_SWArchitecture §9.2.2.1.4 « Interfaces for Suspend-to-Ram Notifications »). Afin d'optimiser la durée d'arrêt et de démarrage de la machine, un Suspend-to-RAM peut être utilisé à la place d'un redémarrage complet du système (AUTOSAR_AP_SWS_StateManagement §7.5 « Interaction with Suspend-to-RAM Functionality »). La tâche principale du hub consiste à solliciter toutes les instances satellites activement enregistrées (ara::sm::s2r::S2RSatellite) afin d'initier une préparation ordonnée avant de faire passer le système d'exploitation à l'état suspend, puis de coordonner la reprise du fonctionnement après le réveil ([SWS_SM_00701], [SWS_SM_00703]).
Une instance de ara::sm::s2r::S2RHub est explicitement créée via un ara::core::InstanceSpecifier ([SWS_SM_81103]). Lors de la construction, un contrôle obligatoire des autorisations IAM a lieu, durant lequel le contexte du processus appelant est validé par rapport au mappage de modèle (SuspendToRamHubMapping.process) ([SWS_SM_00706], [SWS_SM_00714]). Les opérations de copie sont totalement interdites pour la classe ([SWS_SM_81107], [SWS_SM_81109]). La classe prend toutefois en charge la sémantique de déplacement via un constructeur de déplacement et un opérateur d'affectation par déplacement ([SWS_SM_81106], [SWS_SM_81108]).
En matière de concurrence, le constructeur paramétré ainsi que les opérations de déplacement sont spécifiés comme étant sûrs pour les threads (thread-safe) ([SWS_SM_81103], [SWS_SM_81106], [SWS_SM_81108]). Le destructeur virtuel ~S2RHub() ainsi que les méthodes opérationnelles de coordination de la mise en veille ne sont en revanche pas sûrs pour les threads ([SWS_SM_81105], [SWS_SM_81110], [SWS_SM_81111], [SWS_SM_81112]). Les appelants doivent par conséquent s'assurer que la destruction et l'exécution des transitions se déroulent de manière séquentielle et sans appels concurrents.
Parcours d'utilisation
Le déroulement standard pour initier et terminer le Suspend-to-RAM s'articule en trois phases successives :
Préparation de l'état suspend : avant de suspendre le système d'exploitation, les groupes de fonctions comportant des processus non compatibles doivent être arrêtés (AUTOSAR_AP_SWS_StateManagement §7.5). L'application de commande appelle ensuite RequestToEnterSuspendMode() sur le hub ([SWS_SM_81110]). Le hub notifie tous les satellites enregistrés via Offer au moyen de EnterSuspendMode ([SWS_SM_00701], [SWS_SM_00710], [SWS_SM_00711]). La méthode renvoie un ara::core::Future<void>, qui ne se termine que lorsque tous les satellites adressés ont répondu, se sont désinscrits ou ont atteint un délai d'expiration (timeout) ([SWS_SM_00702], [SWS_SM_81110]).
Déclenchement du suspend système : après confirmation positive de tous les satellites, l'appelant déclenche le système d'exploitation via la fonction synchrone EnterSuspendToRamOs() afin de basculer la machine en mode Suspend-to-RAM ([SWS_SM_81112]).
Reprise après le réveil (wake-up) : dès que le système d'exploitation se réveille, l'application de commande initie la reprise du fonctionnement normal via RequestToLeaveSuspendMode() ([SWS_SM_81111]). Le hub invite tous les satellites actifs, via leur fonction de rappel, à quitter le mode suspend ([SWS_SM_00703], [SWS_SM_00711]). Le future renvoyé est résolu positivement lorsque tous les satellites acquittent positivement ou se désinscrivent via StopOffer ([SWS_SM_00707], [SWS_SM_81111]).
Selon la phase, les conditions d'erreur sont signalées dans S2RHub via des violations d'architecture ou via des codes d'erreur dans ara::core::Future :
Erreurs de construction et violations : si la vérification des autorisations du processus appelant échoue, la violation InsufficientPermissionsViolation ainsi que l'événement de sécurité SEV_ACCESS_CONTROL_SM_IAM_ACCESS_DENIED sont déclenchés ([SWS_SM_00706], [SWS_SM_81103]). Les autres violations définies comprennent InstanceSpecifierMappingIntegrityViolation (invalidité de l'identifiant de modèle), PortInterfaceMappingViolation (type d'interface incompatible), ProcessMappingViolation (affectation de processus manquante), InstanceSpecifierAlreadyInUseViolation (utilisation multiple dans le même processus) et AraNotInitializedViolation (initialisation manquante de l'Adaptive Platform) ([SWS_SM_81103]).
Erreurs lors de l'entrée dans l'état suspend : si la communication échoue sur les couches inférieures, le future de RequestToEnterSuspendMode() échoue avec SmErrc::kCommunicationFailed ([SWS_SM_81110]). Si au moins un satellite ne répond pas dans la fenêtre temporelle configurable (par défaut : 1000 ms), cela se traduit par SmErrc::kCommunicationTimeout ([SWS_SM_81110]). Les deux erreurs possèdent une sémantique de retour arrière (rollback). Si au moins un satellite signale le refus de la transition, le future fournit l'erreur SmErrc::kAtLeastOneRejected sans sémantique de retour arrière ([SWS_SM_81110]).
Erreurs lors de la sortie de l'état suspend : de manière analogue, des problèmes de communication ou des timeouts au niveau de RequestToLeaveSuspendMode() entraînent respectivement SmErrc::kCommunicationFailed ou SmErrc::kCommunicationTimeout ([SWS_SM_00707], [SWS_SM_81111]). Si un satellite répond avec kRejected, le future signale le code d'erreur SmErrc::kAtLeastOneHadIssuesToLeave ([SWS_SM_00707], [SWS_SM_81111]).
Enregistrement de satellite rejeté : les tentatives d'enregistrement de satellites sont rejetées par le hub si le contexte de leur processus ne correspond pas à la configuration du modèle ([SWS_SM_00715]).
Ce guide se base sur les spécifications de l'AUTOSAR Adaptive Platform Release R25-11 et résume les exigences applicables à la classe S2RHub.
La méthode possède la signature void EnterSuspendToRamOs() noexcept;, ne prend aucun paramètre et ne renvoie aucune valeur ([SWS_SM_81112]). Typiquement, elle n'est pas appelée directement par les applications utilisateur, mais exécutée par State Management dès qu'un élément d'action EnterSuspendToRamOs correspondant est déclenché au sein d'une ActionList ([SWS_SM_00692]). La condition préalable en est une instance préalablement créée de ara::sm::s2r::S2RHub ([SWS_SM_00690]).
En ce qui concerne la concurrence et les conditions aux limites :
Sécurité des threads : la fonction est explicitement classée comme non thread-safe (not-threadsafe) ([SWS_SM_81112]). Les appels concurrents sur la même instance doivent être évités.
Gestion des erreurs : l'opération est spécifiée comme noexcept et exception safe ([SWS_SM_81112]) ; aucun code d'erreur n'est renvoyé et aucune exception n'est levée.
Ordre et contexte d'exécution : au sein de ActionLists, les éléments d'action sont lancés de manière séquentielle dans l'ordre configuré ([SWS_SM_00609]). Avant la mise en suspension du système d'exploitation via EnterSuspendToRamOs, des actions préalables (telles que EnterSuspendToRam) font passer les applications compatibles S2R en mode veille (AUTOSAR_AP_SWS_StateManagement §7.7 « Trigger EnterSuspendState »). La présence multiple de EnterSuspendToRamOs au sein d'un même état de suspension d'un contrôleur n'est pas prévue, car une répétition n'apporte aucun bénéfice fonctionnel et peut entraîner des conflits (AUTOSAR_AP_SWS_StateManagement §7.7 « Trigger EnterSuspendState »).
Ce texte a été généré par une IA et repose exclusivement sur les spécifications de la version R25-11.
Function to Request all S2R Satellite to enter suspend state.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 90177316c9e3Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction RequestToEnterSuspendMode de la classe ara::sm::s2r::S2RHub demande à tous les satellites activement enregistrés de passer en mode suspendu [SWS_SM_81110]. L'exécution est typiquement déclenchée dans State Management par un EnterSuspendToRam ActionListItem, la configuration maxActionItemDuration étant transmise comme valeur pour le paramètre timeout[SWS_SM_00689].
Utilisation et sémantique : après l'appel, le concentrateur envoie un message à toutes les instances S2R Satellite enregistrées, ce qui déclenche leur rappel ara::sm::s2r::S2RSatellite::EnterSuspendMode[SWS_SM_00701]. La fonction accepte le paramètre entier timeout en millisecondes (valeur par défaut : 1000 ms) et renvoie un ara::core::Future<void>[SWS_SM_81110]. L'opération retourne dès que tous les satellites ciblés ont répondu, se sont désenregistrés ou qu'un délai d'attente est survenu [SWS_SM_00702]. Un désenregistrement via StopOffer est considéré comme un retour positif [SWS_SM_00702].
Gestion des erreurs : le résultat global est positif si tous les satellites donnent leur accord ou se désenregistrent [SWS_SM_00702]. Si la communication sur les couches inférieures échoue, l'erreur SmErrc::kCommunicationFailed est renvoyée avec une sémantique de retour arrière (rollback) [SWS_SM_00702][SWS_SM_81110]. Si au moins un satellite ne répond pas à temps, cela entraîne l'erreur SmErrc::kCommunicationTimeout avec une sémantique de retour arrière [SWS_SM_00702][SWS_SM_81110]. Si un satellite répond par kRejected, la fonction fournit SmErrc::kAtLeastOneRejected sans sémantique de retour arrière [SWS_SM_00702][SWS_SM_81110].
Concurrence : la méthode est déclarée comme noexcept et sûre vis-à-vis des exceptions (exception safe), mais n'est pas thread-safe (not-threadsafe) [SWS_SM_81110].
Cette note d'utilisation a été générée automatiquement sur la base de la spécification 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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 374258ce3ad7Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode RequestToLeaveSuspendMode de la classe ara::sm::s2r::S2RHub coordonne le réveil des applications après un état Suspend-to-RAM. Conformément à [SWS_SM_00703], la fonction envoie un message à toutes les instances de S2R Satellite activement enregistrées afin d'y appeler LeaveSuspendMode. Dans State Management, l'appel est automatiquement exécuté lorsque l'ActionListItem LeaveSuspendToRam est déclenché ([SWS_SM_00691]).
Le paramètre timeout (valeur par défaut 1000) définit la durée de surveillance des retours des satellites ([SWS_SM_81111]). La fonction renvoie un ara::core::Future<void>, qui est disponible dès que tous les satellites adressés ont répondu, ont été désenregistrés ou ont rencontré un délai d'attente ([SWS_SM_00707]). Le résultat global est considéré comme un succès si tous les satellites confirment positivement ou se désenregistrent de façon régulière via StopOffer.
Gestion des erreurs
Si une erreur survient lors de l'exécution, le future met à disposition les codes d'erreur correspondants issus de SmErrc ([SWS_SM_81111]) :
SmErrc::kCommunicationTimeout : au moins un satellite n'a pas répondu à temps dans les limites du délai imparti ([SWS_SM_00707]).
SmErrc::kCommunicationFailed : une erreur de transmission interne est survenue sur les couches de communication inférieures ([SWS_SM_00707]).
SmErrc::kAtLeastOneHadIssuesToLeave : au moins un satellite a répondu négativement à la demande par kRejected ([SWS_SM_00707]).
Concurrence et restrictions
L'interface est spécifiée comme noexcept (exception safe), mais classée comme not-threadsafe ([SWS_SM_81111]). Conformément à la contrainte de conception [SWS_SM_CONSTR_00035], l'ActionListItem LeaveSuspendToRam déclencheur ne doit pas être associé à des états de suspension, mais est exclusivement réservé aux états du contrôleur qui pilotent la fin du mode Suspend-to-RAM (SWS StateManagement §7.7 « ActionListItem »).
Cette note d'utilisation a été générée automatiquement sur la base de la spécification d'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 allemand