Permet aux applications le traitement générique des services RoutineControl UDS avec transfert de données asynchrone.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : ed3ab770d945ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet aux applications le traitement générique des services RoutineControl UDS avec transfert de données asynchrone.
La classe fournit un gestionnaire générique pour les services RoutineControl UDS et transmet les requêtes pour différents identifiants de routine aux applications adaptatives [SWS_DM_00552]. Les développeurs implémentent les actions de routine requises via des méthodes asynchrones telles que Start et activent la transmission des messages par Offer[SWS_DM_00557]. Comme les instances ne sont ni copiables ni déplaçables, le cycle de vie et la concurrence doivent être gérés précisément via le constructeur et la configuration de l'interface. Les opérations en cours prennent en charge les annulations coopératives ainsi que les codes d'erreur UDS standardisés.
Contexte
La classe ara::diag::GenericRoutine fournit l'interface générique pour le traitement des routines de diagnostic conformément à l'ISO 14229-1 (UDS RoutineControl, service 0x31) dans l'AUTOSAR Adaptive Platform. Elle fait office de passerelle entre le Diagnostic Management (DM) central et l'application adaptative. Une instance de cette classe est liée à un prototype de port modélisé de type DiagnosticRoutineGenericInterface, qui doit être référencé via un DiagnosticServiceGenericMapping dans le modèle [SWS_DM_00552]. Contrairement aux interfaces de routines spécifiques à un type, GenericRoutine transmet les données brutes de la requête de diagnostic sous la forme de ara::core::Span<const std::uint8_t> avec l'identifiant de routine concret (routineId) à l'application [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. Ainsi, un seul gestionnaire peut desservir plusieurs routines de manière flexible.
Cycle de vie
Les instances de GenericRoutine sont liées à leur port spécifique et ne doivent être ni copiées ni déplacées ; le constructeur de copie et de déplacement ainsi que les opérateurs d'affectation sont explicitement supprimés [SWS_DM_01637], [SWS_DM_01638], [SWS_DM_01635], [SWS_DM_01636]. L'initialisation s'effectue via le constructeur en indiquant le ara::core::InstanceSpecifier ainsi que le comportement de concurrence (ConcurrencyType : kConcurrent ou kNotConcurrent) [SWS_DM_00552]. Ce paramètre détermine si les méthodes d'exécution virtuelles doivent être implémentées de manière thread-safe.
Après la création, le DM ne transmet initialement aucun message au gestionnaire. Ce n'est que par l'appel de Offer() que la transmission est activée [SWS_DM_00557]. StopOffer() permet de désactiver à nouveau la transmission [SWS_DM_00558] avant que l'instance ne soit libérée par le destructeur virtuel ~GenericRoutine()[SWS_DM_00553]. Alors que le constructeur est thread-safe, Offer(), StopOffer() et le destructeur ne sont pas thread-safe et nécessitent une synchronisation externe [SWS_DM_00552], [SWS_DM_00557], [SWS_DM_00558], [SWS_DM_00553].
Pour fournir une routine générique, une application dérive de GenericRoutine et redéfinit les méthodes virtuelles requises. La méthode Start (sous-fonction UDS 0x01) est purement virtuelle (pure virtual) et doit impérativement être implémentée [SWS_DM_00554]. Les méthodes Stop (sous-fonction 0x02) [SWS_DM_00555] et RequestResults (sous-fonction 0x03) [SWS_DM_00556] sont des méthodes virtuelles ; interprétation : comme elles ne sont pas purement virtuelles, elles ne devraient avoir besoin d'être redéfinies que si la routine respective prend fonctionnellement en charge l'arrêt ou la consultation séparée des résultats. Question (ouverte)
Le déroulement standard comprend les phases suivantes :
Instanciation : création du gestionnaire dérivé avec la référence de port et le mode de concurrence [SWS_DM_00552].
Activation : appel de Offer() pour autoriser la transmission pour le DM [SWS_DM_00557].
Exécution : lors de la réception de requêtes UDS, le DM appelle Start, Stop ou RequestResults. L'application reçoit routineId, requestData, metaInfo ainsi qu'un CancellationHandler et renvoie un ara::core::Future<OperationOutput>[SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556]. La validité de requestData est garantie jusqu'à ce que la promesse correspondante soit tenue ou que l'opération soit annulée [SWS_DM_00554].
Traitement de l'annulation : l'application peut vérifier l'état d'annulation via cancellationHandler.IsCanceled() ou enregistrer un callback via cancellationHandler.SetNotifier()[SWS_DM_00554]. Interprétation : en cas d'annulation, l'application devrait mettre fin prématurément aux activités en arrière-plan en cours et résoudre la promesse dans les meilleurs délais. Question (ouverte)
Désactivation : arrêt de la transmission via StopOffer()[SWS_DM_00558] avant la destruction de l'objet.
Diagramme de séquence : déroulement typique de l'enregistrement, de l'exécution de routine et de la désinscription. Sources : [SWS_DM_00557], [SWS_DM_00554], [SWS_DM_00558]
Scénarios d'erreur
Des erreurs peuvent survenir aussi bien lors de la configuration que pendant l'exécution et le fonctionnement :
Violations de modèle et d'affectation : si la résolution de InstanceSpecifier échoue dans le modèle, qu'il n'est pas identifié comme PortPrototype ou qu'aucun DiagnosticServiceGenericMapping correspondant n'existe, le framework signale des violations telles que InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation ou InstanceSpecifierAlreadyInUseViolation[SWS_DM_00552].
Erreur de mise à disposition : si Offer() est appelé alors que le service est déjà proposé, l'appel échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered[SWS_DM_00557].
Codes d'erreur de diagnostic (NRC) : si une opération de routine ne peut pas se terminer avec succès ou si la requête contient des paramètres non valides, l'application ne remplit pas le future renvoyé avec OperationOutput, mais avec un Negative Response Code (NRC) UDS approprié issu de DiagUdsNrcErrc conformément à l'ISO 14229-1 [SWS_DM_00554], [SWS_DM_00555], [SWS_DM_00556].
Ce guide de classe se base sur la spécification AUTOSAR Adaptive Platform R25-11 et a été généré de manière automatisée.
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 DiagnosticRoutineGenericInterface 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 DiagnosticRoutineGenericInterface.
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 : 36b2772d0811ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La fonction Offer de la classe ara::diag::GenericRoutine permet à Diagnostic Management (DM) de transférer les messages de requête de diagnostic entrants pour une routine vers le gestionnaire enregistré [SWS_DM_00557]. L'appel s'effectue de manière synchrone, ne prend aucun paramètre et renvoie un ara::core::Result<void>[SWS_DM_00557]. La méthode étant déclarée avec la spécification noexcept, elle est considérée comme sûre vis-à-vis des exceptions (exception safe) [SWS_DM_00557].
Gestion des erreurs
Si la mise à disposition échoue, la méthode renvoie un résultat négatif. Si la routine a déjà été proposée auparavant pour l'instance concernée, la méthode renvoie le code d'erreur spécifique DiagOfferErrc::kAlreadyOffered[SWS_DM_00557]. Une sémantique de rollback est définie pour ce cas d'erreur, de sorte que l'état reste inchangé [SWS_DM_00557]. L'identifiant d'erreur kAlreadyOffered est en outre ancré dans les domaines d'erreur internes pour les appels de diagnostic [SWS_DM_00514].
Concurrence et restrictions
L'interface est expressément spécifiée comme non sûre pour les threads (not thread-safe) [SWS_DM_00557]. Si plusieurs threads d'une application accèdent au même gestionnaire, l'appel doit être synchronisé. Interprétation : l'appel devrait typiquement avoir lieu pendant l'initialisation, car aucune requête ne peut être reçue avant l'exécution de Offer. Question Q-0c42f415bcb0de20 (ouverte)
Interaction
La proposition de fonctionnalités via Offer est un modèle central dans le cluster de diagnostic AUTOSAR Adaptive ; elle est utilisée de manière analogue pour les interfaces de routine spécifiques à un type [SWS_DM_00594], les services UDS génériques [SWS_DM_00619] ainsi que les identifiants de données (Data Identifiers) [SWS_DM_00638]. Malgré l'homonymie avec ara::com, il s'agit d'une implémentation spécifique de Diagnostic Management SWS Diagnostics §7.3.4.1.2 « Monitors ».
Cette note d'utilisation a été préparée par une IA et s'appuie exclusivement sur la spécification AUTOSAR R25-11.
Called for RoutineControl with SubFunction RequestResults (0x03) request for this Diagnostic RoutineIdentifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : f4080ca4c8cdProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode RequestResults de la classe ara::diag::GenericRoutine est appelée par l'instance du serveur de diagnostic afin de traiter de manière générique les requêtes UDS RoutineControl du service 0x31 avec la sous-fonction requestRoutineResults (0x03) pour l'identificateur de routine de diagnostic paramétré ([SWS_DM_00575], [SWS_DM_00556]).
Lors de l'appel, l'identificateur de routine routineId, les métadonnées spécifiques à la requête metaInfo ainsi que les données d'entrée requestData sont transmis ([SWS_DM_00556]). La validité du span requestData est strictement limitée jusqu'à ce que le Promise correspondant soit satisfait ou que l'exécution soit interrompue ([SWS_DM_00556]). Un cancellationHandler transmis permet d'interroger l'état d'annulation via IsCanceled ainsi que d'enregistrer une fonction de notification via SetNotifier ([SWS_DM_00556]).
Le résultat est renvoyé de manière asynchrone sous forme de ara::core::Future<OperationOutput> ([SWS_DM_00556]). Interprétation : la mise à disposition des données de sortie devrait typiquement s'effectuer de manière asynchrone via un ara::core::Promise côté application. Question Q-f50c8509d7515e3f (ouverte) En cas de succès, le future fournit un OperationOutput, tandis qu'en cas d'erreur, un NRC UDS approprié conformément à l'ISO 14229-1 est transmis via DiagUdsNrcErrc ([SWS_DM_00556]). La fonction est déclarée comme noexcept et considérée comme sûre face aux exceptions ([SWS_DM_00556]).
Concernant la concurrence, la sécurité des threads est conditionnelle (conditional) : le fait que la méthode doive être implémentée de manière sûre du point de vue des threads est contrôlé de façon contraignante par le ConcurrencyType transmis au constructeur ([SWS_DM_00556]).
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier), 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.
Called for RoutineControl with SubFunction Start (0x01) request for this DiagnosticRoutine Identifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 9e819a027940Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode Start de la classe ara::diag::GenericRoutine est appelée dès qu'une requête de diagnostic pour RoutineControl avec la sous-fonction Start (0x01) arrive pour l'routineId spécifiée [SWS_DM_00554]. Contrairement à l'interface de routine typée selon [SWS_DM_00591], cette interface générique reçoit les données brutes du message de requête sous la forme d'un span d'octets.
Les exigences et propriétés d'interface suivantes s'appliquent à l'implémentation :
Contexte d'appel et paramètres : Outre l'routineId et les métadonnées (metaInfo), le paramètre requestData est transmis. La durée de vie des données de requête reste valide jusqu'à ce que la promise soit tenue ou que le traitement soit interrompu par le cancellationHandler[SWS_DM_00554].
Gestion de l'annulation : La routine peut interroger l'état d'annulation actuel au moyen de cancellationHandler.IsCanceled() ou enregistrer via cancellationHandler.SetNotifier() une fonction de notification appelée lors de l'interruption de la conversation [SWS_DM_00554].
Sémantique asynchrone : Le traitement s'effectue de manière non bloquante via ara::core::Future<OperationOutput>. En cas d'exécution réussie, OperationOutput fournit les données utiles pour la réponse positive [SWS_DM_00554].
Gestion des erreurs : Si l'exécution échoue, le future doit être complété avec un Negative Response Code (NRC) approprié selon l'ISO 14229-1 en utilisant DiagUdsNrcErrc[SWS_DM_00554].
Concurrence : La fonction est déclarée sûre face aux exceptions (noexcept). La nécessité que la mise à disposition soit thread-safe est déterminée par le ConcurrencyType transmis au constructeur [SWS_DM_00554].
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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). 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.
Called for RoutineControl with SubFunction Stop (0x02) request for this DiagnosticRoutine Identifier.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d8c6cb55284bProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La méthode Stop est appelée lors d'une requête RoutineControl UDS avec la sous-fonction Stop (0x02) pour la routine de diagnostic générique respective [SWS_DM_00555]. Contrairement aux interfaces de routines typées [SWS_DM_00592], elle reçoit l'identifiant de routine routineId ainsi que les données de requête sous forme d'un span de données brutes requestData[SWS_DM_00555].
Lors de l'utilisation, il convient de respecter les règles suivantes relatives aux paramètres et au déroulement [SWS_DM_00555] :
Durée de vie du span de données d'entrée : la zone mémoire de requestData reste valide jusqu'à ce que le Promise associé soit satisfait ou que l'exécution soit annulée via le cancellationHandler[SWS_DM_00555].
Gestion de l'annulation : l'application peut vérifier via cancellationHandler.IsCanceled() si la conversation de diagnostic courante a été annulée, ou enregistrer via cancellationHandler.SetNotifier une fonction de notification qui se déclenche en cas d'annulation [SWS_DM_00555].
Asynchronisme et retour : la fonction opère de manière asynchrone et renvoie un ara::core::Future<OperationOutput> qui, en cas de succès, contient les données de sortie pour la réponse positive UDS [SWS_DM_00555].
Le traitement des erreurs s'effectue via des valeurs de retour de diagnostic négatives : si l'arrêt de la routine échoue, le futur doit être complété avec un code d'erreur NRC UDS approprié selon l'ISO 14229-1 via DiagUdsNrcErrc[SWS_DM_00555].
Concernant la concurrence, la méthode est spécifiée comme noexcept et sûre face aux exceptions. La nécessité pour l'implémentation concrète d'être conçue pour être sûre pour les threads dépend du ConcurrencyType transmis lors de l'instanciation dans le constructeur [SWS_DM_00555].
Cette note d'utilisation est exclusivement basée sur les spécifications de la version R25-11 d'Adaptive 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaData 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 : 73588f5f0b57ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode ara::diag::GenericRoutine::StopOffer désactive le transfert des requêtes de diagnostic entrantes de Diagnostic Management (DM) vers l'instance de routine correspondante [SWS_DM_00558]. La fonction a pour signature void StopOffer() noexcept;, ne prend aucun paramètre et ne renvoie aucune valeur de retour [SWS_DM_00558]. L'appel est traité de manière synchrone et signale au DM que la routine n'accepte plus de requêtes à partir de ce moment.
Gestion des erreurs
L'opération est spécifiée comme exception safe et déclarée avec noexcept[SWS_DM_00558]. Aucun code d'erreur ni aucune exception C++ ne survient lors de l'exécution. Aucun message spécifique destiné à des instances de développement ou de mémoire d'événements (DET/DEM) n'est prévu pour cette interface dans le module de diagnostic.
Concurrence et restrictions
En ce qui concerne le comportement de threading, la méthode est désignée comme not thread-safe[SWS_DM_00558]. Les appels concurrents sur la même instance de ara::diag::GenericRoutine doivent donc être synchronisés du côté de l'application. Interprétation : un appel devrait surtout avoir lieu lorsqu'une routine est temporairement désactivée ou que l'application est arrêtée de manière contrôlée, après qu'un appel de mise à disposition a eu lieu au préalable. Question Q-e110ce01110699e3 (ouverte)
Interaction
La dénomination suit conceptuellement la proposition de service (service offering) de ara::com, mais constitue une implémentation distincte au sein de ara::diag et ne doit pas être confondue avec les offres de communication (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors »). Le même modèle de mise à disposition pour la désactivation du transfert de requêtes est également utilisé à l'échelle du module par d'autres classes de diagnostic telles que ara::diag::GenericUDSService[SWS_DM_00620], ara::diag::GenericDataIdentifier[SWS_DM_00639], des interfaces de routine [SWS_DM_00595] ainsi que ara::diag::Monitor[SWS_DM_01089].
Ce texte a été généré par une IA et repose exclusivement sur les documents de spécification d'AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original allemand