客户端请求启动服务器中的事件机制。该服务是请求服务器启动或停止对指定事件的响应的传输。如果服务器中发生指定的事件,此服务提供了自动执行诊断服务的可能性。 客户端指定事件(包括可选的事件参数)和事件发生时要执行的服务(包括服务参数)。 有关客户端和服务器行为的简要概述,请参见下图:
注意:上图的流程中是假定事件窗口计时器配置为在服务器掉电之前超时,因此最终的ResponseOnEvent肯定响应消息显示在事件计时窗口的末尾。服务器应在接收时评估ResponseOnEvent请求消息的子功能和数据内容。 这包括以下子功能和参数:
⎯ eventType
⎯ eventWindowTime
⎯ eventTypeRecord
当指定事件发生时,将评估serviceToRespondToRecord参数,该事件将触发serviceToRespondToRecord中包含的服务的执行。在事件发生时,应执行serviceToRespondToRecord(诊断服务请求消息)。如果条件不正确,则应发送带有适当否定响应代码的否定响应消息。多个事件应按照它们发生的顺序发出信号。以下实施规则应适用。
1)ResponseOnEvent服务可以在任何会话中设置和激活,包括defaultSession。不一定需要TesterPresent服务才能使ResponseOnEvent服务保持活动状态。
2)如果在诊断服务进行过程中发生了指定的事件,则意味着正在接收请求消息/正在执行请求/正在响应消息(包括否定响应消息处理)带有要发送的响应代码(0x78),则应推迟对serviceToRespondToRecord中包含的请求消息的执行,直到正在进行的诊断服务完成为止。
如果服务器接受了指定的事件,则在通过事件窗口之前,客户端不应请求以下诊断服务:
⎯CommunicationControl;
⎯DynamicallyDefineDataIdentifier;
⎯RequestDownload;
⎯RequestUpload;
⎯TransferData;
⎯RequestTransferExit;
⎯RoutineControl。
服务器在指定事件发生的时间点未执行任何诊断服务,服务器将执行serviceToRespondToRecord中包含的服务。一旦启动ResponseOnEvent服务,则当ResponseOnEvent服务处于活动状态时,服务器应支持提交该服务的数据链接。无论是否激活了不同于当前会话的会话或同一会话,DiagnosticSessionControl服务都应停止ResponseOnEvent服务。
诊断请求格式
具体的格式如下:
这里需要多个参数进行一个解释来方便我们的理解。
sub-function
Sub-function 字节中的 bit 6 的情况如下:我的理解时当bit 6 被置1时,该服务的时间将会被存储到费擦写区域。即上下电之后,该事件仍被记忆。
所支持的具体的sub-function,请看下表:
Hex | Name | Description |
00 | stopResponseOnEvent | 停止服务器发送事件响应 eventTypeRecord的长度:0字节。 |
01 | onDTCStatusChange | 检测到与为此事件指定的DTCStatusMask匹配的新DTC eventTypeRecord的长度:1个字节。 |
02 | onTimerInterrupt | 计时器中断 eventTypeRecord的长度:1个字节。 |
03 | onChangeOfDataIdentifier | DataIdentifier标识的新内部数据 eventTypeRecord的长度:2个字节。 |
04 | reportActivatedEvents | 报告已在服务器中使用ResponseOnEvent服务激活的所有事件 eventTypeRecord的长度:0字节。 |
05 | startResponseOnEvent | 指示服务器激活已设置的事件逻辑并开始发送事件响应 eventTypeRecord的长度:0字节。 |
06 | clearResponseOnEvent | 清除服务器中已设置的事件逻辑 eventTypeRecord的长度:0字节。 |
07 | onComparisonOfValues | DataIdentifier标识的特定记录中定义的数据值更改 eventTypeRecord的长度:10字节。 |
08 | ISOSAEReserved | ISO 保留,暂未定义 |
... | ||
1F | ||
20 | VehicleManufacturerSpecific | 整车厂定义 |
... | ||
2F | ||
30 | SystemSupplierSpecific | 供应商定义 |
... | ||
3E | ||
3F | ISOSAEReserved | ISO 保留,暂未定义 |
eventWindowTime
具体的参数值如下:
这里需要说明一下:如果该参数的值为0x02,则响应时间是无限的。
eventTypeRecord
此参数记录包含指定的eventType的其他参数。
serviceToRespondToRecord
该参数记录包含每次在eventTypeRecord中定义的指定事件发生时要在服务器中执行的服务的服务参数(服务ID和服务参数)。
正响应格式
具体的格式要求如下:
对于参数eventTypeRecord与serviceToRespondToRecord则是指在诊断请求要求的情况下才会被记录发出。如果出现多个符合定义的事件发生,则会逐一进行记录。
负响应NRC码
具体的NRC码见下图: