Permet de définir et d'interroger plusieurs conditions de diagnostic via une interface commune à l'aide de descripteurs (handles).
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 2f3f3f7d9426ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet de définir et d'interroger plusieurs conditions de diagnostic via une interface commune à l'aide de descripteurs (handles).
La classe ara::diag::MultipleCondition sert à l'interrogation et à la mise à jour groupées de plusieurs conditions de diagnostic via une interface de port commune à l'aide de handles numériques ([SWS_DM_01730]). Les applications instancient l'objet via un InstanceSpecifier et contrôlent de manière ciblée les conditions au moyen de SetCondition et GetCondition ([SWS_DM_01729]). Comme contrainte essentielle, la classe n'est ni copiable ni déplaçable, et son destructeur n'est pas thread-safe. De plus, toutes les conditions adressées doivent être configurées de manière cohérente dans le modèle via des mappages de ports afin d'éviter les erreurs d'initialisation et d'exécution.
Contexte
La classe ara::diag::MultipleCondition permet à une application adaptative d'administrer et de modifier de manière groupée plusieurs conditions de diagnostic via une interface commune ([SWS_DM_01730]). D'un point de vue fonctionnel et sémantique, elle offre les mêmes fonctionnalités que des conditions individuelles, mais étend toutefois les opérations avec l'adressage ciblé via un handle d'identification (AUTOSAR_AP_SWS_Diagnostics p. 237). Chaque condition de diagnostic gérée (DiagnosticCondition) nécessite dans le modèle une association via un DiagnosticMultipleConditionPortMapping avec un port typé de manière appropriée ([SWS_DM_01727], AUTOSAR_AP_SWS_Diagnostics p. 237). L'adressage s'effectue via le type ConditionHandleType ; en l'absence de valeur overrideId explicite, le Diagnostic Management (DM) attribue des valeurs numériques croissantes à partir de 0x010000 dans l'ordre alphabétique des noms courts ([SWS_DM_01735]).
Une instance est créée via le constructeur MultipleCondition en lui transmettant un ara::core::InstanceSpecifier ([SWS_DM_01727]). La création est thread-safe et déclarée comme noexcept ([SWS_DM_01727]). L'objet possède une liaison stricte à sa portée locale : les opérations de copie tout comme de déplacement sont supprimées ; le constructeur de copie ([SWS_DM_02072]), le constructeur de déplacement ([SWS_DM_02071]), l'opérateur d'affectation par copie ([SWS_DM_02073]) et l'opérateur d'affectation par déplacement ([SWS_DM_02074]) ne sont pas disponibles (=delete).
Le destructeur ~MultipleCondition() est explicitement spécifié comme non thread-safe ([SWS_DM_01737]). L'application doit par conséquent s'assurer qu'avant la destruction, tous les accès concurrents à l'objet sont terminés. Une sécurité de thread conditionnelle s'applique aux appels de méthodes ordinaires ([SWS_DM_01728], [SWS_DM_01729]). Interprétation : étant donné que la signature du constructeur selon [SWS_DM_01727] n'accepte aucun paramètre de concurrence explicite, le ConcurrencyType requis est vraisemblablement déterminé via le modèle de port sous-jacent dans le manifeste. Question Q-f29def512a68aae9 (ouverte)
Parcours d'utilisation
Le déroulement typique lors de l'interaction avec des conditions de diagnostic comprend les étapes suivantes :
Initialisation : l'application instancie la classe en spécifiant le port cible ([SWS_DM_01727]).
Définition de l'état : avec SetCondition(conditionHandle, condition), l'application transmet un changement d'état pour la condition spécifiée et vérifie le ara::core::Result<void> résultant ([SWS_DM_01729]).
Interrogation de l'état : via GetCondition(conditionHandle), l'état actuel de la condition adressée est demandé de manière asynchrone sous la forme d'un ara::core::Future<ConditionType> ([SWS_DM_01728]).
Libération des ressources : lors de la sortie de la portée, le destructeur démantèle l'interface de manière ordonnée ([SWS_DM_01737]).
Lors de l'utilisation, il convient de distinguer les erreurs de construction liées à la modélisation et les erreurs fonctionnelles à l'exécution :
Violations de construction ([SWS_DM_01727]) :
Si la résolution du InstanceSpecifier échoue ou si celui-ci ne référence pas un PortPrototype, une InstanceSpecifierMappingIntegrityViolation est signalée. Une PortInterfaceMappingViolation se produit si le port n'est pas typé selon un DiagnosticMultipleConditionInterface. S'il manque au processus l'équivalent modélisé, une ProcessMappingViolation est générée. Si le même InstanceSpecifier est instancié plusieurs fois dans le processus, cela se traduit par une InstanceSpecifierAlreadyInUseViolation.
Erreurs d'exécution lors d'appels de méthodes :
Si un paramètre non autorisé ou un descripteur non valide est transmis à SetCondition ([SWS_DM_01729]) ou GetCondition ([SWS_DM_01728]), les méthodes renvoient l'erreur DiagErrc::kInvalidArgument. Si la fonctionnalité de base du Diagnostic Management est temporairement inaccessible, GetCondition acquitte l'appel par DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
Ce guide se base exclusivement sur les spécifications de l'AUTOSAR Adaptive Platform R25-11.
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 referenced by a pingViolation DiagnosticMultipleConditionPortMapping needs to be typed by a DiagnosticMultipleConditionInterface. 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 DiagnosticMultipleConditionInterface
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original allemand