5.2.3 服务原语的格式描述
5.2.3.1 通用定义
所有的应用层服务都具有相同的通用格式,服务原语是按如下格式进行编写的:
servicename.Type(
parameterA, parameterB, parameterC
[,parameter 1, ...]
)
——“service_name”是诊断服务的名称(例如:诊断会话控制),即SID
——“type”指示服务原语的类型(例如:请求),
——“parameter A, ...”是 A_SDU(应用层服务数据单元)作为服务原语传递的值的列表(寻址信息),
——“parameter A, parameter B, parameter C”是必须包含在所有服务调用中的强制参数。 ——“[,parameter 1, ...]”是取决于特定服务的参数(例如:parameter 1 可以是诊断会话控制服务的诊断会话)。[] 表示参数列表的这一部分可能为空。
5.2.3.2 服务请求和服务指示原语
对于每个应用层服务,根据以下通用格式指定服务请求原语:
service_name.request (
A_MType,应用层服务消息类型(有本地诊断和远程诊断)
A_SA, //应用层服务源地址
A_TA, //应用层服务目标地址
A_TA_type, //应用层服务目标地址类型
[A_AE], //应用层服务扩展地址
A_Length, //应用层服务数据长度
A_Data[,parameter 1, ...], //应用层服务数据参数
)
诊断设备应用程序中的客户端功能使用请求原语启动服务并将所请求的诊断服务的数据传递给应用层。
对于每个应用层服务,根据以下通用格式指定服务指示原语:
service_name.indication (
A_MType,
A_SA,
A_TA,
A_TA_type,
[A_AE], A_Length,
A_Data[,parameter 1, ...],
)
指示原语格式与请求原语格式相同,目的是用于接收客户端通过应用层服务请求原语发来的数据,这个数据不应由应用层的对等通信协议实体改变。说白了就是客户端通过服务请求原语向应用层发送数据,服务端通过指示原语接收应用层发来的数据,指示原语在接收数据的同时,也标志着应用层服务的请求被成功收到。
5.2.3.3 服务响应和服务确认原语
对于每个应用层服务,根据以下通用格式指定服务响应原语:
service_name.response (
A_MType,
A_SA,
A_TA,
A_TA_type,
[A_AE],
A_Length,
A_Data[,parameter 1, ...],
)
ECU 诊断应用程序中的服务端功能使用响应原语来启动服务并将所请求的诊断服务提供的响应数据发送 到应用层。
对于每个应用层服务,根据以下通用格式指定服务确认原语:
service_name.confirm (
A_MType,
A_SA,
A_TA,
A_TA_type,
[A_AE],
A_Length,
A_Data[,parameter 1, ...],
)
应用层使用确认原语来指示对客户端应用有重要意义的内部事件,并将关联的之前的服务所请求的结果传递给诊断设备应用程序中的客户端功能。
特定应用层的响应和确认原语具有相同的参数和参数值,当数据从服务端发送到客户端时, 各个参数的值不应被应用层的对等通信协议实体改变。
对于每个响应和确认原语将规定两种不同的服务数据单元(两组参数)。
——如果请求的诊断服务可以通过 ECU 中的服务端功能成功执行,则应与第一个服务数据单元一起使用肯 定响应和肯定确认原语。
——如果请求的诊断服务失败或不能通过 ECU 中的服务端功能及时完成,则应将第二服务数据单元用于否 定响应和否定确认原语。
5.2.3.4 服务请求-确认和服务响应-确认原语
对于每个应用层服务,根据以下通用格式规定服务请求-确认原语:
service_name.req_confirm (
A_MType,
A_SA,
A_TA,
A_TA_type,
[A_AE],
A_Result,
)
应用层使用请求-确认原语来指示对客户端应用程序有重要意义的内部事件,并将关联的之前的服务所请 求的结果传递给诊断设备应用程序中的客户端功能。即应用层通过该原语将服务请求是否成功的结果传递给客户端。
对于每个应用层服务,根据以下通用格式规定服务响应-确认原语:
service_name.rsp_confirm ( A_MType,
A_SA,
A_TA,
A_TA_type,
[A_AE],
A_Result,
)
应用层使用响应-确认原语来指示对服务端应用程序有重要意义的内部事件,并将关联的之前的服务所响 应的结果传递给诊断设备应用程序中的服务端功能。即应用层通过该确认原语将服务响应是否成功的结果发送给服务端。