From 7d46f7db9ec774c7dbd9d505ce194e28f5a64b94 Mon Sep 17 00:00:00 2001 From: Sanimir Agovic Date: Tue, 17 Mar 2026 10:07:42 +0100 Subject: [PATCH 1/2] docs: add diagnostic library component to design document --- .../OpenSOVD-design-highlevel.drawio.svg | 1225 +---------------- docs/design/design.md | 18 +- 2 files changed, 21 insertions(+), 1222 deletions(-) diff --git a/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg b/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg index f51e2e5..123b32a 100644 --- a/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg +++ b/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg @@ -1,1221 +1,4 @@ - - - - - - - - - - - -
-
-
- SOVD Server -
-
-
-
- - SOVD Server - -
-
-
- - - - - - - -
-
-
- SOVD Client (offboard, onboard, cloud) -
-
-
-
- - SOVD Client (offboar... - -
-
-
- - - - - - - -
-
-
- UDS2SOVD -
- Proxy -
-
-
-
-
- - UDS2SOVD... - -
-
-
- - - - - - - -
-
-
- Classic Diagnostic -
- Adapter -
-
-
-
-
- - Classic Diagnostic... - -
-
-
- - - - - - - -
-
-
- Service App -
-
-
-
- - Service App - -
-
-
- - - - - - - -
-
-
- Rest of Vehicle UDS -
-
-
-
- - Rest of Vehicle UDS - -
-
-
- - - - - - - -
-
-
- Rest of Vehicle SOVD -
-
-
-
- - Rest of Vehicle SOVD - -
-
-
- - - - - - - -
-
-
- SOVD Gateway -
-
-
-
- - SOVD Gateway - -
-
-
- - - - - - - -
-
-
- UDS Tester -
-
-
-
- - UDS Tester - -
-
-
- - - - - - - -
-
-
- Flash Service App -
-
-
-
- - Flash Service App - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - -
-
-
- Extends -
-
-
-
- - Extends - -
-
-
- - - - - - - - - -
-
-
- SOVD -
-
-
-
- - SOVD - -
-
-
- - - - - - - - - -
-
-
- SOVD -
-
-
-
- - SOVD - -
-
-
- - - - - - - - - -
-
-
- UDS -
-
-
-
- - UDS - -
-
-
- - - - - - - - - -
-
-
- SOVD -
-
-
-
- - SOVD - -
-
-
- - - - - - - - - -
-
-
- SOVD -
-
-
-
- - SOVD - -
-
-
- - - - - - - - - -
-
-
- UDS -
-
-
-
- - UDS - -
-
-
- - - - - - - - - -
-
-
- SOVD -
-
-
-
- - SOVD - -
-
-
- - - - - - - - -
-
-
- odx -
-
-
-
- - odx - -
-
-
- - - - - - - -
-
-
- Out of scope -
-
-
-
- - Out of scope - -
-
-
- - - - - - - -
-
-
- In scope -
-
-
-
- - In scope - -
-
-
- - - - - - - -
-
-
- - Legend - -
-
-
-
- - Legend - -
-
-
- - - - - - - - -
-
-
- configures -
-
-
-
- - configures - -
-
-
- - - - - - - - -
-
-
- file -
-
-
-
- - file - -
-
-
- - - - - - - - -
-
-
- DB -
-
-
-
- - DB - -
-
-
- - - - - - - -
-
-
- App/FEO activity -
-
-
-
- - App/FEO act... - -
-
-
- - - - - - - -
-
-
- - OpenSOVD High Level Architecture - -
-
-
-
- - OpenSOVD... - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - -
-
-
- odx -
-
-
-
- - odx - -
-
-
- - - - - - - - -
-
-
- configures -
-
-
-
- - configures - -
-
-
- - - - - - - - - -
-
-
- HPC -
-
-
-
- - HPC - -
-
-
- - - - - - - -
-
-
- App -
-
-
-
- - App - -
-
-
- - - - - - - -
-
-
- Configuration Manager -
-
-
-
- - Configuration Manager - -
-
-
- - - - - - - -
-
-
- Authentication Manager -
-
-
-
- - Authentication Manag... - -
-
-
- - - - - - - -
-
-
- Crypto -
-
-
-
- - Crypto - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - -
-
-
- Diagnostic Fault Manager -
-
-
-
- - Diagnostic Fault Man... - -
-
-
- - - - - - - - -
-
-
- Diagnostic DB -
-
-
-
- - Diagnostic... - -
-
-
- - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
- - - - - - - -
-
-
- Persistency -
-
-
-
- - Persistency - -
-
-
- - - - - - - - -
-
-
- Use -
-
-
-
- - Use - -
-
-
- - - - - - - -
-
-
- Fault lib -
-
-
-
- - Fault lib - -
-
-
- - - - - - - -
-
-
- Activity -
-
-
-
- - Activity - -
-
-
- - - - - - - -
-
-
- Fault lib -
-
-
-
- - Fault lib - -
-
-
- - - - - - - -
-
-
- Logging -
-
-
-
- - Logging - -
-
-
- - - - - - - - -
-
-
- Use -
-
-
-
- - Use - -
-
-
- - - - - - - -
-
-
- Activity -
-
-
-
- - Activity - -
-
-
- - - - - - - -
-
-
- Fault lib -
-
-
-
- - Fault lib - -
-
-
- - - - - - - - -
-
-
- IPC -
-
-
-
- - IPC - -
-
-
-
- - - - - Text is not SVG - cannot display - - - -
+ + + +
SOVD Server
SOVD Server
SOVD Client (offboard, onboard, cloud)
SOVD Client (offboar...
UDS2SOVD
Proxy
UDS2SOVD...
Classic Diagnostic 
Adapter
Classic Diagnostic...
Service App
Service App
Rest of Vehicle UDS
Rest of Vehicle UDS
Rest of Vehicle SOVD
Rest of Vehicle SOVD
SOVD Gateway
SOVD Gateway
UDS Tester
UDS Tester
Flash Service App
Flash Service App
IPC
IPC
IPC
IPC
IPC
IPC
Extends
Extends
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
odx
odx
Out of scope
Out of scope
In scope
In scope
Legend
Legend
configures
configures
file
file
DB
DB
App/FEO activity
App/FEO act...
OpenSOVD High Level Architecture
OpenSOVD...
IPC
IPC
odx
odx
configures
configures
HPC
HPC
App
App
Configuration Manager
Configuration Manager
Authentication Manager
Authentication Manag...
Crypto
Crypto
IPC
IPC
IPC
IPC
Diagnostic Fault Manager
Diagnostic Fault Man...
Diagnostic DB
Diagnostic...
IPC
IPC
IPC
IPC
Persistency
Persistency
Use
Use
IPC
IPC
Fault lib
Fault lib
Activity
Activity
Fault lib
Fault lib
Logging
Logging
Use
Use
Activity
Activity
Fault lib
Fault lib
IPC
IPC
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
IPC
IPC
Text is not SVG - cannot display
diff --git a/docs/design/design.md b/docs/design/design.md index 769c3ed..71dbd63 100644 --- a/docs/design/design.md +++ b/docs/design/design.md @@ -23,7 +23,7 @@ The intent of this document is to define a high-level architecture - the compone The proposed concept consists of three main parts: -1. A framework agnostic library to aggregate faults and integrate the diagnostic system into a target platform software stack such as S-CORE +1. A framework agnostic library to aggregate faults and diagnostic data and integrate the diagnostic system into a target platform software stack such as S-CORE 2. A SOVD based diagnostic system 3. Components to interface the diagnostic system with the outside – e.g. Tester or UDS based ECUs @@ -58,6 +58,22 @@ Their functionality is briefly described below. - Also needs to enforce regulatory requirements for certain faults - e.g. emission relevant. - Decentral component. +- Diagnostic Library + - Provides a framework agnostic interface for arbitrary apps and components to register and expose SOVD data resources. + - **The Diagnostic Library is the interface between S-CORE and the OpenSOVD project and should be developed in cooperation - see [ADR S-CORE Interface](./adr/001-adr-score-interface.md).** + - Relays diagnostic resources via IPC to the SOVD Server, which exposes it through the SOVD resource API e.g. (`/{entity-path}/{resource-collection}/{resource-id}`). + - Supports SOVD resource types as defined by SOVD, including: + - Data: static and dynamic data values such as identifications, measurements, and parameters (read/write). + - Operations: executable diagnostic objects such as I/O controls, routines, and software functions (synchronous or asynchronous execution). + - The interface needs to be specified further but will likely include: + - Data resource identifier (unique string identifier per Entity) + - DataCategory as defined by SOVD (identData, currentData, storedData, sysInfo, custom) + - Data type/schema (OpenAPI Schema Object) + - Data group assignment (optional logical grouping) + - Read and write access support + - Can be used by platform components to expose diagnostic data resources. + - Decentral component. + - Diagnostic Fault Manager - Aggregates and manages diagnostic fault data from Fault libs across the system. - Provides centralized fault status to the SOVD Server. From 0bf2f61c06ec7ee7606e0c6873030ba534049ee0 Mon Sep 17 00:00:00 2001 From: Sanimir Agovic Date: Tue, 17 Mar 2026 12:56:42 +0100 Subject: [PATCH 2/2] docs(design): add example topology and entity relations --- .../OpenSOVD-design-highlevel.drawio.svg | 2 +- docs/design/design.md | 51 ++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg b/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg index 123b32a..7dd7b6c 100644 --- a/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg +++ b/docs/design/_assets/OpenSOVD-design-highlevel.drawio.svg @@ -1,4 +1,4 @@ -
SOVD Server
SOVD Server
SOVD Client (offboard, onboard, cloud)
SOVD Client (offboar...
UDS2SOVD
Proxy
UDS2SOVD...
Classic Diagnostic 
Adapter
Classic Diagnostic...
Service App
Service App
Rest of Vehicle UDS
Rest of Vehicle UDS
Rest of Vehicle SOVD
Rest of Vehicle SOVD
SOVD Gateway
SOVD Gateway
UDS Tester
UDS Tester
Flash Service App
Flash Service App
IPC
IPC
IPC
IPC
IPC
IPC
Extends
Extends
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
odx
odx
Out of scope
Out of scope
In scope
In scope
Legend
Legend
configures
configures
file
file
DB
DB
App/FEO activity
App/FEO act...
OpenSOVD High Level Architecture
OpenSOVD...
IPC
IPC
odx
odx
configures
configures
HPC
HPC
App
App
Configuration Manager
Configuration Manager
Authentication Manager
Authentication Manag...
Crypto
Crypto
IPC
IPC
IPC
IPC
Diagnostic Fault Manager
Diagnostic Fault Man...
Diagnostic DB
Diagnostic...
IPC
IPC
IPC
IPC
Persistency
Persistency
Use
Use
IPC
IPC
Fault lib
Fault lib
Activity
Activity
Fault lib
Fault lib
Logging
Logging
Use
Use
Activity
Activity
Fault lib
Fault lib
IPC
IPC
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
IPC
IPC
Text is not SVG - cannot display
+
SOVD Server
SOVD Server
SOVD Client (offboard, onboard, cloud)
SOVD Client (offboar...
UDS2SOVD
Proxy
UDS2SOVD...
Classic Diagnostic 
Adapter
Classic Diagnostic...
Service App
Service App
Rest of Vehicle UDS
Rest of Vehicle UDS
Rest of Vehicle SOVD
Rest of Vehicle SOVD
SOVD Gateway
SOVD Gateway
UDS Tester
UDS Tester
Flash Service App
Flash Service App
IPC
IPC
IPC
IPC
IPC
IPC
Extends
Extends
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
SOVD
SOVD
UDS
UDS
SOVD
SOVD
odx
odx
Out of scope
Out of scope
In scope
In scope
Legend
Legend
configures
configures
file
file
DB
DB
App/FEO activity
App/FEO act...
OpenSOVD High Level Architecture
OpenSOVD...
IPC
IPC
odx
odx
configures
configures
HPC
HPC
App
App
Configuration Manager
Configuration Manager
Authentication Manager
Authentication Manag...
Crypto
Crypto
IPC
IPC
IPC
IPC
Diagnostic Fault Manager
Diagnostic Fault Man...
Diagnostic DB
Diagnostic...
IPC
IPC
IPC
IPC
Persistency
Persistency
Use
Use
IPC
IPC
Fault lib
Fault lib
Activity
Activity
Fault lib
Fault lib
Logging
Logging
Use
Use
Activity
Activity
Fault lib
Fault lib
IPC
IPC
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
Diag lib
IPC
IPC
Text is not SVG - cannot display
diff --git a/docs/design/design.md b/docs/design/design.md index 71dbd63..8e93408 100644 --- a/docs/design/design.md +++ b/docs/design/design.md @@ -60,7 +60,7 @@ Their functionality is briefly described below. - Diagnostic Library - Provides a framework agnostic interface for arbitrary apps and components to register and expose SOVD data resources. - - **The Diagnostic Library is the interface between S-CORE and the OpenSOVD project and should be developed in cooperation - see [ADR S-CORE Interface](./adr/001-adr-score-interface.md).** + - **The Diagnostic Library is also an interface between S-CORE and the OpenSOVD project and should be developed in cooperation - see [ADR S-CORE Interface](./adr/001-adr-score-interface.md).** - Relays diagnostic resources via IPC to the SOVD Server, which exposes it through the SOVD resource API e.g. (`/{entity-path}/{resource-collection}/{resource-id}`). - Supports SOVD resource types as defined by SOVD, including: - Data: static and dynamic data values such as identifications, measurements, and parameters (read/write). @@ -134,6 +134,55 @@ Their functionality is briefly described below. - UDS transport layer (e.g. DoIP or other vendor specific transports) shared with Classic Diagnostic Adapter. - Central component and unique per ECU/System (one per ECU or per System is possible). +### Example Topology: SOVD Entity Hierarchy + +All apps and components register themselves and their capabilities via the **Diagnostic Library**. Alternative ways to discover and register components and apps are provided, e.g. **mDNS**. + +Resources like `faults/` are provided by the **FaultManager**. Resources like `data/`, `operations/`, etc. are provided by the apps directly. + +> **Note:** The SOVD entity types `areas`, `subareas`, and `subcomponents` are intentionally omitted from this example for simplicity. + +``` +SOVDServer +├── components/ +│ ├── Hpc1 (current compute unit) +│ │ ├── data/ +│ │ └── faults/ +│ ├── Ecu1 (classic ECU - exposed by Sovd2Uds) +│ │ ├── data/ +│ │ └── faults/ +│ └── EcuN (classic ECU - exposed by Sovd2Uds) +│ ├── data/ +│ └── faults/ +├── apps/ +│ ├── FaultManager (central fault manager, is-located-on Hpc1) +│ │ ├── data/ +│ │ ├── faults/ (does not aggregate faults from other apps) +│ ├── App1 +│ │ ├── data/ +│ │ └── faults/ +│ ├── AppN +│ │ ├── data/ +│ │ └── faults/ +│ ├── Sovd2Uds (Classic Diagnostic Adapter) +│ │ ├── data/ +│ │ └── faults/ +│ └── Uds2Sovd (UDS-to-SOVD Proxy) +│ ├── data/ +│ └── faults/ +└── functions/ + └── VehicleHealth (cross-entity fault view) +``` + +#### Entity Relations + +| Relation | Request | Returns | +|---|---|---| +| `hosts` | `GET /components/Hpc1/hosts` | {FaultManager, App1..N, Sovd2Uds, Uds2Sovd} | +| `is-located-on` | `GET /apps/{FaultManager,App1..N,Sovd2Uds,Uds2Sovd}/is-located-on` | Hpc1 | +| `hosts` | `GET /components/Ecu{1..N}/hosts` | *(classic ECU apps exposed by Sovd2Uds)* | +| `depends-on` | `GET /functions/VehicleHealth/depends-on` | FaultManager | + ### Out of scope components The following components are out of scope of the project but are included for context.