Предоставляет стандартизированные интерфейсы для синхронизированных баз времени, высокоточных временных меток и мониторинга состояния.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: aa3b87a713ceПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет стандартизированные интерфейсы для синхронизированных баз времени, высокоточных временных меток и мониторинга состояния.
Пространство имен ara::tsync предоставляет интерфейсы для синхронизированного доступа ко времени на Adaptive Platform, подключая приложения к сконфигурированным базам времени через SynchronizedTimeBaseConsumer. Фиксация времени выполняется с помощью высокоточных временных меток типа Timestamp на основе наносекундного разрешения [SWS_TS_01251]. Приложения контролируют синхронность с помощью таких индикаторов состояния, как SynchronizationStatus[SWS_TS_01050]. В качестве существенного граничного условия асинхронные функции обратного вызова для уведомлений спроектированы как непотокобезопасные, и потери соединения с демоном времени должны обрабатываться.
Контекст
Пространство имен ara::tsync предоставляет в рамках AUTOSAR Adaptive Platform интерфейсы для высокоточной синхронизации времени. Оно позволяет приложениям считывать синхронизированные моменты времени, отслеживать состояние синхронизации, а также протоколировать измеренные значения для целей валидации. Центральную роль для потребляющих приложений занимает класс SynchronizedTimeBaseConsumer, который инкапсулирует доступ к базе времени, сконфигурированной через InstanceSpecifier. На стороне поставщика SynchronizedTimeBaseProvider служит точкой доступа для предоставления баз времени и управления ими.
Основой временного представления являются псевдо-часы TimeBase, через которые псевдоним типа Timestamp определен как std::chrono::time_point<TimeBase, std::chrono::nanoseconds>[SWS_TS_01251]. Непосредственная работа по синхронизации и подключение к шинным протоколам, таким как IEEE 802.1AS или PTP, обычно выполняются фоновой службой. Интерпретация: этот демон времени взаимодействует между процессами с экземплярами ara::tsync, что подтверждается специфической ошибкой TsyncErrc::kDaemonConnectionLost[SWS_TS_00901]. Вопрос Q-dd9d1a36f7573a03 (открытый) Архитектура дополняется такими интерфейсами, как ConsumerTimeBaseValidationNotification и ProviderTimeBaseValidationNotification, а также структурами данных для измерений времени выполнения и точности (например, TimeMasterMeasurementType, TimeSlaveMeasurementType, PdelayInitiatorMeasurementType и PdelayResponderMeasurementType).
Контекстная диаграмма: взаимодействие приложений, интерфейсных классов и демона времени в пространстве имен ara::tsync. Источники: [SWS_TS_00901], [SWS_TS_01251].
Жизненный цикл
Жизненный цикл синхронизированной базы времени определяется структурами состояния и дискретными сменами статуса. Снимок временного состояния, включая все метаданные, представляется структурой SynchronizedTimeBaseStatus. Состояние связи и синхронизации управляется через перечисление SynchronizationStatus[SWS_TS_01050]:
kNotSynchronizedUntilStartup: исходное состояние до первой успешной синхронизации после запуска системы.
kSynchronized: база времени синхронна с Time-Master.
kSynchToGateway: синхронизация выполняется через шлюз.
kTimeOut: в пределах определенного временного окна не удалось установить или поддержать синхронизацию.
Наряду со статусом связи перечисление LeapJump[SWS_TS_01051] фиксирует скачкообразные коррекции базы времени: kTimeLeapNone сигнализирует о непрерывном ходе без превышения пороговых значений, в то время как kTimeLeapFuture и kTimeLeapPast показывают значительные коррекции в будущее или в прошлое соответственно.
В отношении конкурентности следует учитывать, что типы обратного вызова, такие как SynchronizationNotifier[SWS_TS_14222], SynchronizedTimeBaseNotifier[SWS_TS_14221] и TimePrecisionNotifier[SWS_TS_14223], согласно спецификации классифицируются как непотокобезопасные. Переходы состояний, в частности возникновение таймаутов или повторных синхронизаций, следовательно, требуют синхронизации на стороне приложения.
Диаграмма состояний: жизненный цикл и коммуникационные состояния синхронизированного базиса времени. Источники: [SWS_TS_01050].
Путь использования
Типичная последовательность использования синхронизированного базиса времени приложением-потребителем состоит из следующих шагов:
Инициализация и привязка: приложение инстанциирует SynchronizedTimeBaseConsumer для требуемого базиса времени с указанием подходящего InstanceSpecifier.
Регистрация уведомлений: для мониторинга состояния синхронизации приложение передает функции обратного вызова. К ним относятся SynchronizationNotifier[SWS_TS_14222] для изменений SynchronizationStatus, SynchronizedTimeBaseNotifier[SWS_TS_14221] для подробных снимков состояния (SynchronizedTimeBaseStatus), а также TimePrecisionNotifier[SWS_TS_14223] для данных измерений точности (TimePrecisionMeasurement).
Запрос метки времени: при наличии состояния kSynchronized или kSynchToGateway[SWS_TS_01050] приложение считывает высокоточные значения времени типа Timestamp[SWS_TS_01251].
Реакция на скачки состояния и времени: если уведомления сигнализируют о LeapJump, отличном от kTimeLeapNone[SWS_TS_01051], или о переходе в kTimeOut[SWS_TS_01050], приложение корректирует внутренние таймеры или переходит в режим деградации.
Передача пользовательских данных: если в рамках синхронизации времени передаются специфичные для пользователя полезные данные, используется структура UserData.
Сценарии ошибок
Обработка ошибок пространства имен следует стандартной модели AUTOSAR через домен ошибок TsyncErrorDomain. Доступ к этому глобальному домену осуществляется через GetTsyncErrorDomain()[SWS_TS_00909]. Причины ошибок описываются типом перечисления TsyncErrc[SWS_TS_00901]:
kDaemonConnectionLost: запрошенная операция завершается сбоем, так как соединение с демоном Time-Sync прервано.
kLimitsExceeded: переданное или вычисленное значение находится за пределами допустимого диапазона значений.
kFunctionNotSupported: запрошенная функция не поддерживается в текущей конфигурации или среде платформы.
kInvalidUserDataSize: длина переданных пользовательских данных превышает максимум в 3 байта, определенный UserData::kMaxUserDataSize.
Экземпляры ara::core::ErrorCode создаются с помощью вспомогательной функции MakeErrorCode[SWS_TS_00910]. Функция объявлена как noexcept и является потокобезопасной. Для архитектур на основе исключений пространство имен предоставляет класс исключений TsyncException.
Данное руководство основано на спецификации AUTOSAR Adaptive Platform R25-11 для модуля tsync.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Диаграмма классов
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2b617e90b13fПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Перечисление SynchronizationStatus выражает статус связи и синхронизации базы времени в пространстве имён ara::tsync[SWS_TS_01050]. Тип основан на std::uint32_t и предоставляется через заголовочный файл ara/tsync/synchronized_time_base_status.h, а также заголовочный файл опережающего объявления ara/tsync/tsync_fwd.h[SWS_TS_01050]. Перечисление определяет четыре состояния:
kNotSynchronizedUntilStartup (= 0): база времени не синхронизирована до запуска системы (начальное состояние) [SWS_TS_01050].
kTimeOut (= 0x1): база времени не была синхронизирована в пределах заданного временного окна [SWS_TS_01050].
kSynchronized (= 0x2): база времени синхронна с Time-Master [SWS_TS_01050].
kSynchToGateway (= 0x3): база времени синхронна со шлюзом [SWS_TS_01050].
Синхронное получение статуса осуществляется через метод GetSynchronizationStatus() класса ara::tsync::SynchronizedTimeBaseStatus, который возвращает состояние на момент создания объекта статуса потокобезопасно и с безопасностью относительно исключений (noexcept) [SWS_TS_01053]. Для уведомлений при изменениях статуса в ara/tsync/synchronized_time_base_consumer.h существует псевдоним типа SynchronizationNotifier (std::function<void(const SynchronizationStatus &)>), который явно специфицирован как непотокобезопасный [SWS_TS_14222].
В случае ошибки или при отсутствии синхронизации следует учитывать поведение связанных методов: если база времени ещё ни разу не была синхронизирована и имеет статус kNotSynchronizedUntilStartup, метод GetCreationTime() возвращает пустой ara::core::Optional, так как отсутствует допустимый момент создания в синхронизированном времени [SWS_TS_01055].
Этот текст сгенерирован системой ИИ и опирается исключительно на данные спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность 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).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: bf6ea0154525ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Перечисление TsyncErrc определяет стандартизированные коды ошибок функционального кластера Time Synchronization [SWS_TS_00901]. Оно базируется на ara::core::ErrorDomain::CodeType и объявляется внутри пространства имен ara::tsync; кроме того, через ara::tsync::TsyncErrorDomain::Errc доступен псевдоним [SWS_TS_01266]. Для создания полных объектов ошибок служит потокобезопасная функция MakeErrorCode, связывающая значение TsyncErrc со специфичными для производителя дополнительными данными в ara::core::ErrorCode[SWS_TS_00910].
Спецификация определяет четыре конкретных значения ошибки [SWS_TS_00901]:
kDaemonConnectionLost (=1): действие не может быть выполнено, так как соединение с демоном Time-Sync разорвано.
kLimitsExceeded (=2): переданный параметр выходит за пределы допустимого диапазона значений. Это происходит, например, при SetRateCorrection, если запрошенная коррекция скорости недопустима [SWS_TS_01110].
kFunctionNotSupported (=3): запрошенная функция не поддерживается. Интерпретация: вероятно, это относится к реализациям, в которых недоступны опциональные функции аппаратного обеспечения или интерфейсов. Вопрос Q-e22067d84fd6adb4 (открытый)
kInvalidUserDataSize (=4): длина полезных данных превышает максимальный размер в 3 байта, заданный UserData::kMaxUserDataSize. Эта ошибка возникает при SetTime[SWS_TS_01107], а также SetUserData[SWS_TS_01112].
Методы обновления времени и данных, такие как SetTime, UpdateTime, SetRateCorrection и SetUserData класса ara::tsync::SynchronizedTimeBaseProvider, возвращают результаты синхронно через ara::core::Result<void> и специфицированы как непотокобезопасные [SWS_TS_01107][SWS_TS_01108][SWS_TS_01110][SWS_TS_01112]. В случае ошибки, согласно спецификации, семантика отката (no_rollback_semantics) не применяется [SWS_TS_01107][SWS_TS_01110][SWS_TS_01112].
Этот текст был создан ИИ и основан на версии спецификации R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Request a governed re-review of this record. The record is not changed immediately.
Returns a reference to the global TsyncErrorDomain object.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 3848538f31e7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронная функция GetTsyncErrorDomain принадлежит пространству имен ara::tsync и подключается через заголовочный файл ara/tsync/tsync_error_domain.h[SWS_TS_00909]. Вызов выполняется без параметров и служит для получения ссылки на глобальный объект TsyncErrorDomain синхронизации времени [SWS_TS_00909].
В качестве возвращаемого значения функция возвращает константную ссылку на этот глобальный объект домена ошибок типа const ara::core::ErrorDomain &[SWS_TS_00909]. Интерпретация: предоставляемый экземпляр, вероятно, служит точкой отсчета в концепции обработки ошибок AUTOSAR Adaptive для идентификации, сопоставления или сравнения с другими доменами ошибок специфичных для модуля кодов ошибок из области синхронизации времени. Вопрос Q-cf1fce412576bca3 (открытый)
Обработка ошибок и безопасность исключений
Сигнатура функции явно объявлена как noexcept и специфицирована как исключениебезопасная (exception safe) [SWS_TS_00909]. Это означает, что во время выполнения не могут генерироваться исключения. Поскольку функция лишь возвращает ссылку на уже существующий глобальный объект домена, внутренние состояния ошибок не возникают, и для вызова не существует ни специфических кодов ошибок, ни сообщений об ошибках [SWS_TS_00909].
Параллелизм и ограничения
Согласно спецификации, GetTsyncErrorDomain классифицируется как потокобезопасная (thread-safe) [SWS_TS_00909]. Таким образом, вызовы могут выполняться параллельно из различных потоков без предварительной синхронизации или механизмов блокировки. Особенных условий очередности или предусловий для вызова согласно спецификации не существует [SWS_TS_00909].
Этот текст был создан ИИ и основан на спецификациях AUTOSAR.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ad8052caa2c8Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция MakeErrorCode служит для синхронного создания объекта ara::core::ErrorCode для домена ошибок синхронизации времени в пространстве имен ara::tsync[SWS_TS_00910]. Она доступна через заголовочный файл ara/tsync/tsync_error_domain.h и переносит номера ошибок синхронизации времени в стандартизированную модель обработки ошибок AUTOSAR Adaptive.
Параметры и возвращаемое значение
code (ara::tsync::TsyncErrc): обозначает специфический номер ошибки домена [SWS_TS_00910].
data (ara::core::ErrorDomain::SupportDataType): передает специфичные для производителя дополнительные данные о возникшей ошибке [SWS_TS_00910].
Возвращаемое значение: возвращает инициализированный объект ara::core::ErrorCode[SWS_TS_00910].
Параллелизм и надёжность выполнения
Функция объявлена с noexcept и классифицирована как исключениебезопасная [SWS_TS_00910]; во время выполнения она не генерирует исключений. Кроме того, реализация специфицирована как thread-safe[SWS_TS_00910], поэтому ее разрешается вызывать параллельно из нескольких потоков без дополнительных мер синхронизации.
Взаимодействие
В дополнение к этой базовой функции связанное требование [SWS_TS_14213] специфицирует аналогичную перегрузку для TsyncFvmErrc в пространстве имен apext::tsync (заголовочный файл apext/tsync/fvm_error_domain.h), которая определена как constexpr.
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал