Time Daemon Component Requirements#

Time Daemon Requirements
status: valid
security: NO
safety: ASIL_B
tags: requirements, time_daemon, time_daemon
version: 1

Functional Requirements#

Initialization and Lifecycle#

Component Initialization
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

On startup the time_daemon component shall determine its configuration and initialize the configured time synchronization data receiver, time data verification pipeline (synchronization validation, timeout detection, time jump detection), and IPC publisher.

Initialization Retry
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

If initialization of the time synchronization data receiver, time data verification pipeline, or IPC publisher fails, the time_daemon component shall retry to initialize the respective unit.

Initialization Timeout
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

If initialization is not completed within 20 seconds, the time_daemon component shall fail initialization and end the time_daemon process.

Component Shutdown
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

On receiving a stop signal (e.g. SIGINT or SIGTERM) the time_daemon component shall stop publishing time data and release IPC resources.

Data Reception and Validation#

Time Synchronization Data Reception
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall receive time synchronization data from time_slave component using the ts_client component for IPC abstraction.

Verification Pipeline#

Synchronization Status Validation
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall validate synchronization status based on received time synchronization data.

Synchronization State Stabilization
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall not report time jumps during the configured time span (default: 5 seconds) after initial synchronization to avoid spuriously detected time jumps during startup.

Time Jump Detection
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall detect time jumps when the master clock timestamp of a gPTP time sync data update differs from the expected value by more than the configured time span (default: 500 microseconds). Both forward and backward time jumps shall be detected.

Timeout Detection
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall detect timeout condition when no new time synchronization data is received within the configured time span (default: 3.3 seconds).

Data Publishing#

Time Data Publishing
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall publish the verified time synchronization data to the time component linked as a library into client applications.

Published Time Data Content
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Interface
version: 1

The time_daemon component shall include in published time data: the timestamp of the master clock, the corresponding timestamp of the local reference clock, the rate deviation between those two clocks, synchronization status, time jump status, and timeout status.

Published Raw gPTP Data
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Interface
version: 1

The time_daemon component shall include in published time data condensed raw data of the last received Sync/FollowUp pair and the last finished Pdelay measurement.

Time Point Qualifier Production
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall derive the time point qualifier (quality indicator) of the time data provided to the time component from the synchronization status, time jump status, and timeout status.

Client Read Access
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall provide the time component with functionality to read the published time data.

Non-Blocking Read Access
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

Reading the published time data shall not block the reading thread of a client application indefinitely.

Multi-Client Support
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall allow parallel reads of the published time data from multiple client applications on different CPU cores.

Error Handling and Recovery#

Error Reporting
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall log messages via the score::mw::log interface when initialization fails (error level), IPC access fails (error level), verification stage failures occur (warning level), or time synchronization data reception fails (error level).

Error Reaction
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall continue publishing time data when a time jump, timeout, or loss of synchronization is detected, with the corresponding status set in the published time data.

Time Jump Recovery
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall clear time jump condition after receiving 2 consecutive valid gPTP frames without time jump.

Platform Abstraction#

Platform Support
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Functional
version: 1

The time_daemon component shall support Linux and QNX 8.0 SDP platforms.

Assumption of Use Requirements#

Time Slave Availability
status: valid
security: NO
safety: ASIL_B
tags: time_daemon
reqtype: Process
version: 1

The user shall ensure the time_slave component is running before starting time_daemon, or is started such that it becomes available within the time_daemon initialization timeout. Otherwise time_daemon initialization will fail.