Définit un intervalle fermé de valeurs d'octets pour les modèles de service de diagnostic dans les listes d'accès dynamiques.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 772c8ed103ebProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Définit un intervalle fermé de valeurs d'octets pour les modèles de service de diagnostic dans les listes d'accès dynamiques.
La classe ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange représente un intervalle fermé de valeurs d'octets destiné à définir des modèles de service de diagnostic dans des listes d'accès dynamiques [SWS_DM_01182]. Les applications créent ces objets-valeurs avec des valeurs minimales et maximales et les transmettent au builder pour la configuration progressive de modèles de service [SWS_DM_01183]. De plus, les limites d'intervalle définies peuvent être consultées à tout moment via des inspecteurs. Toutes les fonctions membres sont déclarées sans exception comme noexcept, tandis que les opérateurs d'assignation modificateurs nécessitent une synchronisation spécifique en cas d'accès concurrent.
Contexte
La classe ara::diag::DynamicAccessListDiagServiceBuilder::ByteRange représente un intervalle fermé de valeurs d'octets au sein d'un modèle de service de diagnostic [SWS_DM_01182]. Dans le cadre de la gestion dynamique des accès (DynamicAccessList), elle fait office de composant élémentaire pour définir avec précision les critères et les plages de valeurs des différents octets pour les requêtes de diagnostic AUTOSAR_AP_SWS_Diagnostics §8.15.2 « Class: ByteRange ».
En tant que type valeur imbriqué, ByteRange agit en coopération directe avec le DynamicAccessListDiagServiceBuilder de niveau supérieur. Tandis que l'application de diagnostic crée des instances avec des valeurs de seuil spécifiques, le builder consomme ces objets via des méthodes telles que Add[SWS_DM_01177] ou EndsWith[SWS_DM_01180] afin de construire des séquences de motifs d'octets pour les services de diagnostic. En complément, la classe permet de lire les limites configurées via GetMin[SWS_DM_01189] et GetMax[SWS_DM_01190].
Cycle de vie
Les instances de ByteRange sont créées de manière standard via le constructeur paramétré, qui accepte la valeur minimale (min) et maximale (max) sous la forme d'un intervalle de valeurs fermé [SWS_DM_01183]. Comme il s'agit d'un objet valeur sans état et sans liaison dynamique de ressources, il n'existe pas de phases de fonctionnement internes complexes.
La classe implémente une sémantique de valeur conforme aux standards : elle fournit aussi bien un constructeur de copie [SWS_DM_01184] qu'un constructeur de déplacement [SWS_DM_01185], ce qui permet de transmettre sans difficulté des instances aux méthodes du builder par copie ou par déplacement. De manière analogue, l'opérateur d'affectation par copie [SWS_DM_01186] et l'opérateur d'affectation par déplacement [SWS_DM_01187] sont disponibles. Le cycle de vie se termine par le destructeur [SWS_DM_01188].
En ce qui concerne la concurrence, AUTOSAR spécifie des exigences différenciées : les constructeurs et les opérations de lecture sont classés comme thread-safe, alors que les opérateurs d'affectation operator= ([SWS_DM_01186], [SWS_DM_01187]) et le destructeur [SWS_DM_01188] sont expressément non thread-safe. Les opérations modificatrices sur la même instance requièrent donc des mesures de synchronisation au niveau de l'appelant.
Parcours d'utilisation
L'utilisation typique de ByteRange s'effectue dans le cadre de la configuration séquentielle de motifs de service via le builder :
L'application crée un objet ByteRange en indiquant les bornes min et max[SWS_DM_01183].
L'intervalle est transmis à DynamicAccessListDiagServiceBuilder::Add afin d'étendre le motif à la position actuelle [SWS_DM_01177].
EndsWith permet de définir un intervalle final qui constitue la clôture du motif [SWS_DM_01180].
Si nécessaire, l'application lit les valeurs limites via GetMin[SWS_DM_01189] et GetMax[SWS_DM_01190] à des fins de vérification.
Diagramme de séquence : interaction typique lors de la définition d'un motif de diagnostic avec ByteRange. Sources : [SWS_DM_01183], [SWS_DM_01177], [SWS_DM_01180], [SWS_DM_01189], [SWS_DM_01190].
Scénarios d'erreur
Toutes les fonctions membres de la classe sont déclarées avec noexcept et sont ainsi totalement sûres du point de vue des exceptions (exception safe) [SWS_DM_01183]. Ni la construction, ni les affectations, ni les consultations ne lèvent d'exceptions C++.
Les situations d'erreur potentielles concernent principalement des erreurs logiques de paramétrage : si une application transmet une valeur minimale min supérieure à la valeur maximale max, la spécification ne définit aucun comportement d'erreur explicite (interprétation : une telle paire de valeurs non valide ne devrait vraisemblablement être rejetée que lors du traitement ultérieur du motif dans le builder ou aboutir à un motif de correspondance vide). Question Q-ea9c65d175d48946 (ouverte) Un autre risque d'erreur réside dans l'affectation non protégée via operator= en cas d'accès concurrent de plusieurs threads au même objet, car les affectations ne sont pas thread-safe [SWS_DM_01186].
Ce guide de classe est basé sur la spécification AUTOSAR Adaptive R25-11 pour le module diag.
gemini-3.8-flash-low· 2026-10-13 · Original allemand