2.3. Diagnostic Tester¶
This document defines the requirements for the diagnostic tester functionality of the Classic Diagnostic Adapter (CDA), including startup behavior, ECU detection, variant detection, and state management.
2.3.1. Startup Behavior¶
2.3.1.1. Startup Sequence¶
The CDA must execute startup in a defined sequence to ensure proper initialization of all components. The startup sequence must include the following phases in order:
Rationale A well-defined startup sequence ensures predictable initialization behavior and allows external systems to monitor startup progress via health endpoints when health monitoring is enabled (see Health Monitoring Endpoint (req~sovd-api-health-endpoint)).
CDA Startup Sequence¶ |
2.3.1.2. Database Loading¶
The CDA must load diagnostic databases (MDD files) at startup. The following requirements apply:
Rationale Parallel database loading significantly reduces startup time in deployments with many ECU definitions. Graceful handling of duplicates and failures ensures robust operation in real-world environments where database files may be inconsistent or corrupted. |
2.3.1.3. DoIP Gateway Initialization¶
The CDA must initialize the DoIP gateway to enable communication with vehicle ECUs. The initialization must include:
The following must be configurable:
Rationale DoIP gateway initialization establishes the communication path to vehicle ECUs. Configurable parameters allow adaptation to different network topologies and timing requirements. |
2.3.1.4. Communication Initialization Mode¶
The CDA must support a configurable
In both OnDemand and Disabled mode:
Once a detection run has completed (regardless of the triggering Rationale Configurable initialization supports use cases where the CDA must start quickly without immediately
consuming network resources, or where ECU communication should only begin after explicit
authorization (e.g., security unlock, session establishment, or plugin-controlled activation). The
Disabled mode additionally supports deployments that require the CDA to be reachable via its SOVD
API immediately, without generating any vehicle network traffic, until a detection run is explicitly
initiated (typically via Distinguishing Always from WhenNotPersisted avoids leaving the choice between “always
rebroadcast, but keep tracking state/ OnDemand and Disabled always behave like WhenNotPersisted once triggered, rather than offering their own Always/WhenNotPersisted choice: these modes exist specifically to avoid vehicle network traffic until explicitly authorized, so unconditionally rebroadcasting even when a persisted topology is already available would be counter to their purpose. Within OnDemand, the two triggers intentionally differ in scope: the plugin-API trigger is a deliberate, whole-vehicle “start communication now” signal and must activate every gateway, matching what a plugin expects after an explicit authorization event; the first-diagnostic-request trigger, by contrast, is an implicit, incidental signal tied to one specific ECU, so it should only establish what is strictly needed to serve that request when a persisted topology makes this possible. |
2.3.2. ECU Detection and Variant Detection¶
2.3.2.1. ECU Discovery¶
The CDA must discover and register ECUs based on loaded databases and DoIP gateway responses. The following requirements apply:
Rationale ECU discovery establishes the mapping between diagnostic descriptions (MDD) and physical vehicle communication endpoints, enabling the SOVD API to expose the correct ECU capabilities. |
2.3.2.2. Variant Detection¶
The CDA must perform variant detection to identify the correct ECU variant from potentially multiple definitions. The following requirements apply:
Rationale ECUs may have multiple software variants with different diagnostic capabilities. Variant detection ensures the CDA exposes the correct services and parameters for the actually installed variant. |
2.3.2.3. ECU States¶
ECUs must maintain defined states throughout their lifecycle to reflect their current availability and detection status. The following states must be supported:
State transitions must occur as follows:
The current ECU state must be queryable via the SOVD API. Externally, the AssumedOnline state must be
reported as In addition to the state, the SOVD API must expose a
ECU State Chart¶ Rationale Explicit state management provides clients with visibility into ECU availability and allows
appropriate error handling based on the current state. The AssumedOnline state allows the CDA to
immediately report ECUs as reachable based on prior knowledge (e.g. in
Communication Initializatio... (req~dt-deferred-initialization)’s OnDemand mode, before its per-ECU trigger has fired) while
still internally tracking that this assumption has not yet been confirmed in the current session. The
|
2.3.3. ECU List Persistence¶
2.3.3.1. ECU List Persistence¶
The CDA must be able to persist the detected ECU/gateway topology, so that it does not necessarily need to re-run full ECU detection (VIR/VAM discovery and variant detection) on every startup. This is a core diagnostic-tester capability, usable purely through This capability must be configurable via an
The following requirements apply when persistence is enabled:
Rationale Full ECU detection involves broadcasting a VIR, waiting for VAM responses, and running variant detection for every discovered ECU, which can take a noticeable amount of time in vehicles with many ECUs. Persisting the previously detected topology allows the CDA to skip or defer this work on subsequent startups, improving startup time and reducing unnecessary vehicle network traffic. This is an opt-in capability (disabled by default), preserving the CDA’s established default behavior of always performing a full VIR/VAM broadcast detection at startup when left unconfigured (see the Always vs WhenNotPersisted distinction in Communication Initializatio... (req~dt-deferred-initialization)). |
2.3.3.2. ECU List Persistence - Shutdown Update¶
In addition to persisting the topology after a detection run (see
ECU List Persistence (req~dt-ecu-list-persistence)), the CDA must, as part of a graceful shutdown, update the persisted
Rationale The |
2.3.4. Error Handling¶
The CDA must handle startup failures gracefully to maximize availability. The following error handling behaviors must be supported:
All errors must be logged with sufficient detail for troubleshooting. Rationale Graceful degradation ensures the CDA remains partially operational even when some components fail, which is critical for diagnostic scenarios where partial functionality may still be useful. |