Sert à la mise à disposition, du côté applicatif, de données de diagnostic étendues pour le Diagnostic Management adaptatif.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 0446a63ad449ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert à la mise à disposition, du côté applicatif, de données de diagnostic étendues pour le Diagnostic Management adaptatif.
La classe <ExtendedDataRecordElementInterface> sert d'interface aux applications adaptatives pour fournir des données de diagnostic étendues au Diagnostic Management ([SWS_DM_02152]). Après son instanciation et son activation via Offer(), le gestionnaire implémente la fourniture asynchrone des données par le biais de la méthode purement virtuelle Read() ([SWS_DM_02156]). Comme le Diagnostic Manager enregistre durablement les enregistrements de données dans la mémoire non volatile, les valeurs non disponibles doivent obligatoirement être complétées avec un motif de remplissage. L'interface n'est ni copiable ni déplaçable, et son destructeur n'est pas thread-safe.
Contexte
Dans le sous-système de diagnostic de l'AUTOSAR Adaptive Platform, l'interface <ExtendedDataRecordElementInterface> sert à fournir des données de diagnostic étendues spécifiques à l'application (Extended Data Records) au Diagnostic Management (DM) (AUTOSAR AP SWS Diagnostics §7.2 « DiagnosticExtendedDataRecordInterface »). Un Extended Data Record contient des données supplémentaires relatives au diagnostic, telles que des valeurs de compteurs ou des informations d'environnement, qui sont associées à un événement d'erreur. La classe fait office d'interface de base abstraite pour les composants de gestionnaire côté application. Les partenaires d'interaction comprennent le Diagnostic Manager (DM), qui demande et coordonne les opérations de lecture, l'implémentation concrète du gestionnaire au sein de l'application, ainsi que la mémoire non volatile (Non-Volatile Memory, NVM), dans laquelle le DM enregistre durablement les données récupérées ([SWS_DM_02156]). Interprétation : l'appel de Read() est probablement déclenché par un traitement de diagnostic interne au sein du DM, par exemple lors de la survenue d'un événement d'erreur ou lors de changements d'état d'un code de défaut de diagnostic. Question Q-f80be8c2bd5697fc (ouverte)
La création s'effectue via le constructeur paramétré en spécifiant un ara::core::InstanceSpecifier ainsi que le mode de concurrence ara::diag::ConcurrencyType ([SWS_DM_02158], AUTOSAR AP SWS Diagnostics §7.2 « DiagnosticExtendedDataRecordInterface »). La construction est thread-safe et sûre vis-à-vis des exceptions (exception safe). Le paramètre concurrencyType détermine si les appels de l'interface peuvent être traités de manière concurrente (kConcurrent) ou séquentielle (kNotConcurrent) ([SWS_DM_02158]). Les opérations de copie et de déplacement sont totalement interdites : le constructeur de copie ([SWS_DM_02147]), l'assignation par copie ([SWS_DM_02148]), le constructeur de déplacement ([SWS_DM_02149]) et l'assignation par déplacement ([SWS_DM_02150]) sont supprimés (=delete). Une instance possède ainsi une identité fixe et ne peut être ni dupliquée ni transférée.
Après l'instanciation, l'objet se trouve d'abord à l'état inactif. Ce n'est que par l'appel de Offer() ([SWS_DM_02152]) que le service est activé et que le DM achemine les requêtes vers le gestionnaire. Cette redirection peut être arrêtée à tout moment au moyen de StopOffer() ([SWS_DM_02153]). La destruction s'effectue via le destructeur virtuel ~<ExtendedDataRecordElementInterface>() ([SWS_DM_02151]). Bien que celui-ci soit sûr vis-à-vis des exceptions, il est explicitement non thread-safe (not thread-safe) ([SWS_DM_02151]). Interprétation : il est probable que StopOffer() doive être appelé avant de détruire l'objet gestionnaire, afin de garantir qu'aucune autre requête ne parvienne pendant la libération de l'objet. Question Q-c77dda63f0e8798a (ouverte)
Parcours d'utilisation
Le déroulement normal comprend la mise à disposition, la réponse asynchrone aux requêtes de lecture et la désactivation du service :
Initialisation : l'application instancie la classe dérivée avec l'identifiant de port approprié et la configuration de concurrence ([SWS_DM_02158]).
Offre de service : l'appel de Offer() active le réacheminement des requêtes dans le DM ([SWS_DM_02152]). La méthode renvoie un ara::core::Result<void>.
Récupération des données : lorsqu'une requête de lecture arrive, le DM appelle la méthode purement virtuelle Read() ([SWS_DM_02156]). Les métadonnées de requête (metaInfo) et un cancellationHandler sont alors transmis.
Gestion de l'annulation et retour : le gestionnaire peut vérifier via cancellationHandler.IsCanceled() si la conversation a été annulée, ou enregistrer une notification par le biais de cancellationHandler.SetNotifier() ([SWS_DM_02156]). Le résultat est fourni de manière asynchrone via un ara::core::Future avec un objet ReadOutput ([SWS_DM_02156], [SWS_DM_02154]).
Persistance : le DM prend en charge les données récupérées et les stocke durablement dans la mémoire non volatile ([SWS_DM_02156]).
Désinscription du service : avant l'arrêt, l'application appelle StopOffer() ([SWS_DM_02153]) pour mettre fin à l'acheminement par le DM avant que l'instance ne soit détruite ([SWS_DM_02151]).
Lors de l'utilisation de l'interface, plusieurs conditions d'erreur et préconditions doivent être prises en compte :
Erreurs de construction et violations de modèle : des erreurs de modélisation peuvent survenir lors de l'appel du constructeur ([SWS_DM_02158]). Celles-ci incluent InstanceSpecifierMappingIntegrityViolation (l'identifiant ne peut pas être résolu ou ne référence aucun PortPrototype), PortInterfaceMappingViolation (absence de référencement par un DiagnosticDataPortMapping), ProcessMappingViolation (aucun processus correspondant trouvé dans le modèle) ainsi que InstanceSpecifierAlreadyInUseViolation (l'identifiant est déjà utilisé dans le processus) ([SWS_DM_02158]).
Offre multiple : si Offer() est appelé alors que le service est déjà activement proposé, l'appel échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered ([SWS_DM_02152]).
Données non disponibles lors des requêtes de lecture : étant donné que le DM enregistre les données dans la mémoire non volatile, une valeur doit obligatoirement être renvoyée lors d'un appel de Read() ([SWS_DM_02156]). Si des données ne sont pas disponibles au moment de la requête, l'implémentation du gestionnaire doit les compléter avec un motif de remplissage défini tel que 0xFF ([SWS_DM_02156]).
Erreurs applicatives et de diagnostic : si la fourniture des données échoue totalement, le ara::core::Future renvoyé peut contenir un code d'erreur NRC de diagnostic correspondant (DiagUdsNrcErrc) ou une erreur spécifique à l'application (ApApplicationError) ([SWS_DM_02156]).
Risque lors de la destruction : le destructeur n'étant pas thread-safe ([SWS_DM_02151]), la destruction de l'objet pendant des appels concurrents ou sans StopOffer() préalable ([SWS_DM_02153]) conduit à un comportement indéfini.
Ce guide a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 5f6f8ec51798ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation et contexte d'appel
La fonction <ExtendedDataRecordElementInterface> sert de constructeur pour la création d'un DataElement pour une interface d'enregistrement de données étendues à l'aide d'un ara::core::InstanceSpecifier[SWS_DM_02158]. La déclaration est située dans la portée <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface> et requiert l'inclusion du fichier d'en-tête #include "<ExtendedDataRecordElementShortname>.h"AUTOSAR_AP_SWS_Diagnostics §8.49.2.2.1.6.
L'appel synchrone requiert deux paramètres d'entrée [SWS_DM_02158] :
instanceSpec (ara::core::InstanceSpecifier) : identifiant de l'instance de service concrète dans le modèle AUTOSAR.
concurrencyType (ara::diag::ConcurrencyType) : détermine si l'interface est instanciée de manière sûre pour les threads (kConcurrent) ou non sûre pour les threads (kNotConcurrent).
Concurrence et sécurité vis-à-vis des erreurs
La fonction de constructeur elle-même est déclarée comme noexcept et spécifiée comme thread-safe ainsi qu'exception safe[SWS_DM_02158]. Interprétation : la fonction étant définie comme noexcept, les erreurs de modélisation et d'initialisation ne devraient pas être signalées par des exceptions C++, mais par les violations définies dans le framework Adaptive [SWS_DM_02158]. Question Q-9ce91764c3e8364e (ouverte)
Gestion des erreurs et violations de modèle
En cas de configuration erronée du modèle ou d'identifiants non valides, des violations spécifiques se produisent [SWS_DM_02158] :
InstanceSpecifierMappingIntegrityViolation : l'identifiant ne peut pas être résolu dans le contexte du processus ou ne fait pas référence à un PortPrototype.
PortInterfaceMappingViolation : un PortPrototype typé par DiagnosticExtendedDataRecordInterface n'est pas référencé par un DiagnosticDataPortMapping.
ProcessMappingViolation : une InstanceRef correspondante existe, mais aucun processus modélisé adéquat n'a été trouvé pour le processus d'exécution.
InstanceSpecifierAlreadyInUseViolation : le constructeur a été appelé avec un InstanceSpecifier qui est déjà en cours d'utilisation dans le processus.
Cette note d'utilisation a été générée automatiquement sur la base de la spécification d'AUTOSAR Adaptive R25-11.
Guide de l'implémenteur à venir (complexité I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Verletzungen (Violations)
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 typed by a pingViolation DiagnosticExtendedDataRecordInterface needs to be referenced by a DiagnosticDataPortMapping.
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
instanceSpec
The specifier of a specific instance of a service.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
This Offer will enable the DM to forward request messages to this handler
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e44e4ef775f3ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction Offer active le transfert des requêtes de diagnostic par le démon Diagnostic Management (DM) vers l'instance correspondante du gestionnaire [SWS_DM_02152]. Elle est appelée sans paramètre et renvoie de manière synchrone un ara::core::Result<void>, déclarée comme noexcept et spécifiée comme exception-safe [SWS_DM_02152].
Les exigences suivantes s'appliquent pour une utilisation et une gestion des erreurs conformes :
Valeur de retour et erreurs : en cas de succès, le résultat contient une valeur vide. Si le service a déjà été enregistré auparavant pour cette instance de gestionnaire, l'appel échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered avec une sémantique de rollback [SWS_DM_02152]. Les domaines d'erreur associés définissent également pour cet état le code d'erreur kAlreadyOffered[SWS_DM_00514][SWS_DM_00560].
Concurrence : contrairement à d'autres gestionnaires de diagnostic, qui sont fréquemment désignés comme non sûrs pour les threads (comme par exemple dans [SWS_DM_00557]), cette méthode est explicitement définie comme thread-safe [SWS_DM_02152].
Interaction dans le système : tant qu'une interface n'a pas encore été mise à disposition par l'application au moyen de Offer, le DM réagit, selon le contexte, avec des valeurs par défaut ou de substitution définies, comme par exemple avec l'état « Not ready » lors de requêtes DoIP-PowerMode [SWS_DM_01525] ou des valeurs de substitution pour des identifiants de groupe [SWS_DM_01527]. De plus, la spécification souligne que les fonctions d'offre de diagnostic sont spécifiques à ara::diag et ne doivent pas être confondues avec ara::com::OfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors ».
Interprétation : le comportement de retour synchrone de Offer devrait garantir que l'enregistrement du gestionnaire est entièrement achevé avant la réception de requêtes UDS ultérieures. Question Q-e6b2916cf4887164 (ouverte)
Ce texte a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
Guide de l'implémenteur à venir (complexité I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
• If successful: an ara::core::Result containing a ara:: core::Result::value_type • If unsuccessful: an ara::core::Result containing an ara:: core::Result::error_type i.e. a corresponding ara:: diag::DiagOfferErrc
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
Provision of a Read ExtendedDataRecordElement. The data fetched by this method is stored in non-volatile memory by the DM and therefore always a value needs to be returned. Not available data at the time of the method call shall be filled with a filling pattern, e.g 0xFF by the implementation of this method (DiagnosticExtendedDataRecordInterface in the role provide).
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : fe834745387eProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation et sémantique
La méthode purement virtuelle Read est appelée par le Diagnostic Management (DM) afin de récupérer les données d'un ExtendedDataRecordElement depuis l'application ([SWS_DM_02156]). Étant donné que le DM enregistre durablement les données récupérées dans la mémoire non volatile, la méthode doit toujours fournir une valeur. Si des données ne sont pas disponibles au moment de l'appel, l'implémentation doit les compléter à l'aide d'un motif de remplissage tel que 0xFF ([SWS_DM_02156]).
L'exécution s'effectue de manière asynchrone et renvoie un ara::core::Future qui, en cas de succès, encapsule la structure ReadOutput ([SWS_DM_02154]). L'appel transmet les paramètres suivants ([SWS_DM_02156]) :
metaInfo : transmet les méta-informations de la requête de diagnostic sous-jacente.
cancellationHandler : permet d'interroger une interruption au moyen de cancellationHandler.IsCanceled() ainsi que d'enregistrer une fonction de notification via cancellationHandler.SetNotifier().
Gestion des erreurs
En cas d'erreur, le Future fournit un code de réponse négatif UDS (DiagUdsNrcErrc) ou une erreur spécifique à l'application (ApApplicationError) ([SWS_DM_02156], AUTOSAR_AP_SWS_Diagnostics §7.3.2.6.1 « NRCs created by application »). Si l'interface de service requise n'est pas encore ou n'est plus mise à disposition par offer(), le DM répond avec le NRC 0x94 (ResourceTemporarilyNotAvailable) ([SWS_DM_01257]). De plus, DiagOfferErrc::kAlreadyOffered signale si le service est déjà proposé ([SWS_DM_02156]).
Concurrence et interaction
La méthode est spécifiée comme sûre du point de vue des exceptions (exception safe) ([SWS_DM_02156]). La sécurité des threads est conditionnelle et définie par l'implémentation (implementation defined) ([SWS_DM_02156]). Cela distingue Read pour les Extended Data Records des opérations de lecture sur des éléments de données réguliers ([SWS_DM_00596]) ou des identifiants de données ([SWS_DM_00640]), qui ne sont expressément pas thread-safe.
Ce texte a été généré par un système d'IA sur la base des spécifications de la version R25-11.
Guide de l'implémenteur à venir (complexité I1)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
conditional Thread safety is implementation defined
Parameter (in)
Parameter
Beschreibung
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
• If successful: an ara::core::Future containing an ReadOutput object as per [SWS_DM_02154] • If unsuccessful: an ara::core::Future containing a corresponding DiagUdsNrcErrc or ApApplicationError.
Fehler
Fehlercode
Beschreibung
DiagOfferErrc::kAlreadyOffered
rollback_semantics The service is already offered.
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7a0fc3b7b561ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation et contexte d'appel
La fonction StopOffer est appelée sur une instance de l'interface Extended Data Record (<ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>), qui est incluse via l'en-tête #include "<ExtendedDataRecordElementShortname>.h"[SWS_DM_02153]. L'appel s'effectue de manière synchrone, ne prend aucun paramètre et n'a pas de valeur de retour (void).
L'objet de la méthode est de désactiver le transfert des messages de requête entrants provenant du Diagnostic Management (DM) vers l'élément Extended Data Record respectif [SWS_DM_02153]. Après l'exécution, le DM ne transfère plus aucune nouvelle requête de diagnostic vers le gestionnaire associé.
Gestion des erreurs et concurrence
La fonction est déclarée avec l'identifiant noexcept et spécifiée comme sûre du point de vue des exceptions (exception safe) [SWS_DM_02153]. Aucun code d'erreur spécifique, aucune valeur de retour ni aucune notification adressée aux surveillances d'erreurs ne sont définis dans la charge utile ; en cas d'erreur, aucune exception n'est levée.
En ce qui concerne la concurrence, la méthode est expressément classée comme sûre pour les threads (thread-safe) [SWS_DM_02153]. Cela constitue une particularité, étant donné que des interfaces StopOffer apparentées dans ara::diag – comme par exemple pour les routines [SWS_DM_00558], les éléments de données [SWS_DM_00617] ou les moniteurs [SWS_DM_01089] – sont spécifiées comme non sûres pour les threads. Les requêtes déjà en cours de traitement devraient vraisemblablement être encore achevées ou rejetées avant l'arrêt définitif. Question Q-82e9d44f8ac1969d (ouverte)
Interaction dans le Diagnostic Management
La désignation suit le modèle de service uniforme dans AUTOSAR Adaptive, selon lequel les unités fonctionnelles contrôlent leur disponibilité via Offer et StopOfferAUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors ». L'élément s'inscrit ainsi parmi des interfaces comparables du DM, comme par exemple pour les services UDS génériques [SWS_DM_00620], les identifiants de données [SWS_DM_00600], les accès de sécurité [SWS_DM_00767] ou les requêtes de réinitialisation d'ECU [SWS_DM_01017].
Cette note d'utilisation a été générée par une IA sur la base de la spécification AUTOSAR Adaptive R25-11.
Guide de l'implémenteur à venir (complexité I2)
Header-Datei
#include "<ExtendedDataRecordElementShortname>.h"
Scope
class <ExtendedDataRecord-Namespace>::<ExtendedDataRecordElementInterface>
Exception-Sicherheit
exception safe
Thread-Sicherheit
thread-safe
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original allemand