Permet aux applications adaptatives d'interroger et de surveiller par événements les indicateurs de diagnostic du véhicule.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7d81598b6e77ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet aux applications adaptatives d'interroger et de surveiller par événements les indicateurs de diagnostic du véhicule.
L’interface sert à l’interrogation et à la surveillance structurées d’indicateurs de diagnostic du véhicule au sein de l’AUTOSAR Adaptive Platform. Les applications instancient l’objet par l’intermédiaire d’un identifiant modélisé et peuvent obtenir l’état actuel via une méthode d’interrogation asynchrone [SWS_DM_00744]. De plus, il est possible d’enregistrer une fonction de rappel définie par l’utilisateur qui reçoit directement les mises à jour d’état lors des modifications [SWS_DM_00745]. En tant que contrainte essentielle, l’instance est strictement liée à un port, ne peut être ni copiée ni déplacée, et requiert une synchronisation contre les appels concurrents lors de l’enregistrement ainsi que de la destruction.
Contexte
La classe ara::diag::Indicator sert, dans le module diag de l’Adaptive Platform, de représentation centrale du DiagnosticIndicatorInterface[SWS_DM_00742]. Sa tâche principale consiste à permettre aux applications d’accéder à des indicateurs de diagnostic tels que des témoins d’avertissement ou des affichages de fonctionnement (par exemple un témoin de dysfonctionnement, MIL).
Trois composants participent principalement à l’interaction : une application adaptative utilisatrice (telle qu’un combiné d’instruments ou un service HMI), l’instance de ara::diag::Indicator en tant que point de terminaison d’interface local, ainsi que le Diagnostic Management Daemon (DM). Ce dernier traite les événements de diagnostic à l’échelle du véhicule ainsi que les états DTC UDS et fournit la fonctionnalité de diagnostic sous-jacente [SWS_DM_00744].
Diagramme de contexte : partenaires d’interaction de l’interface ara::diag::Indicator entre la logique applicative et le Diagnostic Management Daemon. Sources : [SWS_DM_00742], [SWS_DM_00744].
Cycle de vie
La création d’un objet ara::diag::Indicator s’effectue explicitement par la transmission d’un ara::core::InstanceSpecifier au constructeur [SWS_DM_00742]. Cet identifiant lie l’objet à un PortPrototype défini dans le modèle de conception, lequel doit obligatoirement être typé en tant que DiagnosticIndicatorInterface[SWS_DM_00742].
En ce qui concerne les relations de possession et la sémantique d’objet, ara::diag::Indicator est conçu comme une instance unique stricte : ni la copie ni le déplacement ne sont autorisés. En conséquence, le constructeur de copie [SWS_DM_01629], le constructeur de déplacement [SWS_DM_01630], l’opérateur d’assignation par copie [SWS_DM_01627] ainsi que l’opérateur d’assignation par déplacement [SWS_DM_01628] sont déclarés supprimés (=delete).
Le cycle de vie se termine par l’appel du destructeur ~Indicator()[SWS_DM_00743]. Alors que le constructeur et l’interrogation d’état sont spécifiés comme étant sûrs pour les threads [SWS_DM_00742], [SWS_DM_00744], le destructeur n’est pas sûr pour les threads [SWS_DM_00743]. L’application appelante doit donc s’assurer qu’aucun appel de méthode concurrent ou exécution de notificateur n’a plus lieu pendant la destruction.
Parcours d'utilisation
Après une initialisation réussie, la classe prend en charge deux modèles d’utilisation complémentaires pour déterminer l’état de l’indicateur :
Notification pilotée par événements :SetNotifier() permet d’enregistrer une fonction de rappel de type IndicatorStatusTypeNotifier[SWS_DM_00745], [SWS_DM_02129]. Dès que l’état de l’indicateur change, l’environnement d’exécution appelle ce notificateur. Un appel successif de SetNotifier() écrase le gestionnaire précédemment enregistré [SWS_DM_00745]. Étant donné que SetNotifier() n’est pas sûr pour les threads, l’enregistrement doit être synchronisé de manière externe [SWS_DM_00745]. Le notificateur est vraisemblablement exécuté dans le contexte d’un thread d’arrière-plan du Diagnostic Management, raison pour laquelle aucun blocage long ne devrait s’y produire. Question Q-c27898ecefb8006f (ouverte)
Interrogation ciblée :GetIndicatorState() permet d’interroger activement l’état actuel à tout moment [SWS_DM_00744]. La méthode est sûre pour les threads et renvoie un ara::core::Future<IndicatorStatusType>[SWS_DM_00744]. Interprétation : la mise à disposition asynchrone via un Future indique que l’interrogation est déléguée en interne au Diagnostic Management Daemon central via la communication interprocessus (IPC). Question Q-61a650bd8ab7fc04 (ouverte)
Diagramme de séquence : déroulement typique de l’instanciation, de l’enregistrement du notificateur, de l’interrogation d’état et de la destruction de l’objet. Sources : [SWS_DM_00742], [SWS_DM_00744], [SWS_DM_00745], [SWS_DM_00743].
Scénarios d'erreur
Des conditions d’erreur peuvent survenir aussi bien pendant la phase d’initialisation qu’à l’exécution :
Violations de configuration lors de la construction : le constructeur signale les incohérences de modélisation sous la forme de violations définies [SWS_DM_00742]. Parmi celles-ci figurent InstanceSpecifierMappingIntegrityViolation (l’identifiant ne peut être résolu ou ne référence pas un port), PortInterfaceMappingViolation (le port référencé n’est pas typé par un DiagnosticIndicatorInterface), ProcessMappingViolation (aucun processus modélisé correspondant n’est présent pour l’instance d’exécution) ainsi que InstanceSpecifierAlreadyInUseViolation (l’identifiant est déjà utilisé dans le processus par une autre instance) [SWS_DM_00742].
Défaillance de fonctions de diagnostic : si l’exécution de GetIndicatorState() échoue, le code d’erreur DiagErrc::kServiceNotAvailable est transporté via le Future retourné [SWS_DM_00744]. Cela se produit lorsque des fonctions essentielles du Diagnostic Management ne sont pas disponibles au moment de l’appel [SWS_DM_00744].
Accès concurrents : comme SetNotifier()[SWS_DM_00745] et le destructeur [SWS_DM_00743] ne sont pas sûrs pour les threads, un accès concurrent non protégé entraîne un comportement à l’exécution indéfini.
Ce guide est basé sur la spécification AUTOSAR Adaptive Platform R25-11 et a été rédigé par un assistant de curation IA.
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticIndicatorPortMapping needs to be typed by a DiagnosticIndicatorInterface. 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
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticIndicatorInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : f2935619a27aProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction SetNotifier de la classe ara::diag::Indicator ([SWS_DM_00745], déclarée dans l'en-tête ara/diag/indicator.h) enregistre une fonction de notification spécifique à l'application de type IndicatorStatusTypeNotifier. Cette fonction de rappel est appelée par Diagnostic Management dès qu'une mise à jour de l'état du voyant d'avertissement de diagnostic est disponible ([SWS_DM_00745]).
Comportement en cas d'appels multiples
Un appel répété de SetNotifier sur la même instance écrase complètement le notificateur précédemment enregistré ([SWS_DM_00745], [SWS_DM_01359]). Ce comportement d'écrasement correspond au modèle général dans Diagnostic Management, tel qu'il est défini à l'identique pour ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) et ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]).
Gestion des erreurs et concurrence
Gestion des erreurs : la méthode est spécifiée comme noexcept et sûre vis-à-vis des exceptions (exception safe) ([SWS_DM_00745]). Comme aucune erreur standardisée n'est définie, le ara::core::Result<void> renvoyé devrait toujours, selon toute interprétation, encapsuler un appel réussi. Question Q-dcde3dd383fbfb4a (ouverte)
Concurrence : l'interface est expressément déclarée comme non sûre pour les threads (not thread-safe) ([SWS_DM_00745]). Les appels simultanés sur une même instance doivent être synchronisés par l'application.
Contexte de diagnostic
Les mises à jour de l'état de l'indicateur sont liées au bit 7 d'état du DTC (WarningIndicatorRequested) ([SWS_DM_00224], AUTOSAR_AP_SWS_Diagnostics p. 260). Ce bit est activé lors de la confirmation d'un défaut ([SWS_DM_01266]) et réinitialisé lorsque les seuils de stabilisation ou de guérison sont atteints à la fin d'un cycle de fonctionnement ([SWS_DM_00224], [SWS_DM_01582]).
Cette note d'utilisation a été générée automatiquement sur la base de la spécification AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original allemand