Add ts client component requirements - #149
Conversation
License Check Results🚀 The license check job ran with the Bazel command: bazel run //:license-checkStatus: Click to expand output |
2956a19 to
1daac44
Compare
|
The created documentation from the pull request is available at: docu-html |
21fc11f to
2641242
Compare
There was a problem hiding this comment.
Pull request overview
This PR adds S-CORE process documentation for the score/ts_client component, primarily introducing component requirements plus the associated inspection/checklist scaffolding and initial architecture documentation structure.
Changes:
- Added component requirements and AoU requirements for the Time Sync Client (
ts_client) in Sphinx-needs format. - Added requirements and architecture toctrees and inspection checklist documents for
ts_client. - Updated component doc navigation (including a change to
time_slave’s docs index).
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| score/ts_client/docs/requirements/requirements.rst | New component requirements and AoU requirement definitions for ts_client. |
| score/ts_client/docs/requirements/index.rst | Requirements section toctree for the ts_client docs. |
| score/ts_client/docs/requirements/chklst_req_inspection.rst | Requirements inspection checklist content and needtables (currently includes template placeholders). |
| score/ts_client/docs/index.rst | Top-level ts_client component doc entry and links to requirements/architecture sections. |
| score/ts_client/docs/architecture/index.rst | Architecture section toctree for the ts_client docs. |
| score/ts_client/docs/architecture/component_architecture.rst | Initial component architecture document and comp / static+dynamic view needs. |
| score/ts_client/docs/architecture/chklst_arc_inspection.rst | Architecture inspection checklist document. |
| score/ts_client/docs/.gitkeep | Placeholder for docs directory. |
| score/time_slave/docs/index.rst | Removes multiple toctree entries from the time_slave docs index. |
Suppressed comments (3)
score/ts_client/docs/requirements/chklst_req_inspection.rst:48
- Typo in the inspection roles list: duplicated "is" in "who is is".
- moderator: <committer explicitly named here, who is is the safety manager, security manager or quality manager initiating the inspection>
score/time_slave/docs/index.rst:22
- This PR removes the time_slave docs toctree entries for architecture/requirements/manuals/etc., but that change isn’t mentioned in the PR description. If the intent is to temporarily omit these sections (e.g., because the pages don’t exist yet), add an explanatory note here (or move this change to a separate PR).
.. toctree::
:maxdepth: 1
component_classification
score/ts_client/docs/requirements/chklst_req_inspection.rst:187
- The AoU inspection needtable still uses the template placeholder "component_name" in both the filter and tag selector, so it will never match this component’s needs.
.. needtable::
:filter: "component_name" in docname and "requirements" in docname and docname is not None and status == "valid"
:style: table
:types: aou_req
:tags: component_name
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
8792013 to
29e3087
Compare
a0a8c6f to
093756b
Compare
BjoernAtBosch
left a comment
There was a problem hiding this comment.
First chunk of comments
|
|
||
| [A short (~200 word) description of the component.] | ||
|
|
||
| This component provides IPC mechanisms for time synchronization data exchange between time daemons and client applications within an ECU. |
There was a problem hiding this comment.
| This component provides IPC mechanisms for time synchronization data exchange between time daemons and client applications within an ECU. | |
| This component encapsulates the IPC mechanisms for time synchronization data exchange between the components time_slave and time_daemon. |
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client component shall provide operations to create, open, and close shared memory channels for gPTP data exchange between time daemon and time-aware applications. |
There was a problem hiding this comment.
AI hallucination? ;-)
| The ts_client component shall provide operations to create, open, and close shared memory channels for gPTP data exchange between time daemon and time-aware applications. | |
| The ts_client component shall provide operations to create, open, and close shared memory channels for gPTP data exchange between time_slave and time_daemon. |
| :status: draft | ||
| :version: 1 | ||
| :safety: ASIL_B | ||
| :safety: QM |
There was a problem hiding this comment.
I think, this should stay ASIL_B: This component is used by/linked to time_daemon that has ASIB_B rating.
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client Receiver shall indicate whether received data is valid or corrupted. |
There was a problem hiding this comment.
I think, this can't be achieved with just checking the magic. We could weaken this a bit and say: "[...] shall indicate whether the shared memory channel is obviously corrupted." - or something similar
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client component shall implement lock-free synchronization between writer and readers to prevent blocking and ensure readers can detect concurrent writes. |
There was a problem hiding this comment.
I prefer the term "non-blocking" over "lock-free": Thers's still the need for some locking mechanism, but that's not blocking the reader's and writer's threads.
| The ts_client component shall implement lock-free synchronization between writer and readers to prevent blocking and ensure readers can detect concurrent writes. | |
| The ts_client component shall implement non-blocking synchronization between writer and readers and ensure readers can detect concurrent writes. |
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] |
There was a problem hiding this comment.
I think we should add the "ctrl flow one" to "motivate" shmem usage plus ASIL rating
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | |
| :derived_from: feat_req__time__vehicle_time_sync[version==1], feat_req__time__vehicle_time_ctrl_flow[version==1] |
| .. comp_req:: gPTP Synchronization Status Exchange | ||
| :id: comp_req__ts_client__sync_status_data | ||
| :reqtype: Interface | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | ||
| :status: valid | ||
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client component shall exchange gPTP synchronization status information containing synchronized state, timeout condition, time discontinuity detection (future and past), and correctness indication. | ||
|
|
There was a problem hiding this comment.
This is in the code (currently), but we just need the synchronization state which - in the end - just tells if there was at least one sync+fup frame received and it has not timed out. (I think this needs rework)
| :status: valid | ||
| :version: 1 | ||
|
|
||
| The user shall configure shared memory permissions to allow publisher write access and reader read access. Incorrect permissions will cause channel creation or opening failures. |
There was a problem hiding this comment.
Isn't that handled in the code?
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] |
There was a problem hiding this comment.
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | |
| :derived_from: feat_req__time__vehicle_time_sync[version==1], feat_req__time__vehicle_time_acc_qual_api[version==1], feat_req__time__vehicle_time_time_pt_qual[version==1] |
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_ctrl_flow[version==1] |
There was a problem hiding this comment.
| :derived_from: feat_req__time__vehicle_time_ctrl_flow[version==1] | |
| :derived_from: feat_req__time__vehicle_time_ctrl_flow[version==1], feat_req__time__vehicle_time_ctrl_flow[version==1] |
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] |
There was a problem hiding this comment.
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | |
| :derived_from: feat_req__time__vehicle_time_sync[version==1], feat_req__time__vehicle_time_acc_qual_api[version==1], feat_req__time__vehicle_time_time_pt_qual[version==1] |
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] |
There was a problem hiding this comment.
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | |
| :derived_from: feat_req__time__vehicle_time_sync[version==1], feat_req__time__vehicle_time_ctrl_flow[version==1] |
| :id: comp_req__ts_client__sync_status_data | ||
| :reqtype: Interface | ||
| :security: NO | ||
| :safety: ASIL_B |
There was a problem hiding this comment.
Could be QM
| :safety: ASIL_B | |
| :safety: QM |
| :id: comp_req__ts_client__sync_fup_data | ||
| :reqtype: Interface | ||
| :security: NO | ||
| :safety: ASIL_B |
There was a problem hiding this comment.
| :safety: ASIL_B | |
| :safety: QM |
| :id: comp_req__ts_client__pdelay_data | ||
| :reqtype: Interface | ||
| :security: NO | ||
| :safety: ASIL_B |
There was a problem hiding this comment.
| :safety: ASIL_B | |
| :safety: QM |
| :id: comp_req__ts_client__time_correlation_data | ||
| :reqtype: Interface | ||
| :security: NO | ||
| :safety: ASIL_B |
There was a problem hiding this comment.
| :safety: ASIL_B | |
| :safety: ASIL_QM |
| .. comp_req:: Linux Platform Support | ||
| :id: comp_req__ts_client__platform_linux | ||
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | ||
| :status: valid | ||
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client component shall support Linux platforms for shared memory operations and inter-process communication. | ||
|
|
||
| .. comp_req:: QNX Platform Support | ||
| :id: comp_req__ts_client__platform_qnx | ||
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B | ||
| :derived_from: feat_req__time__vehicle_time_sync[version==1] | ||
| :status: valid | ||
| :version: 1 | ||
| :satisfied_by: comp__ts_client | ||
|
|
||
| The ts_client component shall support QNX 8.0 SDP platforms for shared memory operations and inter-process communication. |
There was a problem hiding this comment.
Same as for time_daemon plus we should link something meaningful here (and in general) - we can also link sort of common requirements here. Not sure how to achieve this. There is stkh_req__functional_req__operating_system but I don't think, we can link that directly
| :id: comp_req__ts_client__error_reporting | ||
| :reqtype: Functional | ||
| :security: NO | ||
| :safety: ASIL_B |
There was a problem hiding this comment.
| :safety: ASIL_B | |
| :safety: QM |
Adds component requirements documentation for ts_client following S-CORE requirements engineering process and module_template.
Related ticket
Addresses part of #97