Time Daemon#
Time Daemon
|
status: draft
security: NO
safety: ASIL_B
|
||||
Time Daemon
|
status: valid
security: NO
safety: ASIL_B
|
||||
Abstract#
This component implements a time synchronization daemon that receives time data from time_slave via IPC, performs verification and qualification, and provides validated time information to applications.
Specification#
The time_daemon component acts as a verification and publishing layer between the time_slave component and client applications. It receives gPTP time synchronization data from shared memory, validates it through multiple verification stages, and publishes qualified time data via IPC.
The component operates as a continuous loop with the following stages:
Data Reception: Reads gPTP time synchronization data from shared memory written by time_slave
Verification Pipeline: Validates data through three checks:
Synchronization status validation
Timeout detection (no new time sync data within configured span of time)
Time jump detection (received master timestamp deviates from its expected value by more than the configured threshold)
Publishing: Publishes verified time data with quality indicators to clients via VehicleTime IPC interface at a fixed interval
Key Behaviors#
Startup Stabilization: Synchronization state changes are not reported during a configurable span of time after initial synchronization to avoid spurious time jump detection.
Error Recovery: Time jump and timeout conditions are non-fatal. The component continues publishing with appropriate status flags set. Time jump condition clears after configurable number of consecutive valid frames.
Multi-Client Support: Multiple client applications can concurrently read published time data.
Platform Support: Linux and QNX 8.0 SDP platforms supported for shared memory and IPC operations.
Assumptions of Use#
The gPTP shared memory must be available and initialized before synchronized time data published by time_daemon is relied upon. Otherwise shared memory access failures or stale data may occur.
Footnotes#
Further Documentation of the component can be found in the following sections: