Proporciona interfaces estandarizadas para bases de tiempo sincronizadas, marcas de tiempo de alta precisión y monitorización del estado.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: aa3b87a713ceProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Proporciona interfaces estandarizadas para bases de tiempo sincronizadas, marcas de tiempo de alta precisión y monitorización del estado.
El espacio de nombres ara::tsync proporciona interfaces para el acceso sincronizado al tiempo en la Adaptive Platform vinculando aplicaciones a bases de tiempo configuradas mediante SynchronizedTimeBaseConsumer. El registro del tiempo se realiza mediante marcas de tiempo de alta precisión de tipo Timestamp basadas en una resolución de nanosegundos [SWS_TS_01251]. Las aplicaciones monitorizan la sincronización a través de indicadores de estado como SynchronizationStatus[SWS_TS_01050]. Como restricción esencial, las devoluciones de llamada (callbacks) de notificación asíncronas no están diseñadas para ser seguras para subprocesos y deben gestionarse las pérdidas de conexión con el demonio de tiempo.
Contexto
El espacio de nombres ara::tsync proporciona dentro de AUTOSAR Adaptive Platform las interfaces para la sincronización de tiempo de alta precisión. Permite a las aplicaciones leer marcas de tiempo sincronizadas, supervisar el estado de sincronización y registrar valores de medición para fines de validación. La clase SynchronizedTimeBaseConsumer asume el papel central para las aplicaciones consumidoras, encapsulando el acceso a una base de tiempo configurada mediante un InstanceSpecifier. En el lado del proveedor, SynchronizedTimeBaseProvider sirve como punto de acceso para proporcionar y controlar bases de tiempo.
La base de la representación temporal es el pseudorreloj TimeBase, mediante el cual se define el alias de tipo Timestamp como std::chrono::time_point<TimeBase, std::chrono::nanoseconds>[SWS_TS_01251]. El trabajo de sincronización real y la conexión a protocolos de bus como IEEE 802.1AS o PTP se realiza típicamente a través de un servicio en segundo plano. Interpretación: este demonio de tiempo se comunica entre procesos con las instancias de ara::tsync, lo cual se demuestra mediante el error específico TsyncErrc::kDaemonConnectionLost[SWS_TS_00901]. Pregunta Q-dd9d1a36f7573a03 (abierta) La arquitectura se complementa con interfaces como ConsumerTimeBaseValidationNotification y ProviderTimeBaseValidationNotification, así como estructuras de datos para mediciones de tiempo de ejecución y precisión (p. ej., TimeMasterMeasurementType, TimeSlaveMeasurementType, PdelayInitiatorMeasurementType y PdelayResponderMeasurementType).
Diagrama de contexto: interacción entre aplicaciones, clases de interfaz y demonio de tiempo en el espacio de nombres ara::tsync. Fuentes: [SWS_TS_00901], [SWS_TS_01251].
Ciclo de vida
El ciclo de vida de una base de tiempo sincronizada se determina mediante estructuras de estado y cambios de estado discretos. SynchronizedTimeBaseStatus representa una instantánea del estado temporal, incluidos todos los metadatos. El estado de comunicación y sincronización se controla mediante la enumeración SynchronizationStatus[SWS_TS_01050]:
kNotSynchronizedUntilStartup: estado inicial antes de la primera sincronización correcta tras el inicio del sistema.
kSynchronized: la base de tiempo está sincronizada con el Time-Master.
kSynchToGateway: la sincronización se realiza a través de una pasarela.
kTimeOut: no se pudo establecer ni mantener la sincronización dentro de una ventana de tiempo definida.
Además del estado de comunicación, la enumeración LeapJump[SWS_TS_01051] registra correcciones escalonadas de la base de tiempo: kTimeLeapNone señala un funcionamiento continuo sin rebasar el umbral, mientras que kTimeLeapFuture y kTimeLeapPast indican correcciones significativas hacia el futuro o el pasado, respectivamente.
En cuanto a la concurrencia, debe tenerse en cuenta que los tipos de retrollamada como SynchronizationNotifier[SWS_TS_14222], SynchronizedTimeBaseNotifier[SWS_TS_14221] y TimePrecisionNotifier[SWS_TS_14223] están clasificados según la especificación como no seguros para subprocesos. Por lo tanto, las transiciones de estado, en particular la aparición de tiempos de espera agotados o resincronizaciones, requieren una sincronización por parte de la aplicación.
Diagrama de estados: ciclo de vida y estados de comunicación de una base de tiempo sincronizada. Fuentes: [SWS_TS_01050].
Ruta de uso
El flujo típico para el uso de una base de tiempo sincronizada por parte de una aplicación consumidora se divide en los siguientes pasos:
Inicialización y vinculación: la aplicación instancia SynchronizedTimeBaseConsumer para la base de tiempo deseada indicando el InstanceSpecifier adecuado.
Registro de notificaciones: para supervisar el estado de sincronización, la aplicación pasa funciones de retrollamada. Entre ellas se incluyen SynchronizationNotifier[SWS_TS_14222] para cambios del SynchronizationStatus, SynchronizedTimeBaseNotifier[SWS_TS_14221] para instantáneas de estado detalladas (SynchronizedTimeBaseStatus), así como TimePrecisionNotifier[SWS_TS_14223] para datos de medición de precisión (TimePrecisionMeasurement).
Consulta de marcas de tiempo: cuando se presenta el estado kSynchronized o kSynchToGateway[SWS_TS_01050], la aplicación lee valores de tiempo de alta precisión del tipo Timestamp[SWS_TS_01251].
Reacción a saltos de estado y de tiempo: si las notificaciones señalan un LeapJump distinto de kTimeLeapNone[SWS_TS_01051] o una transición a kTimeOut[SWS_TS_01050], la aplicación ajusta los temporizadores internos o pasa a un modo de degradación.
Transmisión de datos de usuario: si se transmiten datos útiles específicos del usuario en el marco de la sincronización de tiempo, se utiliza la estructura UserData.
Escenarios de error
El tratamiento de errores del espacio de nombres sigue el modelo estándar de AUTOSAR a través del dominio de errores TsyncErrorDomain. El acceso a este dominio global se realiza a través de GetTsyncErrorDomain()[SWS_TS_00909]. Las causas de los errores se describen mediante el tipo de enumeración TsyncErrc[SWS_TS_00901]:
kDaemonConnectionLost: la operación solicitada falla porque la conexión con el demonio de sincronización de tiempo está interrumpida.
kLimitsExceeded: un valor pasado o calculado se encuentra fuera del rango de valores admisible.
kFunctionNotSupported: la función solicitada no es compatible en la configuración o el entorno de plataforma actual.
kInvalidUserDataSize: la longitud de los datos de usuario pasados supera el máximo de actualmente 3 bytes definido por UserData::kMaxUserDataSize.
Las instancias de ara::core::ErrorCode se crean a través de la función auxiliar MakeErrorCode[SWS_TS_00910]. La función está declarada como noexcept y es segura para subprocesos. Para arquitecturas basadas en excepciones, el espacio de nombres proporciona la clase de excepción TsyncException.
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 para el módulo tsync.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Diagrama de clases
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
=0 The TB is not synchronized until startup (inital state)
kTimeOut
= 0x1 The TB was not synchronized within a certain time frame.
kSynchronized
= 0x2 The TB is in sync with the time master.
kSynchToGateway
= 0x3 The TB is in sync with the gateway.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2b617e90b13fProcedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La enumeración SynchronizationStatus expresa el estado de comunicación y sincronización de una base de tiempo en el espacio de nombres ara::tsync[SWS_TS_01050]. El tipo se basa en std::uint32_t y se proporciona a través del archivo de encabezado ara/tsync/synchronized_time_base_status.h así como del encabezado de reenvío (forwarding) ara/tsync/tsync_fwd.h[SWS_TS_01050]. La enumeración define cuatro estados:
kNotSynchronizedUntilStartup (= 0): La base de tiempo no está sincronizada antes del inicio del sistema (estado inicial) [SWS_TS_01050].
kTimeOut (= 0x1): La base de tiempo no se ha sincronizado dentro de una ventana de tiempo predefinida [SWS_TS_01050].
kSynchronized (= 0x2): La base de tiempo está sincronizada con el Time-Master [SWS_TS_01050].
kSynchToGateway (= 0x3): La base de tiempo está sincronizada con el Gateway [SWS_TS_01050].
La obtención síncrona del estado se realiza mediante el método GetSynchronizationStatus() de la clase ara::tsync::SynchronizedTimeBaseStatus, que proporciona el estado en el momento de creación del objeto de estado de manera segura para subprocesos y segura contra excepciones (noexcept) [SWS_TS_01053]. Para las notificaciones en caso de cambios de estado existe en ara/tsync/synchronized_time_base_consumer.h el alias de tipo SynchronizationNotifier (std::function<void(const SynchronizationStatus &)>), que está especificado explícitamente como no seguro para subprocesos [SWS_TS_14222].
En caso de error o de falta de sincronización, se debe tener en cuenta el comportamiento de los métodos vinculados: si la base de tiempo nunca se ha sincronizado y presenta el estado kNotSynchronizedUntilStartup, el método GetCreationTime() devuelve un ara::core::Optional vacío, ya que no existe un momento de creación válido en tiempo sincronizado [SWS_TS_01055].
Este texto ha sido generado por un sistema de IA y se basa exclusivamente en los datos de especificación de AUTOSAR R25-11.
Guía del implementador pendiente (complejidad I1)
Request a governed re-review of this record. The record is not changed immediately.
=1 The action cannot be executed, because the connection to time sync daemon is currently lost.
kLimitsExceeded
=2 The value exceeds valid value range
kFunctionNotSupported
=3 The requested function is not supported
kInvalidUserDataSize
=4 The length of the user data exceeded the maximum allowed size, defined by UserData::kMaxUserDataSize (currently 3 bytes).
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: bf6ea0154525ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La enumeración TsyncErrc define los códigos de error estandarizados del clúster funcional Time Synchronization [SWS_TS_00901]. Se basa en ara::core::ErrorDomain::CodeType y se declara dentro del espacio de nombres ara::tsync; además, a través de ara::tsync::TsyncErrorDomain::Errc se proporciona un alias [SWS_TS_01266]. Para generar objetos de error completos se utiliza la función segura para subprocesos (thread-safe) MakeErrorCode, que vincula un valor TsyncErrc con datos adicionales específicos del fabricante en un ara::core::ErrorCode[SWS_TS_00910].
La especificación define cuatro valores de error concretos [SWS_TS_00901]:
kDaemonConnectionLost (=1): La acción no se puede ejecutar porque se ha interrumpido la conexión con el demonio de Time-Sync.
kLimitsExceeded (=2): Un parámetro transmitido excede el rango de valores permitido. Esto ocurre, por ejemplo, en SetRateCorrection cuando la corrección de tasa solicitada no es válida [SWS_TS_01110].
kFunctionNotSupported (=3): La función solicitada no es compatible. Interpretación: Es probable que esto afecte a implementaciones en las que no estén disponibles funciones opcionales de hardware o de interfaz. Pregunta Q-e22067d84fd6adb4 (abierta)
kInvalidUserDataSize (=4): La longitud de los datos útiles excede el tamaño máximo de 3 bytes especificado por UserData::kMaxUserDataSize. Este error ocurre en SetTime[SWS_TS_01107] así como en SetUserData[SWS_TS_01112].
Los métodos de actualización de tiempo y datos como SetTime, UpdateTime, SetRateCorrection y SetUserData de la clase ara::tsync::SynchronizedTimeBaseProvider devuelven resultados de forma síncrona mediante ara::core::Result<void> y están especificados como no seguros para subprocesos (non-thread-safe) [SWS_TS_01107][SWS_TS_01108][SWS_TS_01110][SWS_TS_01112]. En caso de error, según la especificación, no se aplica ninguna semántica de reversión (rollback) (no_rollback_semantics) [SWS_TS_01107][SWS_TS_01110][SWS_TS_01112].
Este texto ha sido generado por una IA y se basa en el estado de la especificación R25-11.
Guía del implementador pendiente (complejidad I1)
Request a governed re-review of this record. The record is not changed immediately.
Returns a reference to the global TsyncErrorDomain object.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 3848538f31e7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
La función síncrona GetTsyncErrorDomain pertenece al espacio de nombres ara::tsync y se incluye a través del archivo de encabezado ara/tsync/tsync_error_domain.h[SWS_TS_00909]. La llamada no requiere parámetros y sirve para el propósito de obtener una referencia al objeto global TsyncErrorDomain de la sincronización temporal [SWS_TS_00909].
Como valor de retorno, la función proporciona una referencia constante a este objeto de dominio de error global de tipo const ara::core::ErrorDomain &[SWS_TS_00909]. Interpretación: Es probable que la instancia proporcionada sirva como punto de referencia en el concepto de gestión de errores de AUTOSAR Adaptive para identificar, asignar o comparar con otros dominios de error los códigos de error específicos del módulo procedentes del área de la sincronización temporal. Pregunta Q-cf1fce412576bca3 (abierta)
Tratamiento de errores y seguridad frente a excepciones
La firma de la función está declarada explícitamente como noexcept y especificada como segura contra excepciones (exception safe) [SWS_TS_00909]. Esto significa que no se pueden lanzar excepciones durante la ejecución. Dado que la función únicamente devuelve la referencia al objeto de dominio global ya existente, no se producen estados de error internos, y no existen códigos de error ni mensajes de error específicos para la llamada [SWS_TS_00909].
Concurrencia y restricciones
Según la especificación, GetTsyncErrorDomain está clasificada como segura para hilos (thread-safe) [SWS_TS_00909]. Por lo tanto, las llamadas pueden realizarse en paralelo desde diferentes hilos sin sincronización previa ni mecanismos de bloqueo. Según la especificación, no existen condiciones de orden especiales ni precondiciones para la llamada [SWS_TS_00909].
Este texto ha sido generado por una IA y se basa en especificaciones de AUTOSAR.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ad8052caa2c8Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
La función MakeErrorCode sirve para la creación síncrona de un objeto ara::core::ErrorCode para el dominio de error de sincronización temporal en el espacio de nombres ara::tsync[SWS_TS_00910]. Está disponible a través del encabezado ara/tsync/tsync_error_domain.h y traslada números de error de la sincronización temporal al modelo estandarizado de tratamiento de errores de AUTOSAR Adaptive.
Parámetros y valor de retorno
code (ara::tsync::TsyncErrc): Designa el número de error específico del dominio [SWS_TS_00910].
data (ara::core::ErrorDomain::SupportDataType): Transfiere datos adicionales específicos del fabricante sobre el error ocurrido [SWS_TS_00910].
Valor de retorno: Devuelve un objeto ara::core::ErrorCode inicializado [SWS_TS_00910].
Concurrencia y seguridad de ejecución
La función está declarada con noexcept y clasificada como segura frente a excepciones [SWS_TS_00910]; no lanza excepciones en tiempo de ejecución. Además, la implementación está especificada como thread-safe[SWS_TS_00910], razón por la cual puede invocarse en paralelo desde varios subprocesos sin medidas de sincronización adicionales.
Interacción
De forma complementaria a esta función básica, el requisito relacionado [SWS_TS_14213] especifica una sobrecarga análoga para TsyncFvmErrc en el espacio de nombres apext::tsync (encabezado apext/tsync/fvm_error_domain.h), definida como constexpr.
Este texto ha sido generado por una IA sobre la base de la especificación AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán