Sert d'interface UDS générique pour le traitement asynchrone des requêtes de diagnostic entrantes dans le gestionnaire de diagnostic.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d0d38c589b70Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Sert d'interface UDS générique pour le traitement asynchrone des requêtes de diagnostic entrantes dans le gestionnaire de diagnostic.
En tant que gestionnaire de service UDS générique, la classe ara::diag::GenericUDSService permet la réception et le traitement de requêtes de diagnostic UDS quelconques via le gestionnaire de diagnostic AUTOSAR [SWS_DM_00616]. Après la liaison à un prototype de port, le service est activé via Offer(), traite les requêtes de manière asynchrone dans la méthode HandleMessage() et est désenregistré avec StopOffer()[SWS_DM_00618], [SWS_DM_00619], [SWS_DM_00620]. L'instance n'est ni copiable ni déplaçable et signale les erreurs via des NRC issus de DiagUdsNrcErrc[SWS_DM_01657], [SWS_DM_00618].
Contexte
La classe ara::diag::GenericUDSService fournit une interface de service générique pour la communication de diagnostic selon UDS (Unified Diagnostic Services). Elle sert de classe de base pour les applications qui souhaitent implémenter et traiter des services UDS personnalisés ou non couverts par des interfaces dédiées. L'interaction s'effectue pour l'essentiel entre le composant d'application effectuant le diagnostic, le gestionnaire de diagnostic (DM) AUTOSAR ainsi que le contexte de modélisation sous-jacent. Le raccordement au gestionnaire de diagnostic et au modèle de plateforme a lieu lors de l'instanciation via un ara::core::InstanceSpecifier qui référence un prototype de port correspondant d'un DiagnosticGenericUdsInterface[SWS_DM_00616]. Dès que l'enregistrement est activé via l'interface, le gestionnaire de diagnostic transmet les requêtes UDS entrantes à l'instance implémentée [SWS_DM_00619].
Diagramme de contexte : contexte de composant et d'interaction d'ara::diag::GenericUDSService avec le DM et l'application. Sources : [SWS_DM_00616], [SWS_DM_00618], [SWS_DM_00619]
Cycle de vie
Une instance de ara::diag::GenericUDSService est liée à un prototype de port fixe et conçue comme un exemplaire unique : le constructeur de copie [SWS_DM_01657], le constructeur de déplacement [SWS_DM_01658] ainsi que les opérateurs d'affectation [SWS_DM_01655], [SWS_DM_01656] sont supprimés (delete). La création a lieu explicitement via le constructeur avec indication d'un InstanceSpecifier et de la configuration de concurrence ConcurrencyType (kConcurrent ou kNotConcurrent) [SWS_DM_00616]. Le cycle de vie de la disponibilité du service se divise en deux phases principales :
Non offert (Stopped / Initial) : après la construction ou après l'appel de StopOffer(), le DM ne transmet aucune requête à l'instance [SWS_DM_00620].
Offert (Offered) : après l'appel réussi de Offer(), le gestionnaire est actif et traite les messages de diagnostic entrants [SWS_DM_00619].
La destruction s'effectue via le destructeur virtuel ~GenericUDSService()[SWS_DM_00584]. En ce qui concerne la sécurité multithread, le constructeur est spécifié comme étant à sécurité multithread, tandis que Offer(), StopOffer() et le destructeur ne sont pas à sécurité multithread et nécessitent une synchronisation externe [SWS_DM_00616], [SWS_DM_00619], [SWS_DM_00620], [SWS_DM_00584].
Le déroulement régulier comprend l'instanciation de la classe de service dérivée, l'activation du gestionnaire, le traitement asynchrone des ordres et la désactivation ultérieure :
Instanciation : l'application instancie la classe de service spécialisée avec le ara::core::InstanceSpecifier approprié ainsi que le ConcurrencyType souhaité [SWS_DM_00616].
Offrir le service : l'appel de Offer() signale au gestionnaire de diagnostic que l'on est prêt à accepter des messages [SWS_DM_00619].
Traitement des messages : les requêtes UDS entrantes entraînent l'appel de la méthode purement virtuelle HandleMessage() par le DM. Sont transmis l'identifiant de service (sid), les données utiles (requestData), les métadonnées (metaInfo) et un cancellationHandler[SWS_DM_00618]. La méthode renvoie un ara::core::Future<OperationOutput> par lequel le résultat ou une erreur est mis à disposition de façon asynchrone [SWS_DM_00618]. Le gestionnaire peut vérifier via cancellationHandler.IsCanceled() si l'opération a été annulée ou enregistrer une notification via cancellationHandler.SetNotifier()[SWS_DM_00618].
Terminer le service : la transmission des requêtes prend fin au moyen de StopOffer() avant que l'instance ne soit détruite [SWS_DM_00620], [SWS_DM_00584].
Des situations d'erreur peuvent survenir lors de différentes phases et requièrent un traitement différencié :
Violations à l'instanciation : en cas d'échec de l'affectation du InstanceSpecifier dans le modèle, le framework signale des violations définies : InstanceSpecifierMappingIntegrityViolation (le spécificateur ne peut pas être résolu dans le modèle ou ne référence pas un PortPrototype), PortInterfaceMappingViolation (le port n'est pas référencé via un DiagnosticServiceGenericMapping), ProcessMappingViolation (aucun processus correspondant n'est modélisé) ou InstanceSpecifierAlreadyInUseViolation (le spécificateur est déjà utilisé dans le processus) [SWS_DM_00616].
Double appel d'offre : si Offer() est appelée alors que le service est déjà activement proposé, l'appel échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered (sémantique de rollback) [SWS_DM_00619].
Erreurs d'exécution liées au diagnostic : si un message UDS ne peut pas recevoir de réponse fonctionnellement positive dans HandleMessage(), le résultat dans Future doit être renseigné avec un Negative Response Code (NRC) approprié selon l'ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_00618]. De plus, l'implémentation doit réagir aux signaux d'annulation du cancellationHandler si la conversation de diagnostic sous-jacente a été interrompue prématurément [SWS_DM_00618].
Ce guide de classe a été généré automatiquement sur la base du standard AUTOSAR.
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 DiagnosticGenericUdsInterface needs to be referenced by a DiagnosticServiceGenericMapping. 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 DiagnosticGenericUdsInterface.
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 38c6453769b1Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode HandleMessage de ara::diag::GenericUDSService sert au traitement spécifique à l'application des requêtes de diagnostic UDS entrantes [SWS_DM_00618].
Utilisation
Le Diagnostic Management (DM) appelle la méthode pour chaque message de requête de diagnostic reçu [SWS_DM_00618]. À partir des paramètres, l'identifiant de service (sid), les données utiles (requestData sous la forme de ara::core::Span<const std::uint8_t>), les informations de connexion (metaInfo) ainsi qu'un cancellationHandler sont transmis. Le traitement s'effectue de manière asynchrone via le renvoi d'un ara::core::Future<OperationOutput>[SWS_DM_00618]. Les données utiles dans requestData restent valides jusqu'à ce que le Promise associé soit tenu ou que l'opération soit annulée. Via cancellationHandler.IsCanceled(), l'application peut vérifier l'état d'annulation ou, au moyen de cancellationHandler.SetNotifier(), enregistrer une notification pour les interruptions de session [SWS_DM_00618].
Gestion des erreurs
Si une demande ne peut pas être traitée avec succès, l'application signale l'erreur via le Future renvoyé au moyen d'un code de réponse négative approprié (NRC selon l'ISO 14229-1) par DiagUdsNrcErrc[SWS_DM_00618].
Concurrence et contraintes
Durée de vie de metaInfo : la validité de l'objet metaInfo est strictement limitée à la durée d'exécution active de l'appel de méthode [SWS_DM_01345]. Un enregistrement ou une utilisation après le retour de HandleMessage conduit à un comportement indéfini.
Réentrance et concurrence : le ara::diag::ConcurrencyType défini dans le constructeur SWS Diagnostics §7.3.1.2 « Concurrency of ara::diag interfaces » détermine si les appels doivent être sûrs pour les threads. Avec kConcurrent, le DM peut appeler des requêtes ultérieures en parallèle ; avec kNotConcurrent, le DM attend que le résultat de la requête en cours ait été fourni.
Cette note d'utilisation a été générée automatiquement sur la base de la spécification AUTOSAR Adaptive 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
sid
Diagnostic Request Service Identifier.
requestData
Diagnostic request data (starting after SID). 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.
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 : 19027d24302fProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode Offer de la classe ara::diag::GenericUDSService active le transfert des requêtes de diagnostic : elle permet au Diagnostic Manager (DM) de transférer les messages de requête UDS entrants à ce gestionnaire [SWS_DM_00619]. L'appel synchrone n'a pas de paramètres, n'est pas bloquant et fournit un ara::core::Result<void> comme valeur de retour [SWS_DM_00619]. L'exécution devrait typiquement (Interprétation :) avoir lieu pendant la phase d'initialisation et de démarrage de l'Adaptive Application, avant que les messages de diagnostic ne doivent être traités sur le réseau. Question Q-c1e385a434fe1e4e (ouverte)
Gestion des erreurs et concurrence
La fonction est déclarée avec noexcept et garantit la sécurité vis-à-vis des exceptions [SWS_DM_00619]. Si le service a déjà été proposé auparavant, l'enregistrement échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered avec une sémantique de rollback [SWS_DM_00619]. Concernant la sécurité des threads, l'interface est spécifiée comme not thread-safe[SWS_DM_00619] ; les appels simultanés sur la même instance doivent être synchronisés par l'application appelante.
Interaction
La proposition via Offer correspond au modèle d'enregistrement standardisé dans le sous-système de diagnostic AUTOSAR Adaptive, tel qu'il est spécifié de manière comparable pour les routines ([SWS_DM_00557]) ou les identifiants de données ([SWS_DM_00638]). Bien que la nomenclature s'inspire de ara::com, il s'agit d'une méthode spécifique au diagnostic du Diagnostic Manager AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors ».
Cette note d'utilisation a été générée par une IA sur la base de la spécification AUTOSAR R25-11.
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 : 5dba8a8b4077ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode StopOffer de la classe ara::diag::GenericUDSService désactive le transfert des requêtes de diagnostic entrantes depuis le Diagnostic Management (DM) vers l'instance de service [SWS_DM_00620]. La fonction est fournie via l'en-tête ara/diag/generic_uds_service.h, n'attend aucun paramètre et a pour type de retour void[SWS_DM_00620].
Gestion des erreurs
La méthode est spécifiée avec noexcept et comme sûre vis-à-vis des exceptions (exception safe) [SWS_DM_00620]. Elle ne lève aucune exception et ne renvoie aucun code d'erreur ; l'arrêt du transfert s'effectue de manière déterministe.
Concurrence et restrictions
Selon la spécification, StopOffer est classée comme non sûre pour les threads (not thread-safe) [SWS_DM_00620]. Les appels parallèles pour la même instance doivent être sécurisés côté application. Interprétation : l'appel de StopOffer devrait typiquement intervenir avant la destruction de l'objet d'instance ou en cas d'indisponibilité temporaire, afin d'empêcher les transferts en attente. Question Q-408323dd00c313c0 (ouverte)
Interaction
Le concept de StopOffer suit un patron architectural cohérent au sein de ara::diag, tel qu'on le retrouve également pour les routines génériques [SWS_DM_00558], les identifiants de données génériques [SWS_DM_00639], le Security Access [SWS_DM_00767] ainsi que les moniteurs [SWS_DM_01089]. Bien que les dénominations s'inspirent de ara::com, il s'agit d'une implémentation autonome du Diagnostic Management AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors ».
Cette note d'utilisation a été générée par une IA et se base exclusivement sur les spécifications de la version R25-11 d'AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Original allemand