Fournit un tampon pour le transfert de petites données utiles spécifiques à l'application pour des bases de temps synchronisées.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 44e6e39606c3ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Fournit un tampon pour le transfert de petites données utiles spécifiques à l'application pour des bases de temps synchronisées.
La structure ara::tsync::UserData sert au transfert de données utiles compactes spécifiques à l'application dans le cadre de bases de temps synchronisées. Elle gère un tampon statique doté d'une limite supérieure immuable de trois octets, définie via kMaxUserDataSize[SWS_TS_14231]. Les applications écrivent des données utiles dans le tableau et indiquent le nombre d'octets réellement valides via le champ size[SWS_TS_14232]. En tant que contrainte centrale, la logique de programmation applicative doit garantir que size ne dépasse jamais la capacité maximale définie et que les accès à des zones de tampon non initialisées soient évités.
Contexte
La structure de données ara::tsync::UserData sert, au sein du cluster fonctionnel pour la synchronisation horaire (tsync) de l'AUTOSAR Adaptive Platform, à encapsuler des données utiles spécifiques à l'application dans le cadre de bases de temps synchronisées. La structure est déclarée dans le fichier d'en-tête ara/tsync/synchronized_time_base_status.h. Sa responsabilité première consiste à fournir une zone mémoire compacte et dimensionnée statiquement pour des données applicatives supplémentaires qui sont transmises ou évaluées conjointement avec des informations temporelles. La taille maximale de ces données utiles est fixée à exactement trois octets par la constante statique kMaxUserDataSize[SWS_TS_14231]. Pour la mise en mémoire tampon des octets de données utiles proprement dits, le tableau data de type ara::core::Array<ara::core::Byte, kMaxUserDataSize> est utilisé [SWS_TS_14233]. Ce tampon est complété par le champ size, qui indique le nombre d'octets de données utiles réellement valides dans le tampon [SWS_TS_14232]. Interprétation : compte tenu de son lieu de définition dans l'en-tête ara/tsync/synchronized_time_base_status.h, UserData devrait surtout servir de champ d'état pour la transmission de petites informations supplémentaires liées à l'application, telles que des indicateurs de contrôle ou des compteurs. Question Q-a0fb20686141f042 (ouverte) Les partenaires d'interaction sont typiquement des services d'horloge maîtresse et des applications réceptrices qui interrogent ou relaient l'état d'une base de temps synchronisée.
Cycle de vie
En tant que structure C++ ordinaire (Value Object), UserData ne possède pas de cycle de vie interne complexe et renonce complètement aux allocations de mémoire dynamiques. Les instances sont généralement créées sur la pile ou sous la forme d'un élément de données imbriqué de structures d'état de niveau supérieur. L'initialisation s'effectue directement par initialisation d'éléments ou affectation C++ standard. Concernant les relations de propriété, la structure est soumise à la sémantique de valeur : les composants créateurs possèdent entièrement leur instance locale et la transmettent par copie ou par référence aux interfaces. Comme UserData n'implémente aucun mécanisme de synchronisation interne ni aucun verrou mutex, un accès concurrent en lecture et en écriture depuis plusieurs threads sur la même instance n'est pas sûr pour les threads. Les applications doivent sécuriser les accès simultanés par des mesures de synchronisation externes, tandis que des instances mutuellement indépendantes peuvent être utilisées sans danger dans des contextes concurrents. La destruction ne nécessite aucun nettoyage explicite de ressources, étant donné que le champ de données contenu data[SWS_TS_14233] est alloué statiquement.
Parcours d'utilisation
Un chemin d'utilisation typique comprend le remplissage, la transmission et l'évaluation du tampon de données. Tout d'abord, un composant expéditeur ou fournissant un état crée une instance de UserData. Ensuite, les données utiles sont copiées dans le tableau data, sachant qu'au maximum kMaxUserDataSize octets peuvent être occupés [SWS_TS_14231], [SWS_TS_14233]. Immédiatement après, le composant définit le champ size sur le nombre réel d'octets écrits [SWS_TS_14232]. Du côté récepteur, l'application de traitement vérifie d'abord la valeur de size[SWS_TS_14232]. Si size est supérieur à zéro, l'application lit exactement ce préfixe valide dans le tampon data[SWS_TS_14233]. Les valeurs en dehors de cette plage, c'est-à-dire de l'indice size jusqu'à kMaxUserDataSize - 1, sont ignorées car elles peuvent contenir des données résiduelles indéfinies ou obsolètes.
Scénarios d'erreur
Pour UserData, les situations d'erreur résultent principalement d'incohérences entre l'indication de taille et la capacité du tampon. Si le champ size prend une valeur qui dépasse la taille maximale définie kMaxUserDataSize de trois octets [SWS_TS_14231], il s'agit d'une violation des limites de la spécification. Dans un tel cas, des dépassements de tampon ou des accès en dehors des limites définies du tableau risquent de se produire lors de la lecture itérative de data[SWS_TS_14233]. Un autre risque réside dans la lecture erronée de data lorsque size est égal à zéro [SWS_TS_14232], car aucune donnée utile valide n'est présente dans cet état. Les codes d'erreur ou les exceptions ne sont pas générés par la structure elle-même ; la validation des préconditions – en particulier size <= kMaxUserDataSize – incombe donc entièrement à la logique du programme appelant.
Ce guide est basé sur la spécification AUTOSAR Adaptive R25-11. Toutes les indications s'appuient sur les exigences SWS référencées.
gemini-3.8-flash-low· 2026-10-13 · Original allemand