在前面 《[CP_AUTOSAR]_通信服务_DCM模块(三)_DSL子模块(一)》文中,介绍了 DSL 子模块的整体功能,本文接着介绍从 PduR 模块到 DSD 模块提交的诊断请求。
2、提交诊断请求(从 PduR 到 DSD 子模块)
当 DcmDslProtocolRxPduId 开始接收新的诊断请求内容时,PduR 模块g汇报给 Dcm 模块。函数 Dcm_StartOfReception 会通知 DCM 模块即将接收的数据大小,提供单帧或者首帧的数据内容。如果接收的数据大小溢出了缓存空间,或者请求的服务不被允许,那么 DCM 模块会拒收此消息。函数 Dcm_CopyRxData 会进一步将缓存中的数据拷贝到 DCM 模块。如果诊断请求接收完成(即函数 Dcm_StartOfReception 执行成功),PduR 模块将会调用函数 Dcm_TpRxIndication 给 DCM 模块一个显示。函数 Dcm_StartOfReception 需要通过 DcmRxPdu 中的元数据来提供地址信息给 DCM 模块,这个地址信息是必须存储和使用的,以用于响应和检测来自同一上位机的请求。
[SWS_Dcm_00111] 只有在调用函数 Dcm_TpRxIndication 之后并且其返回值为 E_OK时,DSL 子模块才应该提交接收到的数据给到 DSD 模块;
[SWS_Dcm_00241] 诊断请求消息被成功接收(即函数 Dcm_TpRxIndication 返回值为 E_OK)