Fournit un instantané cohérent de temps et d'état d'une base de temps synchronisée pour évaluation.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : fbf296ab413aProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Fournit un instantané cohérent de temps et d'état d'une base de temps synchronisée pour évaluation.
La classe ara::tsync::SynchronizedTimeBaseStatus encapsule un instantané immuable d'une base de temps synchronisée au moment de sa création. Elle fournit des méthodes pour lire de manière thread-safe les horodatages de création locaux et synchronisés, l'état de synchronisation ainsi que les drapeaux d'état pour la correction de dérive et les données utiles spécifiques à l'utilisateur [SWS_TS_01053]. Si la base de temps n'a pas encore été synchronisée depuis le démarrage du système, la requête du temps synchronisé fournit un Optional vide [SWS_TS_01055]. Comme le constructeur par défaut est supprimé, l'objet est typiquement généré par la base de temps et transmis à l'application par sémantique de valeur.
Contexte
La classe ara::tsync::SynchronizedTimeBaseStatus représente un instantané (snapshot) immuable d'un instant temporel, y compris tous les états associés d'une base de temps synchronisée. Dans les systèmes automobiles distribués, elle sert au découplage temporel entre la base de temps à progression dynamique et l'application d'évaluation : au lieu d'interroger directement des états volatils sur la base de temps en cours d'exécution, l'application reçoit une image intrinsèquement cohérente des informations de temps et d'état au moment de la création de l'objet. La classe regroupe ainsi les valeurs temporelles de l'horloge monotone locale et du temps synchronisé, et les associe à l'état de synchronisation [SWS_TS_01053], aux drapeaux d'état pour la correction de dérive ainsi qu'aux données utiles spécifiques à l'application reçues du Time Master de la base de temps [SWS_TS_01056]. Les partenaires d'interaction essentiels sont donc la base de temps fournisseuse du module tsync et l'application consommatrice.
Cycle de vie
Le cycle de vie d'une instance de SynchronizedTimeBaseStatus est conçu pour préserver la cohérence de l'instantané :
Création : le constructeur par défaut est supprimé ([SWS_TS_01061]). Les applications ne peuvent donc pas instancier d'objets d'état ; la création devrait avoir lieu exclusivement en interne par la base de temps respective de la plateforme. Question Q-ed50a9c63b8e2481 (ouverte)
Propriété et transmission : pour restituer l'instantané aux applications par sémantique de valeur, la classe met à disposition un constructeur de copie noexcept ([SWS_TS_01058]). Pour des transferts de propriété efficaces en ressources, il existe en outre un constructeur de déplacement ([SWS_TS_01057]) ainsi que des opérateurs d'affectation par copie et par déplacement correspondants ([SWS_TS_01060], [SWS_TS_01059]). L'application réceptrice prend l'entière propriété de l'objet.
Destruction : le destructeur est spécifié comme un destructeur par défaut avec noexcept ([SWS_TS_01062]) et libère les ressources de manière déterministe.
Concurrence : toutes les méthodes de lecture pour la requête d'état sont définies comme thread-safe et sûres vis-à-vis des exceptions (exception safe) ([SWS_TS_14176], [SWS_TS_01055]). Plusieurs threads peuvent ainsi évaluer le même instantané de manière concurrente et sans synchronisation supplémentaire. Seules les opérations d'affectation et de construction sont non_threadsafe ([SWS_TS_01057], [SWS_TS_01058]).
Parcours d'utilisation
Dès qu'une application a reçu une instance de SynchronizedTimeBaseStatus de la base de temps ([SWS_TS_01058]), l'évaluation s'effectue typiquement selon un ordre défini :
L'application vérifie d'abord l'heure de création synchronisée au moyen de GetCreationTime() ([SWS_TS_01055]). Si la base de temps n'a encore jamais été synchronisée depuis le démarrage du système, l'appel retourne un ara::core::Optional vide. Dans ce cas, l'application peut se rabattre via GetCreationLocalTime() ([SWS_TS_14176]) sur l'instant de création rapporté à l'horloge monotone locale (ara::core::SteadyClock).
À l'état synchronisé, l'application détermine via GetSynchronizationStatus() ([SWS_TS_01053]) la phase de synchronisation exacte et vérifie avec GetLeapJump() ([SWS_TS_01054]) si et dans quelle direction un saut temporel s'est produit depuis la création de l'instantané précédent. Ensuite, il est contrôlé si une correction de dérive est calculée (GetRateCorrected(), [SWS_TS_14226]) et si l'écart de dérive calculé dépasse la valeur de seuil rateCorrectionThreshold (GetRateExceeded(), [SWS_TS_14229]). Enfin, des données utiles transmises par le Time Master peuvent être interrogées via GetUserData() ([SWS_TS_01056]).
L'interface de SynchronizedTimeBaseStatus est entièrement déclarée comme noexcept et ne lève aucune exception C++. Les états non valides ou les erreurs sont signalés par des types de retour sémantiques :
L'absence de référence de synchronisation est représentée par un ara::core::Optional vide lors de GetCreationTime() lorsque la base de temps présente l'état kNotSynchronizedUntilStartup depuis le démarrage du système ([SWS_TS_01055]). Les dépassements de seuil lors de l'ajustement de fréquence sont signalés par GetRateExceeded() via la valeur booléenne dans ara::core::Result<bool> ([SWS_TS_14229]). Aucun code d'erreur standardisé n'est spécifié pour GetRateCorrected() ([SWS_TS_14226]) et GetRateExceeded() ([SWS_TS_14229]) ; interprétation : un état d'erreur véhiculé dans le Result devrait indiquer des problèmes internes de plateforme ou de pilote. Question (ouverte)
Ce guide s'appuie sur la spécification AUTOSAR Adaptive R25-11 (module tsync) et a été préparé par un assistant de curation IA.
SynchronizedTimeBaseStatus & operator= (const SynchronizedTimeBase Status &) noexcept; DIRECTION NOT const SynchronizedTime -- DEFINED BaseStatus &SWS_TS_01060
Documentation des méthodes
fonction GetCreationLocalTime [SWS_TS_14176]Upstream: RS_TS_00021 libellé pas encore importé
The point in time at which this object was created. Time point is expressed in synchronized time. If time was never synchronized (SynchronizationStatus = kNotSynchronizedUntilStartup), the returned optional is empty (i.e., no valid value).
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original allemand