Adaptive autosar DM 诊断管理
15.1什么是诊断管理?
诊断管理是自适应平台基础设施中的一个功能集群。
作为一个功能集群,诊断管理包括一个与自适应应用程序链接的库和一个实现诊断管理主动方面的守护进程。作为RTA-VRTE Starter Kit的一部分提供的诊断库,提供了C++ API,支持自适应应用程序对诊断管理的运行时访问。
15.1.1 职责
一般来说,诊断存在是为了支持汽车E/E系统的监控,因此它提供了一系列设施来检测、警告和从故障中恢复。
为了支持诊断,AUTOSAR诊断管理提供了一系列功能,包括:
- 表示当前系统状态的指示,可以在服务和车辆使用时使用,如“警告指示灯”。
- 系统监控自适应应用程序以识别不良条件,并在检测到故障时,由诊断管理存储发生故障时的记录以及关于车辆状态的足够数据以便进行故障查找。
- 诊断事件修复 - 跟踪运行周期中报告的故障,允许从故障条件恢复(如果可能)以恢复车辆到已知状态。
- 支持统一诊断服务(UDS)协议,用于诊断客户端和服务器之间的通信。
15.1.2 统一诊断服务
AUTOSAR诊断管理的基础是接收和处理来自网络层的统一诊断服务(UDS)请求。
UDS通信包括来自客户端的请求和来自诊断的响应
例如,客户端通过向ECU发送请求来启动UDS服务,处理后,后者发送回正面或负面响应(或者如果响应被抑制,则不发送响应)。
UDS并不特定于AUTOSAR,而是一种设计用于在ECU环境中使用的诊断通信协议(对于汽车电子设备,该协议已在ISO 14229-1:2013[10]中标准化)。
注意 所有支持的UDS都列在第15.8节中。
当接收到UDS请求时,诊断会提取独立于传输层的UDS信息,然后尝试通过将其关联到现有的UDS会话来处理请求:它检查当前会话是否允许诊断请求,并检查安全设置(如正确参数(长度、服务标识符(SID)、子函数、条件等)是否有效(见图15.1)。
如果检查失败,则请求被拒绝;
否则,诊断负责内部生成响应或将请求传递给外部应用程序进行处理。

UDS定义了许多服务,这些服务可以用于
- 访问ECU内部信息
- 控制ECU内部诊断功能
- 建立和控制诊断会话。
如图15.2所示,当客户端请求UDS时,服务器通常首先处于默认会话。然后,根据UDS服务DiagnosticSessionControl(0x10),定义会话请求类型,可以启动特定会话。
这些会话在ISO 14229-1:2013中定义,并包括:
- 编程
- 扩展诊断
- 安全诊断

15.1.3 诊断接口
下面描述的整个工作流程(第15.5.1节)基于AP21-11方法使用ara::diag接口。工作流程基于ISOLAR-VRTE从Diagnostic Extract生成并部署到机器的FlatCFG文件。
这个工作流程取代了之前使用Diagnostic Service Needs Editor的原型工作流程,该编辑器已被移除:
现在在DEXT Editor中执行端口映射。
15.1.4 诊断故障代码
在AUTOSAR诊断中,诊断故障代码(DTC)代表车辆中检测到的某个问题(通常对生产或车间很重要)。
DTC由3个字节组成,并使用DiagnosticEventToTroubleCodeUdsMapping ARXML元素映射到诊断事件,使这些事件能够通过DTC代码唯一地标识。
DTC由诊断管理用于在事件内存数据库中唯一地标识数据。
DTC可能有多种解释,AUTOSAR诊断支持ISO 11992-4、ISO 14229-1:2013和SAE-J2012-DA。不同的解释只影响来自诊断的报告,不会影响功能。
可以使用DiagnosticTroubleCodeGroup将多个DTC组合在一起,以便诊断可以一次性处理组中的所有DTC。
DTC组使用专用的DTC值进行标识,该值超出了有效DTC的范围。
为了方便起见,诊断提供了“GroupOfAllDTCs”(分配给DTC组标识符0xFFFFFF)DTC组,该组始终包含所有配置的DTC。
15.1.5 AUTOSAR诊断提取
RTA-VRTE Starter Kit Diagnostics使用AUTOSAR Diagnostic Extract Template(DEXT)进行配置。
DEXT是一种标准化的AUTOSAR交换格式,可以像系统描述一样使用和传递。
DEXT的全称是诊断提取模板,用于定义DCM、DEM和FIM的需求和配置¹。
DCM是诊断通信管理器,负责处理来自外部测试设备的诊断请求。
DEM是诊断事件管理器,负责记录和管理诊断事件。
FIM是功能抑制管理器,负责根据诊断事件的状态控制功能的可用性²。
DEXT可以支持AUTOSAR Classic和Adaptive平台,提高诊断的可移植性和可维护性³。
DEXT定义了所有关于诊断通信(例如UDS服务、会话配置、安全级别配置等)和诊断事件管理(例如诊断故障代码(DTC)、诊断事件、操作周期等)的方面。
DEXT还支持合并来自多个源的信息,使得可以从最合适的源构建诊断配置;无论是应用开发者、集成商还是OEM。
15.1.6 经典和自适应AUTOSAR中的诊断
自适应平台诊断管理的组织和职责与经典平台中的诊断堆栈有许多类似之处。
从概念上讲,诊断架构分为三个子组件;
- 诊断通信管理器(DCM)
- 诊断事件管理器(DEM)
- 传输协议(DoIP)
- 诊断事件管理器(DEM**)** :实现诊断事件的处理(应用程序错误或其他由应用程序向诊断管理报告的有趣报告,以便以后存储和检索),将诊断故障代码(DTC)绑定到诊断事件,并更新DTC状态。
诊断事件 在系统范围内是唯一的: 一个事件只能由一个应用程序报告。
在自适应平台中,应用程序通过一个被DiagnosticMonitorInterface分类的端口原型获得对事件的访问,该接口具有到服务依赖性的诊断映射。
诊断管理只考虑具有诊断故障代码(DTC**)映射的诊断事件** 。
在自适应平台实现中,DTC及其相关的环境信息(称为冻结帧)使用Persistency Functional Cluster存储在文件系统上的一个文件中(这与经典平台不同,在经典平台中,事件内存保留在非易失性存储中)。
当收集冻结帧内容时,自适应平台诊断管理器触发通过DCM接口读取相关的诊断标识符(DIDs),并将其写入相关文件。
- 诊断通信管理器(DCM**)** :负责UDS(和经典平台中的SAE J1979)通信路径和诊断服务的执行。DCM转发来自外部诊断扫描工具的诊断请求,并负责组装响应消息(DTC、状态信息等),这些消息将被转送给车辆内部测试人员或外部诊断工具。
- 传输协议(DoIP**)** : 自适应平台诊断管理支持“Diagnostics-over-IP”(DoIP)通信协议,因此任何合适的诊断UDS客户端都可以与Diagnostic Management一起使用。在经典平台中,传输协议与DEM和DCM分开处理。
15.2 RTA-VRTE Starter Kit中的诊断
RTA-VRTE Starter Kit诊断(图15.3)包括诊断管理器(DM)进程(rb-dm)和一个库(rb-diag)。诊断管理器进程 负责管理诊断事件、UDS会话控制、UDS通信等,并必须作为AP平台启动的一部分由执行管理启动。
该库rb-diag****与诊断交互的自适应应用程序链接 ,并提供ara::diag诊断接口的API实现。由于库与应用程序链接,API在应用程序的上下文中运行。
诊断管理器(即rb-dm进程)是处理诊断通信和支持UDS请求的中心元素。UDS请求在诊断对话的上下文中处理,该对话代表了诊断客户端(测试器)和诊断服务器之间的对话。
自适应应用程序使用rd-diag库(图15.3)的API向诊断管理器报告诊断事件。
诊断事件报告了被监视实体的状态,并在系统中唯一地标识该实体。
当诊断管理器进程 rb-dm从应用程序接收到事件通知时,它执行在诊断配置中定义的任何操作,如更改诊断故障代码(DTC)状态,或捕获和存储与该诊断事件相关的环境数据(扩展数据记录或快照记录)。因此,事件是rb-dm的事件内存管理的输入源。
诊断管理完全是动态配置的。
RTA-VRTE使用部署到目标ECU的FlatCFG数据配置文件来配置Diagnostic Extract信息即,随着ECU上软件的更新,诊断信息可能会发生变化 - 以及用于主要TCP/DoIP设置(dm_config.bin)的bin文件。配置在第15.1.3节中有更详细的介绍。
15.2.1 初始化和依赖
Diagnostic Manager (DM)守护进程,rb-dm,必须作为AP平台启动的一部分由执行管理启动。该进程还依赖于这些其他平台元素,因此,这些元素必须在rb-dm之前启动:
- ara::com:用于与自适应应用程序通信;
- ara::per:用于访问自适应应用程序文件和存储非易失性数据;
- ara::log:用于日志和跟踪。

图15.3:RTA-VRTE Starter Kit Diagnostic Manager的平台依赖性和主要交互
DM进程使用FlatCFG文件进行配置,这些文件定义了诊断配置,并且有一个.bin文件指定了与Diagnostic Extract信息无关的设置,例如主要TCP/DoIP设置。
注意 DM进程在运行时依赖于arapipcd,如果没有arapipcd,则rb-dm不会启动。
警告 在执行编辑器中,rb-dm的执行名称和进程名称必须设置为rb_dm,否则将无法配置ara::per。
Diagnostic Manager dm_config.bin配置文件必须与Diagnostic Manager可执行文件rb-dm一起部署到目标ECU。
这些文件在启动时由rb-dm进程加载,因此必须部署到可以读取它们的位置。
配置文件的位置作为参数通过“-c”命令行选项由执行管理传递给Diagnostic Manager进程。
这个过程相当于从命令行启动,如下所示:
/opt/vrte/dia-diagnostic-manager/rb-dm -c dm_config.bin Diagnostic Management
配置的默认位置是opt/vrte/dia-diagnostic-manager/etc/dm_config.bin。
注意 dm_config.bin文件是由flatc编译器生成的
dm_config.json和DmConfig.fbs文件:可以根据用户的需要调整DM配置(参见第15.5.2节)。
rb-dm的执行管理参数必须根据rb-dm库的位置(LD_LIBRARY_PATH)进行配置。默认的文件夹是/opt/vrte/dia-diagnostic-manager/lib。
除了dm_config.bin文件外,RTA-VRTE诊断管理还使用基于FlatCFG数据的诊断配置,用于rb-dm和应用程序。
运行时诊断管理进程rb-dm,在进程启动期间从部署的数据文件aradiagd__
因此,rb-dm的最终配置是: LD_LIBRARY_PATH=/lib:/usr/lib:/opt/vrte/lib:/opt/vrte/dia-diagnostic -manager/lib ECUCFG_ENV_VAR_ROOTFOLDER=/opt/vrte/dia-diagnostic-manager /etc/ecu-cfg/
第15.5节描述了所有应部署到目标ECU的配置文件。
15.3 应用程序使用
诊断应用程序通过PortPrototypes与诊断管理(图15.3)交互,这些PortPrototypes由ara::diag诊断接口和rb-diag库分类。交互可以提供数据访问(对于外部测试器和DTC存储)、报告检测到的故障、更新操作周期等。
ISOLAR-VRTE应用程序设计编辑器包括Harmony应用程序设计语言(HADL)。
HADL是一种针对创建ARXML清单元素
(包括自适应SWC(第4.2.4.5节)
端口原型和诊断接口(第4.2.4.8节))进行优化的领域特定语言(DSL)。
有关HADL能力的更多信息,请参见第4.2节,有关使用HADL进行诊断访问的示例,请参见第15.4.1.1节。
应用程序到诊断管理的接口使用两个核心概念 :处理器类和InstanceSpecifiers。
自适应应用程序使用诊断管理API类作为基础定义一个诊断处理器类 。基类提供实用方法(例如,启动和停止处理器)、通知回调方法(由诊断管理调用)和定义派生类中所需方法实现的签名的纯虚方法。
例如,以下代码片段使用Diagnostic Management API GenericDataIdentifier类作为基础定义一个新的处理器类:
#include <ara/diag/generic_data_identifier.h>
class MyDID : public ara::diag::GenericDataIdentifier
{
public:
MyDID( ara::core::InstanceSpecifier is );
// Define implementations of virtual methods
};
GenericDataIdentifier构造函数(因此也是派生类的构造函数)接受一个InstanceSpecifier作为参数。InstanceSpecifier是从自适应SWC的PortPrototype的shortName构造的,因为这个信息是应用程序设计者所知道的。
创建的InstanceSpecifier在构造派生处理器类时传递给Diagnostic Management API。
扩展上述示例,以下代码片段实例化处理器,传递使用端口shortName创建的InstanceSpecifier:
MyDID did( InstanceSpecifier( “portname” ) );
自适应应用程序创建由不同诊断接口分类的端口,以支持各种诊断功能,包括数据访问、监控、操作周期、数据传输和诊断例程控制。
15.3.1 数据访问
诊断管理通过在自适应应用程序中定义的处理器支持数据访问,这些处理器在响应UDS ReadDataByIdentifier(0x22)和WriteDataByIdentifier(0x2E)请求时被调用。
通过一个GenericDataIdentifier类的实例,应用程序提供对数据标识符的访问。
在构造过程中,通过传递给构造函数的InstanceSpecifier,将创建的对象与相关的端口原型关联起来。
端口原型必须由一个ara::diag DiagnosticDataIdentifierGenericInterface接口分类。
GenericDataIdentifier类包含纯虚方法Read和Write,必须实现这些方法以提供所需的数据访问。因此,应用程序创建一个从GenericDataIdentifier类派生的类,在派生类中提供Read和Write的实现。
class MyDID : public ara::diag::GenericDataIdentifier
派生类的实例是数据标识符的处理器,并在响应ReadDataByIndentifier或WriteDataByIdentifier请求时由诊断管理调用。
15.3.2 监控
诊断管理支持自适应应用程序通过诊断事件报告故障。以这种方式报告事件的应用程序是监控应用程序。
监控应用程序识别特定的故障(例如,故障传感器,短路等)并使用事件报告故障。
诊断事件是系统范围内唯一的,因此一个事件的监控只能由一个应用程序执行。
自适应应用程序通过一个端口原型访问用于监控的事件,该端口原型由具有诊断映射到服务依赖关系的诊断监控接口分类。
监控自适应应用程序通常独立于诊断管理,并负责将事件状态报告给诊断管理。
诊断管理也可以使用initMonitor回调(在构造Monitor类时建立)来控制监控自适应应用程序;例如,暂停监控。
// Define callback (invoked by Diagnostic Mgmt)
auto cbk = [&]( ara::diag::InitMonitorReason ima ) { ... }
// Define port prototype (for diagnostic event)
ara::core::InstanceSpecifier specifier( "port" );
// Define debouncing (counter-based, managed by Diagnostic
Mgmt)
ara::diag::Monitor::CounterBased debounceParam;
// Create instance of monitor for event reporting
ara::diag::Monitor m( specifier, cbk, debounceParam );
监控应用程序使用ReportMonitorAction API报告诊断事件。
这需要一个MonitorAction参数,表示要报告的事件状态。
m.ReportMonitorAction( ara::diag::MonitorAction::kPassed );
执行自己的事件去抖动的监控应用程序报告一个合格的状态(kPassed或kFailed),因为事件只有在应用程序自己的去抖动阈值达到后才报告。
相反,使用诊断管理内部去抖动的监控应用程序报告一个不合格的状态(kPrepassed或kPrefailed),因为这些报告可能只是一次性的故障,不会持续。
一个不合格的状态报告可以在诊断管理去抖动阈值超过时变为合格。
诊断管理支持两种形式的去抖动:
基于时间的: 一个不合格的报告启动一个诊断管理计时器,结果在计时器到期时变为合格。
在时间到期之前收到的相反的不合格报告只是重置诊断管理计时器。
基于计数器 的诊断管理计数不合格的报告,这些报告在达到一定数量的相同报告后会变为合格。在达到阈值之前收到的相反的不合格报告会重置计数器。这是一种去抖动算法,用于过滤掉一次性的或不稳定的故障信号,提高诊断的准确性和稳定性。这种算法在AUTOSAR标准中有详细的定义和配置。
诊断管理去抖动是通过诊断事件到去抖动算法映射元素启用的,该元素引用诊断事件和所需的去抖动算法属性。如果没有这样的映射存在于一个事件那么诊断管理不会应用任何去抖动算法。
当没有为一个事件定义去抖动算法时,监控应用程序传递一个不合格的状态,即kPrepassed或
kPrefailed,是一个错误。
15.3.3 操作周期
诊断管理支持根据ISO 14229-1:2013[1]的操作周期。操作周期定义了监控的开始和结束条件。一个ECU可以有多个操作周期;
典型的周期包括点火开/关,上电/下电等。
自适应应用程序使用SetNotifier API通知诊断管理关于操作周期状态的更改。或者,可以配置操作周期在初始化/终止时分别由诊断管理自动启动/结束。
只有当操作周期开始时,才可以报告诊断事件(因此DTC存储发生);如果操作周期不活动,则忽略报告。
15.3.4 数据传输
UDS服务RequestUpload (0x35)和RequestDownload (0x34)提供了诊断客户端和服务器之间的数据传输能力。
注意 UDS数据传输服务使用GenericUDSService诊断接口进行支持。当前实现不支持DiagnosticUploadInterface或DiagnosticDownloadInterface。这里记录了诊断接口以便完整性。
诊断应用程序被认为是数据源,因此UploadService启动了从应用程序到诊断客户端的数据传输。DownloadService在另一个方向上操作,并启动从诊断客户端到应用程序的传输。

