Permet l'interrogation et la surveillance de plusieurs événements de diagnostic via des handles d'événements et des notifications par callback.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 4cd8b0cbe34dProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet l'interrogation et la surveillance de plusieurs événements de diagnostic via des handles d'événements et des notifications par callback.
La classe permet aux applications d'interroger et de surveiller en fonction de leur état plusieurs événements de diagnostic via une interface commune à l'aide de handles d'événements [SWS_DM_01705]. En plus de l'enregistrement de callbacks de notification, des méthodes asynchrones sont disponibles pour déterminer l'état d'un événement, la dévalidation, le compteur de défaillances et le numéro de DTC [SWS_DM_01707], [SWS_DM_01709]. Les instances ne sont ni copiables ni déplaçables et nécessitent, en raison du destructeur non thread-safe, une terminaison ordonnée des opérations actives avant leur libération [SWS_DM_01706], [SWS_DM_02067].
Contexte
La classe ara::diag::MultipleEvent met à disposition de l'application des interfaces pour interroger et surveiller des événements de diagnostic via des interfaces pour événements multiples [SWS_DM_01705]. Contrairement aux classes d'événements uniques, les opérations sur des instances de MultipleEvent adressent des événements concrets via un identifiant de type EventHandleType[SWS_DM_01707], [SWS_DM_01708]. La classe sert d'interface entre le composant logiciel applicatif et le Diagnostic Management (DM) d'Adaptive AUTOSAR AUTOSAR AP SWS Diagnostics, p. 69. L'objet est lié à l'infrastructure de diagnostic configurée via le prototype de port d'un DiagnosticMultipleEventInterface[SWS_DM_01705].
Cycle de vie
Une instance de MultipleEvent est créée via un constructeur explicite en spécifiant un ara::core::InstanceSpecifier[SWS_DM_01705]. Le constructeur est thread-safe et vérifie la liaison modélisée à un prototype de port du type d'interface DiagnosticMultipleEventInterface[SWS_DM_01705]. Si le mappage échoue ou si le même identifiant d'instance est réutilisé au sein du processus, la plateforme signale des violations correspondantes telles que InstanceSpecifierAlreadyInUseViolation ou PortInterfaceMappingViolation[SWS_DM_01705].
Les opérations de copie et de déplacement sont totalement interdites pour MultipleEvent : tant le constructeur de copie et de déplacement que les opérateurs d'assignation correspondants sont déclarés supprimés [SWS_DM_02067], [SWS_DM_02068], [SWS_DM_02069], [SWS_DM_02070]. L'objet possède ainsi une identité stricte et reste à son emplacement de création. Le destructeur ~MultipleEvent() est spécifié comme non thread-safe [SWS_DM_01706]. Les composants appelants doivent donc s'assurer, avant la destruction, qu'aucune interrogation asynchrone ni notification ne s'exécute encore via l'instance AUTOSAR AP SWS Diagnostics, p. 78.
Parcours d'utilisation
Après l'instanciation, l'application enregistre généralement une fonction de callback au moyen de SetEventStatusChangedNotifier afin d'être informée des changements d'état d'un événement donné (identifié via EventHandleType) [SWS_DM_01708]. Un nouvel appel de cette méthode pour le même événement écrase le notificateur précédemment défini [SWS_DM_01708]. Cette fonction d'enregistrement n'est pas thread-safe [SWS_DM_01708].
Pendant le fonctionnement, les informations de diagnostic actuelles peuvent être interrogées de manière ciblée par handle d'événement. Toutes les opérations de lecture liées à l'état renvoient leurs données de manière asynchrone dans un ara::core::Future :
GetEventStatus renvoie l'octet d'état actuel de l'événement sous forme de EventStatusByte[SWS_DM_01707].
GetDebouncingStatus renvoie l'état de dévalidation (DebouncingState) de l'événement [SWS_DM_01710].
GetFaultDetectionCounter renvoie le compteur actuel de détection de défaillance (FaultDetectionCounter) sous forme de valeur entière signée de 8 bits [SWS_DM_01711].
GetDTCNumber interroge le numéro de DTC associé dans le DTCFormatType demandé [SWS_DM_01709].
Diagramme de séquence : Chemin d'utilisation typique pour l'observation et l'interrogation d'événements de diagnostic via MultipleEvent. Sources : [SWS_DM_01705], [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711]
Scénarios d'erreur
Les méthodes de MultipleEvent signalent les états d'erreur via le type DiagErrc, qui est transporté de manière encapsulée soit dans un ara::core::Result, soit dans le ara::core::Future renvoyé [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709]. Les cas d'erreur suivants sont spécifiés :
DiagErrc::kNoSuchDTC : est signalé par GetDTCNumber lorsqu'aucun DTC correspondant n'est configuré ou associé pour l'événement de diagnostic demandé [SWS_DM_01709].
DiagErrc::kServiceNotAvailable : se produit lors d'opérations de lecture lorsque des fonctionnalités de base essentielles du Diagnostic Management ne sont pas disponibles au moment de l'exécution [SWS_DM_01707], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711].
Register a notifier function which is called if a diagnostic event is changed. 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 DiagnosticMultipleEventPortMapping needs to be typed by a DiagnosticMultipleEventInterface. 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 DiagnosticMultipleEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. 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 : bd91ad4f4cb5ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode ara::diag::MultipleEvent::SetEventStatusChangedNotifier[SWS_DM_01708] enregistre une fonction de rappel de type EventStatusByteNotifier, qui est appelée lorsque l'état d'un événement de diagnostic change. Le paramètre eventHandle permet d'identifier l'événement souhaité au sein de l'instance. La méthode est spécifiée comme noexcept et renvoie un ara::core::Result<void>. Un nouvel appel écrase le notificateur précédemment enregistré [SWS_DM_01708].
Gestion des erreurs
Si une erreur survient lors de l'enregistrement, le ara::core::Result renvoie un code d'erreur correspondant. L'erreur DiagErrc::kInvalidArgument est spécifiée, par exemple dans le contexte d'un filtrage antirebond interne tel que kPreFailed[SWS_DM_01708].
Concurrence et restrictions
L'opération est déclarée comme exception safe, mais expressément classée comme not thread-safe[SWS_DM_01708]. Les appels simultanés sur la même instance doivent donc être synchronisés en externe.
gemini-3.8-flash-low· 2026-10-13 · Original allemand