diff --git a/docs/architecture/_assets/sad_deployment.puml b/docs/architecture/_assets/sad_deployment.puml new file mode 100644 index 00000000..05f25346 --- /dev/null +++ b/docs/architecture/_assets/sad_deployment.puml @@ -0,0 +1,39 @@ +@startuml sad_deployment_diagram + +title Deployment view + +node "S-CORE based host/guest machine" <> { + node "Application Layer" { + [Business logic] as app_bl + [score::time] <> as mw + } + node "Diagnostic App Layer" { + [Diag jobs business logic] as diag_bl + [score::time] <> as mw_ext + } + node [time_salve] <> { + [gptp_engine] + } + node [time_daemon] <> { + [VerificationMachine] as verification_machine + [PTP machine] as ptp_machine + } + [EMAC] <> as hw_counter +} +node "Time Master ECU" <> { + [gPTP Grand Master Clock] as ptp_gm +} +[DLT] <> as dlt_records + + +ptp_gm -[#purple]-> gptp_engine : gPTP sync messages +gptp_engine ..> hw_counter : Updates local hw timer +gptp_engine -[#blue]-> ptp_machine : PTP time updates\n(via score::memory::shared) +ptp_machine -[#green]-> verification_machine: Time information +verification_machine -[#green]-> mw: Time information\n(via score::memory::shared) +verification_machine -[#green]-> mw_ext: Time information\n(via score::memory::shared) +verification_machine -[#green]-> dlt_records: Data for post analysis +mw-[#orange]-> app_bl : Now() +mw_ext-[#orange]-> diag_bl : Now(), Callbacks() + +@enduml diff --git a/docs/architecture/index.rst b/docs/architecture/index.rst new file mode 100644 index 00000000..03f4bf69 --- /dev/null +++ b/docs/architecture/index.rst @@ -0,0 +1,62 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Architecture of Time Feature +============================ + +Overview +~~~~~~~~ + +The Time Feature offers applications access to multiple time bases ("clocks") via a unified API. +The main focus is providing access to synchronized time bases, like a vehicle-local time base and a vehicle-external global time base (UTC). +Besides that it offers access to local (not necessarily synchronized) clocks, like +* steady/monotonic clock +* system clock +* high resolution clock. +Those clocks are typically also accessible via existing interfaces defined by the C++ std library or POSIX library. +The reason to provide them via the unified API is to offer application an "easy to mock" interface. + +The usage of the unified Time API shall be free from interference (FFI). +The synchronization status of the vehicle time shall be safety qualifiable - means, it is guaranteed to always reflect the actual sync state of that time base. + +The basic architecture is shown in the diagram below. + +.. raw:: html + +
+ +.. uml:: _assets/sad_deployment.puml + :alt: Raw architectural diagram + +.. raw:: html + +
+ +Components decomposition +~~~~~~~~~~~~~~~~~~~~~~~~ + +The **gPTP Grand Master Clock** provides the vehicle time to all other devices in a vehicle via the PTP. +It is assumed to be a component running on a seprarte ECU. +It is therefore not part of the S-CORE Time Feature implementation. + +The :doc:`**time_slave** component <../../score/time_slave/docs/index>` is responsible to do the gPTP-related protocol handling, i.e. to receive the Sync / Follow_up frames from the neighboured master and doing the path delay measuring. +The resulting data and timestamp information is forwarded via an IPC interface to the time_daemon component. + +The :doc:`**time_daemon** component <../../score/time_daemon/docs/index>` is the heart of the Time Feature. It is responsible for getting the sync data received by the time_slave and determine the synchronization status of the current vehicle time. +The IPC interfaces to the adjacent components, time_slave and API libraries linked to the applications, need to be FFI to be able to guarantee the ASIL qualification of the synchronization status. + +The :doc:`**time library** component <../../score/time/docs/index>` offers language specific APIs (currently C++ only, later Rust also) to the applications and handling the IPC with FFI to the time_daemon. +It is a library to be linked into the respective application processes. + +The :doc:`**ts_client** component <../../score/ts_client/docs>` is an internal library abstracting the IPC between time_slave and time_daemon. diff --git a/docs/features/time_daemon/_assets/sad_deployment.puml b/docs/features/time_daemon/_assets/sad_deployment.puml deleted file mode 100644 index 3b0da92b..00000000 --- a/docs/features/time_daemon/_assets/sad_deployment.puml +++ /dev/null @@ -1,39 +0,0 @@ -@startuml sad_deployment_diagram - -title Deployment view - -node "IPN1x" { - node "Application Layer" { - [Business logic] as app_bl - [mw::time::svt] <> as mw - } - node "Diagnostic App Layer" { - [Diag jobs business logic] as diag_bl - [mw::time::svt::ext] <> as mw_ext - } - node "PTP Daemon" { - [ptpd] <> as ptpd - } - node "VehicleTimeDaemon" { - [VerificationMachine] as verification_machine - [PTP machine] as ptp_machine - } - [EMAC] <> as hw_counter -} -node "Time Grand Master" { - [PTP Grandmaster Clock] <> as ptp_gm -} -[DLT] <> as dlt_records - - -ptp_gm -[#purple]-> ptpd : PTP sync messages -ptpd ..> hw_counter : Updates local hw timer -ptpd -[#blue]-> ptp_machine : PTP time updates\n(via shmem and devctl) -ptp_machine -[#green]-> verification_machine: Time information -verification_machine -[#green]-> mw: Time information\n(score::communication) -verification_machine -[#green]-> mw_ext: Time information\n(score::communication) -verification_machine -[#green]-> dlt_records: Data for post analysis -mw-[#orange]-> app_bl : Now() -mw_ext-[#orange]-> diag_bl : Now(), Callbacks() - -@enduml diff --git a/docs/index.rst b/docs/index.rst index e35c841d..1fbb1aec 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -12,21 +12,22 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -time_daemon Documentation -========================= +Time Feature Documentation +========================== -This documentation describes the **time_daemon** and the **score::time** module. +This documentation describes the **S-CORE Time Feature** and the **score::time** module. .. contents:: Table of Contents :depth: 2 :local: + Overview -------- -**time_daemon** is a non-AUTOSAR adaptive process designed to provide synchronized vehicle time to client applications. -It supports multiple time bases including **in-vehicle synchronized time** (PTP - Precision Time Protocol) and -**external synchronized time** (absolute time base). The daemon retrieves time information from the respective time sources, +The Time feature is designed to provide applications access to multiple different local and non-local time bases ("clocks") via a unified API. +The supported non-local time bases include a **in-vehicle synchronized time** ("vehicle time") and a **external synchronized time** (absolute time base, UTC). +The Time feature retrieves time information from the respective time sources ("Time Masters"), verifies and validates the timepoints, and distributes this time information across multiple clients through efficient IPC mechanisms. The main responsibilities of time_daemon include: @@ -36,13 +37,18 @@ The main responsibilities of time_daemon include: - **Providing diagnostic information** for system monitoring - **Supporting additional verification mechanisms** such as QualifiedVehicleTime (QVT) for safety-critical applications -For a detailed concept and architectural design, please refer to the :doc:`time_daemon Concept Documentation `. +For a detailed concept and architectural design, please refer to the :doc:`Time Feature Arichitecture Documentation `. .. toctree:: :maxdepth: 2 :caption: Contents: - features/index + architecture/index + ../score/time/docs/index + ../score/time_daemon/docs/index + ../score/time_slave/docs/index + test_cases + Project Layout -------------- @@ -54,9 +60,10 @@ This module follows the Eclipse SCORE component structure: - `score/time/`: Client-facing time base libraries - `score/ts_client/`: Time synchronization client library - `examples/`: Usage examples -- `docs/features/`: Feature-level documentation +- `docs/`: Feature-level documentation - `.github/workflows/`: CI/CD pipelines + Quick Start ----------- @@ -122,6 +129,7 @@ Run address, undefined-behaviour and leak sanitizers (powered by ``score_cpp_pol Individual sanitizer aliases are also available: ``--config=asan``, ``--config=ubsan``, ``--config=lsan``. + Configuration ------------- diff --git a/docs/features/test_cases.rst b/docs/test_cases.rst similarity index 100% rename from docs/features/test_cases.rst rename to docs/test_cases.rst diff --git a/score/time/component_classification.rst b/score/time/component_classification.rst new file mode 100644 index 00000000..ecb2a902 --- /dev/null +++ b/score/time/component_classification.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Component Classification +======================== + +:Component: time library +:ASIL Level: QM +:Language: C++ +:Platform: Linux, QNX diff --git a/docs/features/time/_assets/architecture_layers.puml b/score/time/docs/detailed_design/_assets/architecture_layers.puml similarity index 100% rename from docs/features/time/_assets/architecture_layers.puml rename to score/time/docs/detailed_design/_assets/architecture_layers.puml diff --git a/docs/features/time/_assets/class_overview.puml b/score/time/docs/detailed_design/_assets/class_overview.puml similarity index 100% rename from docs/features/time/_assets/class_overview.puml rename to score/time/docs/detailed_design/_assets/class_overview.puml diff --git a/docs/features/time/_assets/high_res_steady_time/ht1_polling.puml b/score/time/docs/detailed_design/_assets/high_res_steady_time/ht1_polling.puml similarity index 100% rename from docs/features/time/_assets/high_res_steady_time/ht1_polling.puml rename to score/time/docs/detailed_design/_assets/high_res_steady_time/ht1_polling.puml diff --git a/docs/features/time/_assets/steady_clock/st1_polling.puml b/score/time/docs/detailed_design/_assets/steady_clock/st1_polling.puml similarity index 100% rename from docs/features/time/_assets/steady_clock/st1_polling.puml rename to score/time/docs/detailed_design/_assets/steady_clock/st1_polling.puml diff --git a/docs/features/time/_assets/system_clock/sc1_polling.puml b/score/time/docs/detailed_design/_assets/system_clock/sc1_polling.puml similarity index 100% rename from docs/features/time/_assets/system_clock/sc1_polling.puml rename to score/time/docs/detailed_design/_assets/system_clock/sc1_polling.puml diff --git a/docs/features/time/_assets/testing/t1_scoped_override.puml b/score/time/docs/detailed_design/_assets/testing/t1_scoped_override.puml similarity index 100% rename from docs/features/time/_assets/testing/t1_scoped_override.puml rename to score/time/docs/detailed_design/_assets/testing/t1_scoped_override.puml diff --git a/docs/features/time/_assets/testing/t2_test_factory.puml b/score/time/docs/detailed_design/_assets/testing/t2_test_factory.puml similarity index 100% rename from docs/features/time/_assets/testing/t2_test_factory.puml rename to score/time/docs/detailed_design/_assets/testing/t2_test_factory.puml diff --git a/docs/features/time/_assets/vehicle_time/vt1_polling.puml b/score/time/docs/detailed_design/_assets/vehicle_time/vt1_polling.puml similarity index 100% rename from docs/features/time/_assets/vehicle_time/vt1_polling.puml rename to score/time/docs/detailed_design/_assets/vehicle_time/vt1_polling.puml diff --git a/docs/features/time/_assets/vehicle_time/vt2_availability.puml b/score/time/docs/detailed_design/_assets/vehicle_time/vt2_availability.puml similarity index 100% rename from docs/features/time/_assets/vehicle_time/vt2_availability.puml rename to score/time/docs/detailed_design/_assets/vehicle_time/vt2_availability.puml diff --git a/docs/features/time/_assets/vehicle_time/vt3_subscription.puml b/score/time/docs/detailed_design/_assets/vehicle_time/vt3_subscription.puml similarity index 100% rename from docs/features/time/_assets/vehicle_time/vt3_subscription.puml rename to score/time/docs/detailed_design/_assets/vehicle_time/vt3_subscription.puml diff --git a/docs/features/time/_assets/vehicle_time/vt4_status_subscription.puml b/score/time/docs/detailed_design/_assets/vehicle_time/vt4_status_subscription.puml similarity index 100% rename from docs/features/time/_assets/vehicle_time/vt4_status_subscription.puml rename to score/time/docs/detailed_design/_assets/vehicle_time/vt4_status_subscription.puml diff --git a/docs/features/time/_assets/vehicle_time/vt5_diagnostics.puml b/score/time/docs/detailed_design/_assets/vehicle_time/vt5_diagnostics.puml similarity index 100% rename from docs/features/time/_assets/vehicle_time/vt5_diagnostics.puml rename to score/time/docs/detailed_design/_assets/vehicle_time/vt5_diagnostics.puml diff --git a/docs/features/time/index.rst b/score/time/docs/detailed_design/index.rst similarity index 98% rename from docs/features/time/index.rst rename to score/time/docs/detailed_design/index.rst index 653b8a15..c58d8412 100644 --- a/docs/features/time/index.rst +++ b/score/time/docs/detailed_design/index.rst @@ -1,3 +1,17 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + score::time — Unified Clock Interface ====================================== diff --git a/docs/features/index.rst b/score/time/index.rst similarity index 83% rename from docs/features/index.rst rename to score/time/index.rst index db95ddb0..d9972af4 100644 --- a/docs/features/index.rst +++ b/score/time/index.rst @@ -12,14 +12,11 @@ # SPDX-License-Identifier: Apache-2.0 # ******************************************************************************* -Features -======== +Time Library Component +====================== .. toctree:: - :maxdepth: 2 - :caption: Features: + :maxdepth: 1 - time/index - time_daemon/index - time_slave/index - test_cases + component_classification + detailed_design/index diff --git a/score/time_daemon/component_classification.rst b/score/time_daemon/component_classification.rst new file mode 100644 index 00000000..4d58561a --- /dev/null +++ b/score/time_daemon/component_classification.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Component Classification +======================== + +:Component: time_daemon +:ASIL Level: QM +:Language: C++ +:Platform: Linux, QNX diff --git a/docs/features/time_daemon/_assets/app/app_class.puml b/score/time_daemon/docs/detailed_design/_assets/app/app_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/app/app_class.puml rename to score/time_daemon/docs/detailed_design/_assets/app/app_class.puml diff --git a/docs/features/time_daemon/_assets/app/app_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/app/app_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/app/app_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/app/app_init_seq.puml diff --git a/docs/features/time_daemon/_assets/app/app_workflow_seq.puml b/score/time_daemon/docs/detailed_design/_assets/app/app_workflow_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/app/app_workflow_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/app/app_workflow_seq.puml diff --git a/docs/features/time_daemon/_assets/ctrlflow/ctrlflow_class.puml b/score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/ctrlflow/ctrlflow_class.puml rename to score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_class.puml diff --git a/docs/features/time_daemon/_assets/ctrlflow/ctrlflow_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ctrlflow/ctrlflow_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_init_seq.puml diff --git a/docs/features/time_daemon/_assets/ctrlflow/ctrlflow_workflow_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_workflow_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ctrlflow/ctrlflow_workflow_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ctrlflow/ctrlflow_workflow_seq.puml diff --git a/docs/features/time_daemon/_assets/dd_class.puml b/score/time_daemon/docs/detailed_design/_assets/dd_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/dd_class.puml rename to score/time_daemon/docs/detailed_design/_assets/dd_class.puml diff --git a/docs/features/time_daemon/_assets/dd_data_control_flow.puml b/score/time_daemon/docs/detailed_design/_assets/dd_data_control_flow.puml similarity index 100% rename from docs/features/time_daemon/_assets/dd_data_control_flow.puml rename to score/time_daemon/docs/detailed_design/_assets/dd_data_control_flow.puml diff --git a/docs/features/time_daemon/_assets/dd_deployment.puml b/score/time_daemon/docs/detailed_design/_assets/dd_deployment.puml similarity index 65% rename from docs/features/time_daemon/_assets/dd_deployment.puml rename to score/time_daemon/docs/detailed_design/_assets/dd_deployment.puml index 82b2fc66..4f988116 100644 --- a/docs/features/time_daemon/_assets/dd_deployment.puml +++ b/score/time_daemon/docs/detailed_design/_assets/dd_deployment.puml @@ -6,20 +6,20 @@ node "Application Layer" { [Business logic] as app_bl [mw::time::svt] <> as mw } -node "PTP Daemon" { - [ptpd] <> as ptpd +node "time_slave" <> { + [gptp_engine] as gptp_engine } -node "VehicleTimeDaemon" { +node "time_daemon" <> { [MessageBroker] as msg_broker [VerificationMachine] as verification_machine [PTP machine] as ptp_machine [IPC] <> as ipc } -ptpd -[#blue]-> ptp_machine : PTP time updates\n(via shmem and devctl) +gptp_engine -[#blue]-> ptp_machine : gPTP time updates\n(via score::memory::shared) ptp_machine -[#green]-> verification_machine: Time information verification_machine -[#green]-> ipc: Time information -ipc -[#green]-> mw: Time information +ipc -[#green]-> mw: Time information\n(via score::memory::shared) mw-[#orange]-> app_bl : Now() @enduml diff --git a/docs/features/time_daemon/_assets/examples/abs_time/abs_time_data_control_flow.puml b/score/time_daemon/docs/detailed_design/_assets/examples/abs_time/abs_time_data_control_flow.puml similarity index 100% rename from docs/features/time_daemon/_assets/examples/abs_time/abs_time_data_control_flow.puml rename to score/time_daemon/docs/detailed_design/_assets/examples/abs_time/abs_time_data_control_flow.puml diff --git a/docs/features/time_daemon/_assets/examples/abs_time/abs_time_deployment.puml b/score/time_daemon/docs/detailed_design/_assets/examples/abs_time/abs_time_deployment.puml similarity index 100% rename from docs/features/time_daemon/_assets/examples/abs_time/abs_time_deployment.puml rename to score/time_daemon/docs/detailed_design/_assets/examples/abs_time/abs_time_deployment.puml diff --git a/docs/features/time_daemon/_assets/examples/qvt/qvt_data_control_flow.puml b/score/time_daemon/docs/detailed_design/_assets/examples/qvt/qvt_data_control_flow.puml similarity index 100% rename from docs/features/time_daemon/_assets/examples/qvt/qvt_data_control_flow.puml rename to score/time_daemon/docs/detailed_design/_assets/examples/qvt/qvt_data_control_flow.puml diff --git a/docs/features/time_daemon/_assets/examples/qvt/qvt_deployment.puml b/score/time_daemon/docs/detailed_design/_assets/examples/qvt/qvt_deployment.puml similarity index 100% rename from docs/features/time_daemon/_assets/examples/qvt/qvt_deployment.puml rename to score/time_daemon/docs/detailed_design/_assets/examples/qvt/qvt_deployment.puml diff --git a/docs/features/time_daemon/_assets/ipc/ipc_class.puml b/score/time_daemon/docs/detailed_design/_assets/ipc/ipc_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/ipc/ipc_class.puml rename to score/time_daemon/docs/detailed_design/_assets/ipc/ipc_class.puml diff --git a/docs/features/time_daemon/_assets/ipc/ipc_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ipc/ipc_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ipc/ipc_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ipc/ipc_init_seq.puml diff --git a/docs/features/time_daemon/_assets/ipc/ipc_publish_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ipc/ipc_publish_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ipc/ipc_publish_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ipc/ipc_publish_seq.puml diff --git a/docs/features/time_daemon/_assets/ipc/ipc_receive_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ipc/ipc_receive_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ipc/ipc_receive_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ipc/ipc_receive_seq.puml diff --git a/docs/features/time_daemon/_assets/msg_broker/msg_broker_class.puml b/score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/msg_broker/msg_broker_class.puml rename to score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_class.puml diff --git a/docs/features/time_daemon/_assets/msg_broker/msg_broker_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/msg_broker/msg_broker_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_init_seq.puml diff --git a/docs/features/time_daemon/_assets/msg_broker/msg_broker_workflow_seq.puml b/score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_workflow_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/msg_broker/msg_broker_workflow_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/msg_broker/msg_broker_workflow_seq.puml diff --git a/docs/features/time_daemon/_assets/mw/mw_class.puml b/score/time_daemon/docs/detailed_design/_assets/mw/mw_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/mw/mw_class.puml rename to score/time_daemon/docs/detailed_design/_assets/mw/mw_class.puml diff --git a/docs/features/time_daemon/_assets/mw/mw_time_receive_seq.puml b/score/time_daemon/docs/detailed_design/_assets/mw/mw_time_receive_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/mw/mw_time_receive_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/mw/mw_time_receive_seq.puml diff --git a/docs/features/time_daemon/_assets/mw/mw_time_receive_simple_seq.puml b/score/time_daemon/docs/detailed_design/_assets/mw/mw_time_receive_simple_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/mw/mw_time_receive_simple_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/mw/mw_time_receive_simple_seq.puml diff --git a/docs/features/time_daemon/_assets/ptp_machine/ptp_machine_class.puml b/score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/ptp_machine/ptp_machine_class.puml rename to score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_class.puml diff --git a/docs/features/time_daemon/_assets/ptp_machine/ptp_machine_get_new_data_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_get_new_data_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ptp_machine/ptp_machine_get_new_data_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_get_new_data_seq.puml diff --git a/docs/features/time_daemon/_assets/ptp_machine/ptp_machine_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ptp_machine/ptp_machine_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ptp_machine/ptp_machine_init_seq.puml diff --git a/docs/features/time_daemon/_assets/ver_machine/ver_class.puml b/score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_class.puml similarity index 100% rename from docs/features/time_daemon/_assets/ver_machine/ver_class.puml rename to score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_class.puml diff --git a/docs/features/time_daemon/_assets/ver_machine/ver_init_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_init_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ver_machine/ver_init_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_init_seq.puml diff --git a/docs/features/time_daemon/_assets/ver_machine/ver_verification_seq.puml b/score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_verification_seq.puml similarity index 100% rename from docs/features/time_daemon/_assets/ver_machine/ver_verification_seq.puml rename to score/time_daemon/docs/detailed_design/_assets/ver_machine/ver_verification_seq.puml diff --git a/docs/features/time_daemon/index.rst b/score/time_daemon/docs/detailed_design/index.rst similarity index 97% rename from docs/features/time_daemon/index.rst rename to score/time_daemon/docs/detailed_design/index.rst index 9af39f65..de350b21 100644 --- a/docs/features/time_daemon/index.rst +++ b/score/time_daemon/docs/detailed_design/index.rst @@ -1,3 +1,17 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + Concept for TimeDaemon ======================= @@ -15,19 +29,22 @@ TimeDaemon is the non Autosar adaptive process who is intended to get the Vehicl More precisely we can specify the following use cases for the time daemon: -1. Providing current Vehicle time to different applications -2. Setting the synchronization qualifier (aka Synchronized, Timeout, so on) +1. Determine the current vehicle time and synchronization qualifier out of the sync data received from the time_slave daemon +2. Providing current Vehicle time plus the synchronization qualifier to different applications 3. Providing needed information for diagnostics 4. Providing needed information for addition verification, ex SafeCarTime -The raw architectural diagram is represented below. +Deployment view +~~~~~~~~~~~~~~~ + +The design deployment is represented on the following diagram: .. raw:: html
-.. uml:: _assets/sad_deployment.puml - :alt: Raw architectural diagram +.. uml:: _assets/dd_deployment.puml + :alt: Deployment View .. raw:: html @@ -46,22 +63,6 @@ The design consists of several sw components: 6. `IPC Machine <#ipc-machine-sw-component>`_ 7. `VehicleClock (score::time) <#vehicleclock-sw-component>`_ -Deployment view -~~~~~~~~~~~~~~~ - -The design deployment is represented on the following diagram: - -.. raw:: html - -
- -.. uml:: _assets/dd_deployment.puml - :alt: Deployment View - -.. raw:: html - -
- Class view ~~~~~~~~~~ diff --git a/score/time_daemon/index.rst b/score/time_daemon/index.rst new file mode 100644 index 00000000..6618baf7 --- /dev/null +++ b/score/time_daemon/index.rst @@ -0,0 +1,22 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Time Daemon Component +===================== + +.. toctree:: + :maxdepth: 1 + + component_classification + detailed_design/index diff --git a/score/time_slave/docs/detailed_design/.gitkeep b/score/time_slave/docs/detailed_design/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/features/time_slave/_assets/gptp_engine/gptp_engine_class.puml b/score/time_slave/docs/detailed_design/_assets/gptp_engine/gptp_engine_class.puml similarity index 100% rename from docs/features/time_slave/_assets/gptp_engine/gptp_engine_class.puml rename to score/time_slave/docs/detailed_design/_assets/gptp_engine/gptp_engine_class.puml diff --git a/docs/features/time_slave/_assets/gptp_engine/gptp_threading.puml b/score/time_slave/docs/detailed_design/_assets/gptp_engine/gptp_threading.puml similarity index 100% rename from docs/features/time_slave/_assets/gptp_engine/gptp_threading.puml rename to score/time_slave/docs/detailed_design/_assets/gptp_engine/gptp_threading.puml diff --git a/docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_class.puml b/score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_class.puml similarity index 100% rename from docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_class.puml rename to score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_class.puml diff --git a/docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_init_seq.puml b/score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_init_seq.puml similarity index 100% rename from docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_init_seq.puml rename to score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_init_seq.puml diff --git a/docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_read_seq.puml b/score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_read_seq.puml similarity index 100% rename from docs/features/time_slave/_assets/shm_ptp_engine/shm_ptp_engine_read_seq.puml rename to score/time_slave/docs/detailed_design/_assets/shm_ptp_engine/shm_ptp_engine_read_seq.puml diff --git a/docs/features/time_slave/_assets/timeslave_class.puml b/score/time_slave/docs/detailed_design/_assets/timeslave_class.puml similarity index 100% rename from docs/features/time_slave/_assets/timeslave_class.puml rename to score/time_slave/docs/detailed_design/_assets/timeslave_class.puml diff --git a/docs/features/time_slave/_assets/timeslave_data_flow.puml b/score/time_slave/docs/detailed_design/_assets/timeslave_data_flow.puml similarity index 100% rename from docs/features/time_slave/_assets/timeslave_data_flow.puml rename to score/time_slave/docs/detailed_design/_assets/timeslave_data_flow.puml diff --git a/docs/features/time_slave/_assets/timeslave_deployment.puml b/score/time_slave/docs/detailed_design/_assets/timeslave_deployment.puml similarity index 100% rename from docs/features/time_slave/_assets/timeslave_deployment.puml rename to score/time_slave/docs/detailed_design/_assets/timeslave_deployment.puml diff --git a/docs/features/time_slave/_assets/ts_client/ipc_channel.puml b/score/time_slave/docs/detailed_design/_assets/ts_client/ipc_channel.puml similarity index 100% rename from docs/features/time_slave/_assets/ts_client/ipc_channel.puml rename to score/time_slave/docs/detailed_design/_assets/ts_client/ipc_channel.puml diff --git a/docs/features/time_slave/_assets/ts_client/ipc_sequence.puml b/score/time_slave/docs/detailed_design/_assets/ts_client/ipc_sequence.puml similarity index 100% rename from docs/features/time_slave/_assets/ts_client/ipc_sequence.puml rename to score/time_slave/docs/detailed_design/_assets/ts_client/ipc_sequence.puml diff --git a/docs/features/time_slave/index.rst b/score/time_slave/docs/detailed_design/index.rst similarity index 97% rename from docs/features/time_slave/index.rst rename to score/time_slave/docs/detailed_design/index.rst index 31d2585f..63f2f81b 100644 --- a/docs/features/time_slave/index.rst +++ b/score/time_slave/docs/detailed_design/index.rst @@ -1,19 +1,34 @@ -Concept for TimeSlave +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Concept for Time Slave ====================== .. contents:: Table of Contents :depth: 3 :local: -TimeSlave concept +Time Slave Concept ------------------ Use Cases ~~~~~~~~~ -TimeSlave is a standalone gPTP (IEEE 802.1AS) slave endpoint process that implements the low-level time synchronization protocol for the Eclipse SCORE time system. It is deployed as a separate process from the TimeDaemon to isolate real-time network I/O from the higher-level time validation and distribution logic. +TimeSlave is a standalone gPTP (IEEE 802.1AS) slave endpoint process that implements the low-level time synchronization protocol for the Eclipse S-CORE time system. +It is deployed as a separate process from the TimeDaemon to isolate real-time network I/O from the higher-level time validation and distribution logic. -More precisely we can specify the following use cases for the TimeSlave: +More precisely we can specify the following use cases for the Time Slave: 1. Receiving gPTP Sync/FollowUp messages from a Time Master on the Ethernet network 2. Measuring peer delay via the IEEE 802.1AS PDelayReq/PDelayResp exchange diff --git a/score/ts_client/docs/.gitkeep b/score/ts_client/docs/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/score/ts_client/docs/component_classification.rst b/score/ts_client/docs/component_classification.rst new file mode 100644 index 00000000..9fe46250 --- /dev/null +++ b/score/ts_client/docs/component_classification.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +Component Classification +======================== + +:Component: ts_client library +:ASIL Level: QM +:Language: C++ +:Platform: Linux, QNX diff --git a/score/ts_client/docs/index.rst b/score/ts_client/docs/index.rst new file mode 100644 index 00000000..4860b76e --- /dev/null +++ b/score/ts_client/docs/index.rst @@ -0,0 +1,21 @@ +.. + # ******************************************************************************* + # Copyright (c) 2026 Contributors to the Eclipse Foundation + # + # See the NOTICE file(s) distributed with this work for additional + # information regarding copyright ownership. + # + # This program and the accompanying materials are made available under the + # terms of the Apache License Version 2.0 which is available at + # https://www.apache.org/licenses/LICENSE-2.0 + # + # SPDX-License-Identifier: Apache-2.0 + # ******************************************************************************* + +TS Client Library Component +=========================== + +.. toctree:: + :maxdepth: 1 + + component_classification