Notifica estados de habilitación relativos al vehículo y al sistema al Diagnostic Management para la evaluación de condiciones de diagnóstico.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 40db6d76454cProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Notifica estados de habilitación relativos al vehículo y al sistema al Diagnostic Management para la evaluación de condiciones de diagnóstico.
La clase ara::diag::Condition proporciona la interfaz DiagnosticConditionInterface con la que las aplicaciones adaptativas notifican condiciones de entorno y de habilitación al Diagnostic Management ([SWS_DM_00712]). El Diagnostic Server evalúa estos estados para controlar de forma orientada la ejecución de funciones de diagnóstico normalizadas o procesos de borrado en el vehículo (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). Las instancias están vinculadas de manera fija a un prototipo de puerto y no son ni copiables ni movibles. En caso de uso concurrente, las operaciones de consulta y de asignación requieren sincronización externa, ya que no son seguras para subprocesos.
Contexto
La clase ara::diag::Condition representa la interfaz de programación para condiciones de diagnóstico (DiagnosticConditionInterface) en la AUTOSAR Adaptive Platform ([SWS_DM_00712]). En los sistemas de diagnóstico de vehículos, ciertas funciones de diagnóstico o servicios UDS solo deben ejecutarse si el vehículo se encuentra en un estado de entorno definido, como por ejemplo con el vehículo parado y una velocidad de cero (AUTOSAR_AP_SWS_Diagnostics §7.3.2.5.5 «Condition checks»). Conforme a [SWS_DM_00111], el Diagnostic Server realiza las comprobaciones de entorno correspondientes cuando ISO 14229-1 prescribe comprobaciones de condiciones específicas del servicio, y responde en caso de incumplimiento con un Negative Response Code (NRC) configurado.
Dentro de la arquitectura de la aplicación, ara::diag::Condition actúa como enlace entre la aplicación adaptativa y el Diagnostic Management (DM). Una aplicación instancia el objeto de condición a través de un puerto que en el modelo está vinculado bien mediante un DiagnosticEnableConditionPortMapping o un DiagnosticClearConditionPortMapping ([SWS_DM_00712]). Interpretación: Mediante esta asignación de puerto se determina si el estado notificado sirve como condición de habilitación para flujos de diagnóstico regulares o como criterio para el borrado de datos de diagnóstico. Pregunta (abierta) El objeto encapsula así la transmisión de estado al Diagnostic Server, el cual evalúa las condiciones para las solicitudes de diagnóstico entrantes ([SWS_DM_00111]).
La creación de un objeto ara::diag::Condition se realiza explícitamente pasando un ara::core::InstanceSpecifier al constructor ([SWS_DM_00712]). Este identificador hace referencia al prototipo de puerto modelado de la aplicación. El constructor está declarado como noexcept y garantiza seguridad frente a excepciones así como para subprocesos ([SWS_DM_00712]).
En lo relativo a la propiedad, la clase está concebida como una instancia individual estricta: tanto el constructor de copia ([SWS_DM_01625]) como el operador de asignación por copia ([SWS_DM_01623]) están eliminados (=delete). Del mismo modo, el constructor de movimiento ([SWS_DM_01626]) y el operador de asignación por movimiento ([SWS_DM_01624]) están eliminados. Un objeto de condición no puede ni copiarse ni moverse, lo que garantiza una asignación fija 1:1 al puerto respectivo.
Durante el funcionamiento normal, los métodos SetCondition ([SWS_DM_00715]) y GetCondition ([SWS_DM_00714]) están especificados como no seguros para subprocesos. En caso de accesos paralelos desde múltiples subprocesos, la aplicación que realiza la llamada debe garantizar una sincronización externa. El ciclo de vida finaliza con el destructor ~Condition() ([SWS_DM_00713]), el cual es noexcept y seguro frente a excepciones, aunque tampoco es seguro para subprocesos.
Ruta de uso
La ruta de uso típica incluye la inicialización, la actualización recurrente del estado, así como la consulta de la condición:
Inicialización: La aplicación instancia ara::diag::Condition indicando el ara::core::InstanceSpecifier correspondiente ([SWS_DM_00712]) para la vinculación con la configuración del modelo.
Establecer estado: Si cambia el estado determinante del vehículo o del sistema, la aplicación actualiza la condición mediante SetCondition(condition) ([SWS_DM_00715]). La llamada confirma la adopción con un ara::core::Result<void>.
Consultar estado: Para comprobar el estado actual, la aplicación llama a GetCondition() ([SWS_DM_00714]). El resultado se proporciona de forma asíncrona a través de un ara::core::Future<ConditionType>.
Procesamiento del servidor: Interpretación: El Diagnostic Server accede internamente al estado registrado para comprobar las solicitudes de diagnóstico pendientes ([SWS_DM_00111]). Pregunta Q-bbf48f735ef80e33 (abierta)
Finalización: Al terminar el componente, el objeto se libera a través del destructor ([SWS_DM_00713]).
Pueden producirse estados de error tanto durante la instanciación del objeto como en tiempo de ejecución:
Violaciones del constructor: Durante la creación ([SWS_DM_00712]), el framework valida la configuración frente al modelo de software. Las posibles violaciones incluyen:
InstanceSpecifierMappingIntegrityViolation: El identificador no se puede resolver en el modelo o no hace referencia a ningún PortPrototype ([SWS_DM_00712]).
PortInterfaceMappingViolation: Aunque el PortPrototype está tipificado por DiagnosticConditionInterface, no está referenciado ni por un DiagnosticEnableConditionPortMapping ni por un DiagnosticClearConditionPortMapping ([SWS_DM_00712]).
ProcessMappingViolation: No existe ningún proceso modelado coincidente en tiempo de ejecución para la referencia de instancia ([SWS_DM_00712]).
InstanceSpecifierAlreadyInUseViolation: El identificador ya está siendo utilizado por otra instancia en el mismo proceso ([SWS_DM_00712]).
Fallo de servicios básicos de diagnóstico:GetCondition() ([SWS_DM_00714]) puede fallar a través del ara::core::Future devuelto con el error DiagErrc::kServiceNotAvailable si las funcionalidades básicas del Diagnostic Management son temporalmente inaccesibles.
Almacenamiento de estado sin errores: Para SetCondition() ([SWS_DM_00715]) no hay definidos códigos de error estandarizados; la función notifica el éxito directamente mediante un ara::core::Result<void> vacío.
Este texto ha sido elaborado por una IA. Todas las afirmaciones técnicas se basan exclusivamente en las especificaciones AUTOSAR 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 typed by a pingViolation DiagnosticConditionInterface needs either to be referenced by a DiagnosticEnableConditionPortMapping or a DiagnosticClearConditionPortMapping. 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 DiagnosticConditionInterface.
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