Fournit des interfaces standardisées pour les bases de temps synchronisées, les horodatages de haute précision et la surveillance de l’état.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : aa3b87a713ceProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Fournit des interfaces standardisées pour les bases de temps synchronisées, les horodatages de haute précision et la surveillance de l’état.
L’espace de noms ara::tsync fournit des interfaces pour l’accès synchronisé au temps sur l’Adaptive Platform en connectant les applications à des bases de temps configurées via SynchronizedTimeBaseConsumer. L’acquisition du temps s’effectue par le biais d’horodatages de haute précision de type Timestamp sur la base d’une résolution en nanosecondes [SWS_TS_01251]. Les applications surveillent la synchronicité via des indicateurs d’état tels que SynchronizationStatus[SWS_TS_01050]. Comme contrainte essentielle, les callbacks de notification asynchrones ne sont pas conçus pour être thread-safe, et les pertes de connexion avec le démon temporel doivent être traitées.
Contexte
L’espace de noms ara::tsync fournit, au sein de l’AUTOSAR Adaptive Platform, les interfaces pour la synchronisation temporelle de haute précision. Il permet aux applications de lire des instants synchronisés, de surveiller l’état de synchronisation et de journaliser des valeurs de mesure à des fins de validation. La classe SynchronizedTimeBaseConsumer, qui encapsule l’accès à une base de temps configurée via un InstanceSpecifier, occupe le rôle central pour les applications consommatrices. Côté fournisseur, SynchronizedTimeBaseProvider sert de point d’accès pour la mise à disposition et le pilotage des bases de temps.
La base de la représentation temporelle est la pseudo-horloge TimeBase, par l’intermédiaire de laquelle l’alias de type Timestamp est défini comme std::chrono::time_point<TimeBase, std::chrono::nanoseconds>[SWS_TS_01251]. Le travail de synchronisation proprement dit et le raccordement aux protocoles de bus tels que IEEE 802.1AS ou PTP s’effectuent typiquement via un service d’arrière-plan. Interprétation : ce démon temporel communique entre les processus avec les instances de ara::tsync, ce qui est corroboré par l’erreur spécifique TsyncErrc::kDaemonConnectionLost[SWS_TS_00901]. L’architecture est complétée par des interfaces telles que ConsumerTimeBaseValidationNotification et ProviderTimeBaseValidationNotification ainsi que des structures de données pour les mesures de temps d’exécution et de précision (par ex. TimeMasterMeasurementType, TimeSlaveMeasurementType, PdelayInitiatorMeasurementType et PdelayResponderMeasurementType). Question Q-dd9d1a36f7573a03 (ouverte)
Diagramme de contexte : interaction des applications, des classes d’interface et du démon temporel dans l’espace de noms ara::tsync. Sources : [SWS_TS_00901], [SWS_TS_01251].
Cycle de vie
Le cycle de vie d’une base de temps synchronisée est déterminé par des structures d’état et des transitions de statut discrètes. Un instantané de l’état temporel, comprenant toutes les métadonnées, est représenté par SynchronizedTimeBaseStatus. L’état de communication et de synchronisation est contrôlé via l’énumération SynchronizationStatus[SWS_TS_01050] :
kNotSynchronizedUntilStartup : état initial avant la première synchronisation réussie après le démarrage du système.
kSynchronized : la base de temps est synchrone avec le Time Master.
kSynchToGateway : la synchronisation s’effectue via une passerelle.
kTimeOut : aucune synchronisation n’a pu être établie ou maintenue dans une fenêtre temporelle définie.
Outre le statut de communication, l’énumération LeapJump[SWS_TS_01051] enregistre les corrections par saut de la base de temps : kTimeLeapNone signale un fonctionnement continu sans dépassement de seuil, tandis que kTimeLeapFuture et kTimeLeapPast indiquent des corrections significatives respectivement vers le futur ou vers le passé.
En ce qui concerne la concurrence, il convient de noter que les types de callback tels que SynchronizationNotifier[SWS_TS_14222], SynchronizedTimeBaseNotifier[SWS_TS_14221] et TimePrecisionNotifier[SWS_TS_14223] sont, conformément aux spécifications, classés comme non thread-safe. Les transitions d’état, en particulier l’apparition de timeouts ou de resynchronisations, nécessitent donc une synchronisation du côté de l’application.
Diagramme d’états : cycle de vie et états de communication d’une base de temps synchronisée. Sources : [SWS_TS_01050].
Parcours d'utilisation
Le déroulement typique pour l’utilisation d’une base de temps synchronisée par une application consommatrice se divise selon les étapes suivantes :
Initialisation et liaison : l’application instancie SynchronizedTimeBaseConsumer pour la base de temps souhaitée en indiquant le InstanceSpecifier adéquat.
Enregistrement des notifications : pour surveiller l’état de synchronisation, l’application transmet des fonctions de rappel. Celles-ci incluent SynchronizationNotifier[SWS_TS_14222] pour les modifications du SynchronizationStatus, SynchronizedTimeBaseNotifier[SWS_TS_14221] pour des instantanés d’état détaillés (SynchronizedTimeBaseStatus) ainsi que TimePrecisionNotifier[SWS_TS_14223] pour les données de mesure de précision (TimePrecisionMeasurement).
Interrogation d’horodatage : en présence de l’état kSynchronized ou kSynchToGateway[SWS_TS_01050], l’application lit des valeurs temporelles de haute précision de type Timestamp[SWS_TS_01251].
Réaction aux sauts d’état et de temps : si des notifications signalent un LeapJump différent de kTimeLeapNone[SWS_TS_01051] ou une transition vers kTimeOut[SWS_TS_01050], l’application adapte les horloges internes ou bascule dans un mode dégradé.
Transmission de données utilisateur : si des données utiles spécifiques à l’utilisateur sont transmises dans le cadre de la synchronisation temporelle, la structure UserData est utilisée.
Scénarios d'erreur
Le traitement des erreurs de l’espace de noms suit le modèle standard d’AUTOSAR via le domaine d’erreur TsyncErrorDomain. L’accès à ce domaine global s’effectue via GetTsyncErrorDomain()[SWS_TS_00909]. Les causes d’erreur sont décrites par le type énuméré TsyncErrc[SWS_TS_00901] :
kDaemonConnectionLost : l’opération demandée échoue car la connexion au démon Time-Sync est interrompue.
kLimitsExceeded : une valeur transmise ou calculée se situe en dehors de la plage de valeurs autorisée.
kFunctionNotSupported : la fonction demandée n’est pas prise en charge dans la configuration actuelle ou l’environnement de plateforme actuel.
kInvalidUserDataSize : la longueur des données utilisateur transmises dépasse le maximum défini par UserData::kMaxUserDataSize, qui est actuellement de 3 octets.
Les instances de ara::core::ErrorCode sont créées via la fonction utilitaire MakeErrorCode[SWS_TS_00910]. La fonction est déclarée comme noexcept et est thread-safe. Pour les architectures basées sur les exceptions, l’espace de noms fournit la classe d’exception TsyncException.
Ce guide est basé sur la spécification AUTOSAR Adaptive Platform R25-11 pour le module tsync.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Diagramme de classes
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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 2b617e90b13fProvenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
L'énumération SynchronizationStatus exprime l'état de communication et de synchronisation d'une base de temps dans l'espace de noms ara::tsync[SWS_TS_01050]. Le type repose sur std::uint32_t et est fourni via le fichier d'en-tête ara/tsync/synchronized_time_base_status.h ainsi que le fichier d'en-tête de transmission (forwarding header) ara/tsync/tsync_fwd.h[SWS_TS_01050]. L'énumération définit quatre états :
kNotSynchronizedUntilStartup (= 0) : la base de temps n'est pas synchronisée avant le démarrage du système (état initial) [SWS_TS_01050].
kTimeOut (= 0x1) : la base de temps n'a pas été synchronisée dans une fenêtre temporelle prédéfinie [SWS_TS_01050].
kSynchronized (= 0x2) : la base de temps est synchrone avec le Time-Master [SWS_TS_01050].
kSynchToGateway (= 0x3) : la base de temps est synchrone avec la passerelle [SWS_TS_01050].
La récupération synchrone de l'état s'effectue via la méthode GetSynchronizationStatus() de la classe ara::tsync::SynchronizedTimeBaseStatus, qui fournit l'état au moment de la création de l'objet d'état de manière thread-safe et sûre vis-à-vis des exceptions (noexcept) [SWS_TS_01053]. Pour les notifications lors des changements d'état, il existe dans ara/tsync/synchronized_time_base_consumer.h l'alias de type SynchronizationNotifier (std::function<void(const SynchronizationStatus &)>), qui est explicitement spécifié comme non thread-safe [SWS_TS_14222].
En cas d'erreur ou d'absence de synchronisation, le comportement des méthodes associées doit être pris en compte : si la base de temps n'a encore jamais été synchronisée et présente l'état kNotSynchronizedUntilStartup, la méthode GetCreationTime() renvoie un ara::core::Optional vide, car aucun instant de création valide en temps synchronisé n'est disponible [SWS_TS_01055].
Ce texte a été généré par un système d'IA et repose exclusivement sur les données de spécification issues d'AUTOSAR R25-11.
Guide de l'implémenteur à venir (complexité 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).
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : bf6ea0154525ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
L'énumération TsyncErrc définit les codes d'erreur standardisés du cluster fonctionnel Time Synchronization [SWS_TS_00901]. Elle repose sur ara::core::ErrorDomain::CodeType et est déclarée au sein de l'espace de noms ara::tsync ; un alias est en outre disponible via ara::tsync::TsyncErrorDomain::Errc[SWS_TS_01266]. La fonction thread-safe MakeErrorCode sert à créer des objets d'erreur complets, reliant une valeur TsyncErrc à des données supplémentaires spécifiques au constructeur pour former un ara::core::ErrorCode[SWS_TS_00910].
La spécification définit quatre valeurs d'erreur concrètes [SWS_TS_00901] :
kDaemonConnectionLost (=1) : l'action ne peut pas être exécutée car la connexion au démon Time-Sync est interrompue.
kLimitsExceeded (=2) : un paramètre transmis dépasse la plage de valeurs autorisée. Cela se produit par exemple lors de SetRateCorrection lorsque la correction de taux demandée est invalide [SWS_TS_01110].
kFunctionNotSupported (=3) : la fonction demandée n'est pas prise en charge. Interprétation : cela devrait concerner des implémentations pour lesquelles des fonctions matérielles ou d'interface optionnelles ne sont pas disponibles. Question Q-e22067d84fd6adb4 (ouverte)
kInvalidUserDataSize (=4) : la longueur des données utiles dépasse la taille maximale de 3 octets imposée par UserData::kMaxUserDataSize. Cette erreur se produit pour SetTime[SWS_TS_01107] ainsi que pour SetUserData[SWS_TS_01112].
Les méthodes de mise à jour du temps et des données telles que SetTime, UpdateTime, SetRateCorrection et SetUserData de la classe ara::tsync::SynchronizedTimeBaseProvider renvoient des résultats de manière synchrone via ara::core::Result<void> et sont spécifiées comme non thread-safe [SWS_TS_01107][SWS_TS_01108][SWS_TS_01110][SWS_TS_01112]. En cas d'erreur, aucune sémantique de rollback ne s'applique selon la spécification (no_rollback_semantics) [SWS_TS_01107][SWS_TS_01110][SWS_TS_01112].
Ce texte a été généré par une IA et repose sur l'état de la spécification R25-11.
Guide de l'implémenteur à venir (complexité I1)
Request a governed re-review of this record. The record is not changed immediately.
Returns a reference to the global TsyncErrorDomain object.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 3848538f31e7ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La fonction synchrone GetTsyncErrorDomain appartient à l'espace de noms ara::tsync et est incluse via le fichier d'en-tête ara/tsync/tsync_error_domain.h[SWS_TS_00909]. L'appel s'effectue sans paramètre et sert à récupérer une référence vers l'objet global TsyncErrorDomain de la synchronisation temporelle [SWS_TS_00909].
Comme valeur de retour, la fonction fournit une référence constante vers cet objet domaine d'erreur global de type const ara::core::ErrorDomain &[SWS_TS_00909]. Interprétation : L'instance fournie devrait servir de point de référence dans le concept de traitement des erreurs d'AUTOSAR Adaptive afin d'identifier, d'assigner ou de comparer avec d'autres domaines d'erreur les codes d'erreur spécifiques au module issus du domaine de la synchronisation temporelle. Question Q-cf1fce412576bca3 (ouverte)
Gestion des erreurs et sécurité vis-à-vis des exceptions
La signature de la fonction est explicitement déclarée comme noexcept et spécifiée comme sûre face aux exceptions (exception safe) [SWS_TS_00909]. Cela signifie qu'aucune exception ne peut être levée pendant l'exécution. Comme la fonction ne fait que renvoyer la référence vers l'objet de domaine global déjà existant, aucun état d'erreur interne ne survient, et il n'existe ni codes d'erreur spécifiques ni messages d'erreur pour l'appel [SWS_TS_00909].
Concurrence et restrictions
Selon la spécification, GetTsyncErrorDomain est classé comme sûr pour les threads (thread-safe) [SWS_TS_00909]. Les appels peuvent ainsi être effectués en parallèle depuis différents threads sans synchronisation préalable ni mécanismes de verrouillage. Selon la spécification, il n'existe pas d'exigences d'ordonnancement particulières ni de préconditions pour l'appel [SWS_TS_00909].
Ce texte a été généré par une IA et se base sur les spécifications AUTOSAR.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : ad8052caa2c8Provenance
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
La fonction MakeErrorCode sert à la création synchrone d'un objet ara::core::ErrorCode pour le domaine d'erreur de la synchronisation temporelle dans le namespace ara::tsync[SWS_TS_00910]. Elle est disponible via l'en-tête ara/tsync/tsync_error_domain.h et transpose les numéros d'erreur de la synchronisation temporelle dans le modèle standardisé de traitement des erreurs d'AUTOSAR Adaptive.
Paramètres et valeur de retour
code (ara::tsync::TsyncErrc) : désigne le numéro d'erreur spécifique du domaine [SWS_TS_00910].
data (ara::core::ErrorDomain::SupportDataType) : transmet des données supplémentaires spécifiques au constructeur relatives à l'erreur survenue [SWS_TS_00910].
Valeur de retour : renvoie un objet ara::core::ErrorCode initialisé [SWS_TS_00910].
Concurrence et sécurité d'exécution
La fonction est déclarée avec noexcept et classée comme sûre vis-à-vis des exceptions [SWS_TS_00910] ; elle ne lève aucune exception à l'exécution. De plus, l'implémentation est spécifiée comme thread-safe[SWS_TS_00910], c'est pourquoi elle peut être appelée en parallèle depuis plusieurs threads sans mesures de synchronisation supplémentaires.
Interaction
En complément de cette fonction de base, l'exigence associée [SWS_TS_14213] spécifie une surcharge analogue pour TsyncFvmErrc dans le namespace apext::tsync (en-tête apext/tsync/fvm_error_domain.h), qui est définie comme constexpr.
Ce texte a été généré par une IA sur la base de la spécification AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · Original allemand