Representa el byte de estado codificado en bits de un evento de diagnóstico y ofrece métodos de comprobación con seguridad de tipos para los bits de estado.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: c0a8a1df20deProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Representa el byte de estado codificado en bits de un evento de diagnóstico y ofrece métodos de comprobación con seguridad de tipos para los bits de estado.
La estructura ara::diag::EventStatusByte encapsula el byte de estado codificado en bits de un evento de diagnóstico individual dentro de Adaptive Platform [SWS_DM_00644]. Proporciona métodos para la consulta con seguridad de tipos de bits de estado activos o inactivos, así como estados de comprobación compuestos [SWS_DM_01755]. Puesto que el cálculo refleja siempre el evento específico, no se ve afectado por combinaciones de eventos de DTC de nivel superior. Al tratarse de un objeto de valor ligero, todos los accesos de lectura son seguros ante excepciones y legibles concurrentemente, mientras que las asignaciones modificadoras deben sincronizarse externamente.
Contexto
La estructura ara::diag::EventStatusByte encapsula el byte de estado codificado en bits de un evento de diagnóstico en la memoria de averías del Diagnostic Management de AUTOSAR Adaptive [SWS_DM_00644]. Conforme a la especificación, el EventStatusByte representa siempre con precisión el estado del evento individual asignado y no se ve influenciado en su cálculo por una posible combinación de eventos (Event Combination) (AUTOSAR_AP_SWS_Diagnostics p. 234). Entre los interlocutores de interacción figura principalmente el Diagnostic Management Core (DM), que determina el estado del UDS DTC ante actualizaciones de estado de los eventos [SWS_DM_01109] e informa mediante callbacks configurados [SWS_DM_01110]. Interpretación: a través del alias de tipo ara::diag::EventStatusByteNotifier[SWS_DM_02118], es probable que este cambio de estado se notifique a las funciones registradas de la aplicación para que puedan reaccionar ante los cambios de estado. Pregunta Q-8fd114acd74569ee (abierta)
Ciclo de vida
Las instancias de ara::diag::EventStatusByte son objetos de valor ligeros que están definidos en el encabezado ara/diag/event_types.h[SWS_DM_01753]. La creación se realiza bien por copia, por movimiento o a través de un constructor de plantilla variádico que recibe una cantidad arbitraria de EventStatusBits a establecer [SWS_DM_01753]. Dado que los constructores y los operadores de asignación están declarados como constexpr y noexcept, los objetos pueden construirse ya en tiempo de compilación (AUTOSAR_AP_SWS_Diagnostics §8.47.2.1.1 «Special Member Functions»).
En lo relativo a propiedad y ciclo de vida, el objeto se transfiere típicamente por valor (by-value) o por referencia constante a los notificadores. El constructor de movimiento [SWS_DM_01751] y el constructor de copia [SWS_DM_01752] garantizan seguridad ante excepciones y para hilos. Por el contrario, el operador de asignación por copia [SWS_DM_01750] y el operador de asignación por movimiento [SWS_DM_01749] están clasificados explícitamente en la especificación como no seguros para hilos (not thread-safe). Es posible realizar múltiples accesos concurrentes de lectura a un byte de estado existente de forma segura para hilos, pero las asignaciones modificadoras sobre una instancia compartida requieren sincronización externa.
Ruta de uso
Un caso de uso típico consiste en comprobar un byte de estado transmitido por Diagnostic Management respecto a determinados criterios de diagnóstico. Para ello, la clase pone a disposición métodos de evaluación especializados:
Comprobación de prueba con fallo: con IsFailedAndTested() se puede comprobar directamente si tanto el bit kTestFailed como kTestFailedThisOperationCycle están establecidos [SWS_DM_01757]. Interpretación: esto indica a la aplicación que el evento ya ha sido probado en el ciclo de operación actual y evaluado como defectuoso. Pregunta (abierta)
Comprobación de prueba sin fallos: el método IsPassedAndTested() devuelve true si ni kTestFailed ni kTestNotCompletedThisOperationCycle están establecidos [SWS_DM_01756].
Comprobaciones genéricas de bits: a través de la plantilla IsSet(bits...) se puede verificar si todos los bits de estado transferidos están establecidos [SWS_DM_01755]. De forma complementaria, IsNotSet(bits...) comprueba que ninguno de los bits transferidos esté activo [SWS_DM_01754].
Al restablecer errores mediante una operación clearDTC, Diagnostic Management limpia todos los eventos relacionados con independencia de si están configuradas combinaciones de eventos [SWS_DM_01108]. El siguiente diagrama de secuencia ilustra la interacción ante una actualización de estado y la posterior evaluación en la aplicación.
Puesto que ara::diag::EventStatusByte es un contenedor de datos elemental, todas las funciones miembro están especificadas como noexcept y plenamente seguras ante excepciones (de [SWS_DM_01749] a [SWS_DM_01757]). No se lanzan excepciones de C++ ni se devuelven códigos de error en forma de ara::core::Result.
Las situaciones de error en la aplicación no se originan por tanto por códigos de error de la API, sino por interpretaciones erróneas semánticas o fallos de sincronización. Los riesgos típicos son accesos concurrentes de escritura mediante operadores de asignación sin protección por mutex ([SWS_DM_01749], [SWS_DM_01750]) o la suposición errónea de que el EventStatusByte sea modificado por DTC combinados, a pesar de que según la especificación permanece estrictamente vinculado al evento individual (AUTOSAR_AP_SWS_Diagnostics p. 234).
Esta guía se basa en la especificación AUTOSAR Adaptive R25-11 y resume las características de la clase según el documento AUTOSAR_AP_SWS_Diagnostics.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán