Permite consultar y monitorizar múltiples eventos de diagnóstico a través de handles de evento y notificaciones por callback.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 4cd8b0cbe34dProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite consultar y monitorizar múltiples eventos de diagnóstico a través de handles de evento y notificaciones por callback.
La clase permite a las aplicaciones la consulta y monitorización asociadas al estado de múltiples eventos de diagnóstico a través de una interfaz común mediante handles de eventos [SWS_DM_01705]. Además del registro de callbacks de notificación, se dispone de métodos asíncronos para determinar el estado del evento, la eliminación de rebotes, el contador de fallos y el número de DTC [SWS_DM_01707], [SWS_DM_01709]. Las instancias no son copiables ni trasladables y, debido a que el destructor no es seguro para subprocesos, requieren una finalización ordenada de las operaciones activas antes de su liberación [SWS_DM_01706], [SWS_DM_02067].
Contexto
La clase ara::diag::MultipleEvent proporciona a la aplicación interfaces para consultar y monitorizar eventos de diagnóstico a través de interfaces para eventos múltiples [SWS_DM_01705]. A diferencia de las clases de eventos individuales, las operaciones en instancias de MultipleEvent direccionan eventos concretos mediante un identificador del tipo EventHandleType[SWS_DM_01707], [SWS_DM_01708]. La clase actúa como interfaz entre el componente de software usuario y el Diagnostic Management (DM) de Adaptive AUTOSAR AUTOSAR AP SWS Diagnostics, p. 69. A través del prototipo de puerto de un DiagnosticMultipleEventInterface, el objeto se vincula a la infraestructura de diagnóstico configurada [SWS_DM_01705].
Ciclo de vida
Una instancia de MultipleEvent se crea mediante un constructor explícito indicando un ara::core::InstanceSpecifier[SWS_DM_01705]. El constructor es seguro para subprocesos y verifica la vinculación modelada a un prototipo de puerto del tipo de interfaz DiagnosticMultipleEventInterface[SWS_DM_01705]. Si falla el mapeo o se reutiliza el mismo identificador de instancia dentro del proceso, la plataforma notifica las correspondientes infracciones como InstanceSpecifierAlreadyInUseViolation o PortInterfaceMappingViolation[SWS_DM_01705].
Las operaciones de copia y movimiento están completamente inhabilitadas para MultipleEvent: tanto el constructor de copia y de movimiento como los correspondientes operadores de asignación están declarados como eliminados [SWS_DM_02067], [SWS_DM_02068], [SWS_DM_02069], [SWS_DM_02070]. El objeto posee, por tanto, una identidad estricta y permanece en su lugar de creación. El destructor ~MultipleEvent() no está especificado como seguro para subprocesos [SWS_DM_01706]. Por lo tanto, antes de la destrucción, los componentes que invocan deben asegurarse de que ya no se ejecuten consultas asíncronas o notificaciones a través de la instancia AUTOSAR AP SWS Diagnostics, p. 78.
Ruta de uso
Tras la instanciación, la aplicación registra normalmente una función callback mediante SetEventStatusChangedNotifier para ser informada sobre los cambios de estado de un evento determinado (identificado mediante EventHandleType) [SWS_DM_01708]. Una nueva invocación de este método para el mismo evento sobrescribe el notificador previamente configurado [SWS_DM_01708]. Esta función de registro no es segura para subprocesos [SWS_DM_01708].
Durante el funcionamiento normal, se puede consultar de forma específica información de diagnóstico actual por cada manejador de evento. Todas las operaciones de lectura relacionadas con el estado devuelven sus datos de forma asíncrona en un ara::core::Future:
GetEventStatus devuelve el byte de estado actual del evento como EventStatusByte[SWS_DM_01707].
GetDebouncingStatus devuelve el estado de antirrebote (DebouncingState) del evento [SWS_DM_01710].
GetFaultDetectionCounter proporciona el contador actual de detección de errores (FaultDetectionCounter) como un valor entero de 8 bits con signo [SWS_DM_01711].
GetDTCNumber consulta el número DTC asignado en el DTCFormatType solicitado [SWS_DM_01709].
Diagrama de secuencia: ruta de uso típica para la observación y consulta de eventos de diagnóstico a través de MultipleEvent. Fuentes: [SWS_DM_01705], [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711]
Escenarios de error
Los métodos de MultipleEvent señalan estados de error a través del tipo DiagErrc, el cual se transporta encapsulado bien en un ara::core::Result o bien en el ara::core::Future devuelto [SWS_DM_01707], [SWS_DM_01708], [SWS_DM_01709]. Se especifican los siguientes casos de error:
DiagErrc::kNoSuchDTC: es notificado por GetDTCNumber cuando no hay ningún DTC correspondiente configurado o asignado para el evento de diagnóstico solicitado [SWS_DM_01709].
DiagErrc::kServiceNotAvailable: se produce en operaciones de lectura cuando funcionalidades básicas esenciales de Diagnostic Management no están disponibles en tiempo de ejecución [SWS_DM_01707], [SWS_DM_01709], [SWS_DM_01710], [SWS_DM_01711].
Register a notifier function which is called if a diagnostic event is changed. 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 DiagnosticMultipleEventPortMapping needs to be typed by a DiagnosticMultipleEventInterface. 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 DiagnosticMultipleEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. 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: bd91ad4f4cb5ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método ara::diag::MultipleEvent::SetEventStatusChangedNotifier[SWS_DM_01708] registra una función callback de tipo EventStatusByteNotifier que se invoca cuando cambia el estado de un evento de diagnóstico. Mediante el parámetro eventHandle se identifica el evento deseado dentro de la instancia. El método está especificado como noexcept y devuelve un ara::core::Result<void>. Una nueva llamada sobrescribe el notificador registrado previamente [SWS_DM_01708].
Manejo de errores
Si se produce un error durante el registro, el ara::core::Result devuelve el código de error correspondiente. Está especificado el error DiagErrc::kInvalidArgument, por ejemplo en el contexto de una eliminación de rebote interna como kPreFailed[SWS_DM_01708].
Concurrencia y restricciones
La operación está declarada como exception safe, pero categorizada expresamente como not thread-safe[SWS_DM_01708]. Por lo tanto, las llamadas simultáneas sobre la misma instancia deben sincronizarse externamente.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán