Permite definir y consultar múltiples condiciones de diagnóstico mediante handles a través de una interfaz común.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2f3f3f7d9426ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite definir y consultar múltiples condiciones de diagnóstico mediante handles a través de una interfaz común.
La clase ara::diag::MultipleCondition sirve para consultar y actualizar de forma agrupada múltiples condiciones de diagnóstico a través de una interfaz de puerto común mediante handles numéricos ([SWS_DM_01730]). Las aplicaciones instancian el objeto a través de un InstanceSpecifier y controlan condiciones de forma selectiva mediante SetCondition y GetCondition ([SWS_DM_01729]). Como condición de contorno esencial, la clase no es copiable ni desplazable, y su destructor no es seguro para subprocesos. Además, todas las condiciones direccionadas en el modelo deben estar configuradas de forma coherente mediante mapeos de puertos, a fin de evitar errores de inicialización y de tiempo de ejecución.
Contexto
La clase ara::diag::MultipleCondition permite a una aplicación adaptativa la gestión y modificación agrupadas de múltiples condiciones de diagnóstico a través de una interfaz común ([SWS_DM_01730]). Funcional y semánticamente, ofrece las mismas capacidades que las condiciones individuales, pero amplía las operaciones con el direccionamiento selectivo a través de un handle de identificación (AUTOSAR_AP_SWS_Diagnostics p. 237). Cada condición de diagnóstico gestionada (DiagnosticCondition) requiere en el modelo una vinculación mediante un DiagnosticMultipleConditionPortMapping con un puerto debidamente tipificado ([SWS_DM_01727], AUTOSAR_AP_SWS_Diagnostics p. 237). El direccionamiento se efectúa mediante el tipo ConditionHandleType; si no existe un valor explícito de overrideId, el Diagnostic Management (DM) asigna valores numéricos ascendentes a partir de 0x010000 en orden alfabético de los nombres cortos ([SWS_DM_01735]).
Una instancia se crea a través del constructor MultipleCondition suministrando un ara::core::InstanceSpecifier ([SWS_DM_01727]). La creación es segura para subprocesos y está declarada como noexcept ([SWS_DM_01727]). El objeto posee una estricta vinculación con su ámbito local: tanto las operaciones de copia como las de movimiento están eliminadas; el constructor de copia ([SWS_DM_02072]), el constructor de movimiento ([SWS_DM_02071]), el operador de asignación por copia ([SWS_DM_02073]) y el operador de asignación por movimiento ([SWS_DM_02074]) no están disponibles (=delete).
El destructor ~MultipleCondition() está especificado explícitamente como no seguro para subprocesos ([SWS_DM_01737]). Por lo tanto, la aplicación debe asegurarse de que antes de la destrucción hayan concluido todos los accesos concurrentes al objeto. Para las llamadas a métodos regulares rige una seguridad para subprocesos condicional ([SWS_DM_01728], [SWS_DM_01729]). Interpretación: dado que la signatura del constructor según [SWS_DM_01727] no acepta ningún parámetro explícito de concurrencia, es de suponer que el ConcurrencyType requerido se determine previsiblemente mediante el modelo de puertos subyacente en el manifiesto. Pregunta Q-f29def512a68aae9 (abierta)
Ruta de uso
La secuencia típica durante la interacción con condiciones de diagnóstico comprende los siguientes pasos:
Inicialización: la aplicación instancia la clase especificando el puerto de destino ([SWS_DM_01727]).
Establecer estado: mediante SetCondition(conditionHandle, condition), la aplicación transmite un cambio de estado para la condición especificada y comprueba el ara::core::Result<void> resultante ([SWS_DM_01729]).
Consultar estado: mediante GetCondition(conditionHandle) se solicita el estado actual de la condición direccionada de forma asíncrona como ara::core::Future<ConditionType> ([SWS_DM_01728]).
Liberación de recursos: Al salir del ámbito de validez, el destructor desmantela la interfaz de forma ordenada ([SWS_DM_01737]).
Durante el uso deben distinguirse los errores de construcción debidos al modelado y los errores funcionales de tiempo de ejecución:
Infracciones de construcción ([SWS_DM_01727]):
Si falla la resolución de InstanceSpecifier o este no hace referencia a un PortPrototype, se notifica una InstanceSpecifierMappingIntegrityViolation. Se produce una PortInterfaceMappingViolation si el puerto no está tipificado para un DiagnosticMultipleConditionInterface. Si al proceso le falta la contraparte modelada, se genera una ProcessMappingViolation. Si el mismo InstanceSpecifier se instancia varias veces en el proceso, esto da lugar a una InstanceSpecifierAlreadyInUseViolation.
Errores de tiempo de ejecución en llamadas a métodos:
Si se pasa un parámetro no permitido o un manejador no válido a SetCondition ([SWS_DM_01729]) o GetCondition ([SWS_DM_01728]), los métodos devuelven el error DiagErrc::kInvalidArgument. Si la funcionalidad básica de Diagnostic Management no responde temporalmente, GetCondition acusa la llamada con DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
Esta guía se basa exclusivamente en las especificaciones de 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 en alemán