Sirve para la ejecución de monitorizaciones de diagnóstico y la notificación de estado al Diagnostic Management.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 49f63d89472dProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve para la ejecución de monitorizaciones de diagnóstico y la notificación de estado al Diagnostic Management.
La clase ara::diag::Monitor proporciona la interfaz funcional para la implementación de funciones de monitorización de diagnóstico y su conexión al Diagnostic Management [SWS_DM_00548]. Tras la vinculación a un prototipo de puerto, la aplicación señaliza mediante Offer() su disposición para la recepción y transmite continuamente los resultados de las pruebas a través de ReportMonitorAction()[SWS_DM_01088], [SWS_DM_00543]. Las instancias de Monitor no son copiables ni trasladables y todas las operaciones están especificadas como no seguras para subprocesos [SWS_DM_01685].
Contexto
La clase ara::diag::Monitor representa la interfaz estandarizada de C++ para la realización de funciones de monitorización de diagnóstico (monitores) dentro de la Adaptive Platform [SWS_DM_00548]. Un monitor es responsable de la detección y notificación de síntomas de fallos en componentes de software funcionales y transmite sus estados al módulo Diagnostic Management (DM).
La vinculación al modelo de sistema de AUTOSAR se realiza mediante un ara::core::InstanceSpecifier, el cual debe hacer referencia obligatoriamente a un PortPrototype tipificado por un DiagnosticMonitorInterface[SWS_DM_00548]. En la tramitación global intervienen esencialmente tres componentes: la monitorización funcional específica de la aplicación (Application), la instancia de interfaz local de ara::diag::Monitor y el módulo de plataforma Diagnostic Management (DM), que recibe eventos y solicita reinicializaciones.
La instanciación de un monitor depende del mecanismo de eliminación de rebotes (debouncing) definido en el modelo. Para ello, la Adaptive Platform proporciona cuatro variantes de constructor:
Eliminación de rebotes interna del monitor con registro de una callback InitMonitorNotifier y un puntero a función para consultar el contador de detección de fallos (std::function<std::int8_t()> getFaultDetectionCounter) [SWS_DM_00548].
Eliminación de rebotes basada en contador pasando parámetros del tipo CounterBased[SWS_DM_00549].
Eliminación de rebotes basada en tiempo pasando parámetros del tipo TimeBased[SWS_DM_00550].
Monitorización directa sin algoritmo de eliminación de rebotes [SWS_DM_01972].
Las instancias de ara::diag::Monitor están vinculadas de forma fija a su ubicación de memoria original: el constructor de copia [SWS_DM_01685] y el operador de asignación por copia [SWS_DM_01683] están eliminados (delete). Del mismo modo, el constructor de movimiento [SWS_DM_01686] y la asignación por movimiento [SWS_DM_01684] están explícitamente eliminados.
Tras la creación, la instancia se encuentra en el estado No ofrecido (Unoffered). Solo mediante la llamada explícita a Offer() la aplicación declara su disposición a recibir y procesar callouts de diagnóstico como initMonitor[SWS_DM_01088]. Con StopOffer() se desactiva de nuevo el reenvío de solicitudes de diagnóstico procedentes del DM [SWS_DM_01089]. Tras la llamada a StopOffer(), presumiblemente sea posible una reanudación posterior del funcionamiento mediante una nueva llamada a Offer(). Pregunta Q-136565db34b28ae6 (abierta) Antes de la destrucción final del objeto monitor, la aplicación presumiblemente deba ejecutar StopOffer() para evitar con seguridad notificaciones pendientes.
En lo relativo a la concurrencia, todas las funciones miembro de ara::diag::Monitor están especificadas como no seguras para subprocesos[SWS_DM_00548], [SWS_DM_01088], [SWS_DM_00543], [SWS_DM_01089]. Si varios subprocesos del software de aplicación acceden al mismo monitor, la sincronización es responsabilidad de la aplicación. No obstante, todos los métodos están declarados como seguros frente a excepciones (noexcept) [SWS_DM_00548], [SWS_DM_01088], [SWS_DM_00543], [SWS_DM_01089].
Diagrama de estados: estados del ciclo de vida y transiciones en la provisión del servicio de ara::diag::Monitor. Fuentes: [SWS_DM_01088], [SWS_DM_01089]
Ruta de uso
El flujo regular para la monitorización de una vía de fallo comprende los siguientes pasos:
Instanciación: la aplicación crea la instancia de Monitor indicando el InstanceSpecifier, la callback initMonitor así como los parámetros de eliminación de rebotes o la callback de FDC que puedan ser necesarios [SWS_DM_00548], [SWS_DM_00549].
Oferta de servicio: a través de Offer(), el monitor se registra ante el DM como listo para la recepción [SWS_DM_01088].
Inicialización: el Diagnostic Management informa a la aplicación sobre eventos de inicialización pendientes a través de la callback InitMonitorNotifier registrada [SWS_DM_01088].
Notificación cíclica/basada en eventos: durante el funcionamiento operativo, la aplicación notifica de forma continua el estado de la vía de monitorización mediante ReportMonitorAction(action)[SWS_DM_00543]. La acción transmitida contiene o bien resultados de prueba (calificados/no calificados) o bien comandos para el control de eliminación de rebotes o prealmacenamiento (prestorage). Si se configuró debouncing interno del monitor, el DM consulta el valor de delimitación de fallos en caso necesario a través de la callback registrada [SWS_DM_00548].
Finalización del servicio: antes del apagado o al desactivar la función de diagnóstico, la aplicación invoca StopOffer() para impedir mensajes entrantes del DM [SWS_DM_01089].
Las situaciones de error se manifiestan en ara::diag::Monitor en dos niveles distintos: como código de error mediante ara::core::Result o como infracciones en tiempo de ejecución (violations) del framework.
El método Offer() devuelve un ara::core::Result<void>. Si el monitor ya se encuentra en el estado ofrecido, la llamada falla y devuelve el código de error DiagOfferErrc::kAlreadyOffered[SWS_DM_01088].
Los errores graves de configuración o de invocación desencadenan mensajes de infracción definidos:
InstanceSpecifierMappingIntegrityViolation: el InstanceSpecifier no se puede resolver en el contexto de modelo del proceso o no hace referencia a un PortPrototype[SWS_DM_00548].
PortInterfaceMappingViolation: El puerto referenciado no está tipado por un DiagnosticMonitorInterface[SWS_DM_00548].
ProcessMappingViolation: no existe ningún proceso modelado adecuado para la instancia de tiempo de ejecución [SWS_DM_00548].
InstanceSpecifierAlreadyInUseViolation: el InstanceSpecifier ya está siendo utilizado por otro monitor dentro del proceso actual [SWS_DM_00548].
InvalidDebouncingAlgorithmViolation: el mecanismo de debouncing seleccionado en el constructor difiere del método de debouncing modelado en las descripciones de diagnóstico DEXT [SWS_DM_00548], [SWS_DM_00549], [SWS_DM_00550].
UnexpectedMonitorActionHandlingViolation: se pasa al método ReportMonitorAction() un valor de acción no admitido para el algoritmo de debouncing configurado [SWS_DM_00543].
Esta guía se basa en la especificación AUTOSAR Adaptive Platform Release 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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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.
InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
getFaultDetectionCounter
Possibility to register a function to get the current FDC for this event.
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceCounterBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for CounterBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceTimeBased.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
defaultValues
Default values for TimeBased debouncing
Request a governed re-review of this record. The record is not changed immediately.
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 DiagnosticMonitorPortMapping needs to be typed by a DiagnosticMonitorInterface. 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. InvalidDebouncin- Mismatching Debounce Algorithm in DEXT i.e gAlgorithmViola- DiagnosticEventToDebounceAlgorithmMapping shall be tion mapped to DiagnosticEventToDebounceAlgorithmMapping. DiagnosticDebounceAlgorithmProps which aggregates DiagEventDebounceMonitorInternal or DiagnosticEventToDebounceAlgorithmMapping shall not exist.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMonitorInterface.
initMonitor
Possibility to register an InitMonitor callback
Request a governed re-review of this record. The record is not changed immediately.
With the Offer the application states that it is ready to receive and process initMonitor callouts.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2e8d03769af8Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Con la llamada al método Offer, una Adaptive Application indica a Diagnostic Management (DM) que está lista para recibir y procesar callouts de initMonitor[SWS_DM_01088]. El método de la clase ara::diag::Monitor no tiene parámetros y devuelve ara::core::Result<void>[SWS_DM_01088]. Aunque el nombre se eligió por analogía con ara::com, se trata de una implementación específica del componente de diagnóstico y no debe confundirse con servicios de comunicación AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors».
En caso de error, el método devuelve el código de error DiagOfferErrc::kAlreadyOffered si el servicio ya se había ofrecido previamente [SWS_DM_01088]. Esto corresponde al enumerador para notificar ofertas ya activas dentro de los dominios de error de diagnóstico [SWS_DM_00514]. Si la llamada es exitosa, el objeto devuelto no contiene ningún error.
En cuanto a la concurrencia, el método está especificado como not thread-safe, por lo que las llamadas paralelas en la misma instancia deben sincronizarse en el lado de la aplicación [SWS_DM_01088]. Además, la función está declarada como segura frente a excepciones (exception safe) y con noexcept[SWS_DM_01088].
Function to report the status information being relevant for error monitoring paths.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 8334da733b55Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método síncrono ReportMonitorAction de la clase ara::diag::Monitor notifica información de estado y monitorización de una prueba de diagnóstico a la monitorización de errores del demonio del Diagnostic Management [SWS_DM_00543]. Mediante el parámetro action de tipo MonitorAction, la aplicación pasa un resultado de prueba cualificado o no cualificado, o bien comandos de control para gestionar el filtrado antirrebote y activar un almacenamiento previo (prestorage) [SWS_DM_00543]. La función no proporciona ningún valor de retorno (void) y está declarada como noexcept, así como segura frente a excepciones [SWS_DM_00543].
Si se llama a ReportMonitorAction con un valor para action que no es compatible con el procedimiento de filtrado antirrebote configurado para el evento de diagnóstico, el Diagnostic Manager desencadena una infracción de proceso [SWS_DM_01988]. Además, el sistema define códigos de error internos en el tipo DiagErrc, por ejemplo kReportIgnored para situaciones en las que no se cumplen las condiciones de habilitación [SWS_DM_00514].
Para la integración y la concurrencia se aplican las siguientes condiciones de contorno:
Seguridad para subprocesos: la función no es segura para subprocesos (not thread-safe) [SWS_DM_00543]. Las llamadas paralelas sobre la misma instancia de monitor deben sincronizarse del lado del emisor de la llamada (a diferencia de MultipleMonitor, donde la seguridad para subprocesos es configurable mediante el constructor [SWS_DM_01698]).
Condiciones de habilitación: si una condición de habilitación (Enable Condition) asignada al evento de diagnóstico no se cumple, se ignora la llamada a ReportMonitorActionSWS Diagnostics §7.3.4.1.4 «EnableConditions».
Filtrado antirrebote: las acciones notificadas como kPrefailed modifican el contador interno de antirrebote según el tamaño de paso configurado [SWS_DM_00875], hasta que, al alcanzarse el valor de umbral, el fallo se clasifica como kFinallyDefective[SWS_DM_00024].
Esta nota de uso se ha generado automáticamente a partir de la especificación AUTOSAR AP R25-11.
UnexpectedMoni- ara::diag::Monitor::ReportMonitorAction is called with torActionHan- a parameter action value that is not supported by the used dlingViolation debouncing method.
Parameter (in)
Parameter
Beschreibung
action
Contains either the last (un-)qualified test result of the diagnostic monitor or commands to control the debouncing or to force a prestorage.
Rückgabewert
Typ
Beschreibung
None
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e17ef3becf1dProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método ara::diag::Monitor::StopOffer desactiva el reenvío de peticiones y mensajes del Diagnostic Management (DM) a la instancia de monitor correspondiente ([SWS_DM_01089]). La llamada se ejecuta de forma síncrona, no requiere parámetros de transferencia y no posee valor de retorno ([SWS_DM_01089]). La operación sirve de contrapartida para Offer y permite a una Adaptive Application suspender la monitorización activa siempre que la parte del sistema correspondiente no requiera supervisión temporalmente (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Si bien el identificador se orienta a las interfaces de ara::com, la especificación subraya expresamente que se trata de una implementación independiente de ara::diag::Monitor (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»).
En cuanto al tratamiento de errores, la función está declarada como noexcept y se considera segura frente a excepciones (exception safe); no existen códigos de error ni mensajes de error específicos ([SWS_DM_01089]). Como restricción esencial, StopOffer está clasificada como no segura para subprocesos (not thread-safe) ([SWS_DM_01089]). Interpretación: en accesos concurrentes al mismo objeto de monitor, es probable que el propio llamador sea responsable de una sincronización adecuada. Pregunta Q-3ead3049b4378083 (abierta)
En el sistema global, StopOffer se integra en un patrón uniforme del módulo de diagnóstico: se encuentran interfaces análogas para desactivar el reenvío de mensajes de DM, entre otros, en GenericRoutine ([SWS_DM_00558]), CommunicationControl ([SWS_DM_00810]), EcuResetRequest ([SWS_DM_01017]) y Authentication ([SWS_DM_01131]).
Esta nota de uso ha sido generada de forma automatizada y se basa en las especificaciones de AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán