Permet aux applications de traiter de manière générique les requêtes de lecture et d'écriture UDS pour les identifiants de diagnostic.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 02c252ff66d0ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet aux applications de traiter de manière générique les requêtes de lecture et d'écriture UDS pour les identifiants de diagnostic.
La classe ara::diag::GenericDataIdentifier sert d'interface générique pour le traitement asynchrone des requêtes de lecture et d'écriture UDS relatives aux identifiants de diagnostic dans AUTOSAR Adaptive [SWS_DM_00636]. Après la liaison à un port et l'activation via Offer(), le Diagnostic Management transmet les requêtes aux méthodes implémentées [SWS_DM_00638]. En tant qu'instance singulière, l'objet ne peut être ni copié ni déplacé, tandis que la sécurité vis-à-vis des threads lors du traitement des requêtes est régie par la configuration de concurrence choisie lors du constructeur.
Contexte
La classe ara::diag::GenericDataIdentifier représente une interface de service générique au sein du cluster fonctionnel Diagnostic Management (DM) de l'AUTOSAR Adaptive Platform SWS Diagnostics §8.2 « GenericDataIdentifier ». Tandis que les interfaces spécifiques au type sont liées à des types de données modélisés de manière fixe, GenericDataIdentifier sert au traitement flexible d'identifiants de diagnostic (Data Identifiers, DID), pour lesquels l'identifiant 16 bits est transmis dynamiquement comme paramètre.
Trois rôles participent principalement au traitement de diagnostic :
Le testeur de diagnostic externe, qui adresse des services UDS standardisés tels que ReadDataByIdentifier (0x22) ou WriteDataByIdentifier (0x2E) au véhicule.
Le Diagnostic Management (DM), qui reçoit les requêtes de diagnostic, les valide et les transmet à l'instance d'application correspondante via des interfaces de port définies, pour autant que celle-ci ait été préalablement activée via Offer[SWS_DM_00638].
L'implémentation spécifique à l'application de GenericDataIdentifier, qui encapsule la logique de traitement proprement dite en fournissant les méthodes Read[SWS_DM_00636] et Write[SWS_DM_00637] et renvoie les données de manière asynchrone.
Cycle de vie
Une instance de ara::diag::GenericDataIdentifier est instanciée explicitement via son constructeur [SWS_DM_00634]. Ce faisant, l'appelant lie l'objet à un ara::core::InstanceSpecifier qui référence un PortPrototype d'un DiagnosticDataIdentifierGenericInterface modélisé. L'argument concurrencyType (de type DataIdentifierConcurrencyType) permet de définir si les requêtes sont transmises au gestionnaire de façon concurrente (kConcurrent) ou séquentielle (kNotConcurrent) [SWS_DM_00634].
En matière de possession et de durée de vie, GenericDataIdentifier est modélisé comme une instance singulière, non copiable et non déplaçable :
Le constructeur de copie [SWS_DM_01653] ainsi que l'opérateur d'affectation [SWS_DM_01651] sont supprimés (=delete).
De même, le constructeur de déplacement [SWS_DM_01654] et l'opérateur d'affectation par déplacement [SWS_DM_01652] sont supprimés.
Après l'instanciation, l'objet se trouve dans l'état inactif ; le Diagnostic Management ne transmet pas encore de requêtes. Ce n'est que par l'appel de Offer()[SWS_DM_00638] que la transmission est activée. Afin de désactiver à nouveau la transmission des requêtes de diagnostic, l'application appelle StopOffer()[SWS_DM_00639]. La destruction de l'objet s'effectue via le destructeur virtuel [SWS_DM_00635].
Concernant la concurrence, le constructeur est sûr vis-à-vis des threads (thread-safe) [SWS_DM_00634]. En revanche, les méthodes administratives Offer()[SWS_DM_00638] et StopOffer()[SWS_DM_00639] ainsi que le destructeur [SWS_DM_00635] sont spécifiés comme non sûrs vis-à-vis des threads. La sécurité vis-à-vis des threads des méthodes Read et Write dépend de manière conditionnelle du concurrencyType choisi [SWS_DM_00636], [SWS_DM_00637].
Un cas d'usage typique pour le traitement des requêtes de diagnostic se décompose selon les étapes suivantes :
Initialisation : l'application instancie sa classe de gestionnaire dérivée en spécifiant le InstanceSpecifier ainsi que la configuration de concurrence [SWS_DM_00634]. Interprétation : en pratique, cela devrait typiquement s'effectuer durant la phase d'initialisation du processus d'application. Question Q-32596fba68253958 (ouverte)
Mise à disposition du service : l'application appelle Offer() sur [SWS_DM_00638]. Le Diagnostic Management active le réacheminement des requêtes DID entrantes.
Traitement des requêtes :
Lorsqu'une demande de lecture arrive, le DM appelle la méthode Read(dataIdentifier, metaInfo, cancellationHandler) sur [SWS_DM_00636]. L'application vérifie l'identifiant 16 bits transmis et renvoie de manière asynchrone un ara::core::Future<OperationOutput>.
Lorsqu'une demande d'écriture arrive, le DM appelle Write(dataIdentifier, requestData, metaInfo, cancellationHandler) sur [SWS_DM_00637]. Les données utiles dans requestData restent valides jusqu'à ce que la promesse associée soit tenue ou que le traitement soit interrompu.
Contrôle d'interruption : durant les opérations de longue durée, le gestionnaire peut vérifier via cancellationHandler.IsCanceled() si la conversation a été interrompue, ou enregistrer une fonction de notification via cancellationHandler.SetNotifier[SWS_DM_00636], [SWS_DM_00637].
Désinscription du service : avant l'arrêt du gestionnaire, l'application appelle StopOffer() sur [SWS_DM_00639], ce par quoi le DM interrompt le réacheminement.
Diagramme de séquence : interaction entre le testeur externe, le Diagnostic Management et GenericDataIdentifier lors d'une requête de lecture UDS. Sources : [SWS_DM_00638], [SWS_DM_00636]
Scénarios d'erreur
Des erreurs peuvent survenir au cours de différentes phases de l'interaction :
Violations de configuration et de mappage : si le InstanceSpecifier ne peut pas être résolu dans le modèle ou s'il ne référence pas un PortPrototype, une InstanceSpecifierMappingIntegrityViolation est présente [SWS_DM_00634]. Si l'affectation à un DiagnosticDataPortMapping est manquante, une PortInterfaceMappingViolation se produit [SWS_DM_00634]. Un mappage de processus manquant génère une ProcessMappingViolation, et un InstanceSpecifier déjà utilisé conduit à une InstanceSpecifierAlreadyInUseViolation[SWS_DM_00634].
Offre multiple : si Offer() est appelé alors que le service est déjà activement proposé, la méthode renvoie un ara::core::Result avec le code d'erreur DiagOfferErrc::kAlreadyOffered[SWS_DM_00638].
Erreurs de diagnostic fonctionnelles : si une requête de lecture ou d'écriture ne peut pas être traitée sur le plan fonctionnel, l'application ne renvoie pas d'état de succès dans le Future, mais un UDS-NRC (Negative Response Code) standardisé via DiagUdsNrcErrc conformément à l'ISO 14229-1 [SWS_DM_00636], [SWS_DM_00637].
Ce guide est basé sur la spécification AUTOSAR R25-11 et a été généré automatiquement.
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 DiagnosticDataIdentifierGenericInterface 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
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticDataIdentifierGenericInterface.
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 : 860e6bd15d7fProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation : la méthode synchrone Offer de la classe ara::diag::GenericDataIdentifier ([SWS_DM_00638]) sert à enregistrer un gestionnaire d'identifiants de données générique auprès du Diagnostic Management (DM). Grâce à cet appel, le DM est autorisé à transférer les requêtes de diagnostic entrantes (Request Messages) pour l'identifiant de données concerné vers ce gestionnaire ([SWS_DM_00638]). La fonction ne prend aucun paramètre d'entrée et fournit de manière synchrone un ara::core::Result<void> ([SWS_DM_00638]), qui renseigne sur le succès ou l'échec.
Traitement des erreurs : la méthode est déclarée avec noexcept et garantit une sécurité totale vis-à-vis des exceptions (exception safe) ([SWS_DM_00638]). Les erreurs éventuelles sont signalées via le ara::core::Result. Si le gestionnaire a déjà été mis à disposition auparavant, la fonction renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered avec une sémantique de retour arrière ([SWS_DM_00638]). Celui-ci correspond à l'énumération générale des erreurs DiagErrc::kAlreadyOffered ([SWS_DM_00514]).
Concurrence et restrictions : la fonction est spécifiée comme non sûre pour les threads (not thread-safe) ([SWS_DM_00638]). Par conséquent, les appels sur la même instance doivent être protégés contre les accès. Étant donné qu'aucune méthode de désenregistrement distincte n'est spécifiée pour GenericDataIdentifier, l'offre de service devrait probablement être liée à la durée de vie de l'instance du gestionnaire (interprétation). Question Q-7c64a5bd308464a8 (ouverte)
Interaction : le procédé suit le patron de mise à disposition uniforme du Diagnostic Management. Des interfaces analogues se retrouvent pour les identifiants de données spécifiques à un type ([SWS_DM_00599]), les routines génériques ([SWS_DM_00557]) ainsi que les services UDS génériques ([SWS_DM_00619]).
Cette note d'utilisation a été générée par un système d'IA.
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7772a86b7791Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode Read de la classe ara::diag::GenericDataIdentifier est appelée dès qu'une requête de diagnostic pour ReadDataByIdentifier (UDS 0x22) est reçue pour l'identifiant de données concerné [SWS_DM_00636]. Comme paramètres, la fonction accepte l'identifiant numérique dataIdentifier, le contexte metaInfo ainsi qu'un cancellationHandler. Par le cancellationHandler, l'application peut interroger l'état d'annulation au moyen de IsCanceled ou enregistrer une fonction de notification pour les conversations interrompues via SetNotifier[SWS_DM_00636]. Le résultat est fourni de manière asynchrone via un ara::core::Future<OperationOutput>, qui renvoie les données utiles (OperationOutput) en cas de succès [SWS_DM_00636].
Gestion des erreurs
En cas d'erreur, le Future fournit une valeur de retour UDS négative (NRC) conformément à l'ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_00636]. Si l'interface n'est pas encore ou n'est plus proposée via offer(), le Diagnostic Management (DM) répond de manière autonome avec le NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. Si la limite configurée de messages Response Pending est atteinte, le serveur interrompt le traitement et répond avec le NRC 0x10 (generalReject) [SWS_DM_00369].
Concurrence et interaction
La méthode est déclarée comme noexcept et est sûre vis-à-vis des exceptions [SWS_DM_00636]. Sa sécurité vis-à-vis des threads est conditionnelle : le fait que l'implémentation doive être sûre pour les threads est contrôlé par le ConcurrencyType transmis dans le constructeur [SWS_DM_00636]. Si readWrite est défini sur kConcurrent, le DM est autorisé à lancer les accès en lecture et en écriture de manière concurrente, sinon (kNotConcurrent), l'appel a lieu de manière séquentielle [SWS_DM_00939]. À la différence d'interfaces spécifiques telles que [SWS_DM_00640], GenericDataIdentifier couvre des plages de DID génériques de manière flexible grâce à l'ID transmis [SWS_DM_00636].
Cette note d'utilisation a été générée automatiquement sur la base de la spécification AUTOSAR.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
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.
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 : bd73a88bfde2ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation et contexte d'appel
La fonction membre StopOffer de la classe ara::diag::GenericDataIdentifier sert à désactiver le routage des messages de requête entrants provenant du Diagnostic Management (DM) vers l'instance respective [SWS_DM_00639]. L'appel s'effectue de manière synchrone via l'interface du fichier d'en-tête #include "ara/diag/generic_data_identifier.h"[SWS_DM_00639]. La fonction possède la signature void StopOffer() noexcept;, ne prend aucun paramètre d'entrée et ne renvoie aucune valeur de retour [SWS_DM_00639].
Gestion des erreurs et concurrence
La spécification définit StopOffer comme sûre vis-à-vis des exceptions (exception safe) et garantit l'absence d'exceptions via l'identifiant noexcept[SWS_DM_00639]. Aucun code d'erreur spécifique, réaction aux erreurs ou message vers DET ou DEM n'est prévu pour cette opération. Concernant la concurrence, la méthode est classée comme non thread-safe (not thread-safe) [SWS_DM_00639]. Les appels parallèles sur la même instance doivent donc être synchronisés par l'appelant. Interprétation : les requêtes déjà commencées dans le Diagnostic Management devraient encore être traitées normalement avant l'arrêt définitif du routage. Question Q-94a464dc832c055c (ouverte)
Interaction au sein du module de diagnostic
Le modèle de retrait de la mise à disposition de service est standardisé et employé de manière cohérente dans le module de diagnostic. Des méthodes StopOffer analogues existent entre autres pour :
les identifiants de données spécifiques à un type via DataIdentifierInterface::StopOffer[SWS_DM_00600] ainsi que les éléments de données [SWS_DM_00617],
les routines génériques via GenericRoutine::StopOffer[SWS_DM_00558] et les interfaces de routine spécifiques à un type [SWS_DM_00595],
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 7b195835c98cProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode Write de la classe ara::diag::GenericDataIdentifier est appelée par le Diagnostic Management dès qu'une requête UDS du service WriteDataByIdentifier (0x2E) est reçue [SWS_DM_00637]. Le prérequis pour l'appel est que l'identifiant de données demandé soit pris en charge et que la session de diagnostic ainsi que le niveau de sécurité respectifs autorisent l'exécution [SWS_DM_00186], [SWS_DM_00415], [SWS_DM_00416].
L'appel a lieu avec les paramètres suivants [SWS_DM_00637] :
dataIdentifier : l'identifiant 16 bits de l'identifiant de données à écrire.
requestData : un ara::core::Span contenant les données brutes de la requête sans préfixe DID. Le tampon reste valide jusqu'à ce que le Promise associé soit tenu ou que le traitement soit interrompu.
metaInfo : métadonnées supplémentaires relatives à la requête de diagnostic.
cancellationHandler : sert à surveiller une interruption prématurée de la conversation via IsCanceled ainsi qu'à enregistrer une notification d'interruption via SetNotifier.
L'exécution s'effectue de manière asynchrone et renvoie un ara::core::Future<void>[SWS_DM_00637]. En cas de traitement réussi, le Promise est tenu avec void pour un message de réponse positive. Si une erreur survient, le Future doit être complété avec une valeur de retour UDS négative (NRC) appropriée conformément à l'ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_00637]. La méthode est déclarée comme noexcept et doit être implémentée de manière sûre vis-à-vis des exceptions [SWS_DM_00637].
Concernant la concurrence, la sécurité vis-à-vis des threads est conditionnelle : le fait que Write doive être implémenté de manière sûre pour les threads dépend du ConcurrencyType transmis dans le constructeur lors de l'instanciation [SWS_DM_00637]. Une exécution parallèle des accès en lecture et en écriture est contrôlée par le drapeau readWrite[SWS_DM_00939].
Ce texte a été généré par une IA. Toutes les indications reposent exclusivement sur les spécifications de la Release R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
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.
gemini-3.8-flash-low· 2026-10-13 · Original allemand