Permet aux applications de fournir et d'exécuter des actions de reprise lors d'erreurs de surveillance du PHM.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 1c1f80bf2db1ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet aux applications de fournir et d'exécuter des actions de reprise lors d'erreurs de surveillance du PHM.
La classe abstraite ara::phm::RecoveryAction permet aux applications de fournir des actions de reprise spécifiques à l'application pour le Platform Health Management [SWS_PHM_01141]. Après l'instanciation, l'appel de Offer() active la disponibilité de réception pour le démon Phm, de sorte que la méthode surchargée RecoveryHandler est appelée en cas d'erreurs de surveillance détectées [SWS_PHM_01143]. Si l'erreur ne peut pas être corrigée côté application, le système déclenche une escalade en activant le watchdog. Les opérations de copie et de déplacement sont totalement interdites pour des raisons de sécurité, et les appels de gestion tels que Offer() ne sont pas thread-safe.
Contexte
La classe ara::phm::RecoveryAction est une classe de base abstraite du module Platform Health Management (PHM) de l'AUTOSAR Adaptive Platform. Elle sert d'interface standardisée pour les applications fonctionnelles afin de fournir des mesures spécifiques de reprise et de traitement d'erreurs déclenchées par le PHM lors de la détection d'erreurs de surveillance.
Parmi les principaux partenaires d'interaction figurent :
Le composant applicatif dérivé : Interprétation : celui-ci devrait typiquement se situer dans le State Management, car celui-ci est responsable des réactions coordonnées du système et est explicitement nommé dans le contexte de l'erreur. Question Q-714ff81a33aa3e92 (ouverte) L'application implémente la résolution d'erreur spécifique à l'application en surchargeant la méthode RecoveryHandler[SWS_PHM_01142].
Le démon Phm : gère l'enregistrement des actions de reprise via Offer[SWS_PHM_01143] et pilote l'appel du gestionnaire enregistré [SWS_PHM_01142] en cas d'erreurs constatées.
Le watchdog : si la reprise côté application ne peut pas être menée à bien, le PHM prend en charge la suite du traitement de l'erreur et déclenche le watchdog à des fins de sécurisation [SWS_PHM_01142].
La liaison logique avec le modèle AUTOSAR s'effectue lors de l'instanciation par l'intermédiaire d'un ara::core::InstanceSpecifier, qui doit pointer vers un PPortPrototype d'une interface PhmRecoveryAction[SWS_PHM_01141].
Cycle de vie
Une instance est créée via le constructeur explicite en transmettant le spécificateur d'instance approprié [SWS_PHM_01141]. Ce constructeur est thread-safe (thread-safe) et sécurisé vis-à-vis des exceptions (noexcept).
Étant donné qu'une RecoveryAction est liée de manière fixe à un port spécifique, les opérations de copie et de déplacement sont totalement interdites : le constructeur de copie [SWS_PHM_01150] tout comme l'opérateur d'assignation par copie [SWS_PHM_01152] sont supprimés (= delete). De même, le constructeur de déplacement [SWS_PHM_01149] et l'opérateur d'assignation par déplacement [SWS_PHM_01151] sont supprimés. La spécification justifie cela par le fait qu'un déplacement après la publication de l'instance pourrait conduire à ce que le RecoveryHandler soit appelé avant la construction complète de la classe dérivée, ce qui entraînerait un comportement indéfini ou des exceptions non gérées et compromettrait la sécurité du système [SWS_PHM_01149], [SWS_PHM_01151].
Le cycle de vie comprend deux états distincts :
Non proposé : immédiatement après la construction ainsi qu'après l'appel de StopOffer[SWS_PHM_01144], l'instance est inactive. Les appels de RecoveryHandler sont interdits.
Proposé : par l'appel de Offer()[SWS_PHM_01143], l'action est activée auprès du démon Phm et déverrouillée pour les appels de gestionnaires.
L'objet est libéré via le destructeur virtuel [SWS_PHM_01145]. En ce qui concerne la concurrence, le constructeur et le RecoveryHandler sont spécifiés comme étant thread-safe, tandis que Offer(), StopOffer() et le destructeur ne sont pas thread-safe (not thread-safe) [SWS_PHM_01141], [SWS_PHM_01142], [SWS_PHM_01143], [SWS_PHM_01144], [SWS_PHM_01145]. Interprétation : avant la destruction d'une instance, il devrait toujours être nécessaire, en pratique, d'appeler StopOffer() afin d'exclure avec certitude les appels asynchrones de gestionnaires pendant la désallocation de l'objet. Question Q-a1f47898bed925fd (ouverte)
L'utilisation typique s'articule selon une séquence d'appels définie :
Définition d'une classe dérivée qui implémente la fonction membre virtuelle pure RecoveryHandler[SWS_PHM_01142].
Instanciation de l'objet dérivé en spécifiant le spécificateur d'instance [SWS_PHM_01141].
Appel de Offer() pour mettre à disposition l'action de reprise auprès du démon Phm [SWS_PHM_01143].
Réaction aux erreurs : si le PHM détecte une erreur, il appelle RecoveryHandler(executionError, supervision)[SWS_PHM_01142]. La méthode fournit un ara::core::Future<void> par l'intermédiaire duquel le résultat du traitement d'erreur est notifié.
Appel de StopOffer() dès que l'instance ne doit plus traiter d'actions de reprise [SWS_PHM_01144].
Dans le cadre de la configuration du modèle et de l'exploitation, des conditions d'erreur spécifiques doivent être prises en compte :
Violations de modèle et de validation lors de la construction [SWS_PHM_01141] :
AraNotInitializedViolation : l'environnement d'exécution ARA n'a pas été initialisé avant l'instanciation.
InstanceSpecifierMappingIntegrityViolation : le spécificateur d'instance ne peut pas être résolu dans le modèle ou ne référence pas un PortPrototype.
PortInterfaceMappingViolation : le prototype de port référencé via RecoveryNotificationToPPortPrototypeMapping n'est pas typé par un PhmSupervisionRecoveryNotificationInterface.
ProcessMappingViolation : aucun processus modélisé de manière adéquate n'existe à l'exécution pour l'Instance-Ref.
InstanceSpecifierAlreadyInUseViolation : le spécificateur d'instance est déjà utilisé au sein du processus actuel.
Erreurs de communication lors de l'offre [SWS_PHM_01143] :
Si la communication avec le démon Phm échoue, Offer() renvoie un résultat avec le code d'erreur PhmErrc::kOfferFailed.
Erreurs irrécupérables lors de la récupération [SWS_PHM_01142] :
Si le State Management ne parvient pas à résoudre l'erreur signalée, le Future renvoyé par RecoveryHandler renvoie l'erreur PhmErrc::kSMCanNotHandleRecovery. Le Platform Health Management intervient alors et déclenche le watchdog.
Ce guide de classe a été généré par un assistant de curation IA sur la base de la spécification AUTOSAR R25-11.
The move assignment operator for the RecoveryAction shall not be used. Rationale: Using the move assignment after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e0343e0b39c4Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode sans paramètre Offer appartient à la classe ara::phm::RecoveryAction et est intégrée via le fichier d'en-tête ara/phm/recovery_action.h[SWS_PHM_01143]. Son but est de mettre le service à disposition du Platform Health Management (PHM) afin de permettre des appels ultérieurs du RecoveryHandler[SWS_PHM_01143]. L'appel s'effectue de manière synchrone et ne prend aucun paramètre [SWS_PHM_01143].
Le résultat de l'exécution est renvoyé sous forme de ara::core::Result<void>[SWS_PHM_01143]. À l'état sans erreur, ce Result est vide. Si la communication avec le démon PHM échoue, le service ne peut pas être proposé et la fonction renvoie le code d'erreur PhmErrc::kOfferFailed avec une sémantique de rollback [SWS_PHM_01143].
En ce qui concerne la sécurité d'exécution, la méthode est spécifiée comme noexcept et sûre face aux exceptions (exception safe) [SWS_PHM_01143]. Elle est toutefois explicitement définie comme non sûre pour les threads (not thread-safe) [SWS_PHM_01143].
Dans l'ensemble du système, il existe un couplage direct avec le traitement des erreurs : le RecoveryHandler de la classe ara::phm::RecoveryAction sert à réagir aux erreurs d'exécution (ara::exec::ExecutionErrorEvent) et aux erreurs de surveillance (TypeOfSupervision) [SWS_PHM_01142]. Le PHM ne peut appeler ce gestionnaire qu'après que l'activation a été préalablement et explicitement débloquée via RecoveryAction::Offer[SWS_PHM_01142].
Cette note d'utilisation a été générée automatiquement sur la base de la spécification.
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. 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- A PortPrototype that is referenced by a pingViolation RecoveryNotificationToPPortPrototypeMapping needs to be typed by a PhmSupervisionRecoveryNotificationInterface. 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.
Parameter (in)
Parameter
Beschreibung
instance
instance specifier to the PPortPrototype of a PhmRecoveryAction Interface
Request a governed re-review of this record. The record is not changed immediately.
The move constructor operator for the RecoveryAction shall not be used. Rationale: Using the move constructor after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety
RecoveryHandler to be invoked by PHM. The handler invocation needs to be enabled before by a call of RecoveryAction::Offer.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 4d5e12f6a819Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode virtuelle pure RecoveryHandler dans ara::phm::RecoveryAction sert de callback asynchrone appelé par le Platform Health Management (PHM) dès qu'une surveillance échoue [SWS_PHM_01142]. Lors de l'appel, le PHM transmet l'événement d'erreur executionError avec des informations détaillées pour la récupération ainsi que le type de la surveillance élémentaire ayant échoué via le paramètre supervision[SWS_PHM_01142].
Des conditions d'ordonnancement et de concurrence strictes s'appliquent à l'utilisation et au cycle de vie :
Activation : les appels du gestionnaire doivent être préalablement et explicitement activés via RecoveryAction::Offer[SWS_PHM_01142], [SWS_PHM_01143]. Ils peuvent être à nouveau désactivés via StopOffer[SWS_PHM_01144].
Intégrité de l'objet : le constructeur de déplacement ainsi que l'opérateur d'assignation par déplacement de RecoveryAction sont tous deux supprimés (=delete), afin d'éviter qu'après la mise à disposition de l'action, des appels prématurés du gestionnaire ne soient exécutés sur des classes dérivées encore incomplètement construites [SWS_PHM_01149], [SWS_PHM_01151].
Sécurité des threads : la méthode elle-même est spécifiée comme étant thread-safe et sûre vis-à-vis des exceptions [SWS_PHM_01142], tandis que Offer et StopOffer ne sont pas thread-safe [SWS_PHM_01143], [SWS_PHM_01144].
Le retour s'effectue de manière asynchrone via un ara::core::Future<void>[SWS_PHM_01142]. Si la récupération a réussi, le future est complété avec void. Si le State Management ne peut pas effectuer la récupération, le future échoue avec le code d'erreur PhmErrc::kSMCanNotHandleRecovery ; dans ce cas, le Platform Health Management intervient et déclenche le watchdog [SWS_PHM_01142].
Ce texte a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 8cdc07a00e3fProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode StopOffer de la classe ara::phm::RecoveryAction sert à désactiver l'exécution du RecoveryHandler associé [SWS_PHM_01144]. Elle est déclarée dans l'en-tête ara/phm/recovery_action.h[SWS_PHM_01144].
Utilisation et sémantique
La fonction possède la signature void StopOffer() noexcept;, ne prend aucun paramètre et ne renvoie aucune valeur de retour [SWS_PHM_01144]. Par cet appel, l'application signale au Platform Health Management (PHM) qu'aucun autre appel du gestionnaire ne doit plus avoir lieu [SWS_PHM_01144]. L'appel s'effectue de manière synchrone ; les instances de gestionnaire en cours d'exécution devraient être terminées avant ou lors de la désactivation (interprétation). Question Q-a333b1e2f0634ed1 (ouverte)
Gestion des erreurs et concurrence
Sécurité vis-à-vis des exceptions : l'opération est déclarée comme noexcept et est considérée comme totalement sûre vis-à-vis des exceptions ; il n'existe aucun code d'erreur ni aucune exception [SWS_PHM_01144].
Sécurité des threads : la méthode est explicitement spécifiée comme not thread-safe[SWS_PHM_01144]. Un appel concurrent sur la même instance de RecoveryAction nécessite donc une synchronisation externe par l'appelant.
Ce texte a été généré par une IA et s'appuie sur la spécification AUTOSAR Adaptive R25-11.
The move assignment operator for the RecoveryAction shall not be used. Rationale: Using the move assignment after a RecoveryAction instance has been offered may result in premature invocation of RecoveryHandler before the derived class is fully constructed. This can lead to undefined behavior or unhandled exceptions, compromising system stability and safety.
gemini-3.8-flash-low· 2026-10-13 · Original allemand