图15.4说明了自适应应用程序与诊断库进行数据传输的交互。
通过UploadService或DownloadService类的实例向应用程序提供对数据传输的访问。
创建的对象是上传/下载的上传处理程序,并且必须在构造过程中通过传递给构造函数的InstanceSpecifier与相关端口原型关联起来。
端口原型必须由ara::diag DiagnosticUploadInterface或DiagnosticDownloadInterface接口分类。
class UploadApp : public ara::diag::UploadService UploadService和DownloadService类不能直接实例化,因为它们包含纯虚方法,例如请求数据传输或传递已传输数据。子类必须在实例化之前提供这些方法的实现。
15.3.5 RoutineControl
UDS(0x31)服务RoutineControl使诊断客户端能够在服务器中启动和停止程序,然后请求程序结果。UDS服务RoutineControl的典型用途是相对复杂的控制序列,如启动自检功能,清除或擦除非易失性内存,覆盖正常诊断服务器功能等。
该服务支持与DiagnosticGenericRoutine诊断接口中的Start、Stop和RequestResults方法相对应的子功能。这些方法针对诊断服务器中的特定预定义程序,并因此将程序标识符(RID - 来自UDS请求消息)作为参数。
GenericRoutine类包含纯虚方法,必须实现这些方法以提供所需的程序控制。与上面使用GenericDataIdentifier类的方式类似,应用程序使用GenericRoutine类作为基类创建一个派生类,然后在派生类中为纯虚方法提供实现。
class MyRoutine : public ara::diag::GenericRoutine
在ISOLAR-VRTE中,在HADL文件中应实例化DiagnosticRoutineInterface,并提供一个端口。要将端口映射到程序中,在DEXT编辑器中,应执行DiagnosticServiceGenericMapping(参见表15.1)。
15.3.6 服务验证
服务验证在处理UDS请求期间从诊断管理中提供两个调用。
第一个调用在UDS处理的非常早期发生 - 甚至在诊断管理器检查请求服务标识符(SID)是否受支持之前。在此调用期间,可以进行制造商特定的检查,如果检查失败,则立即以适当的负响应代码(NRC)拒绝请求。
第二个调用在UDS处理的后期发生,在诊断管理验证了SID并检查了安全访问之后。在第二次调用期间,可以进行供应商特定的检查,如果检查失败,则立即以适当的NRC拒绝请求。
需要使用DiagnosticServiceValidation诊断接口的自适应应用程序必须配置DiagnosticCommunicationManagerNeed元素。diagnostic need中的serviceRequestCallbackType选择是为供应商还是制造商调用。
15.4 与诊断管理合作
本节提供了关于ISOLAR-VRTE中诊断配置的具体信息。有关ISOLAR-VRTE及其配置能力的一般信息,请参见第4节。
ISOLAR-VRTE提供了一个DEXT编辑器来配置诊断服务。
DEXT格式由AUTOSAR标准化,因此如果需要,可以使用其他符合标准的DEXT编辑器。
15.4.1 总览
要配置新的诊断元素(如诊断标识符(DID)),并在自适应应用程序中使用它,主要需要以下步骤:
- 应用程序设计 :使用ISOLAR-VRTE应用程序设计编辑器和Harmony应用程序设计语言(第4.2节)添加所需的SW组件、端口原型和诊断接口。如果尚未存在,自适应应用程序还需要一个ProcessDesign。
- 诊断配置 :使用ISOLAR-VRTE DEXT编辑器将所需元素添加到DEXT诊断配置(第15.4.1.2节)中(在此示例中,将在DEXT文件中添加新的诊断标识符(DID),并将其映射到HADL文件中定义的端口)。
- 清单处理 :使用ISOLAR-VRTE清单处理(或命令行等效的vrtf_fs)将AUTOSAR DEXT配置转换为适合部署到目标ECU的RTA-VRTE FlatCFG基于数据的配置(第4.11节)。
- 应用程序处理器 :实现自适应应用程序对诊断元素的处理器,例如,通过子类化相关的ara::diag API类(第15.1.4节)。
注意 为了说明,本节在添加数据标识符F073(61555)的上下文中介绍了ISOLAR-VRTE的使用。然而,这些指令可以推广到添加任意DID或其他标准诊断特性。
15.4.1.1 应用程序设计
在进行DM配置之前,需要使用应用程序设计来配置软件组件、端口和自适应应用程序与诊断配置交互所需的诊断接口。
自适应应用程序通过在自适应软件组件(SWC)中声明的PortPrototypes访问诊断特性:
该模型与通信类似,但在这种情况下使用的是诊断接口而不是服务接口。
自适应SWC中使用了提供和需要的端口原型来访问诊断特性。
ISOLAR-VRTE应用程序设计编辑器使用HADL支持创建包括自适应SWC和端口原型在内的ARXML清单元素(第4.2.4.5节)。自适应SWC中的每个PortPrototype都由一个接口分类。
HADL interface
import AUTOSAR.StdTypes.uint8_t
package MyPkg namespace mynamespace{
interface
{
readWrite(data1 of uint8_t)
}
component etasDiagExample {
provide DID61555 for exampleDID
}
}
这段HADL代码创建了以下ARXML元素:
在mynamespace命名空间中称为exampleDID的DiagnosticDataIdentifierInterface。
一个AdaptiveApplicationSwComponentType,具有一个由诊断接口exampleDID分类的提供端口原型。
关于HADL领域特定语言的完整文档可以在第4.2节找到;
特别是参见第4.2.4.8节以获取诊断接口的定义。
15.4.1.2 诊断配置
DEXT编辑器
通过右键单击项目并选择ARA Editors → DEXT Editor,可以打开ISOLAR-VRTE DEXT编辑器。DEXT编辑器支持DCM和DEM配置,因为这两者都由自适应平台诊断管理支持。
如果在第一次打开DEXT编辑器时没有定义贡献集,编辑器会要求用户创建一个新的贡献集:

在进行诊断配置之前,重要的是要在软件集群引用中链接贡献集,否则FlatCFG文件将不会生成。

打开后,DEXT编辑器显示当前可用的诊断配置。选择器显示是否显示DCM或DEM配置。下拉菜单允许更改DEXT贡献集。
配置/查看服务
DEXT编辑器显示已经存在的服务,并允许用户通过选择适当的服务类型添加新的服务。
例如,要创建一个数据标识符或查看现有的数据标识符,确保从DEXT编辑器的DCM页面的下拉菜单中选择了Configure DIDs用例。
可以从下拉菜单中选择的其他用例包括配置诊断例程、诊断内存和控制服务等。

从下拉菜单中选择了Configure DIDs后,[CREATE DATA IDENTIFIER]按钮打开"Create Data Identifier"对话框。

当从下拉菜单中选择不同的用例时,可以创建额外的服务元素。
顾名思义,"Create Data Identifier"对话框允许创建一个新元素,定义一个新的DID值和名称。
"Create Data Identifier"对话框允许指定DID值(在这种情况下为61555)和DID名称。
它还允许选择适用的UDS服务,例如ReadDataByIdentifier (0x22) - 这也将影响应用程序代码(第15.4.1.4节)中处理器方法的实现

创建了DataIdentifier DEXT元素后,下一步是配置它并创建一个新的DataElement。在对话框中,通过点击[+ CREATE PARAM]按钮和[+ CREATE DATA ELEMENT]按钮来配置DID的数据元素。
当点击对话框的[OK]时,在DEXT中创建了DataIdentifier DEXT元素。

然后可以设置DID的DataElement的参数(BaseType等)。
- 流程设计定义
在进行诊断映射之前,必须创建一个流程(及其可执行文件)和一个流程设计。
然后按照以下图片所示链接流程和流程设计:

此外,流程设计必须链接到相同的可执行文件:

可执行文件需要有一个RootSwComponentPrototype引用到ApplicationType(直接是AdaptiveApplicationSwComponentType或CompositionSwComponentType):

诊断映射
DEXT编辑器还支持创建自适应应用程序进程(提供诊断标识符的处理器)与诊断管理之间的链接。链接采取诊断映射的形式,将ProcessDesign与SwcServiceDependency关联起来。
对于数据标识符示例,编辑器用于配置DiagnosticPortMappings,这些映射位于一组DiagnosticDataIdentifiers和相关SwComponentPrototypes的SwcServiceDependencys之间。编辑器还可以用于创建其他诊断映射,例如DiagnosticSecurityLevels等。
表15.1显示了DEXT元素和映射。

表15.1:AUTOSAR DEXT元素,PortInterface和映射要求。
开始映射,点击DEXT编辑器中的[创建诊断数据端口映射]按钮。

在诊断映射表中, 选择 DiagnosticDataIdentifier: 点击[NEXT]

选择应映射到其中的过程设计 DID。
注意,应始终在执行映射之前定义过程设计,否则无法继续。 点击[NEXT]。

选择目标端口。 点击[NEXT]。

15.4.1.3 验证和FlatCFG生成
ISOLAR-VRTE支持对DEXT配置进行验证。
执行验证, 右键单击项目名称并选择VRTE验证!DEXT验证。
DEXT验证工具的目的是检查诊断TPS清单中报告的约束是否得到满足。
如果没有错误发生,可以通过生成诊断配置文件来继续:这是通过右键单击项目文件夹并选择ARA生成器→生成Flatbuffers二进制文件来完成的。
15.4.1.4 应用程序处理器
一旦在DEXT中定义了诊断标识符(并将DEXT处理为FlatCFG),它就可以在自适应应用程序中使用。为此, 需要生成ara::diag API:右键单击项目文件夹并 选择ARA生成器→生成ara::diag API。
注意文件夹结构取决于如何在HADL文件中定义组件。在这种情况下,命名空间已被命名为 mynamespace,因此ara::diag API生成器创建了一个名为mynamespace的文件夹。
要访问DID,应用程序使用一个ara::diag类,GenericDataIdentifier, 作为基类(参见RTA-VRTE包含文件 generic_data_identifier.h)。
派生类是数据标识符的处理器,并由诊断管理响应UDS ReadDataByIndentifier(0x22)或WriteDataByIdentifier(0x2E)请求。
#include <ara/diag/generic_data_identifier.h>
using namespace mynamespace;
class exampleDID : public GenericDataIdentifier {
public :
exampleDID();
~exampleDID();
ara::core::FutureGenericDataIdentifier::OperationOutput
Read( std::uint16_t did,
MetaInfo info,
CancellationHandler handler ) override;
};
15.4.2 服务例程工作流程
配置服务例程的工作流程与数据标识符相似 描述在第15.4节。
步骤可以总结为:
在HADL文件中声明例行服务。
使用DEXT编辑器创建例行服务,方法是在菜单中选择配置 例行程序。注意,每个例行程序都有三个子程序:开始、请求和停止。
将声明的例行程序映射到服务上。
DEXT验证。
FlatCFG生成。
15.4.3 rb-dm的持久性配置
要为rb-dm守护进程配置ara::per,请首先在HADL代码中声明双向端口:
package RB.VRTE.Diagnostics.rb_dm {
interface
fileType = BINARY_FILE
updateStrategy = KEEP_EXISTING
}
component PeristencyUnitRBDM {
bidirectional
PRPort_DemEventMemoryPersistency for
DemEventMemory
}
警告 端口是硬编码的,应命名为PRPort_ DemEventMemoryPersistency
在执行编辑器中选择刚刚声明的SW组件原型作为rb-dm,即PeristencyUnitRBDM。

然后右键单击项目名称并选择ARA编辑器→持久性部署创建向导。
选择rb-dm守护进程作为进程,并将URI设置为/opt/vrte/dia-diagnostic-manager/var:

配置已完成。现在可以生成FlatCFG文件了。
15.5 集成
本节介绍如何将RTA-VRTE入门套件诊断管理集成到系统中,包括一般工作流程、构建系统要求和自适应应用程序考虑因素。
15.5.1 工作流程
RTA-VRTE诊断(即诊断管理器进程rb-dm)的运行时配置使用部署到目标ECU的基于FlatCFG数据的配置。
ISOLAR-VRTE中的DEXT编辑器生成并配置了生成FlatCFG配置文件所需的诊断输入数据作为DEXT和ARXML文件,这些文件用于配置RTA-VRTE。
创建了诊断提取(DEXT)和诊断服务映射输入(参见图15.5)后,AUTOSAR信息被处理成运行时FlatCFG形式,准备使用vrte_fs命令行工具进行部署(参见第15.5.3节,用于编译FlatCFG文件)。

