上下文
类 ara::diag::GenericDiagnosticSovdContent 提供了通用的编程接口,自适应应用程序通过该接口根据 ASAM SOVD 提供和处理面向服务的车辆诊断(SOVD)的数据资源 [SWS_DM_02186] 。在典型的诊断场景中涉及三个基本组件:外部 SOVD 客户端、Diagnostic Management(DM)和自适应应用程序的特定于应用程序的 Handler。
SOVD 数据通过 DiagnosticSovdContent 进行结构化,它由类型为 DiagnosticSovdContentElement 的一个或多个元素组成 SWS Diagnostics §7.3.3.3 “Definition of SOVD data” 。DM 使用接口 ara::diag::GenericDiagnosticSovdContent 来执行对全部内容的读取或写入请求,并在此过程中应用规定的数据转换规则 SWS Diagnostics §7.3.3.3 “Definition of SOVD data” 。
diag_context
client
SOVD-Client
dm
Diagnostic Management (DM)
client->dm
SOVD-Anfrage
dm->client
SOVD-Antwort
handler
GenericDiagnosticSovdContent
dm->handler
Read () / Write ()
handler->dm
Future-Ergebnis
上下文图:GenericDiagnosticSovdContent 在外部 SOVD 客户端、Diagnostic Management 和特定于应用程序的 Handler 之间的嵌入。来源:[SWS_DM_01431]、[SWS_DM_01432]、[SWS_DM_02186]。
生命周期
实例化通过构造函数进行,指定指向 DiagnosticDataIdentifierGenericInterface 的 PortPrototype 的 ara::core::InstanceSpecifier 以及类型为 SovdContentConcurrencyType 的并发模式 [SWS_DM_02187] 。该类被设计为线程安全且具备异常安全性 [SWS_DM_02187] 。
移动构造函数和移动赋值运算符被定义为受保护可见性(protected)[SWS_DM_02189] 、[SWS_DM_02190] 。Interpretation:受保护声明表明实例被实现为派生类层次结构,并旨在防止从外部直接移动。 问题 Q-57d60744ffc54899 (未决) 存在一个虚析构函数用于释放 [SWS_DM_02188] 。
构造后,实例处于非提供状态。仅通过调用 Offer(),DM 才被授权将到达的诊断请求转发给该实例 [SWS_DM_02193] 。在关闭之前或服务结束时,通过 StopOffer() 再次撤销转发 [SWS_DM_02194] 。
使用路径
常规流程包括启用服务、接收异步请求以及最终注销:
通过 GenericDiagnosticSovdContent 进行 SOVD 读取检索 SOVD-Client Diagnostic Management (DM) GenericDiagnosticSovdContent Use Case: Dienstregistrierung Offer() Result<void> Use Case: Anfragebearbeitung SOVD Read a data resource Read(sovd_content_name, meta_info, cancellation_handler) Future<DiagnosticSovdContentData> SOVD Response Body Use Case: Dienstbeendigung StopOffer()
时序图:服务注册、异步读取调用和服务终止的流程。来源:[SWS_DM_01432]、[SWS_DM_02191]、[SWS_DM_02193]、[SWS_DM_02194]。
错误场景
如果在已提供服务的情况下调用 Offer(),则操作失败并返回错误代码 DiagOfferErrc::kAlreadyOffered [SWS_DM_02193] 。
如果在 Read() 中确定数据时或在 Write() 中写入时发生特定于应用程序的错误,则返回的 ara::core::Future 将被相应的 SOVD 错误所满足 [SWS_DM_02191] 、[SWS_DM_02192] ,随后 DM 向客户端传输否定 SOVD 响应。
此外,这两个调用都会传入一个 ara::diag::CancellationHandler,用于在操作被提前中止时发出信号 [SWS_DM_02191] 、[SWS_DM_02192] 。在超出该操作的生命周期后,不得再存储或调用此处理程序 [SWS_DM_02191] 、[SWS_DM_02192] 。
gemini-3.8-flash-low· 2026-10-13 · 德文原文