Permite supervisar ciclos de operación de diagnóstico, así como desencadenar un reinicio de ciclo a través de puertos modelados.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 3e8e62c1c567ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite supervisar ciclos de operación de diagnóstico, así como desencadenar un reinicio de ciclo a través de puertos modelados.
La clase ara::diag::OperationCycle proporciona a la aplicación funciones para el control y la supervisión de ciclos de operación de diagnóstico [SWS_DM_00752]. Las instancias se vinculan a un puerto modelado mediante un ara::core::InstanceSpecifier, no son copiables ni desplazables y solo pueden existir una vez por identificador en el proceso. A través de SetNotifier se puede registrar una notificación para cambios de ciclo y, mediante RestartOperationCycle, se puede desencadenar un reinicio del ciclo de operación [SWS_DM_01102]. A excepción del constructor seguro para subprocesos, todos los métodos, así como el destructor, no son seguros para subprocesos y requieren sincronización por parte de la aplicación en caso de acceso paralelo.
Contexto
La clase ara::diag::OperationCycle implementa el DiagnosticOperationCycleInterface dentro del diagnóstico de AUTOSAR Adaptive y proporciona funciones para la gestión y el control de ciclos de operación. Sirve como interfaz entre la aplicación adaptativa y la gestión de diagnóstico para supervisar estados de ciclos de operación o restablecerlos de forma selectiva.
La conexión con el sistema global se realiza a través de un ara::core::InstanceSpecifier, el cual se transfiere al invocar el constructor [SWS_DM_00752]. Este identificador hace referencia a un PortPrototype definido en el modelo. El modelo prescribe aquí una asignación unívoca: un PortPrototype referenciado por un DiagnosticOperationCyclePortMapping debe estar tipificado mediante el DiagnosticOperationCycleInterface[SWS_DM_00752]. Además del control, la clase interactúa a través de una interfaz de callback del tipo ara::diag::OperationCycle::OperationCycleSetNotifier (definida como std::function<void(void)>), mediante la cual se transmiten notificaciones a la aplicación cuando se produce un cambio en el ciclo de operación [SWS_DM_02078], [SWS_DM_00755].
Ciclo de vida
La creación de ara::diag::OperationCycle se realiza explícitamente especificando la especificación de instancia de puerto a través del constructor OperationCycle(const ara::core::InstanceSpecifier &specifier)[SWS_DM_00752]. El constructor está especificado como seguro ante excepciones (exception safe) y seguro para subprocesos (thread-safe) [SWS_DM_00752].
En cuanto a la semántica de propiedad y copia, la clase está modelada como un objeto único estricto que representa una vinculación fija 1:1 con el puerto modelado. La copia y el desplazamiento están completamente deshabilitados:
El constructor de copia está eliminado (delete) para descartar duplicaciones [SWS_DM_01598].
El constructor de movimiento está eliminado (delete) [SWS_DM_01599].
El operador de asignación por copia está eliminado (delete) [SWS_DM_01596].
El operador de asignación por movimiento está eliminado (delete) [SWS_DM_01597].
Además, el framework prohíbe la ocupación múltiple: un InstanceSpecifier no debe utilizarse repetidamente para una instanciación dentro del mismo proceso [SWS_DM_00752]. La liberación se realiza en el destructor ~OperationCycle()[SWS_DM_00753]. A diferencia del constructor, el destructor no es seguro para subprocesos (not thread-safe), aunque esté declarado como seguro ante excepciones [SWS_DM_00753]. Los demás métodos de la clase, así como el tipo de callback, tampoco son seguros para subprocesos [SWS_DM_00755], [SWS_DM_01102], [SWS_DM_02078], por lo que los accesos paralelos a la misma instancia deben sincronizarse por parte de la aplicación.
Ruta de uso
Una ruta de uso típica incluye la instanciación, el registro opcional de un manejador para cambios de ciclo, la activación repetida del reinicio de ciclo y la liberación:
Instanciación: la aplicación crea el objeto OperationCycle pasando el correspondiente InstanceSpecifier[SWS_DM_00752].
Registrar notificador: mediante el método SetNotifier, la aplicación registra una función de callback del tipo OperationCycleSetNotifier[SWS_DM_00755], [SWS_DM_02078]. Esta función se invoca cuando cambia el ciclo de operación. Una llamada consecutiva de SetNotifier sobrescribe por completo el notificador registrado previamente [SWS_DM_00755].
Reiniciar ciclo de operación: mediante RestartOperationCycle(), la aplicación desencadena el reinicio del ciclo de operación [SWS_DM_01102]. La gestión de diagnóstico actualiza el ciclo y, en caso de cambios de estado, notifica al callback registrado [SWS_DM_00755]. En este caso, la notificación se realizaría de forma asíncrona en el contexto de la gestión de diagnóstico. Pregunta Q-7cd22debf6fa91d7 (abierta)
Destrucción: al detener el componente de software, el objeto se destruye a través del destructor [SWS_DM_00753].
Los errores en la inicialización son señalizados por el framework como infracciones (Violations), ya que el constructor está declarado como noexcept[SWS_DM_00752]:
InstanceSpecifierMappingIntegrityViolation: el InstanceSpecifier no se puede resolver en el contexto del ejecutable o hace referencia a un elemento que no es un PortPrototype[SWS_DM_00752].
PortInterfaceMappingViolation: el PortPrototype referenciado por DiagnosticOperationCyclePortMapping no está tipificado mediante un DiagnosticOperationCycleInterface[SWS_DM_00752].
ProcessMappingViolation: aunque existe una referencia de instancia coincidente, no se encontró ningún proceso modelado adecuado para el proceso en tiempo de ejecución [SWS_DM_00752].
InstanceSpecifierAlreadyInUseViolation: se llamó al constructor con un InstanceSpecifier que ya está en uso dentro del proceso actual [SWS_DM_00752].
En funcionamiento normal, los métodos SetNotifier y RestartOperationCycle devuelven un ara::core::Result<void>[SWS_DM_00755], [SWS_DM_01102]. Para ambas funciones no se definen códigos de error específicos en el estándar («This function does not specify any standardized errors.») [SWS_DM_00755], [SWS_DM_01102]. El uso del tipo Result probablemente sirva principalmente para un diseño uniforme de la interfaz y para dar cabida a estados de error específicos de la implementación. Pregunta Q-2c59a287c0d5783a (abierta)
Esta guía fue generada por un sistema de IA sobre la base de la especificación AUTOSAR Adaptive R25-11.
Registering a notifier function which is called if the operation cycle 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 DiagnosticOperationCyclePortMapping needs to be typed by a DiagnosticOperationCycleInterface. 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 DiagnosticOperationCycleInterface.
Request a governed re-review of this record. The record is not changed immediately.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 3cc8bab8ea58ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función miembro RestartOperationCycle de la clase ara::diag::OperationCycle (proporcionada mediante #include "ara/diag/operation_cycle.h") sirve para comunicar a Diagnostic Management (DM) el reinicio de un ciclo de operación [SWS_DM_01102]. Los ciclos de operación tales como ciclos de encendido («Ignition on/off»), ciclos de alimentación («Power up/power down») o tiempos de funcionamiento acumulados son gestionados por la aplicación adaptativa y tienen un impacto directo en el byte de estado del DTC de UDS, así como en el comportamiento de la memoria de eventos según ISO 14229-1 SWS Diagnostics §7.3.4.3 «Operation Cycles Management».
Invocación y semántica
La función se llama sin parámetros y devuelve un ara::core::Result<void>[SWS_DM_01102]. En caso de que el DM aún no esté listo para procesar la notificación sobre el reinicio en el momento de la llamada, esta información no se pierde: el DM almacena temporalmente el evento en búfer (caching) y evalúa el reinicio del ciclo tan pronto como se restablece la conexión [SWS_DM_01103].
Tratamiento de errores y concurrencia
Para RestartOperationCycle no se han predeterminado códigos de error estandarizados [SWS_DM_01102]. La función está especificada como segura frente a excepciones (exception safe) y no lanza excepciones de C++ (noexcept) [SWS_DM_01102]. Sin embargo, dado que la interfaz está designada explícitamente como no segura para subprocesos (not thread-safe) [SWS_DM_01102], los accesos simultáneos a la misma instancia por parte de la aplicación llamadora probablemente deban sincronizarse. Pregunta Q-b3b258a20fd9db22 (abierta)
Esta nota de uso fue generada automáticamente sobre la base de la especificación AUTOSAR R25-11.
Registering a notifier function which is called if the operation cycle 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: 4ba4d539945dProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) sirve para registrar una función de retrollamada del lado de la aplicación del tipo OperationCycleSetNotifier. Esta función de notificación es invocada por Diagnostic Management (DM) tan pronto como cambia el estado del ciclo de operación monitorizado ([SWS_DM_00755]). Para utilizar el método debe incluirse el archivo de cabecera ara/diag/operation_cycle.h ([SWS_DM_00755]).
La operación está declarada como noexcept y ofrece seguridad frente a excepciones (exception safe) ([SWS_DM_00755]). Como valor de retorno síncrono se proporciona ara::core::Result<void>; no obstante, no se definen códigos de error específicos estandarizados ([SWS_DM_00755]). Por consiguiente, los posibles estados de error en el objeto Result deberían ser específicos del fabricante o de la plataforma. Pregunta Q-6799492164efd793 (abierta) Con respecto a la concurrencia, el método está especificado como no seguro para subprocesos (not thread-safe) ([SWS_DM_00755]), de modo que las llamadas paralelas en la misma instancia de objeto deben sincronizarse obligatoriamente mediante la aplicación.
Esta nota de uso se ha generado de forma automatizada y se basa en la especificación AUTOSAR Adaptive R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán