DEENESPTFRRUARHIKOZHNL

命名空间 <DataElement-Namespace>

用户指南人工智能生成

定义用于将应用特定的诊断数据元素类型安全地连接到诊断系统的接口。
AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 6bbd7d1318c6 来源 未决问题(3)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

定义用于将应用特定的诊断数据元素类型安全地连接到诊断系统的接口。

命名空间 <DataElement-Namespace> 在针对 Release R25-11 的 AUTOSAR Adaptive 模块 diag 中汇集了生成的接口,用于将应用程序特定的诊断数据元素结构化地连接到中央诊断系统。通过接口类 <DataElementInterface>,自适应应用程序实现了在传入诊断请求时由诊断栈执行的具体读取和写入操作。关于生命周期,接口实例的创建和注册由应用程序负责,其中解释:实例必须在整个运行期间保持有效,并且针对并发调用必须保持线程安全。

上下文

在针对 Release R25-11 的 AUTOSAR Adaptive Platform 框架内,功能集群 diag(Diagnostic Management)提供了标准化机制,以按照 UDS 提供车辆诊断服务并与车辆内部功能相连接。命名空间 <DataElement-Namespace> 在此构成了用于采集和修改诊断数据元素的接口的逻辑框架。标识符 <DataElement-Namespace> 推测用作模型特定 C++ 命名空间的通用占位符,该命名空间在代码生成期间从具体诊断数据元素的形式化 ARXML 模型描述中实例化。 问题 Q-2a710983ba4634ab (未决)

该命名空间内的核心元素是类 <DataElementInterface>,其类型为 DiagnosticDataElementInterface。该接口构成了自适应诊断栈与应用特定软件组件之间的形式化契约。声明的接口类 <DataElementInterface> 用于应用程序连接,推测用于将对诊断数据元素(如数据标识符 DID)的读取和写入操作类型安全地委托给自适应应用程序。 问题 Q-5fbb9db6b949d851 (未决)通过这种方式,确保了诊断服务的通用协议处理与 ECU 的内部数据提供之间的清晰解耦。

生命周期

在 <DataElement-Namespace> 中定义的组件的生命周期与自适应应用程序和诊断管理器的执行阶段耦合。<DataElementInterface> 的具体实现的实例化通常在相应应用程序进程的初始化和启动阶段进行。关于所有权关系,<DataElementInterface> 的具体实现的创建和销毁由使用该实现的应用程序负责,其中解释:在反初始化时将其安全释放之前,该实例必须在诊断系统的整个注册和运行阶段保持有效。

在运行阶段,已注册的接口实例保持在就绪状态,以接收传入的诊断请求。由于外部诊断请求通过诊断协议栈异步到达,并且可能由运行时系统的工作线程处理,因此接口方法的实现必须设计为线程安全且可重入的。在应用程序进程关闭之前,必须解除与诊断管理器的绑定,以防止对已销毁接口对象进行无效指针访问。

使用路径

来自 <DataElement-Namespace> 的接口的典型用法分为实现、注册、运行时服务和清理。应用程序软件首先从 <DataElementInterface> 派生一个具体类,并重写用于访问诊断数据所需的各类回调方法。在启动时,应用程序实例化该类,并将其作为数据提供者注册到模块 diag 的运行时环境中。

如果诊断集群随后接收到 UDS 服务请求(例如用于查询或编程 DID),它会将数据访问直接委托给 <DataElementInterface> 的已注册实例。应用程序读取或更新请求的数据并将结果返回给诊断系统,诊断系统据此生成诊断响应。在应用程序有序终止时,注销该实例并按规则释放内存。

本指南基于 AUTOSAR Adaptive Platform R25-11 针对模块 diag 的结构规范,并针对 autodocs 自动生成。

类

DiagnosticDataElementInterface class

类图

Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.

G cluster_ns <DataElement-Namespace> cluster_c0 <DataElement-Namespace>::<DataElementInterface> n_DataElement_Namespace____DataElementInterface_ <DataElementInterface> n_DataElement_Namespace____DataElementInterface____DataElement_ReadOutput «struct» <DataElement>ReadOutput