图15.5:从DEXT派生运行时配置(FlatCFG)。
15.5.2 诊断管理器rb-dm配置文件
本节描述了在dm_config.json文件中配置的主要参数。一些参数不是必需的,如果未设置,rb-dm将设置一个默认值;其他参数是必需的,如果不存在,守护进程将在运行时报告错误。
注意 参数如ConversationManager、uCore、Thread和Engine在dm_config.json中没有报告,因为它们需要技术支持进行配置(参见第25节)。
DOIP部分
BusNumberEthernet
- 描述 - 它指定以太网总线的数量。
- 类型 - uint_8
- 示例 - 0
DoIpProtocolVersion –
- 描述 - 适用的DoIP协议版本2、3。
- 类型 - uint_8
- 示例 - 0x03
DoIpSaLocal –
- 描述 - 诊断服务器的地址。
- 类型 - uint16_t
- 示例 - 1863
Eid
- 描述 - 实体标识,通常对应于MAC地址。其长度为2字节,范围从00到FF。
- 类型 - 字符串
- 示例 - “525400123420”
EthernetName –
- 描述 - 目标ECU的以太网名称。
- 类型 - 字符串
- 示例 - eth0
Gid
- 描述 - 组标识
- 类型 - 字符串
- 示例 - “000000000000”
GidVinStatusByteUsed
- 描述 - 在车辆公告/识别响应消息中使用GID_VIN_Status_Byte_Used的标志。
- 类型 - bool –
- 示例 - false
OemSpecificRoutingActivationResponseBytesUsed
- 描述 - 它是一个可用于额外VM特定使用的有效载荷。
- 类型 - bool
- 示例 - false
Vin –
- 描述 - 车辆识别号码。
- 类型 - 字符串
- 示例 - “00000000000000000”
Server
AliveCheckResponseTimeout
- 描述 - 如ISO 13400-2所定义,此超时指定DoIP实体在TCP_DATA套接字上写入活动检查请求后等待活动检查响应的最大时间。因此,如果底层TCP堆栈无法传送活动检查请求消息,则计时器将超时。值以毫秒为单位。
- 类型 - uint32_t
- 示例 - 500
GeneralInactivityTime
- 描述 - 如ISO 13400-2所定义,此超时指定TCP_DATA套接字上无活动(未接收或发送数据)的最大时间,在此之后DoIP实体将关闭它。值以毫秒为单位。
- 类型 - uint32_t
- 示例 - 300000
InitialInactivityTime
- 描述 - 如ISO 13400-2所定义,此超时指定建立TCP_DATA套接字后直接无活动的最大时间。在指定时间内没有路由激活,DoIP实体将关闭TCP_DATA套接字。值以毫秒为单位。
- 类型 - uint32_t
- 示例 - 2000
InitialVehicleAnnouncementTime
- 描述 - 如ISO 13400-2所定义,此定时参数指定DoIP实体等待响应车辆识别请求的初始时间,以及DoIP实体在配置有效IP地址后等待传输车辆公告消息的时间。此定时参数的值应在最小值和最大值之间随机确定。值范围从0到500毫秒。
- 类型 - uint32_t
- 示例 - 100
RouteNumberToRouteTarget
- 描述 - 目标和路由的映射。它是由以下组成的结构:
- RouteNumber · 描述 - 这是路由号,硬编码为0。 · 类型 - uint8_t · 示例 - 0
- TargetSa · 描述 - 诊断服务器的地址。 · 类型 - uint16_t · 示例 - 0x747 – TcpBufferSize
- 描述 - DoIP消息的最大缓冲区大小。
- 类型 - uint32_t
- 示例 - 131072
TcpMaxRequestSize
- 描述 - 诊断服务器可以接受的DoIP消息的最大大小。
- 类型 - uint16_t
- 示例 - 1048596
TargetSaToRoutingActivationTarget
描述 - 此参数定义是否使用不同的路由进行激活。由于RTA-VRTE入门套件没有使用网关,以下元素对于测试者来说是硬编码的。
它是由以下组成的结构:
- BusNumber · 描述 - 到达目标的总线号,硬编码为0。 · 类型 - uint8_t · 示例 - 0
- TargetRouting · 描述 - 它对应于TargetSa的地址。 · 类型 - uint16_t · 示例 - 0x747
- TargetSa · 描述 - 它对应于TargetSa的地址。 · 类型 - uint16_t · 示例 - 0x747
TesterSaToRouteNumber
- 描述 - 它定义了测试者的路由。
- 它是由以下组成的结构:
- RouteNumber · 描述 - 路由号,在RTA-VRTE入门套件中硬编码为0。 · 类型 - uint8_t · 示例 - 0
- TesterSa · 描述 - 诊断客户端的地址,即Tester_SA。 · 类型 - uint16_t · 示例 - 0x767
TesterSaToTesterCfg
- 描述 - 此部分用于配置所有诊断测试者。它是由以下组成的结构:
- NumEchoBytesDiagAckNack · 类型 - uint16_t · 示例 - 0
- TesterSa · 描述 - 诊断客户端的地址。 · 类型 - uint16_t · 示例 - 0x767
- Priority · 类型 - uint16_t · 示例 - 1
UdpBufferSize
- 描述 - UDP消息的最大缓冲区大小。
- 类型 - uint32_t
- 示例 - 128
VehicleAnnouncementInterval
- 描述 - 如ISO 13400-2所定义,此定时参数指定在配置了有效IP地址后,DoIP实体发送车辆公告消息之间的时间。此值以毫秒为单位。
- 类型 - uint32_t
- 示例 - 500
VehicleAnnouncementRepetition
- 描述 - 如ISO 13400-2所定义,此参数指定在配置了有效IP地址后,DoIP实体发送的车辆公告消息数量。
- 类型 - uint32_t
- 示例 - 3
15.5.3 构建系统
作为RTA-VRTE入门套件的一个组件,诊断管理的实现依赖于其他功能集群,包括执行管理、通信管理、持久性和日志和跟踪。与任何其他由执行管理启动的进程一样,DiagnosticManager特别与执行管理(ara::exec)进行交互。
诊断管理器的所有依赖项都使用CMake环境通过CMake包dia-diagnostic-manager集成,例如:
find_package(dia-diagnostic-manager REQUIRED)
dia-diagnostic-manager CMake包括RTA-VRTE库rb-diag。
该库作为包内的一个CMake目标提供,并必须链接到您的诊断自适应应用程序作为目标链接库。
例如:
target_link_libraries ( AraDIAG_App PRIVATE dia-diagnostic-manager::rb-diag )
ara::diag是用以下命令生成的:
message("--DIAG API Generation -- ")
execute_process(COMMAND ${VRTE_FS} -b
${CMAKE_CURRENT_SOURCE_DIR} -v -fp **.arxml diagen
-ftl /home/developer/isolar-vrte/ftls/dia-diagnostic-manager/
-o ${CMAKE_CURRENT_SOURCE_DIR}/gen)
以下是FlatCFG文件的生成过程:
message("-- FlatCFG Generation...")
execute_process(${VRTE_FS} -v -b
${CMAKE_CURRENT_SOURCE_DIR} -fp **.arxml flatbuffers
-dsls /home/developer/isolar-vrte/ecucfgdsl -o
${CMAKE_CURRENT_SOURCE_DIR}/gen -flatc ${FLATC})
要生成dm_config.bin二进制文件,只需执行以下命令:
execute_process(COMMAND ${FLATC} -c -b -o
${CMAKE_CURRENT_SOURCE_DIR}/dmconfig
${CMAKE_CURRENT_SOURCE_DIR}/dmconfig/DmConfig.fbs
${CMAKE_CURRENT_SOURCE_DIR}/dmconfig/dm_config.json
其中,dmconfig是一个包含DmConfig.fbs和dm_config.json文件的文件夹,这两个文件都位于/opt/vrte/dia-diagnostic-manager/etc/。
dm_config.json文件必须正确配置目标ECU。
例如,根据以太网目标设备名称设置Ethernet_Name。
在RTA-VRTE示例中,默认使用设备eth0,但在目标设备上部署前应进行验证。
然后,必须将生成的配置文件加载到目标ECU中:
install(FILES
gen/<softwareclustername>/aradiagd__prp_class1_SWCL_flatcfg.bin
DESTINATION bin)
install(FILES
gen/<softwareclustername>/str_rb_dm__prp_class1_SWCL_flatcfg.bin
DESTINATION bin)
install(FILES
gen/<softwareclustername>/log_rb_dm__prp_class1_SWCL_flatcfg.bin
DESTINATION bin)
而其他用于诊断管理的FlatCFG应用配置则通过以下方式加载:
install(FILES
gen/<softwareclustername>/
libaradiag_<AppProcess>__prp_class1_SWCL_flatcfg.bin
DESTINATION etc/ecu-cfg/processes/<AppProcess>)
其中
这些文件将部署到opt/vrte/usr/etc/ecu-cfg/processes/
注意FlatCFG文件dia__prp_class1_SWCL_flatcfg.bin不应部署到目标ECU,因为它不被rb-dm使用。
15.6 AUTOSAR API
RTA-VRTE支持AUTOSAR诊断管理API,该API在ara::diag命名空间中记录在本节中。
诊断管理API在AUTOSAR AP19-03中引入,并通过C++类呈现给自适应应用程序。以前的AUTOSAR版本提供了类似的功能,但使用了ara::com服务接口。
15.6.1 认证
名称 ara::diag::Authentication
实体类型 类
头文件 ara/diag/authentication.h
方法 VerifyCertificateUnidirectional VerifyCertificateBidirectional VerifyOwnership TransmitCertificate Offer StopOffer
描述 此接口类允许一个服务认证的实现应用到应用程序。 类构造函数接受一个参数,该参数引用了清单中诊断认证服务实例的PortPrototype。注意,多个诊断服务通用映射(第15.4.1.2节)可以引用同一个arxml-PortPrototype。它还接受一个可选参数ReentrancyType,该参数指定接口是否可以完全或非重入地调用。此参数的默认值为ReentrancyType KNot。
15.6.1.1 VerifyCertificateUnidirectional
名称 Authentication::VerifyCertificateUnidirectional
实体类型 方法
参数 std::uint8_t CommunicationConfiguration Span std::uint8_t ClientCertificate Span std::uint8_t ClientChallenge const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future <std::tuple<Span <uint8_t>,Span <uint8_t>>>
描述 此函数接受从测试者接收到的证书,验证它,并创建一个挑战和必须返回给测试者的临时公钥。
15.6.1.2 VerifyCertificateBidirectional
名称 Authentication::VerifyCertificateBidirectional
实体类型 方法
参数 std::uint8_t CommunicationConfiguration Span std::uint8_t ClientCertificate Span std::uint8_t ClientChallenge const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future <std::tuple<Span <uint8_t>,Span <uint8_t>,Span<uint8_t>,Span <uint8_t>>>
描述 此函数接受从测试者接收到的证书和挑战,验证证书,并创建一个挑战、临时公钥和所有权证明,这些都必须返回给测试者。该函数还返回将由测试者用来验证所有权证明的服务器证书。
15.6.1.3 VerifyOwnership
名称 Authentication::VerifyOwnership
实体类型 方法
参数 Span std::uint8_t ClientPOWN Span std::uint8_t ClientEphemeralPublicKey const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Span std::uint8_t 描述 此函数接受从测试者接收到的所有权证明,并使用在VerifyCertificateUnidirectional/VerifyCertificateUnidirectional中接收到的证书的公钥验证它,对比在最后一次调用VerifyCertificateUnidirectional/VerifyCertificateUnidirectional时创建的服务器挑战。
15.6.1.4 TransmitCertificate
名称 Authentication::TransmitCertificate
实体类型 方法
参数 Span std::uint8_t CertificateData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Result
描述 此函数接受从测试者接收到的证书,验证它,并在应用程序中采取必要的行动。典型的用例包括更新已经认证的测试者提供的访问权限。
15.6.1.5 Offer
名称 Authentication::Offer
实体类型 方法
参数 无
返回类型 Result
描述 此Offer将使诊断管理器能够将请求消息转发到此处理器。此Offer将使DM能够将请求消息转发到此处理器。
15.6.1.6 StopOffer
名称 Authentication::StopOffer
实体类型 方法
参数 无
返回类型 无
描述 此StopOffer将禁止从诊断管理器转发请求消息。
15.6.2 客户端认证处理
名称 ara::diag::ClientAuthenticationHandle
实体类型 类
头文件 ara/diag/client_authentication_handle.h
方法 追加 设置 撤销 刷新
描述 应用程序设置AuthenticationState时返回给应用程序的ClientAuthenticationHandle的定义。
15.6.2.1 追加
名称 ClientAuthenticationHandle::Append
实体类型 方法
参数 DiagnosticServiceDynamicAccessList DynamicAccessList
返回类型 Result
描述 此函数由应用程序使用,以将DynamicAccessList追加到已存在的Diagnostic Conversation的DynamicAccessList中。
15.6.2.2 设置
名称 ClientAuthenticationHandle::Set
实体类型 方法
参数 DiagnosticServiceDynamicAccessList DynamicAccessList
返回类型 Result
描述 此函数由应用程序使用,以设置/替换Diagnostic Conversation的DynamicAccessList。
15.6.2.3 撤销
名称 ClientAuthenticationHandle::Revoke
实体类型 方法
参数 无
返回类型 Result
描述 此函数由应用程序使用,以取消客户端的认证,并清除DynamicAccessList和任何被覆盖的默认值。
15.6.2.4 刷新
名称 ClientAuthenticationHandle::Refresh
实体类型 方法
参数 无
返回类型 Result
描述 此函数由应用程序使用,以刷新由Authenticate或OverrideDefaultRolesserve启动的计时器。如果两种方法都被先前调用,那么两个计时器都会被刷新。
15.6.3 DiagnosticServiceDynamicAccessList
名称 ara::diag::DiagnosticServiceDynamicAccessList
实体类型 类
头文件 ara/diag/diagnostic_service_dynamic_access_list.h
方法 预留 MakeServiceBuilder MakeServiceBuilder
描述 DiagnosticServiceDynamicAccessList类的定义,该类由应用程序用于构建DynamicAccessList。
15.6.3.1 预留
名称 DiagnosticServiceDynamicAccessList::Reserve
实体类型 方法
参数 std::size_t numberOfServiceHeads std::size_t maxServiceHeadSize
返回类型 void
描述 为所有服务头预分配内存以适应DynamicAccessList。预分配可以只是估计,并可能计算所需内存的最坏情况,而不是数据numberOfServiceHeads所需的确切内存大小。
15.6.3.2 MakeServiceBuildersid
名称 DiagnosticServiceDynamicAccessList::MakeServiceBuilder
实体类型 方法
参数 DynamicAccessListDiagServiceBuilder::Byte sid
返回类型 DynamicAccessListDiagServiceBuilder
描述 此函数由应用程序使用,以仅使用SID构造DynamicAccessList的模式。
15.6.3.3 MakeServiceBuilder
名称 DiagnosticServiceDynamicAccessList::MakeServiceBuilders
实体类型 方法
参数 DynamicAccessListDiagServiceBuilder::ByteString serviceHead
返回类型 DynamicAccessListDiagServiceBuilder
描述 此函数由应用程序使用,以使用字节串构造DynamicAccessList的模式。
15.6.4 客户端认证
名称 ara::diag::ClientAuthentication
实体类型 类
头文件 ara/diag/client_authentication.h
方法 OverrideDefaultRolesserve Authenticate GetState SetNotifier
描述 应用程序通知诊断服务器实例当前已认证的认证状态和用户角色的接口。 注意 不支持。
15.6.4.1 OverrideDefaultRoles
名称 ClientAuthentication::OverrideDefaultRoles
实体类型 方法
参数 Vector
返回类型 Result
描述 此方法由应用程序使用,临时更改诊断服务器实例的默认 AuthenticationRole。在参数timeout定义的时间段内,现在可以访问传递的defaultRoles中允许的诊断服务。
注意 不支持。
15.6.4.2 Authenticate
名称 ClientAuthentication::Authenticate
实体类型 方法
参数 Vector
返回类型 Result
描述 此函数由应用程序使用,向诊断服务器实例报告已认证状态。认证可以通过诊断服务器实例的认证接口完成,也可以通过应用程序中的其他方式完成。 注意 不支持。
15.6.4.3 GetState
名称 ClientAuthentication::GetState
实体类型 方法
参数 无
返回类型 Result
描述 此函数由应用程序使用,查询诊断客户端的当前认证状态。
注意 不支持。
15.6.4.4 SetNotifier
名称 ClientAuthentication::SetNotifier
实体类型 方法
参数 std::function<void (DiagnosticAuthState )> notifier
返回类型 Result
描述 此函数由应用程序使用,设置一个通知器函数,当认证状态发生变化时,诊断服务器实例将调用该函数。例如,当由于S3超时而发生kDeAuthenticated状态转换时,可以使用此函数通知应用程序。
注意 不支持。
15.6.5 ExternalAuthentication
名称 ara::diag::ExternalAuthentication
实体类型 类
头文件 ara/diag/external_authentication.h
方法 Get Get GetAll
描述 ExternalAuthentication类的定义,应用程序使用该类接收与特定客户端相关的ClientAuthentication类的实例。
类构造函数接受一个InstanceSpecifier参数,该参数引用了清单中诊断认证服务实例的PortPrototype。请注意,多个诊断服务通用映射(第15.4.1.2节)可以引用同一个arxml-PortPrototype。它还接受一个可选参数ReentrancyType,该参数指定接口是否可完全调用或非重入。此参数的默认值为ReentrancyType KNot。 注意 不支持。
15.6.5.1 Get
名称 ExternalAuthentication::Get
实体类型 方法
参数 MetaInfo & metaInfo
返回类型 Result
描述 此函数由应用程序使用,获取处理与MetaInfo对应的客户端的认证状态的ClientAuthentication实例。
注意 不支持。
15.6.5.2 Get
名称 ExternalAuthentication::Get
实体类型 方法
参数 Address sourceAddress
返回类型 Result
描述 此函数由应用程序使用,获取处理与Address对应的客户端的认证状态的ClientAuthentication实例。
注意 不支持。
15.6.5.3 GetAll
名称 ExternalAuthentication::GetAll
实体类型 方法
参数 无
返回类型 Vector
描述 此函数由应用程序使用,获取当前由诊断管理器处理的所有ClientAuthentication实例。
注意 不支持。
15.6.6 DynamicAccessListDiagServiceBuilder
名称 ara::diag::DynamicAccessListDiagServiceBuilder
实体类型 类
头文件 ara/diag/dynamic_access_list_diag_service_builder.h
描述 DynamicAccessListDiagServiceBuilder类的定义,应用程序使用此类构建DynamicAccessList。
注意 不支持。
15.6.7 ByteRange
名称 ara::diag::DynamicAccessListDiagServiceBuilder
实体类型 类
头文件 ara/diag/dynamic_access_list_diag_service_builder.h
描述 表示单个字节值闭合范围。DynamicAccessList中单个诊断服务模式元素的类型别名。
注意 不支持。
15.6.8 GenericDataIdentifier
名称 ara::diag::GenericDataIdentifier
实体类型 类
头文件 ara/diag/generic_data_identifier.h
方法 Offer StopOffer Read Write
描述 此接口类允许通过创建一个专门化通用处理的子类来实现诊断数据标识符处理器。
类构造函数接受一个InstanceSpecifier参数,该参数引用了一个由PortInterface分类的PortPrototype,PortInterface是DiagnosticDataIdentifierGenericInterface(第4.2.4.8节)。
请注意,多个诊断服务通用映射(第15.4.1.2节)可以引用同一个PortPrototype。它还接受一个可选参数DataIdentifierReentrancyType,该参数指定接口是否可完全调用或非重入读取、写入或两者。
此参数的默认值为{ ReentrancyType kNot, ReentrancyType kNot, ReentrancyType kNot}
示例 #include <ara/diag/generic_data_identifier.h>
class DID1 : public ara::diag::GenericDataIdentifier …
15.6.8.1 Offer
名称 GenericDataIdentifier::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发到处理器。 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
示例 ara::core::Result
15.6.8.2 StopOffer
名称 GenericDataIdentifier::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发到处理器。
示例 gdi.StopOffer()
15.6.8.3 Read
名称 GenericDataIdentifier::Read
实体类型 纯虚方法
参数 std::uint16_t dataIdentifier const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 诊断管理响应UDS ReadDataByIdentifier(0x22)请求此诊断数据标识符时调用。
cancellationHandler参数用于指示诊断对话是否被取消。metainfo参数为请求提供额外的上下文和MetaInfo。
返回值是一个Future,如果请求无法处理或者处理器在数据可用时将在其中放置响应数据,则Future将包含一个负响应代码(NRC)。
注意 此方法是一个纯虚方法。子类必须提供其实现。
15.6.8.4 写入
名称 GenericDataIdentifier::Write
实体类型 纯虚方法
参数 std::uint16_t dataIdentifier 跨度 <uint8_t> requestData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 诊断管理在对此诊断数据标识符发出WriteDataByIdentifier (0x2E) 请求时调用。要写入的数据在参数requestData中传递。
cancellationHandler参数用于指示是否取消了诊断对话。metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将为空或包含一个负响应代码(NRC),如果请求无法处理。 注释 此方法是一个纯虚方法。必须在子类中提供其实现。
15.6.9 DTCInformation
名称 ara::diag::DTCInformation
实体类型 类
头文件 ara/diag/dtc_information.h
方法 GetCurrentStatus SetDTCStatusChangedNotifier SetSnapshotRecordUpdatedNotifier GetNumberOfStoredEntries SetNumberOfStoredEntriesNotifier Clear GetControlDTCStatus SetControlDtcStatusNotifier EnableControlDtc GetEventMemoryOverflow SetEventMemoryOverflowNotifier
描述 ara::diag接口,用于对配置的DiagnosticMemoryDestination上的DTC信息进行操作。
类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticDTCInformationInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。
15.6.9.1 GetCurrentStatus
名称 DTCInformation::GetCurrentStatus
实体类型 方法
参数 std::uint32_t dtc
返回类型 Result
描述 返回给定DTC标识符的当前UDS DTC状态字节或错误(例如,DTC不可用)。
15.6.9.2 SetDTCStatusChangedNotifier
名称 DTCInformation::SetDTCStatusChangedNotifier
实体类型 方法
参数 std::function<void(std::uint32_t dtc, UdsDtcStatusByteType udsStatusByteOld, UdsDtcStatusByteType udsStatusByteNew)> notifier)
返回类型 Result
描述 注册notifier作为一个函数,当UDS DTC状态改变时调用。notifier接受三个参数;DTC和旧的和新的UdsDtcStatusByteType。
15.6.9.3 SetSnapshotRecordUpdatedNotifier
名称 DTCInformation::SetSnapshotRecordUpdatedNotifier
实体类型 方法
参数 std::function<void(SnapshotRecordUpdatedType )> notifier
返回类型 Result
描述 注册notifier作为一个函数,当快照记录改变时调用。
注释 不支持。
15.6.9.4 GetNumberOfStoredEntries
名称 DTCInformation::GetNumberOfStoredEntries
实体类型 方法
参数 无
返回类型 Resultstd::uint32_t
描述 返回当前存储的故障记忆条目的数量。
注释 不支持。
15.6.9.5 SetNumberOfStoredEntriesNotifier
名称 DTCInformation::SetNumberOfStoredEntriesNotifier
实体类型 方法
参数 std::function<void(std::uint32_t)> notifier
返回类型 Result
描述 注册notifier作为一个函数,当当前存储的故障记忆条目数量改变时调用。 注释 不支持。
15.6.9.6 Clear
名称 DTCInformation::Clear
实体类型 方法
参数 std::uint32_t DTCGroup
返回类型 Result
描述 清除一个DTC或一组DTC。
注释 不支持。
15.6.9.7 GetControlDTCStatus
名称 DTCInformation::GetControlDTCStatus
实体类型 方法
参数 无
返回类型 Result
描述 返回ControlDTCStatus的当前状态。
注释 不支持。
15.6.9.8 SetControlDtcStatusNotifier
名称 DTCInformation::SetControlDtcStatusNotifier
实体类型 方法
参数 std::function<void(ControlDtcStatusType )> notifier
返回类型 Result
描述 注册notifier作为一个函数,当控制DTC设置改变时调用。
注释 不支持。
15.6.9.9 EnableControlDtc
名称 DTCInformation::EnableControlDtc
实体类型 方法
参数 无
返回类型 Result
描述 强制恢复ControlDTCStatus设置为启用,以防监视器有一些条件或状态要求这样做。
注释 不支持。
15.6.9.10 GetEventMemoryOverflow
名称 DTCInformation::GetEventMemoryOverflow
实体类型 方法
参数 无
返回类型 Result
描述 返回当前事件内存溢出状态。
注释 不支持。
15.6.9.11 SetEventMemoryOverflowNotifier
名称 DTCInformation::SetEventMemoryOverflowNotifier
实体类型 方法
参数 std::function<void(bool )> notifier
返回类型 Result
描述 注册notifier作为一个函数,当当前事件内存溢出状态改变时调用。
注释 不支持。
15.6.10 Conversation
名称 ara::diag::Conversation
实体类型 类
头文件 ara/diag/conversation.h
方法 GetConversation GetAllConversations GetCurrentActiveConversations GetActivityStatus SetActivityNotifier GetConversationIdentifier GetDiagnosticSession SetDiagnosticSessionNotifier GetDiagnosticSessionShortName GetDiagnosticSecurityLevel SetSecurityLevelNotifier GetDiagnosticSecurityLevelShortName ResetToDefaultSession
类型 ConversationIdentifierType
描述 诊断对话。
注释 不能直接构造一个Conversation对象,而只能使用MetaInfo对象和GetConversation静态函数或GetCurrentActiveConversations/ GetAllConversations静态函数来检索。
15.6.10.1 GetConversation
名称 Conversation::GetConversation
实体类型 静态方法
参数 MetaInfo & metainfo
返回类型 Result <std::reference_wrapper
描述 根据给定的MetaInfo获取一个对话。返回值要么是错误,要么是对话的引用。
注释 此方法是静态的,因此可以在没有特定对话实例的情况下调用。
15.6.10.2 GetAllConversations
名称 Conversation::GetAllConversations
实体类型 静态方法
参数 无
返回类型 Vector <std::reference_wrapper
描述 获取所有可能的对话。
注释 此方法是静态的,因此可以在没有特定对话实例的情况下调用。
15.6.10.3 GetCurrentActiveConversations
名称 Conversation::GetCurrentActiveConversations
实体类型 静态方法
参数 无
返回类型 Vector <std::reference_wrapper
描述 获取所有当前活动的对话。
注释 此方法是静态的,因此可以在没有特定对话实例的情况下调用。
15.6.10.4 GetActivityStatus
名称 Conversation::GetActivityStatus
实体类型 方法
参数 无
返回类型 Result
描述 获取活动对话的状态。
15.6.10.5 SetActivityNotifier
名称 Conversation::SetActivityNotifier
实体类型 方法
参数 std::function<void(ActivityStatusType )> notifier
返回类型 Result
描述 注册notifier作为一个函数,如果活动发生变化,则调用该函数。
15.6.10.6 GetConversationIdentifier
名称 Conversation::GetConversationIdentifier
实体类型 方法
参数 无
返回类型 Result
描述 获取活动对话的当前标识属性。
15.6.10.7 GetDiagnosticSession
名称 Conversation::GetDiagnosticSession
实体类型 方法
参数 无
返回类型 Result
描述 获取活动对话的当前活动诊断会话。
15.6.10.8 SetDiagnosticSessionNotifier
名称 Conversation::SetDiagnosticSessionNotifier
实体类型 方法
参数 std::function<void(SessionControlType )> notifier
返回类型 Result
描述 注册notifier作为一个函数,如果会话发生变化,则调用该函数。
15.6.10.9 GetDiagnosticSessionShortName
名称 Conversation::GetDiagnosticSessionShortName
实体类型 方法
参数 SessionControlType session
返回类型 Result
描述 将给定的诊断会话转换为ShortName。
15.6.10.10 GetDiagnosticSecurityLevel
名称 Conversation::GetDiagnosticSecurityLevel
实体类型 方法
参数 无
返回类型 Result
描述 获取活动对话的当前活动诊断SecurityLevel。
15.6.10.11 SetSecurityLevelNotifier
名称 Conversation::SetSecurityLevelNotifier
实体类型 方法
参数 std::function<void(SecurityLevelType )> notifier
返回类型 Result
描述 注册notifier作为一个函数,如果安全级别发生变化,则调用该函数。
15.6.10.12 GetDiagnosticSecurityLevelShortName
名称 Conversation::GetDiagnosticSecurityLevelShortName
实体类型 方法
参数 SecurityLevelType level
返回类型 Result
描述 将给定的诊断SecurityLevel转换为ShortName。
15.6.10.13 ResetToDefaultSession
名称 Conversation::ResetToDefaultSession
实体类型 方法
参数 无
返回类型 Result
描述 将当前会话重置为默认。
注释 不支持
15.6.11 EcuResetRequest
名称 ara::diag::EcuResetRequest
实体类型 类
头文件 ara/diag/ecu_reset_request.h
方法 EnableRapidShutdown RequestReset ExecuteReset Offer StopOffer
描述 类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticEcuResetInterface分类的PortInterface的PortPrototype。
15.6.11.1 EnableRapidShutdown
名称 EcuResetRequest::EnableRapidShutdown
实体类型 方法
参数 bool enable const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
cancellationHandler参数用于指示是否取消了诊断对话。 metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将包含一个负响应代码(NRC),如果请求无法处理或者是处理器在数据可用时将响应数据放在其中。
15.6.11.2 RequestReset
名称 EcuResetRequest::RequestReset
实体类型 方法
参数 ResetRequestType resetType Optionalstd::uint8_t id const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 对任何EcuRest子功能(除EnableRapidShutdown外)进行调用。 State Management需要仔细评估是否需要重新启动部分或整个机器。一旦接受了重置请求,StateManagement必须依赖这个决定来触发ExecuteReset。
15.6.11.3 ExecuteReset
名称 EcuResetRequest::ExecuteReset
实体类型 方法
参数 const MetaInfo & metaInfo
返回类型 void
描述 State Management必须执行请求的重置。在诊断管理将响应消息发送给测试者后调用。
15.6.11.4 Offer
名称 EcuResetRequest::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发给处理器。 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
15.6.11.5 StopOffer
名称 EcuResetRequest::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发给处理器。
15.6.12 Event
名称 ara::diag::Event
实体类型 类
头文件 ara/diag/event.h
方法 GetEventStatus SetEventStatusChangedNotifier GetLatchedWIRStatus SetLatchedWIRStatus GetDTCNumber GetDebouncingStatus GetTestComplete GetFaultDetectionCounter
描述 ara::diag接口,用于诊断事件。 类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticEventInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。
15.6.12.1 GetEventStatus
名称 Event::GetEventStatus
实体类型 方法
参数 无
返回类型 Result
描述 返回当前诊断事件状态。
15.6.12.2 SetEventStatusChangedNotifier
名称 Event::SetEventStatusChangedNotifier
实体类型 方法
参数 std::function<void(EventStatusByte )> notifier
返回类型 Result
描述 注册notifier作为一个函数,当诊断事件改变时调用。
15.6.12.3 GetLatchedWIRStatus
名称 Event::GetLatchedWIRStatus
实体类型 方法
参数 无
返回类型 Result
描述 返回事件的当前警告指示器状态。
注释 不支持。
15.6.12.4 SetLatchedWIRStatus
名称 Event::SetLatchedWIRStatus
实体类型 方法
参数 bool status
返回类型 Result
描述 设置由自适应应用程序确定的降功率模式状态。 status参数设置降功率模式状态,false表示“不活动”,true表示“活动”。
注释 不支持。
15.6.12.5 GetDTCNumber
名称 Event::GetDTCNumber
实体类型 方法
参数 DTCFormatType dtcFormat
返回类型 Resultstd::uint32_t
描述 返回与此诊断事件实例相关的DTC标识符。
15.6.12.6 GetDebouncingStatus
名称 Event::GetDebouncingStatus
实体类型 方法
参数 无
返回类型 Result
描述 获取当前诊断事件去抖动状态。
15.6.12.7 GetTestComplete
名称 Event::GetTestComplete
实体类型 方法
参数 无
返回类型 Result
描述 获取诊断事件是否已成熟为“测试完成”。 如果故障检测计数器(FDC)为-128或127,则返回true,否则返回false。
15.6.12.8 GetFaultDetectionCounter
名称 Event::GetFaultDetectionCounter
实体类型 方法
参数 无
返回类型 Resultstd::int8_t
描述 返回此诊断事件的故障检测计数器(FDC)的当前值。
15.6.13 GenericUDSService
名称 ara::diag::GenericUDSService
实体类型 类
头文件 ara/diag/generic_uds_service.h
方法 Offer StopOffer HandleMessage
类型 OperationOutput
描述 此接口类提供了处理UDS消息的通用实现,并允许创建一个专门处理通用处理的子类。
类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticGenericUdsInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。注意,多个诊断服务通用映射(Section 15.4.1.2)可以引用同一个arxmlPortPrototype。它还接受一个可选参数ReentrancyType,该参数指定接口是否可以完全或非重入地调用。此参数的默认值为ReentrancyType KNot。
示例 #include <ara/diag/generic_uds_service.h> class UDS1 : public ara::diag::GenericUDSService …
15.6.13.1 Offer
名称 GenericUDSService::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发给处理器。 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
示例 ara::core::Result
15.6.13.2 StopOffer
名称 GenericUDSService::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发给处理器。
示例 gus.StopOffer()
15.6.13.3 HandleMessage
名称 GenericUDSService::HandleMessage
实体类型 纯虚方法
参数 std::uint8_t sid Span <uint8_t> requestData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 诊断管理在响应UDS请求时调用,sid参数包含请求的服务标识符,关联数据在参数requestData中传递。
cancellationHandler参数用于指示是否取消了诊断对话。metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将包含一个负响应代码(NRC),如果请求无法处理或者是处理器在数据可用时将响应数据放在其中。
注释 此方法是一个纯虚方法。必须在子类中提供其实现。
15.6.14 Monitor
名称 ara::diag::Monitor
实体类型 类
头文件 ara/diag/monitor.h
方法 ReportMonitorAction Offer StopOffer
类型 CounterBased TimeBased
描述 ara::diag接口,用于诊断监控。该类为不同的用例提供了多个构造函数,每个构造函数都接受三个参数。
类构造函数的第一个参数,specifier,是一个InstanceSpecifier,它引用了一个由DiagnosticMonitorInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。
第二个参数,initMonitor,注册了一个initMonitor回调,供诊断管理使用,例如重新初始化监控。回调函数必须是std::function<void(InitMonitorReason )>类型。
第三个参数的类型取决于事件去抖动是在哪里处理的:
内部 - 监控应用程序自己处理事件去抖动。此参数为诊断管理提供了一个回调,以检索故障检测计数器(FDC)。回调函数是std::functionstd::uint8_t(void)类型。
由诊断管理 - 此参数可以是CounterBased或TimeBased参数,表示需要由诊断管理执行的事件去抖动类型。
注意 只支持内部诊断管理去抖动。
**15.6.14.1 ReportMonitorAction
名称 Monitor::ReportMonitorAction **
实体类型 方法
参数 MonitorAction action
返回类型 Result
描述 报告监控状态。
示例 auto res = ma.ReportMonitorAction( kPassed );
15.6.14.2 Offer
名称 Monitor::Offer
实体类型 方法
参数 无
返回类型 Result
描述 此Offer将启用诊断管理将请求消息转发给此处理器。
15.6.14.3 StopOffer
名称 Monitor::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 此StopOffer将禁止诊断管理将请求消息转发。
15.6.15 OperationCycle
名称 ara::diag::OperationCycle
实体类型 类
头文件 ara/diag/operation_cycle.h
方法 SetNotifier RestartOperationCycle
描述 ara::diag接口,用于诊断操作周期。
类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticOperationCycleInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。
15.6.15.1 SetNotifier
名称 OperationCycle::SetNotifier
实体类型 方法
参数 std::function<void()> notifier
返回类型 Result
描述 注册notifier作为一个函数,当操作周期改变时调用。
15.6.15.2 RestartOperationCycle
名称 OperationCycle::RestartOperationCycle
实体类型 方法
参数 无
返回类型 Result
描述 触发重启OperationCycle。
15.6.16 GenericRoutine
名称 ara::diag::GenericRoutine
实体类型 类
头文件 ara/diag/generic_routine.h
方法 Offer StopOffer Start Stop RequestResults
类型 OperationOutput
描述 此接口类提供了处理诊断例程的通用实现,并允许创建一个专门处理通用处理的子类。
类构造函数接受一个InstanceSpecifier作为参数,该InstanceSpecifier引用了一个由DiagnosticRoutineGenericInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。注意,多个诊断服务通用映射(Section 15.4.1.2)可以引用同一个PortPrototype。它还接受一个可选参数ReentrancyType,该参数指定接口是否可以完全或非重入地调用。此参数的默认值为ReentrancyType KNot。
示例 #include <ara/diag/generic_routine.h> class DR1 : public ara::diag::GenericRoutine …
15.6.16.1 Offer
名称 GenericRoutine::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发给此处理器。 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
示例 ara::core::Result
15.6.16.2 StopOffer
名称 GenericRoutine::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发给处理器。
示例 gr.StopOffer()
15.6.16.3 Start
名称 GenericRoutine::Start
实体类型 纯虚方法
参数 std::uint16_t routineId Span <uint8_t> requestData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 诊断管理在响应UDS服务例程控制(0x31)与子功能开始请求此诊断例程标识符(RID)时调用。 routineId参数包含请求的诊断例程标识符,关联数据在参数requestData中传递。
cancellationHandler参数用于指示是否取消了诊断对话。metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将包含一个负响应代码(NRC),如果请求无法处理或者是处理器在数据可用时将响应数据放在其中。
注释 此方法是一个纯虚方法。必须在子类中提供其实现。
15.6.16.4 Stop
名称 GenericRoutine::Stop
实体类型 纯虚方法
参数 std::uint16_t routineId Span <uint8_t> requestData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 对此诊断例程标识符发出UDS服务例程控制(0x31)与子功能停止请求时调用。 routineId参数包含请求的诊断例程标识符,关联数据在参数requestData中传递。
cancellationHandler参数用于指示是否取消了诊断对话。metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将包含一个负响应代码(NRC),如果请求无法处理或者是处理器在数据可用时将响应数据放在其中。
注释 此方法是一个纯虚方法。必须在子类中提供其实现。
15.6.16.5 RequestResults
名称 GenericRoutine::RequestResults
实体类型 纯虚方法
参数 std::uint16_t routineId Span <uint8_t> requestData const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
cancellationHandler参数用于指示是否取消了诊断对话。metainfo参数为请求提供了额外的上下文和MetaInfo。
返回值是一个Future,它将包含一个负响应代码(NRC),如果请求无法处理或者是处理器在数据可用时将响应数据放在其中。 注释 此方法是一个纯虚方法。必须在子类中提供其实现。
15.6.17 SecurityAccess
名称 ara::diag::SecurityAccess
实体类型 类
头文件 ara/diag/security_access.h
方法 GetSeed CompareKey Offer StopOffer
描述 ara::diag接口,用于诊断安全访问。
类构造函数接受参数,specifier,它是一个InstanceSpecifier,引用了一个由DiagnosticSecurityLevelInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。类还接受一个可选参数reentrancyType,它是一个ReentrancyType,并指定接口是否可以完全或非重入地调用。
15.6.17.1 GetSeed
名称 SecurityAccess::GetSeed
实体类型 方法
参数 Span std::uint8_t securityAccessDataRecord const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 对每个请求消息进行调用。提供的种子作为Future返回。
15.6.17.2 CompareKey
名称 SecurityAccess::CompareKey
实体类型 方法
参数 Span std::uint8_t key const MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 在诊断请求完成后调用,以提供结果通知。密钥比较作为Future返回。
15.6.17.3 Offer
名称 SecurityAccess::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发给此处理器。 如果诊断管理无法启动转发,Result返回值将包含一个错误代码,指示失败的原因。
15.6.17.4 StopOffer
名称 SecurityAccess::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发给处理器。
15.6.18 ServiceValidation
名称 ara::diag::ServiceValidation
实体类型 类
头文件 ara/diag/service_validation.h
方法 Validate Confirmation Offer StopOffer
描述 ara::diag接口,用于诊断服务验证。
类构造函数接受一个参数,specifier,这是一个InstanceSpecifier,它引用了一个由DiagnosticServiceValidationInterface (Section 4.2.4.8)分类的PortInterface的PortPrototype。
15.6.18.1 Validate
名称 ServiceValidation::Validate
实体类型 方法
参数 Span std::uint8_t requestData const MetaInfo & metaInfo
返回类型 Future
描述 对任何请求消息进行调用。
15.6.18.2 Confirmation
名称 ServiceValidation::Confirmation
实体类型 方法
参数 ConfirmationStatusType status const MetaInfo & metaInfo
返回类型 Future
描述 诊断请求结果的通知。
15.6.18.3 Offer
名称 ServiceValidation::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发给此处理器。
15.6.18.4 StopOffer
名称 ServiceValidation::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发给处理器。
15.6.19 条件
名称 ara::diag::Condition
实体类型 类
头文件 ara/diag/condition.h
方法 GetCondition SetCondition
描述 支持在车辆处于某种状态(例如,不移动)时执行诊断。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由DiagnosticConditionInterface(第4.2.4.8节)分类的PortPrototype。
15.6.19.1 GetCondition
名称 Condition::GetCondition
实体类型 方法
参数 无
返回类型 Result
描述 获取当前条件。
注释 支持
15.6.19.2 SetCondition
名称 Condition::SetCondition
实体类型 方法
参数 ConditionType condition
返回类型 Result
描述 设置条件。
注释 支持
15.6.20 DoIPGroupIdentification
名称 ara::diag::DoIPGroupIdentification
实体类型 类
头文件 ara/diag/doip_group_identification.h
方法 GetGidStatus Offer StopOffer
描述 DoIPGroupIdentification接口。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由DoIPGroupIdentification分类的PortPrototype。它还接受一个可选参数DataIdentifierReentrancyType。
注意 不支持。
15.6.20.1 GetGidStatus
名称 DoIPGroupIdentification::GetGidStatus
实体类型 方法
参数 无
返回类型 Future
描述 调用以获取DoIP协议的当前GID状态。
注意 不支持。
15.6.20.2 Offer
名称 DoIPGroupIdentification::Offer
实体类型 方法
参数 无
返回类型 Result
描述 Offer将使诊断管理能够将请求消息转发到此处理程序。
注意 不支持。
**15.6.20.3 StopOffer
名称 DoIPGroupIdentification::StopOffer **
实体类型 方法
参数 无
返回类型 void
描述 StopOffer将禁止从诊断管理转发请求消息。
注意 不支持。
15.6.21 DoIPActivationLine
名称 ara::diag::DoIPActivationLine
实体类型 类别
头文件 ara/diag/doip_activationline.h
方法 GetNetworkInterfaceIdUpdateActivationLineStateGetActivationLineStateOfferStopOffer描述 DoIPActivationLine接口。要使用此接口,诊断管理必须有一个R-PORT。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由DoIPActivationLine分类的PortPrototype。
注意 不支持。
15.6.21.1 GetNetworkInterfaceId
名称 DoIPActivationLine::GetNetworkInterfaceId
实体类型 方法
参数 无
返回类型 Future std::uint8_t
描述 调用以获取DoIPActivationLine实例负责的网络接口Id。
注意 不支持。
15.6.21.2 UpdateActivationLineState
名称 DoIPActivationLine::UpdateActivationLineState
实体类型 方法
参数 bool
返回类型 None
描述 调用以更新当前激活线状态。
注意 不支持。
15.6.21.3 GetActivationLineState
名称 DoIPActivationLine::GetActivationLineState
实体类型 方法
参数 无
返回类型 Future
描述 调用以获取当前激活线状态。
注意 不支持。
15.6.21.4 Offer
名称 DoIPActivationLine::Offer
实体类型 方法
参数 无
返回类型 Result
描述 Offer将使诊断管理能够监听给定接口的激活线状态更改。
注意 不支持。
15.6.21.5 StopOffer
名称 DoIPActivationLine::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 StopOffer将禁止向诊断管理提供激活线状态。
注意 不支持。
15.6.22 指示器
名称 ara::diag::Indicator
实体类型 类
头文件 ara/diag/indicator.h
方法 GetIndicator IndSetNotifier
描述 指示器接口。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由Indicator(第15.6.22节)分类的PortPrototype。
注意 不支持。
15.6.22.1 GetIndicator
名称 Indicator::GetIndicator
实体类型 方法
参数 无
返回类型 Result
描述 获取当前指示器。
注意 不支持。
15.6.22.2 SetNotifier
名称 Indicator::SetNotifier
实体类型 方法
参数 std::function<void(IndicatorType )> notifier
返回类型 Result
描述 注册一个通知函数,如果指示器更新,则调用该函数。
注意 不支持。
15.6.23 DoIPPowerMode
名称 ara::diag::DoIPPowerMode
实体类型 类
头文件 ara/diag/doip_power_mode.h
方法 GetDoIPPowerMode Offer StopOffer
描述 DoIPPowerMode接口。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由DoIPPowerMode分类的PortPrototype。它还接受一个可选参数DataIdentifier- ReentrancyType。
注意 不支持。
15.6.23.1 GetDoIPPowerMode
名称 DoIPPowerMode::GetDoIPPowerMode
实体类型 方法
参数 无
返回类型 Future
描述 调用以获取DoIP协议的当前电源模式。
注意 不支持。
15.6.23.2 Offer
名称 DoIPPowerMode::Offer
实体类型 方法
参数 无
返回类型 Result
描述 Offer将使诊断管理能够将请求消息转发到此处理程序。
注意 不支持。
15.6.23.3 StopOffer
名称 DoIPPowerMode::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 StopOffer将禁止从诊断管理转发请求消息。
注意 不支持。
15.6.24 CommunicationControl
名称 ara::diag::CommunicationControl
实体类型 类别
头文件 ara/diag/communication_control.h
方法 CommCtrlRequestOfferStopOffer
描述 CommunicationControl接口。
类构造函数接受一个参数,该参数是一个InstanceSpecifier,它引用了由CommunicationControl(第15.6.24节)分类的PortPrototype。它还接受一个可选参数DataIdentifierReentrancyType。
注意 不支持。
15.6.24.1 CommCtrlRequest
名称 CommunicationControl::CommCtrlRequest
实体类型 方法
参数 ComCtrlRequestParamsType controlTypeMetaInfo & metaInfoCancellationHandler cancellationHandler
返回类型 Result
描述 调用Communication Control 0x28与任何子功能作为子功能值是参数列表的一部分。通常认为此接口的提供者是状态管理的一部分。
注释 不支持。
15.6.24.2 Offer
名称 CommunicationControl::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发到处理程序。如果诊断管理无法启动转发,则Result返回值将包含一个错误代码,指示失败的原因。
注释 不支持。
15.6.24.3 StopOffer
名称 CommunicationControl::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发到处理程序。
注释 不支持。
15.6.25 下载服务
名称 ara::diag::DownloadService
实体类型 类
头文件 ara/diag/download.h
方法 RequestDownload DownloadData RequestDownloadExit Offer StopOffer
描述 ara::diag接口用于诊断下载。
类构造函数接受一个参数,specifier,它是一个InstanceSpecifier,引用了由DiagnosticDownloadInterface(第4.2.4.8节)分类的PortPrototype。
15.6.25.1 RequestDownload
名称 DownloadService::RequestDownload
实体类型 纯虚方法
参数 std::uint8_t dataFormatIdentifier std::uint8_t addressAndLengthFormatIdentifier Span std::uint8_t memoryAddressAndSize MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 由诊断管理调用RequestDownload服务。 dataFormatIdentifier参数取自RequestDownload UDS请求。这个一字节参数在高半字节中编码压缩方法(0x00表示无压缩),在低半字节中编码加密方法(0x00表示无加密)。除0x00之外的值都是项目特定的。
addressAndLengthFormatIdentifier参数取自RequestDownload UDS请求。高半字节包含内存大小参数的字节数,低半字节包含内存地址参数的字节数。
memoryAddressAndSize参数直接取自RequestDownload UDS请求。Span中的字节数由addressAndLengthFormatId参数的高和低半字节确定。如果存在,内存地址和内存大小字节定义了要下载的服务器内存的起始地址和大小。
15.6.25.2 DownloadData
名称 DownloadService::DownloadData
实体类型 纯虚方法
参数 Span std::uint8_t transferRequestParameterRecord MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 在之前的RequestDownload之后,由诊断管理调用数据传输以支持UDS服务TransferData(0x36)。
注释 不支持
15.6.25.3 请求下载退出
名称 DownloadService::RequestDownloadExit
实体类型 纯虚方法
参数 Span std::uint8_t transferRequestParameterRecord MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 由诊断管理响应UDS RequestTransferExit (0x37) 请求时调用。
注意 不支持
15.6.25.4 提供
名称 DownloadService::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发到处理程序。 如果诊断管理无法启动转发,结果返回值将包含一个错误代码,指示失败的原因。
注意 不支持
15.6.25.5 停止提供
名称 DownloadService::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发到处理程序。
注意 不支持
15.6.26 上传服务
名称 ara::diag::UploadService
实体类型 类别
头文件 ara/diag/upload.h
方法 RequestUpload UploadData RequestUploadExit Offer StopOffer
类型 OperationOutput
描述 ara::diag 用于诊断上传的接口。
类构造函数接受一个参数,specifier,它是一个InstanceSpecifier,引用了一个PortPrototype,由DiagnosticUploadInterface (Section 4.2.4.8) 的Port-Interface分类。它还接受一个可选参数reentrancyType,它是一个ReentrancyType,并指定接口是否可以完全或非重入地调用。
15.6.26.1 请求上传
名称 UploadService::RequestUpload
实体类型 纯虚方法
参数 std::uint8_t dataFormatIdentifier std::uint8_t addressAndLengthFormatId Span std::uint8_t memoryAddressAndSize MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 由诊断管理为RequestUpload服务调用。
dataFormatIdentifier 参数取自RequestUpload UDS 请求。这个一字节的参数在高半字节中编码压缩方法(0x00 表示没有压缩),在低半字节中编码加密方法(0x00 表示没有加密)。除0x00之外的值是项目特定的。
addressAndLengthFormatId 参数取自RequestUpload UDS 请求。高半字节包含内存大小参数的字节数,低半字节包含内存地址参数的字节数。
memoryAddressAndSize 参数直接取自RequestUpload UDS 请求。Span 中的字节数由addressAndLengthFormatId 参数的高和低半字节确定。如果存在,内存地址和内存大小字节定义了要上传的服务器内存的起始地址和大小。
注意 不支持。
15.6.26.2 上传数据
名称 UploadService::UploadData
实体类型 纯虚方法
参数 std::size_t numBytesToReturn MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 在之前的RequestUpload之后,由诊断管理调用数据传输以支持UDS服务TransferData (0x36)。
注意 不支持。
15.6.26.3 请求上传退出
名称 UploadService::RequestUploadExit
实体类型 纯虚方法
参数 Span std::uint8_t transferRequestParameterRecord MetaInfo & metaInfo CancellationHandler cancellationHandler
返回类型 Future
描述 在响应UDS RequestTransferExit (0x37) 请求时由诊断管理调用。
注意 不支持。
15.6.26.4 提供
名称 UploadService::Offer
实体类型 方法
参数 无
返回类型 Result
描述 启动诊断管理将请求消息转发到处理程序。 如果诊断管理无法启动转发,结果返回值将包含一个错误代码,指示失败的原因。
注意 不支持。
15.6.26.5 停止提供
名称 UploadService::StopOffer
实体类型 方法
参数 无
返回类型 void
描述 终止诊断管理将请求消息转发到处理程序。
注意 不支持。
15.7 AUTOSAR 类型
15.7.1 指示器类型
名称 Indicator::IndicatorType
实体类型 枚举
头文件 ara/diag/indicator.h
描述 ISO 13400-2中定义的PowerMode。
定义的值有:
• kOff: 指示器关闭模式(默认)。
• kContinuous: 指示器连续开启模式。
• kBlinking: 指示器闪烁模式。
• kBlinkingOrContinuous: 指示器闪烁或连续开启模式。
• kSlowFlash: 指示器慢闪烁模式。
• kFastFlash: 指示器快闪烁模式。
• kOnDemand: 指示器按需开启模式
• kShort: 指示器短暂模式。
注意 不支持。
15.7.2 GidStatus
名称 DoIPGroupIdentification::GidStatus
实体类型 结构体
头文件 ara/diag/doip_group_identification.h
描述 正面响应消息的响应数据。
注意 不支持。
15.7.3 PowerModeType
名称 DoIPPowerMode::PowerModeType
实体类型 结构体
头文件 ara/diag/doip_power_mode.h
描述 ISO 13400-2中定义的PowerMode。
定义的值有:
• kNotReady: 并非所有通过DoIP可访问的ECU都可以通信。
• kReady: 所有通过DoIP可访问的ECU都可以通信。
• kNotSupported: Diagnostic Information Power Mode Information Request消息不受支持。
注意 不支持。
15.7.4 ComCtrlRequestParamsType
名称 CommunicationControl::ComCtrlRequestParamsType
实体类型 结构体
头文件 ara/diag/communication_control.h
描述 ComCtrlRequestParamsType是一个结构体,它包含了UDS 0x28 Communication Control的所有参数。
注意 不支持。
15.7.5 CancellationHandler
名称 ara::diag::CancellationHandler
实体类型 类别
头文件 ara/diag/cancellation_handler.h
方法 IsCanceled SetNotifier
描述 处理当前诊断对话的取消。
15.7.5.1 IsCanceled
名称 CancellationHandler::IsCanceled
实体类型 方法
参数 无
返回类型 bool
描述 如果在诊断管理中取消了诊断服务,则返回true。
15.7.5.2 SetNotifier
名称 CancellationHandler::SetNotifier
实体类型 方法
参数 std::function<void()> notifier
返回类型 void
描述 注册notifier作为一个函数,当诊断对话被取消时调用该函数。
15.7.6 ClientAuthentication
15.7.6.1 DiagnosticAuthState
名称 ClientAuthentication::DiagnosticAuthState
实体类型 枚举
头文件 ara/diag/client_authentication.h
描述 客户端认证状态的可能值:定义的值有:
• kDeAuthenticated:当前没有诊断客户端被认证。
• kAuthenticated:当前有一个诊断客户端被认证。
注意 不支持。
15.7.6.2 DiagnosticAuthRole
名称 ClientAuthentication::DiagnosticAuthRole
实体类型 枚举
头文件 ara/diag/client_authentication.h
描述 诊断认证角色的支持值在诊断提取中指定。
注意 不支持。
15.7.7 ExternalAuthentication
15.7.7.1 Address
名称 ExternalAuthentication::Address
实体类型 枚举
头文件 ara/diag/external_authentication.h
描述 测试地址的别名。
15.7.8 ConditionType
名称 ara::diag::ConditionType
实体类型 枚举
头文件 ara/diag/condition.h
描述 描述Condition状态类型的枚举。
定义的值有:
• kConditionFalse
• kConditionTrue
注意 不支持。
15.7.9 确认状态类型
名称 ara::diag::ConfirmationStatusType
实体类型 枚举
头文件 ara/diag/service_validation.h
描述 描述服务状态处理的枚举。
定义的值有:
• kResPosOk:成功发送了正面响应。
• kResPosNotOk:正面响应未成功发送。
• kResNegOk:成功发送了负面响应。
• kResNegNotOk:负面响应未成功发送。
• kResPosSuppressed:抑制了正面答复。
• kResNegSuppressed:抑制了负面答复。
• kCanceled:处理已取消。
• kNoProcessingNoResponse:在验证中拒绝处理。
15.7.10 对话
15.7.10.1 活动状态类型
名称 ara::diag::ActivityStatusType
实体类型 枚举
头文件 ara/diag/conversation.h
描述 描述当前活动状态的枚举。
定义的值有:
• kActive:当前正在处理诊断请求,或者非默认会话处于活动状态。
• kInactive:不活动。
15.7.10.2 对话标识符类型
名称 Conversation::ConversationIdentifierType
实体类型 结构体
头文件 ara/diag/conversation.h
描述 允许识别对话的属性。
15.7.10.3 安全级别类型
名称 ara::diag::SecurityLevelType
实体类型 枚举
头文件 ara/diag/conversation.h
描述 描述活动诊断安全级别的枚举。
定义的值有: • kLocked
15.7.10.4 会话控制类型
名称 ara::diag::SessionControlType
实体类型 枚举
头文件 ara/diag/conversation.h
描述 描述活动诊断会话类型的枚举。
定义的值有:
• kDefaultSession:根据ISO 14229-1:2013的默认会话。
• kProgrammingSession:根据ISO 14229-1:2013的编程会话。
• kExtendedDiagnosticSession:根据ISO 14229-1:2013的扩展诊断会话。
• kSafetySystemDiagnosticSessio:根据ISO 14229-1:2013的配置依赖会话安全系统诊断会话。
15.7.11 可重入性
15.7.11.1 可重入性类型
名称 ara::diag::ReentrancyType
实体类型 枚举
头文件 ara/diag/reentrancy.h
描述 描述可重入性类型的枚举。
定义的值有:
• kFully – 代码是完全可重入的。
• KNot – 代码不可重入。
15.7.11.2 DataIdentifierReentrancyType
名称 ara::diag::DataIdentiferReentrancyType
实体类型 结构体
头文件 ara/diag/reentrancy.h
描述 描述DataIdentifiers端口可重入性的结构体。
它有以下成员:
• ReentrancyType read – 读取的可重入性类型。
• ReentrancyType write – 写入的可重入性类型。
• ReentrancyType readWrite – 读取和写入的可重入性类型。
15.7.12 DTC信息
15.7.13 UdsDtcStatusBitType
名称 ara::diag::UdsDtcStatusBitType
实体类型 枚举
头文件 ara/diag/dtc_information.h
描述 根据ISO 14229-1描述UDS DTC状态的枚举。
定义的值有:
• kTestFailed: 测试失败了。
• kTestFailedThisOperationCycle:测试在当前周期失败了。
• kPendingDTC: DTC正在等待。
• kConfirmedDTC: DTC已被确认。
• kTestNotCompletedSinceLastClear: 测试自上次清除以来尚未完成。
• kTestFailedSinceLastClear: 测试自上次清除以来失败了。
• kTestNotCompletedThisOperationCycle: 测试在此周期中尚未完成。
• kWarningIndicatorRequested: 已请求警告指示器。
15.7.14 控制DTC状态类型
名称 ara::diag::ControlDtcStatusType
实体类型 枚举
头文件 ara/diag/dtc_information.h
描述 描述GetControlDTCStatus状态的枚举,由UDS服务0x85 ControlDTCSetting请求。
定义的值有:
• kDTCSettingOn
• kDTCSettingOff
15.7.14.1 UdsDtcStatusByteType
名称 DTCInformation::UdsDtcStatusByteType
实体类型 结构体
头文件 ara/diag/dtc_information.h
描述 UDS DTC状态字节。
**15.7.14.2 SnapshotDataIdentifierType
名称 DTCInformation::SnapshotDataIdentifierType **
实体类型 结构体
头文件 ara/diag/dtc_information.h
描述 SnapshotDataIdentifierType状态的类型。
注意 不支持
15.7.14.3 SnapshotDataRecordType
名称 DTCInformation::SnapshotDataRecordType
实体类型 结构体
头文件 ara/diag/dtc_information.h
描述 SnapshotDataRecordType状态的类型。
注意 不支持
15.7.14.4 SnapshotRecordUpdatedType
名称 DTCInformation::SnapshotRecordUpdatedType
实体类型 结构体
头文件 ara/diag/dtc_information.h
描述 SnapshotRecordUpdatedType状态的类型。
注意 不支持
15.7.15 事件
15.7.15.1 DTC格式类型
名称 ara::diag::DTCFormatType
实体类型 枚举
头文件 ara/diag/event.h
描述 描述DTC格式类型的枚举,根据ISO 14229-1:2013。
定义的值有:
• kDTCFormatOBD:根据ISO 15031-6规范定义的SAE_J2012-DA_DTCFormat_00。
• kDTCFormatUDS:根据ISO 14229-1:2013规范定义的ISO_14229-1_DTCFormat。
• kDTCFormatJ1939:根据SAE J1939-73定义的SAE_J1939-73_DTCFormat。
注意 不支持。
15.7.15.2 事件状态字节
名称 Event::EventStatusByte
实体类型 结构体
头文件 ara/diag/event.h
描述 当前事件状态字节,位编码。
注意 不支持。
**15.7.15.3 去抖动状态
名称 Event::DebouncingState **
实体类型 枚举
头文件 ara/diag/event.h
描述 描述基于当前故障检测计数器(FDC)值的事件去抖动状态的枚举。
定义的值有:
• kNeutral:对应于FDC = 0。
• kTemporarilyDefective:对应于FDC在范围(0,127)内。
• kFinallyDefective:对应于FDC = 127。
• kTemporarilyHealed:对应于FDC在范围(-128,0)内。
• kFinallyHealed:对应于FDC = -128。 注意 不支持。
15.7.16 事件状态位
名称 ara::diag::EventStatusBit
实体类型 枚举
头文件 ara/diag/event.h
描述 描述事件状态的枚举。
定义的值有:
• kTestFailed:测试失败了。
• kTestFailedThisOperationCycle:测试在这个周期失败了。
• kTestNotCompletedThisOperationCycle:测试在当前周期未完成。
注意 不支持。
15.7.17 通用数据标识符
15.7.17.1 操作输出
名称 GenericDataIdentifier::OperationOutput
实体类型 结构体
头文件 ara/diag/generic_data_identifier.h
描述 正面响应消息的响应数据。 OperationOutput结构包含一个包含响应数据的ara::core::Vector of std::uint8_t。
15.7.18 通用例程
15.7.18.1 操作输出
名称 GenericRoutine::OperationOutput
实体类型 结构体
头文件 ara/diag/generic_routine.h
描述 正面响应消息的响应数据。 OperationOutput结构包含一个包含响应数据的ara::core::Vector of std::uint8_t。
15.7.19 通用UDS服务
15.7.19.1 操作输出
名称 GenericUDSService::OperationOutput
实体类型 结构体
头文件 ara/diag/generic_uds_service.h
描述 正面响应消息的响应数据。 OperationOutput结构包含一个包含响应数据的ara::core::Vector of std::uint8_t。
15.7.20 密钥比较结果类型
名称 ara::diag::KeyCompareResultType
实体类型 枚举
头文件 ara/diag/security_access.h
描述 描述密钥比较状态的枚举。
定义的值有:
• kKeyValie
• kKeyInvalid
15.7.21 Ecu重置请求
15.7.21.1 最后重置类型
名称 ara::diag::LastResetType
实体类型 枚举
头文件 ara/diag/ecu_reset_request.h
描述 最后请求重置的类型。
定义的值有:
• kRegular:常规关机。
• kUnexpected:意外关机。
• kSoftReset:诊断ResetRequestType ::kSoftReset。
• kHardReset:诊断ResetRequestType ::kHardReset。
• kKeyOffOnReset:诊断ResetRequestType ::kKeyOffOnReset。
• kCustomReset:诊断ResetRequestType ::kCustomReset。
15.7.21.2 重置请求类型
名称 EcuResetRequest::ResetRequestType
实体类型 枚举
头文件 ara/diag/ecu_reset_request.h
描述 请求重置的类型。
定义的值有:
• kSoftReset → 软重置。
• kHardReset → 硬重置。
• kKeyOffOnReset → KeyOffOn 重置。
• kCustomReset → 自定义重置。
15.7.22 MetaInfo
名称 ara::diag::MetaInfo
实体类型 类别
头文件 ara/diag/meta_info.h
方法 GetValue GetContext
描述 MetaInfo类将元信息(即来自传输协议层)传递给自适应应用。GetValue方法使用StringView提供数据,并使用GetContext提供当前请求的上下文。
15.7.22.1 上下文
名称 MetaInfo::Context
实体类型 强类型枚举
头文件 ara/diag/meta_info.h
描述 可能的MetaInfo上下文的定义。
定义的值有:
• kDiagnosticCommunication
• kFaultMemory
• kDoIP
15.7.22.2 GetValue
名称 MetaInfo::GetValue
实体类型 方法
参数 StringView key
返回类型 OptionalStringView
描述 获取键的元信息。
定义了以下键:
kSA:以十六进制数字格式化的UDS源地址。
kTA:以十六进制数字格式化的UDS目标地址。
kTAType:指示请求是功能地址还是物理地址。
kSuppPosResponse:布尔值,指示是否应抑制正面响应。
kSecurityTimerElapsed:布尔值,指示安全延迟定时器是否已过期。
kRequestHandle:请求句柄的键;在同一诊断请求的上下文中,所有API调用都相同。
kLocalIP:当前请求的本地IP地址。该值将是IPv4或IPv6表示法中的一个字符串。
kLocalPort:当前请求上的本地端口号。
kRemoteIP:当前请求的远程IP地址。该值将是IPv4或IPv6表示法中的一个字符串。
kRemotePort:当前请求上的远程端口号。
kDtc:触发此接口的DTC号码。
注意 不支持。
15.7.22.3 GetContext
名称 MetaInfo::GetContext
实体类型 方法
参数 无
返回类型 Context
描述 返回元信息Context。
注意 不支持。
15.7.23 监视器
15.7.24 InitMonitorReason
名称 ara::diag::InitMonitorReason
实体类型 枚举
头文件 ara/diag/monitor.h
描述 描述监视器可能被重新初始化的原因的状态信息的枚举。
定义的值有:
• kClear:事件所属的DTC被清除,所有内部值和状态都被重置。
• kRestart:事件的操作周期被(重新)启动。
• kReenabled:通过UDS服务ControlDTCSetting重新启用了事件启用条件或DTC设置。
• kDisabled:不再满足启用条件,或者Control DTC设置已关闭。
15.7.24.1 CounterBased
名称 Monitor::CounterBased
实体类型 结构体
头文件 ara/diag/monitor.h
描述 表示基于计数器的消抖参数。
注意 不支持。
15.7.24.2 TimeBased
名称 Monitor::TimeBased
实体类型 结构体
头文件 ara/diag/monitor.h
描述 表示基于时间的消抖参数。
15.7.25 MonitorAction
名称 ara::diag::MonitorAction
实体类型 枚举
描述 描述监视应用程序报告诊断事件状态信息的枚举。动作报告通过预先通过和预先失败的动作支持内部(诊断管理)消抖。
定义的值有:
• kPassed:合格测试通过。
• kFailed:合格测试失败。
• kPrepassed:不合格测试通过。
• kPrefailed:不合格测试失败。
• kFdcThresholdReached:监视器触发扩展数据记录和冻结帧的存储(如果触发条件与此阈值相关联)。
• kResetTestFailed:重置TestFailed位,没有其他副作用,如就绪状态。
• kFreezeDebouncing:暂停内部消抖
• kResetDebouncing:重置内部消抖
15.7.26 OperationCycleType
名称 ara::diag::OperationCycleType
实体类型 枚举
头文件 ara/diag/operation_cycle.h
描述 描述操作周期状态信息的枚举。
定义的值有:
• kOperationCycleStart:开始/重新开始操作周期。
• kOperationCycleEnd:结束操作周期。
15.7.27 UploadService
15.7.27.1 OperationOutput
名称 UploadService::OperationOutput
实体类型 结构体
头文件 ara/diag/upload.h
描述 正面响应消息的响应数据。
注意 不支持。
15.8 UDS服务
15.8.1 诊断会话控制
UDS诊断会话控制 (0x10)
子功能 SessionType
AUTOSAR支持
RTA-VRTE支持
接口 对话
注释 无
15.8.2 ECU重置
UDS ECU重置 (0x11)
子功能 ResetType
AUTOSAR支持
RTA-VRTE支持
接口 EcuResetRequest
注释 • 在重置之前提供积极的响应。
• 支持的子功能:hardReset,keyOffOnReset和softReset。
15.8.3 安全访问
UDS安全访问 (0x27)
子功能 Seed/Key
AUTOSAR支持
RTA-VRTE支持
接口 对话,安全访问
注释 • 不支持securityAccessDataRecord。
• 不对AttemptCounter进行持久存储。
15.8.4 通信控制
UDS通信控制 (0x28)
子功能 ControlType
AUTOSAR支持
RTA-VRTE支持
接口 GenericUDSService
注释 接受ControlTypes 0x00…0x03。
15.8.5 认证
UDS认证 (0x29)
子功能 N/A
AUTOSAR在AP21-11中添加
RTA-VRTE不支持
接口 无
注释 无
15.8.6 测试者存在
UDS测试者存在 (0x3E)
子功能 zeroSubFunction
AUTOSAR支持
RTA-VRTE支持
接口 无
注释 无
15.8.7 访问时间参数
UDS访问时间参数 (0x83)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.8 安全数据传输
UDS安全数据传输 (0x84)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.9 控制DTC设置
UDS控制DTC设置 (0x85)
子功能 On/Off
AUTOSAR支持
RTA-VRTE支持
接口 尚未提供:带有ControlDtcStatusType类型信息的端口接口DTCInformation。
注释 • UDS服务是可用的。
• 不支持DTCSettingControlOptionRecord。
• 应用程序无法读取ControlDTCStatus信息,因为DTCInformation接口尚未提供ControlDTCStatus信息。
15.8.10 对事件的响应
UDS对事件的响应 (0x86)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 无
注释 根据ISO 14229-1:2020中ROE的简化进行了重新设计,这在AUTOSAR R21-11中给出。
15.8.11 链路控制
UDS链路控制 (0x87)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.12 数据传输
15.8.12.1 根据标识符读取数据
UDS根据标识符读取数据 (0x22)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericDataIdentifier, TypedDataIdentifier
注释 无
15.8.12.2 根据地址读取内存
UDS根据地址读取内存 (0x23)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.12.3 根据标识符读取缩放数据
UDS根据标识符读取缩放数据 (0x24)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.12.4 周期性地根据标识符读取数据
UDS周期性地根据标识符读取数据 (0x2A)
子功能 N/A
AUTOSAR在AP20-11中添加
RTA-VRTE不支持
接口 无
注释 无
15.8.12.5 动态定义数据标识符
UDS动态定义数据标识符 (0x2C)
子功能 N/A
AUTOSAR在AP20-11中添加
RTA-VRTE不支持
接口 无
注释 无
15.8.12.6 根据标识符写入数据
UDS根据标识符写入数据 (0x2E)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericDataIdentifier, TypedDataIdentifier
注释 无
15.8.12.7 根据地址写入内存
UDS根据地址写入内存 (0x3D)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
15.8.13 存储的数据传输
15.8.13.1 清除诊断信息
UDS清除诊断信息 (0x14)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 可以使用带有ControlDtcStatusType类型信息的DTCInformation。
注释 仅限于groupOfDTC,即所有组(所有DTC)。
15.8.14 读取DTC信息
UDS读取DTC信息 (0x19)
子功能 0x1, 0x2, 0x3, 0x4, 0x06, 0x17, 0x18
AUTOSAR支持
RTA-VRTE支持
接口 无
注释 无
UDS读取DTC信息 (0x19)
子功能 0x8, 0x9, 0xB, 0xC, 0xD, 0xE, 0x13, 0x15, 0x16
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR排除了这个功能。
UDS读取DTC信息 (0x19)
子功能 0x7
AUTOSAR支持
RTA-VRTE不支持
接口 无
注释 无
UDS读取DTC信息 (0x19)
子功能 0xA
AUTOSAR在AP20-11中添加
RTA-VRTE支持
接口 无
注释 无
UDS读取DTC信息 (0x19)
子功能 0xF, 0x10, 0x11
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR不支持UDS镜像。
UDS读取DTC信息 (0x19)
子功能 0x5, 0x12, 0x42, 0x55
AUTOSAR不支持
RTA-VRTE不支持
接口 无
注释 AUTOSAR不支持OBD/WWH OBD。
UDS读取DTC信息 (0x19)
子功能 0x14
AUTOSAR支持
RTA-VRTE不支持
接口 无
注释 无
UDS读取DTC信息 (0x19)
子功能 0x19
AUTOSAR支持
RTA-VRTE不支持
接口 无
注释无
15.8.15 输入/输出控制
15.8.15.1 根据标识符的输入输出控制
UDS根据标识符的输入输出控制 (0x2F)
子功能 N/A
AUTOSAR不支持
RTA-VRTE不支持
接口无
注释 AUTOSAR排除了这个功能。
15.8.16 远程激活例程
15.8.16.1 常规控制
UDS常规控制 (0x31)
子功能 开始,停止,结果
AUTOSAR支持
RTA-VRTE支持
接口 GenericRoutine
注释无
15.8.17 上载/下载
15.8.17.1 请求下载
UDS请求下载 (0x34)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericUDSService
注释 请求从客户端到服务器的传输。使用GenericUDSService实现。
15.8.17.2 请求上载
UDS请求上载 (0x35)
子功能 N/A
AUTOSAR支持
RTA-VRTE不支持
接口 GenericUDSService 注释 请求从服务器到客户端的传输。
15.8.17.3 数据传输
UDS数据传输 (0x36)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericUDSService
注释 数据传输(上传和下载;方向由之前的请求下载或请求上传设置)。
警告 默认情况下,UDS TransferData 0x36配置为在单次操作中传输最多10248字节的数据。要根据用户需求更改它,请联系技术支持(参见第25节)
15.8.17.4 请求传输退出
UDS请求传输退出 (0x37)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericUDSService
注释 结束数据传输。
15.8.17.5 请求文件传输
UDS请求文件传输 (0x38)
子功能 N/A
AUTOSAR支持
RTA-VRTE支持
接口 GenericUDSService
注释无
