Représente l'octet d'état codé par bits d'un événement de diagnostic et propose des méthodes de vérification avec sûreté de typage pour les bits d'état.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : c0a8a1df20deProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Représente l'octet d'état codé par bits d'un événement de diagnostic et propose des méthodes de vérification avec sûreté de typage pour les bits d'état.
La structure ara::diag::EventStatusByte encapsule l'octet d'état codé par bits d'un événement de diagnostic individuel au sein de l'Adaptive Platform [SWS_DM_00644]. Elle fournit des méthodes pour interroger de manière sûre du point de vue des types les bits d'état positionnés ou non positionnés, ainsi que des états de test composés [SWS_DM_01755]. Étant donné que le calcul reflète toujours l'événement spécifique, il reste inchangé par d'éventuelles combinaisons d'événements de DTC de niveau supérieur. En tant qu'objet-valeur léger, tous les accès en lecture sont sécurisés contre les exceptions et lisibles de façon concurrente, tandis que les assignations modificatrices doivent être synchronisées de manière externe.
Contexte
La structure ara::diag::EventStatusByte encapsule l'octet d'état codé par bits d'un événement de diagnostic dans la mémoire des défauts de la gestion du diagnostic AUTOSAR Adaptive [SWS_DM_00644]. Conformément à la spécification, EventStatusByte représente toujours précisément l'état de l'événement individuel associé et n'est pas influencé lors du calcul par une éventuelle combinaison d'événements (Event Combination) (AUTOSAR_AP_SWS_Diagnostics p. 234). Parmi les partenaires d'interaction figure principalement le Diagnostic Management Core (DM), qui détermine l'état du DTC UDS lors des actualisations d'état d'événements [SWS_DM_01109] et informe via des rappels configurés [SWS_DM_01110]. Interprétation : via l'alias de type ara::diag::EventStatusByteNotifier[SWS_DM_02118], ce changement d'état devrait être notifié aux fonctions applicatives enregistrées afin que celles-ci puissent réagir aux changements d'état. Question Q-8fd114acd74569ee (ouverte)
Cycle de vie
Les instances de ara::diag::EventStatusByte sont des objets-valeurs légers définis dans l'en-tête ara/diag/event_types.h[SWS_DM_01753]. La création s'effectue soit par copie, par déplacement, soit via un constructeur de modèle variadique qui accepte un ensemble arbitraire de EventStatusBits à définir [SWS_DM_01753]. Comme les constructeurs et les opérateurs d'assignation sont déclarés comme constexpr et noexcept, les objets peuvent être construits dès la compilation (AUTOSAR_AP_SWS_Diagnostics §8.47.2.1.1 « Special Member Functions »).
En ce qui concerne la propriété et la durée de vie, l'objet est typiquement transmis par valeur (by-value) ou par référence constante aux notificateurs. Le constructeur de déplacement [SWS_DM_01751] et le constructeur de copie [SWS_DM_01752] garantissent la sécurité vis-à-vis des exceptions et des threads. En revanche, l'opérateur d'assignation par copie [SWS_DM_01750] ainsi que l'opérateur d'assignation par déplacement [SWS_DM_01749] sont explicitement classés dans la spécification comme non sécurisés vis-à-vis des threads (not thread-safe). Plusieurs accès concurrents en lecture à un octet d'état existant sont possibles sans risque pour les threads, mais les assignations modificatrices sur une instance partagée nécessitent une synchronisation externe.
Parcours d'utilisation
Un cas d'utilisation typique consiste à vérifier un octet d'état transmis par le Diagnostic Management par rapport à certains critères de diagnostic. La classe fournit pour cela des méthodes d'évaluation spécialisées :
Vérification du test de défaut : avec IsFailedAndTested(), il est possible de vérifier directement si le bit kTestFailed ainsi que kTestFailedThisOperationCycle sont positionnés [SWS_DM_01757]. Interprétation : cela signale à l'application que l'événement a déjà été testé et évalué comme défectueux au cours du cycle de fonctionnement actuel. Question (ouverte)
Vérification d'un test sans défaut : la méthode IsPassedAndTested() renvoie true pour autant que ni kTestFailed ni kTestNotCompletedThisOperationCycle ne soient positionnés [SWS_DM_01756].
Vérifications de bits génériques : via le modèle IsSet(bits...), il est possible de vérifier si tous les bits d'état transmis sont positionnés [SWS_DM_01755]. De manière complémentaire, IsNotSet(bits...) vérifie qu'aucun des bits transmis n'est actif [SWS_DM_01754].
Lors de la réinitialisation de défauts par une opération clearDTC, le Diagnostic Management purge tous les événements associés, indépendamment du fait que des combinaisons d'événements soient configurées ou non [SWS_DM_01108]. Le diagramme de séquence suivant illustre l'interaction lors d'une actualisation d'état et de l'évaluation subséquente dans l'application.
Puisque ara::diag::EventStatusByte est un conteneur de données élémentaire, toutes les fonctions membres sont spécifiées comme noexcept et totalement sûres vis-à-vis des exceptions ([SWS_DM_01749] à [SWS_DM_01757]). Aucune exception C++ n'est levée et aucun code d'erreur sous forme de ara::core::Result n'est retourné.
Les situations d'erreur dans l'application ne proviennent donc pas de codes d'erreur de l'API, mais d'erreurs d'interprétation sémantique ou de synchronisation. Les risques typiques sont des accès concurrents en écriture via des opérateurs d'assignation sans protection par mutex ([SWS_DM_01749], [SWS_DM_01750]) ou la supposition erronée que EventStatusByte serait modifié par des DTC combinés, alors qu'il reste strictement lié à l'événement individuel selon la spécification (AUTOSAR_AP_SWS_Diagnostics p. 234).
Ce guide se base sur la spécification AUTOSAR Adaptive R25-11 et résume les propriétés de la classe selon le document AUTOSAR_AP_SWS_Diagnostics.
gemini-3.8-flash-low· 2026-10-13 · Original allemand