Permite a las aplicaciones adaptativas consultar y supervisar mediante eventos los indicadores de diagnóstico del vehículo.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7d81598b6e77ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a las aplicaciones adaptativas consultar y supervisar mediante eventos los indicadores de diagnóstico del vehículo.
La interfaz sirve para la consulta y supervisión estructuradas de indicadores de diagnóstico del vehículo dentro de la AUTOSAR Adaptive Platform. Las aplicaciones instancian el objeto a través de un identificador modelado y pueden consultar el estado actual mediante un método de consulta asíncrono [SWS_DM_00744]. Además, se puede registrar una función de callback definida por el usuario que recibe las actualizaciones de estado directamente cuando se producen cambios [SWS_DM_00745]. Como condición límite esencial, la instancia está estrictamente vinculada a un puerto, no se puede copiar ni mover y requiere sincronización frente a llamadas concurrentes tanto en el registro como en la destrucción.
Contexto
La clase ara::diag::Indicator actúa en el módulo diag de Adaptive Platform como representación central de DiagnosticIndicatorInterface[SWS_DM_00742]. Su tarea principal consiste en permitir a las aplicaciones acceder a indicadores de diagnóstico como luces de advertencia o indicadores de función (por ejemplo, una Malfunction Indicator Light, MIL).
En la interacción participan esencialmente tres componentes: una aplicación adaptativa usuaria (como un cuadro de instrumentos o un servicio HMI), la instancia de ara::diag::Indicator como terminal de interfaz local y el Diagnostic Management Daemon (DM). Este último procesa los eventos de diagnóstico de todo el vehículo y los estados de DTC de UDS, y proporciona la funcionalidad de diagnóstico subyacente [SWS_DM_00744].
Diagrama de contexto: interlocutores de la interfaz ara::diag::Indicator entre la lógica de aplicación y Diagnostic Management Daemon. Fuentes: [SWS_DM_00742], [SWS_DM_00744].
Ciclo de vida
La creación de un objeto ara::diag::Indicator se realiza explícitamente pasando un ara::core::InstanceSpecifier al constructor [SWS_DM_00742]. Este identificador vincula el objeto a un PortPrototype definido en el modelo de diseño, que debe estar tipificado obligatoriamente como DiagnosticIndicatorInterface[SWS_DM_00742].
En cuanto a las relaciones de propiedad y la semántica de objetos, ara::diag::Indicator está concebido como una instancia única estricta: no se permite copiar ni mover. En consecuencia, el constructor de copia [SWS_DM_01629], el constructor de movimiento [SWS_DM_01630], el operador de asignación de copia [SWS_DM_01627] y el operador de asignación de movimiento [SWS_DM_01628] están declarados como eliminados (=delete).
El ciclo de vida finaliza con la llamada al destructor ~Indicator()[SWS_DM_00743]. Mientras que el constructor y la consulta de estado están especificados como seguros para subprocesos [SWS_DM_00742], [SWS_DM_00744], el destructor no es seguro para subprocesos [SWS_DM_00743]. Por lo tanto, la aplicación que realiza la llamada debe asegurarse de que durante la destrucción ya no se produzcan llamadas a métodos concurrentes ni ejecuciones de notificadores.
Ruta de uso
Tras una inicialización exitosa, la clase admite dos modelos de uso complementarios para determinar el estado del indicador:
Notificación dirigida por eventos: a través de SetNotifier() se puede registrar una función de callback del tipo IndicatorStatusTypeNotifier[SWS_DM_00745], [SWS_DM_02129]. Tan pronto como cambia el estado del indicador, el entorno de tiempo de ejecución llama a este notificador. Una llamada sucesiva a SetNotifier() sobrescribe el manejador registrado previamente [SWS_DM_00745]. Dado que SetNotifier() no es seguro para subprocesos, el registro debe sincronizarse externamente [SWS_DM_00745]. Presumiblemente, el notificador se ejecuta en el contexto de un subproceso en segundo plano de Diagnostic Management, por lo que no deberían producirse bloqueos prolongados en él. Pregunta Q-c27898ecefb8006f (abierta)
Consulta puntual: a través de GetIndicatorState() se puede consultar activamente el estado actual en cualquier momento [SWS_DM_00744]. El método es seguro para subprocesos y devuelve un ara::core::Future<IndicatorStatusType>[SWS_DM_00744]. Interpretación: la provisión asíncrona a través de un future sugiere que la consulta se delega internamente a través de comunicación interprocesos (IPC) al Diagnostic Management Daemon central. Pregunta Q-61a650bd8ab7fc04 (abierta)
Las condiciones de error pueden producirse tanto en la fase de inicialización como en tiempo de ejecución:
Infracciones de configuración durante la construcción: el constructor notifica inconsistencias de modelado en forma de violaciones definidas [SWS_DM_00742]. Entre ellas se incluyen InstanceSpecifierMappingIntegrityViolation (el identificador no se puede resolver o no hace referencia a un puerto), PortInterfaceMappingViolation (el puerto referenciado no está tipificado mediante un DiagnosticIndicatorInterface), ProcessMappingViolation (no existe ningún proceso modelado adecuado para la instancia en tiempo de ejecución) y InstanceSpecifierAlreadyInUseViolation (el identificador ya está siendo utilizado en el proceso por otra instancia) [SWS_DM_00742].
Fallo de funciones de diagnóstico: si falla la ejecución de GetIndicatorState(), se transmite el código de error DiagErrc::kServiceNotAvailable a través del future devuelto [SWS_DM_00744]. Esto sucede cuando funciones esenciales de Diagnostic Management no están disponibles en el momento de la llamada [SWS_DM_00744].
Accesos concurrentes: dado que SetNotifier()[SWS_DM_00745] y el destructor [SWS_DM_00743] no son seguros para subprocesos (thread-safe), un acceso concurrente no protegido da lugar a un comportamiento indefinido en tiempo de ejecución.
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 y fue creada por un asistente de curación con IA.
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticIndicatorPortMapping needs to be typed by a DiagnosticIndicatorInterface. 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 DiagnosticIndicatorInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f2935619a27aProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función SetNotifier de la clase ara::diag::Indicator ([SWS_DM_00745], declarada en la cabecera ara/diag/indicator.h) registra una función de notificación específica de la aplicación del tipo IndicatorStatusTypeNotifier. Esta función de retrollamada es invocada por Diagnostic Management en cuanto se dispone de una actualización de estado del indicador de advertencia de diagnóstico ([SWS_DM_00745]).
Comportamiento en caso de llamada múltiple
Una llamada repetida a SetNotifier en la misma instancia sobrescribe por completo el notificador registrado previamente ([SWS_DM_00745], [SWS_DM_01359]). Este comportamiento de sobrescritura se corresponde con el patrón general en Diagnostic Management, tal como está establecido por igual para ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) y ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]).
Tratamiento de errores y concurrencia
Tratamiento de fallos: El método está especificado como noexcept y seguro frente a excepciones (exception safe) ([SWS_DM_00745]). Dado que no se definen errores estandarizados, el ara::core::Result<void> devuelto debería encapsular siempre una llamada exitosa, a modo de interpretación. Pregunta Q-dcde3dd383fbfb4a (abierta)
Concurrencia: La interfaz está declarada expresamente como no segura para subprocesos (not thread-safe) ([SWS_DM_00745]). Las llamadas simultáneas en la misma instancia deben ser sincronizadas por la aplicación.
Contexto de diagnóstico
Las actualizaciones de estado del indicador están relacionadas con el bit 7 de estado del DTC (WarningIndicatorRequested) ([SWS_DM_00224], AUTOSAR_AP_SWS_Diagnostics p. 260). El bit se activa al confirmarse un fallo ([SWS_DM_01266]) y se restablece al alcanzarse los umbrales de eliminación de rebotes o de curación al final de un ciclo de operación ([SWS_DM_00224], [SWS_DM_01582]).
Esta nota de uso se ha generado de forma automatizada sobre la base de la especificación AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán